summaryrefslogtreecommitdiffstats
path: root/library/demos/ctext.tcl
blob: 3be4b587c37966d8b0eccb1e2eea6ed026743bfb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# ctext.tcl --
#
# This demonstration script creates a canvas widget with a text
# item that can be edited and reconfigured in various ways.

if {![info exists widgetDemo]} {
    error "This script should be run from the \"widget\" demo."
}

set w .ctext
catch {destroy $w}
toplevel $w
wm title $w "Canvas Text Demonstration"
wm iconname $w "Text"
positionWindow $w
set c $w.c

label $w.msg -font $font -wraplength 5i -justify left -text "This window displays a string of text to demonstrate the text facilities of canvas widgets.  You can click in the boxes to adjust the position of the text relative to its positioning point or change its justification.  The text also supports the following simple bindings for editing:
  1. You can point, click, and type.
  2. You can also select with button 1.
  3. You can copy the selection to the mouse position with button 2.
  4. Backspace and Control+h delete the selection if there is one;
     otherwise they delete the character just before the insertion cursor.
  5. Delete deletes the selection if there is one; otherwise it deletes
     the character just after the insertion cursor."
pack $w.msg -side top

frame $w.buttons
pack $w.buttons -side bottom -fill x -pady 2m
button $w.buttons.dismiss -text Dismiss -command "destroy $w"
button $w.buttons.code -text "See Code" -command "showCode $w"
pack $w.buttons.dismiss $w.buttons.code -side left -expand 1

canvas $c -relief flat -borderwidth 0 -width 500 -height 350
pack $w.c -side top -expand yes -fill both

set textFont {Helvetica 24}

$c create rectangle 245 195 255 205 -outline black -fill red

# First, create the text item and give it bindings so it can be edited.

$c addtag text withtag [$c create text 250 200 -text "This is just a string of text to demonstrate the text facilities of canvas widgets. Bindings have been been defined to support editing (see above)." -width 440 -anchor n -font {Helvetica 24} -justify left]
$c bind text <1> "textB1Press $c %x %y"
$c bind text <B1-Motion> "textB1Move $c %x %y"
$c bind text <Shift-1> "$c select adjust current @%x,%y"
$c bind text <Shift-B1-Motion> "textB1Move $c %x %y"
$c bind text <KeyPress> "textInsert $c %A"
$c bind text <Return> "textInsert $c \\n"
$c bind text <Control-h> "textBs $c"
$c bind text <BackSpace> "textBs $c"
$c bind text <Delete> "textDel $c"
$c bind text <2> "textPaste $c @%x,%y" 

# Next, create some items that allow the text's anchor position
# to be edited.

proc mkTextConfig {w x y option value color} {
    set item [$w create rect $x $y [expr {$x+30}] [expr {$y+30}] \
	    -outline black -fill $color -width 1]
    $w bind $item <1> "$w itemconf text $option $value"
    $w addtag config withtag $item
}

set x 50
set y 50
set color LightSkyBlue1
mkTextConfig $c $x $y -anchor se $color
mkTextConfig $c [expr {$x+30}] [expr {$y   }] -anchor s      $color
mkTextConfig $c [expr {$x+60}] [expr {$y   }] -anchor sw     $color
mkTextConfig $c [expr {$x   }] [expr {$y+30}] -anchor e      $color
mkTextConfig $c [expr {$x+30}] [expr {$y+30}] -anchor center $color
mkTextConfig $c [expr {$x+60}] [expr {$y+30}] -anchor w      $color
mkTextConfig $c [expr {$x   }] [expr {$y+60}] -anchor ne     $color
mkTextConfig $c [expr {$x+30}] [expr {$y+60}] -anchor n      $color
mkTextConfig $c [expr {$x+60}] [expr {$y+60}] -anchor nw     $color
set item [$c create rect \
	[expr {$x+40}] [expr {$y+40}] [expr {$x+50}] [expr {$y+50}] \
	-outline black -fill red]
$c bind $item <1> "$c itemconf text -anchor center"
$c create text [expr {$x+45}] [expr {$y-5}] \
	-text {Text Position}  -anchor s  -font {Times 24}  -fill brown

# Lastly, create some items that allow the text's justification to be
# changed.

set x 350
set y 50
set color SeaGreen2
mkTextConfig $c $x $y -justify left $color
mkTextConfig $c [expr {$x+30}] $y -justify center $color
mkTextConfig $c [expr {$x+60}] $y -justify right $color
$c create text [expr {$x+45}] [expr {$y-5}] \
	-text {Justification}  -anchor s  -font {Times 24}  -fill brown

$c bind config <Enter> "textEnter $c"
$c bind config <Leave> "$c itemconf current -fill \$textConfigFill"

set textConfigFill {}

proc textEnter {w} {
    global textConfigFill
    set textConfigFill [lindex [$w itemconfig current -fill] 4]
    $w itemconfig current -fill black
}

proc textInsert {w string} {
    if {$string == ""} {
	return
    }
    catch {$w dchars text sel.first sel.last}
    $w insert text insert $string
}

proc textPaste {w pos} {
    catch {
	$w insert text $pos [selection get]
    }
}

proc textB1Press {w x y} {
    $w icursor current @$x,$y
    $w focus current
    focus $w
    $w select from current @$x,$y
}

proc textB1Move {w x y} {
    $w select to current @$x,$y
}

proc textBs {w} {
    if {![catch {$w dchars text sel.first sel.last}]} {
	return
    }
    set char [expr {[$w index text insert] - 1}]
    if {$char >= 0} {$w dchar text $char}
}

proc textDel {w} {
    if {![catch {$w dchars text sel.first sel.last}]} {
	return
    }
    $w dchars text insert
}
8dcdff70fcde74a9e5cb316545cef6'>demos/embedded/fluidlauncher/screenshots/weatherinfo.pngbin0 -> 38521 bytes-rw-r--r--demos/embedded/fluidlauncher/screenshots/wiggly_s60.pngbin0 -> 7950 bytes-rw-r--r--demos/embedded/lightmaps/lightmaps.cpp579
-rw-r--r--demos/embedded/lightmaps/lightmaps.pro10
-rw-r--r--demos/embedded/raycasting/raycasting.cpp310
-rw-r--r--demos/embedded/raycasting/raycasting.pro3
-rw-r--r--demos/embedded/raycasting/raycasting.qrc5
-rw-r--r--demos/embedded/raycasting/textures.pngbin0 -> 42319 bytes-rw-r--r--demos/embedded/styledemo/files/application.qss2
-rw-r--r--demos/embedded/styledemo/files/blue.qss3
-rw-r--r--demos/embedded/styledemo/files/khaki.qss3
-rw-r--r--demos/embedded/styledemo/files/transparent.qss1
-rw-r--r--demos/embedded/styledemo/styledemo.pro5
-rw-r--r--demos/embedded/styledemo/stylewidget.ui345
-rw-r--r--demos/embedded/weatherinfo/icons/README.txt5
-rw-r--r--demos/embedded/weatherinfo/icons/weather-few-clouds.svg738
-rw-r--r--demos/embedded/weatherinfo/icons/weather-fog.svg1585
-rw-r--r--demos/embedded/weatherinfo/icons/weather-haze.svg1121
-rw-r--r--demos/embedded/weatherinfo/icons/weather-icy.svg255
-rw-r--r--demos/embedded/weatherinfo/icons/weather-overcast.svg3036
-rw-r--r--demos/embedded/weatherinfo/icons/weather-showers.svg4753
-rw-r--r--demos/embedded/weatherinfo/icons/weather-sleet.svg5196
-rw-r--r--demos/embedded/weatherinfo/icons/weather-snow.svg1974
-rw-r--r--demos/embedded/weatherinfo/icons/weather-storm.svg4308
-rw-r--r--demos/embedded/weatherinfo/icons/weather-sunny-very-few-clouds.svg593
-rw-r--r--demos/embedded/weatherinfo/icons/weather-sunny.svg1330
-rw-r--r--demos/embedded/weatherinfo/icons/weather-thundershower.svg4587
-rw-r--r--demos/embedded/weatherinfo/weatherinfo.cpp511
-rw-r--r--demos/embedded/weatherinfo/weatherinfo.pro11
-rw-r--r--demos/embedded/weatherinfo/weatherinfo.qrc16
-rw-r--r--demos/embeddeddialogs/embeddeddialogs.pro2
-rw-r--r--demos/gradients/gradients.pro2
-rw-r--r--demos/interview/interview.pro1
-rw-r--r--demos/mainwindow/mainwindow.pro1
-rw-r--r--demos/mediaplayer/mediaplayer.pro5
-rw-r--r--demos/pathstroke/pathstroke.pro4
-rw-r--r--demos/qtdemo/qtdemo.pro4
-rw-r--r--demos/shared/shared.pri3
-rw-r--r--demos/shared/shared.pro5
-rw-r--r--demos/spreadsheet/spreadsheet.pro1
-rw-r--r--demos/sqlbrowser/sqlbrowser.pro2
-rw-r--r--demos/symbianpkgrules.pri13
-rw-r--r--demos/textedit/textedit.cpp6
-rw-r--r--demos/textedit/textedit.pro1
-rw-r--r--demos/undo/undo.pro1
-rw-r--r--dist/changes-4.4.4-temple65
-rw-r--r--dist/changes-4.5.0-garden241
-rw-r--r--dist/changes-4.5.2-tower436
-rw-r--r--doc/src/development/qmake-manual.qdoc458
-rw-r--r--doc/src/examples/htmlinfo.qdoc89
-rw-r--r--doc/src/exceptionsafety.qdoc156
-rw-r--r--doc/src/getting-started/installation.qdoc177
-rw-r--r--doc/src/howtos/appicon.qdoc15
-rw-r--r--doc/src/platforms/emb-install.qdoc4
-rw-r--r--doc/src/platforms/platform-notes.qdoc13
-rw-r--r--doc/src/s60-introduction.qdoc117
-rw-r--r--doc/src/snippets/code/doc_src_appicon.qdoc4
-rw-r--r--doc/src/snippets/code/doc_src_installation.qdoc38
-rw-r--r--doc/src/snippets/code/doc_src_qmake-manual.qdoc119
-rw-r--r--doc/src/snippets/code/doc_src_s60-introduction.qdoc16
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qscopedpointer.cpp103
-rw-r--r--doc/src/symbian-exceptionsafety.qdoc241
-rw-r--r--examples/activeqt/activeqt.pro2
-rw-r--r--examples/activeqt/comapp/comapp.pro2
-rw-r--r--examples/activeqt/hierarchy/hierarchy.pro2
-rw-r--r--examples/activeqt/menus/menus.pro2
-rw-r--r--examples/activeqt/multiple/multiple.pro2
-rw-r--r--examples/activeqt/opengl/opengl.pro2
-rw-r--r--examples/activeqt/qutlook/qutlook.pro2
-rw-r--r--examples/activeqt/simple/simple.pro2
-rw-r--r--examples/activeqt/webbrowser/webbrowser.pro2
-rw-r--r--examples/activeqt/wrapper/wrapper.pro2
-rw-r--r--examples/assistant/assistant.pro2
-rw-r--r--examples/assistant/simpletextviewer/simpletextviewer.pro2
-rw-r--r--examples/dbus/complexpingpong/complexping.pro2
-rw-r--r--examples/dbus/complexpingpong/complexpong.pro2
-rw-r--r--examples/dbus/dbus-chat/dbus-chat.pro2
-rw-r--r--examples/dbus/dbus.pro2
-rw-r--r--examples/dbus/listnames/listnames.pro2
-rw-r--r--examples/dbus/pingpong/ping.pro2
-rw-r--r--examples/dbus/pingpong/pong.pro2
-rw-r--r--examples/dbus/remotecontrolledcar/car/car.pro2
-rw-r--r--examples/dbus/remotecontrolledcar/controller/controller.pro2
-rw-r--r--examples/dbus/remotecontrolledcar/remotecontrolledcar.pro2
-rw-r--r--examples/designer/calculatorbuilder/calculatorbuilder.pro2
-rw-r--r--examples/designer/calculatorform/calculatorform.pro2
-rw-r--r--examples/designer/containerextension/containerextension.pro2
-rw-r--r--examples/designer/customwidgetplugin/customwidgetplugin.pro2
-rw-r--r--examples/designer/designer.pro2
-rw-r--r--examples/designer/taskmenuextension/taskmenuextension.pro2
-rw-r--r--examples/designer/worldtimeclockbuilder/worldtimeclockbuilder.pro2
-rw-r--r--examples/designer/worldtimeclockplugin/worldtimeclockplugin.pro2
-rw-r--r--examples/desktop/desktop.pro4
-rw-r--r--examples/desktop/screenshot/screenshot.pro2
-rw-r--r--examples/desktop/systray/systray.pro2
-rw-r--r--examples/dialogs/classwizard/classwizard.pro2
-rw-r--r--examples/dialogs/configdialog/configdialog.pro2
-rw-r--r--examples/dialogs/dialogs.pro4
-rw-r--r--examples/dialogs/extension/extension.pro2
-rw-r--r--examples/dialogs/findfiles/findfiles.pro2
-rw-r--r--examples/dialogs/licensewizard/licensewizard.pro2
-rw-r--r--examples/dialogs/sipdialog/sipdialog.pro2
-rw-r--r--examples/dialogs/standarddialogs/standarddialogs.pro2
-rw-r--r--examples/dialogs/tabdialog/tabdialog.pro2
-rw-r--r--examples/dialogs/trivialwizard/trivialwizard.pro2
-rw-r--r--examples/draganddrop/delayedencoding/delayedencoding.pro2
-rw-r--r--examples/draganddrop/draganddrop.pro2
-rw-r--r--examples/draganddrop/draggableicons/draggableicons.pro4
-rw-r--r--examples/draganddrop/draggabletext/draggabletext.pro4
-rw-r--r--examples/draganddrop/dropsite/dropsite.pro1
-rw-r--r--examples/draganddrop/fridgemagnets/dragwidget.cpp3
-rw-r--r--examples/draganddrop/fridgemagnets/fridgemagnets.pro3
-rw-r--r--examples/draganddrop/fridgemagnets/main.cpp9
-rw-r--r--examples/draganddrop/puzzle/puzzle.pro8
-rw-r--r--examples/examplebase.pri12
-rw-r--r--examples/examples.pro17
-rw-r--r--examples/graphicsview/basicgraphicslayouts/basicgraphicslayouts.pro4
-rw-r--r--examples/graphicsview/collidingmice/collidingmice.pro4
-rw-r--r--examples/graphicsview/diagramscene/diagramscene.pro2
-rw-r--r--examples/graphicsview/dragdroprobot/dragdroprobot.pro2
-rw-r--r--examples/graphicsview/elasticnodes/elasticnodes.pro6
-rw-r--r--examples/graphicsview/graphicsview.pro13
-rw-r--r--examples/graphicsview/padnavigator/main.cpp2
-rw-r--r--examples/graphicsview/padnavigator/padnavigator.pro5
-rw-r--r--examples/graphicsview/padnavigator/panel.h2
-rw-r--r--examples/graphicsview/padnavigator/roundrectitem.h2
-rw-r--r--examples/graphicsview/portedasteroids/portedasteroids.pro2
-rw-r--r--examples/graphicsview/portedcanvas/portedcanvas.pro2
-rw-r--r--examples/help/contextsensitivehelp/contextsensitivehelp.pro2
-rw-r--r--examples/help/help.pro2
-rw-r--r--examples/help/remotecontrol/remotecontrol.pro2
-rw-r--r--examples/help/simpletextviewer/simpletextviewer.pro2
-rw-r--r--examples/ipc/ipc.pro2
-rw-r--r--examples/ipc/localfortuneclient/localfortuneclient.pro2
-rw-r--r--examples/ipc/localfortuneserver/localfortuneserver.pro2
-rw-r--r--examples/ipc/sharedmemory/sharedmemory.pro2
-rw-r--r--examples/itemviews/addressbook/addressbook.pro4
-rw-r--r--examples/itemviews/basicsortfiltermodel/basicsortfiltermodel.pro2
-rw-r--r--examples/itemviews/chart/chart.pro8
-rw-r--r--examples/itemviews/coloreditorfactory/coloreditorfactory.pro2
-rw-r--r--examples/itemviews/customsortfiltermodel/customsortfiltermodel.pro2
-rw-r--r--examples/itemviews/dirview/dirview.pro2
-rw-r--r--examples/itemviews/editabletreemodel/editabletreemodel.pro2
-rw-r--r--examples/itemviews/itemviews.pro6
-rw-r--r--examples/itemviews/pixelator/pixelator.pro2
-rw-r--r--examples/itemviews/puzzle/puzzle.pro2
-rw-r--r--examples/itemviews/simpledommodel/simpledommodel.pro2
-rw-r--r--examples/itemviews/simpletreemodel/simpletreemodel.pro2
-rw-r--r--examples/itemviews/simplewidgetmapper/simplewidgetmapper.pro2
-rw-r--r--examples/itemviews/spinboxdelegate/spinboxdelegate.pro2
-rw-r--r--examples/itemviews/stardelegate/stardelegate.pro2
-rw-r--r--examples/layouts/basiclayouts/basiclayouts.pro2
-rw-r--r--examples/layouts/borderlayout/borderlayout.pro2
-rw-r--r--examples/layouts/dynamiclayouts/dynamiclayouts.pro2
-rw-r--r--examples/layouts/flowlayout/flowlayout.pro2
-rw-r--r--examples/layouts/layouts.pro2
-rw-r--r--examples/linguist/arrowpad/arrowpad.pro2
-rw-r--r--examples/linguist/hellotr/hellotr.pro2
-rw-r--r--examples/linguist/linguist.pro2
-rw-r--r--examples/linguist/trollprint/trollprint.pro2
-rw-r--r--examples/mainwindows/application/application.pro2
-rw-r--r--examples/mainwindows/application/mainwindow.cpp8
-rw-r--r--examples/mainwindows/dockwidgets/dockwidgets.pro2
-rw-r--r--examples/mainwindows/mainwindows.pro6
-rw-r--r--examples/mainwindows/mdi/mdi.pro2
-rw-r--r--examples/mainwindows/menus/menus.pro4
-rw-r--r--examples/mainwindows/recentfiles/recentfiles.pro2
-rw-r--r--examples/mainwindows/sdi/sdi.pro2
-rw-r--r--examples/network/blockingfortuneclient/blockingfortuneclient.pro2
-rw-r--r--examples/network/broadcastreceiver/broadcastreceiver.pro2
-rw-r--r--examples/network/broadcastsender/broadcastsender.pro2
-rw-r--r--examples/network/download/download.pro2
-rw-r--r--examples/network/downloadmanager/downloadmanager.pro2
-rw-r--r--examples/network/fortuneclient/client.cpp14
-rw-r--r--examples/network/fortuneclient/client.h3
-rw-r--r--examples/network/fortuneclient/fortuneclient.pro9
-rw-r--r--examples/network/fortuneclient/main.cpp6
-rw-r--r--examples/network/fortuneserver/fortuneserver.pro10
-rw-r--r--examples/network/fortuneserver/main.cpp11
-rw-r--r--examples/network/fortuneserver/server.cpp9
-rw-r--r--examples/network/ftp/ftp.pro10
-rw-r--r--examples/network/ftp/ftpwindow.cpp36
-rw-r--r--examples/network/ftp/ftpwindow.h4
-rw-r--r--examples/network/ftp/main.cpp17
-rw-r--r--examples/network/ftp/sym_iap_util.h510
-rw-r--r--examples/network/http/http.pro2
-rw-r--r--examples/network/loopback/loopback.pro2
-rw-r--r--examples/network/network-chat/chatdialog.cpp4
-rw-r--r--examples/network/network-chat/main.cpp11
-rw-r--r--examples/network/network-chat/network-chat.pro9
-rw-r--r--examples/network/network-chat/peermanager.cpp7
-rw-r--r--examples/network/network.pro12
-rw-r--r--examples/network/securesocketclient/securesocketclient.pro4
-rw-r--r--examples/network/securesocketclient/sslclient.cpp2
-rw-r--r--examples/network/threadedfortuneserver/threadedfortuneserver.pro2
-rw-r--r--examples/network/torrent/torrent.pro2
-rw-r--r--examples/opengl/2dpainting/2dpainting.pro2
-rw-r--r--examples/opengl/framebufferobject/framebufferobject.pro2
-rw-r--r--examples/opengl/framebufferobject2/framebufferobject2.pro2
-rw-r--r--examples/opengl/grabber/grabber.pro2
-rw-r--r--examples/opengl/hellogl/hellogl.pro2
-rw-r--r--examples/opengl/opengl.pro2
-rw-r--r--examples/opengl/overpainting/overpainting.pro2
-rw-r--r--examples/opengl/pbuffers/pbuffers.pro2
-rw-r--r--examples/opengl/pbuffers2/pbuffers2.pro2
-rw-r--r--examples/opengl/samplebuffers/samplebuffers.pro2
-rw-r--r--examples/opengl/textures/textures.pro2
-rw-r--r--examples/painting/basicdrawing/basicdrawing.pro4
-rw-r--r--examples/painting/concentriccircles/concentriccircles.pro4
-rw-r--r--examples/painting/fontsampler/fontsampler.pro2
-rw-r--r--examples/painting/imagecomposition/imagecomposition.pro3
-rw-r--r--examples/painting/painterpaths/painterpaths.pro6
-rw-r--r--examples/painting/painting.pro4
-rw-r--r--examples/painting/svggenerator/displaywidget.cpp2
-rw-r--r--examples/painting/svggenerator/svggenerator.pro2
-rw-r--r--examples/painting/svgviewer/svgviewer.pro9
-rw-r--r--examples/painting/transformations/transformations.pro4
-rw-r--r--examples/phonon/capabilities/capabilities.pro1
-rw-r--r--examples/phonon/musicplayer/mainwindow.cpp2
-rw-r--r--examples/phonon/musicplayer/musicplayer.pro1
-rw-r--r--examples/phonon/phonon.pro2
-rw-r--r--examples/qtconcurrent/imagescaling/imagescaling.pro2
-rw-r--r--examples/qtconcurrent/map/map.pro2
-rw-r--r--examples/qtconcurrent/progressdialog/progressdialog.pro2
-rw-r--r--examples/qtconcurrent/qtconcurrent.pro2
-rw-r--r--examples/qtconcurrent/runfunction/runfunction.pro2
-rw-r--r--examples/qtconcurrent/wordcount/wordcount.pro2
-rw-r--r--examples/qtestlib/qtestlib.pro2
-rw-r--r--examples/qtestlib/tutorial1/tutorial1.pro4
-rw-r--r--examples/qtestlib/tutorial2/tutorial2.pro4
-rw-r--r--examples/qtestlib/tutorial3/tutorial3.pro4
-rw-r--r--examples/qtestlib/tutorial4/tutorial4.pro4
-rw-r--r--examples/qtestlib/tutorial5/tutorial5.pro4
-rw-r--r--examples/qws/ahigl/ahigl.pro2
-rw-r--r--examples/qws/dbscreen/dbscreen.pro2
-rw-r--r--examples/qws/framebuffer/framebuffer.pro2
-rw-r--r--examples/qws/mousecalibration/mousecalibration.pro2
-rw-r--r--examples/qws/qws.pro2
-rw-r--r--examples/qws/svgalib/svgalib.pro2
-rw-r--r--examples/richtext/calendar/calendar.pro2
-rw-r--r--examples/richtext/orderform/orderform.pro2
-rw-r--r--examples/richtext/richtext.pro2
-rw-r--r--examples/richtext/syntaxhighlighter/syntaxhighlighter.pro2
-rw-r--r--examples/script/calculator/calculator.pro2
-rw-r--r--examples/script/context2d/context2d.pro9
-rw-r--r--examples/script/context2d/main.cpp3
-rw-r--r--examples/script/context2d/qcontext2dcanvas.cpp5
-rw-r--r--examples/script/customclass/customclass.pro2
-rw-r--r--examples/script/defaultprototypes/defaultprototypes.pro2
-rw-r--r--examples/script/helloscript/helloscript.pro2
-rw-r--r--examples/script/marshal/marshal.pro2
-rw-r--r--examples/script/qscript/qscript.pro2
-rw-r--r--examples/script/qsdbg/qsdbg.pro2
-rw-r--r--examples/script/script.pro4
-rw-r--r--examples/sql/cachedtable/cachedtable.pro2
-rw-r--r--examples/sql/drilldown/drilldown.pro6
-rw-r--r--examples/sql/drilldown/informationwindow.cpp2
-rw-r--r--examples/sql/drilldown/main.cpp4
-rw-r--r--examples/sql/drilldown/view.cpp15
-rw-r--r--examples/sql/masterdetail/masterdetail.pro2
-rw-r--r--examples/sql/querymodel/querymodel.pro2
-rw-r--r--examples/sql/relationaltablemodel/relationaltablemodel.pro2
-rw-r--r--examples/sql/sql.pro16
-rw-r--r--examples/sql/tablemodel/tablemodel.pro2
-rw-r--r--examples/threads/mandelbrot/mandelbrot.pro4
-rw-r--r--examples/threads/semaphores/semaphores.pro2
-rw-r--r--examples/threads/threads.pro2
-rw-r--r--examples/threads/waitconditions/waitconditions.pro6
-rw-r--r--examples/tools/codecs/codecs.pro2
-rw-r--r--examples/tools/completer/completer.pro2
-rw-r--r--examples/tools/customcompleter/customcompleter.pro2
-rw-r--r--examples/tools/echoplugin/echoplugin.pro2
-rw-r--r--examples/tools/echoplugin/echowindow/echowindow.pro2
-rw-r--r--examples/tools/echoplugin/plugin/plugin.pro4
-rw-r--r--examples/tools/i18n/i18n.pro2
-rw-r--r--examples/tools/plugandpaint/plugandpaint.pro8
-rw-r--r--examples/tools/plugandpaintplugins/basictools/basictools.pro2
-rw-r--r--examples/tools/plugandpaintplugins/extrafilters/extrafilters.pro4
-rw-r--r--examples/tools/plugandpaintplugins/plugandpaintplugins.pro2
-rw-r--r--examples/tools/regexp/regexp.pro2
-rw-r--r--examples/tools/settingseditor/settingseditor.pro2
-rw-r--r--examples/tools/styleplugin/plugin/plugin.pro4
-rw-r--r--examples/tools/styleplugin/styleplugin.pro2
-rw-r--r--examples/tools/styleplugin/stylewindow/stylewindow.pro2
-rw-r--r--examples/tools/tools.pro2
-rw-r--r--examples/tools/treemodelcompleter/treemodelcompleter.pro2
-rw-r--r--examples/tools/undoframework/undoframework.pro2
-rw-r--r--examples/tutorials/addressbook/addressbook.pro2
-rw-r--r--examples/tutorials/addressbook/part1/part1.pro2
-rw-r--r--examples/tutorials/addressbook/part2/part2.pro2
-rw-r--r--examples/tutorials/addressbook/part3/part3.pro2
-rw-r--r--examples/tutorials/addressbook/part4/part4.pro2
-rw-r--r--examples/tutorials/addressbook/part5/part5.pro2
-rw-r--r--examples/tutorials/addressbook/part6/part6.pro2
-rw-r--r--examples/tutorials/addressbook/part7/part7.pro2
-rw-r--r--examples/tutorials/tutorials.pro2
-rw-r--r--examples/uitools/multipleinheritance/multipleinheritance.pro2
-rw-r--r--examples/uitools/textfinder/textfinder.pro2
-rw-r--r--examples/uitools/uitools.pro4
-rw-r--r--examples/webkit/fancybrowser/fancybrowser.pro4
-rw-r--r--examples/webkit/formextractor/formextractor.pro6
-rw-r--r--examples/webkit/googlechat/googlechat.pro4
-rw-r--r--examples/webkit/previewer/previewer.pro6
-rw-r--r--examples/webkit/webkit.pro2
-rw-r--r--examples/widgets/analogclock/analogclock.pro4
-rw-r--r--examples/widgets/calculator/calculator.pro4
-rw-r--r--examples/widgets/calendarwidget/calendarwidget.pro4
-rw-r--r--examples/widgets/charactermap/charactermap.pro2
-rw-r--r--examples/widgets/digitalclock/digitalclock.pro2
-rw-r--r--examples/widgets/groupbox/groupbox.pro2
-rw-r--r--examples/widgets/icons/icons.pro2
-rw-r--r--examples/widgets/imageviewer/imageviewer.pro2
-rw-r--r--examples/widgets/lineedits/lineedits.pro4
-rw-r--r--examples/widgets/movie/movie.pro2
-rw-r--r--examples/widgets/scribble/scribble.pro2
-rw-r--r--examples/widgets/shapedclock/shapedclock.pro4
-rw-r--r--examples/widgets/sliders/sliders.pro2
-rw-r--r--examples/widgets/softkeys/main.cpp51
-rw-r--r--examples/widgets/softkeys/softkeys.cpp161
-rw-r--r--examples/widgets/softkeys/softkeys.h86
-rw-r--r--examples/widgets/softkeys/softkeys.pro14
-rw-r--r--examples/widgets/spinboxes/spinboxes.pro2
-rw-r--r--examples/widgets/styles/styles.pro2
-rw-r--r--examples/widgets/stylesheet/stylesheet.pro2
-rw-r--r--examples/widgets/tablet/tablet.pro2
-rw-r--r--examples/widgets/tetrix/tetrix.pro4
-rw-r--r--examples/widgets/tooltips/tooltips.pro2
-rw-r--r--examples/widgets/validators/validators.pro2
-rw-r--r--examples/widgets/widgets.pro12
-rw-r--r--examples/widgets/wiggly/dialog.cpp11
-rw-r--r--examples/widgets/wiggly/dialog.h2
-rw-r--r--examples/widgets/wiggly/main.cpp14
-rw-r--r--examples/widgets/wiggly/wiggly.pro4
-rw-r--r--examples/widgets/windowflags/windowflags.pro2
-rw-r--r--examples/xml/dombookmarks/dombookmarks.pro2
-rw-r--r--examples/xml/htmlinfo/apache_org.html281
-rw-r--r--examples/xml/htmlinfo/htmlinfo.pro18
-rw-r--r--examples/xml/htmlinfo/main.cpp119
-rw-r--r--examples/xml/htmlinfo/nokia_com.html215
-rw-r--r--examples/xml/htmlinfo/simpleexample.html11
-rw-r--r--examples/xml/htmlinfo/trolltech_com.html955
-rw-r--r--examples/xml/htmlinfo/w3c_org.html507
-rw-r--r--examples/xml/htmlinfo/youtube_com.html1585
-rw-r--r--examples/xml/rsslisting/rsslisting.pro2
-rw-r--r--examples/xml/saxbookmarks/main.cpp4
-rw-r--r--examples/xml/saxbookmarks/mainwindow.cpp3
-rw-r--r--examples/xml/saxbookmarks/saxbookmarks.pro9
-rw-r--r--examples/xml/streambookmarks/streambookmarks.pro2
-rw-r--r--examples/xml/xml.pro5
-rw-r--r--examples/xml/xmlstreamlint/xmlstreamlint.pro2
-rw-r--r--examples/xmlpatterns/filetree/filetree.pro2
-rw-r--r--examples/xmlpatterns/recipes/recipes.pro2
-rw-r--r--examples/xmlpatterns/xmlpatterns.pro2
-rw-r--r--examples/xmlpatterns/xquery/globalVariables/globalVariables.pro2
-rw-r--r--examples/xmlpatterns/xquery/xquery.pro2
-rw-r--r--mkspecs/common/symbian/fixed_stdlib.h64
-rw-r--r--mkspecs/common/symbian/qplatformdefs.h166
-rw-r--r--mkspecs/common/symbian/stl-off/new5
-rw-r--r--mkspecs/common/symbian/symbian.conf140
-rw-r--r--mkspecs/features/debug_and_release.prf2
-rw-r--r--mkspecs/features/moc.prf4
-rw-r--r--mkspecs/features/qt.prf8
-rw-r--r--mkspecs/features/qttest_p4.prf7
-rw-r--r--mkspecs/features/symbian/application_icon.prf39
-rw-r--r--mkspecs/features/symbian/armcc_warnings.prf10
-rw-r--r--mkspecs/features/symbian/data_caging_paths.prf80
-rw-r--r--mkspecs/features/symbian/default_post.prf31
-rw-r--r--mkspecs/features/symbian/default_pre.prf2
-rw-r--r--mkspecs/features/symbian/epocallowdlldata.prf1
-rw-r--r--mkspecs/features/symbian/moc.prf16
-rw-r--r--mkspecs/features/symbian/platform_paths.prf480
-rw-r--r--mkspecs/features/symbian/qt.prf19
-rw-r--r--mkspecs/features/symbian/stl.prf36
-rw-r--r--mkspecs/features/symbian/stl_off.prf2
-rw-r--r--mkspecs/features/uic.prf6
-rw-r--r--mkspecs/symbian-abld/qmake.conf9
-rw-r--r--mkspecs/symbian-sbsv2/flm/qt/qmake_emulator_deployment.flm39
-rw-r--r--mkspecs/symbian-sbsv2/flm/qt/qmake_extra_pre_targetdep.flm35
-rw-r--r--mkspecs/symbian-sbsv2/flm/qt/qmake_generate_temp_dirs.flm22
-rw-r--r--mkspecs/symbian-sbsv2/flm/qt/qmake_post_link.flm34
-rw-r--r--mkspecs/symbian-sbsv2/flm/qt/qt.xml42
-rw-r--r--mkspecs/symbian-sbsv2/qmake.conf9
-rw-r--r--mkspecs/win32-mwc/qmake.conf110
-rw-r--r--mkspecs/win32-mwc/qplatformdefs.h164
-rw-r--r--projects.pro21
-rw-r--r--qmake/Makefile.unix30
-rw-r--r--qmake/Makefile.win3252
-rw-r--r--qmake/Makefile.win32-g++32
-rw-r--r--qmake/Makefile.win32-g++-sh30
-rw-r--r--qmake/generators/mac/pbuilder_pbx.cpp2
-rw-r--r--qmake/generators/makefile.cpp153
-rw-r--r--qmake/generators/makefile.h3
-rw-r--r--qmake/generators/metamakefile.cpp285
-rw-r--r--qmake/generators/symbian/epocroot.h51
-rw-r--r--qmake/generators/symbian/initprojectdeploy_symbian.cpp380
-rw-r--r--qmake/generators/symbian/initprojectdeploy_symbian.h75
-rw-r--r--qmake/generators/symbian/symmake.cpp1691
-rw-r--r--qmake/generators/symbian/symmake.h153
-rw-r--r--qmake/generators/symbian/symmake_abld.cpp421
-rw-r--r--qmake/generators/symbian/symmake_abld.h67
-rw-r--r--qmake/generators/symbian/symmake_sbsv2.cpp413
-rw-r--r--qmake/generators/symbian/symmake_sbsv2.h71
-rw-r--r--qmake/generators/win32/msvc_dsp.cpp2
-rw-r--r--qmake/generators/win32/msvc_objectmodel.cpp2
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp6
-rw-r--r--qmake/option.cpp2
-rw-r--r--qmake/option.h1
-rw-r--r--qmake/project.cpp134
-rw-r--r--qmake/project.h4
-rw-r--r--qmake/qmake.pri22
-rw-r--r--qmake/qmake.pro3
-rw-r--r--selfsigned.cer19
-rw-r--r--selfsigned.key12
-rw-r--r--src/3rdparty/freetype/src/base/ftobjs.c18
-rw-r--r--src/3rdparty/freetype/src/base/ftstream.c2
-rw-r--r--src/3rdparty/freetype/src/gzip/zconf.h7
-rw-r--r--src/3rdparty/freetype/src/gzip/zlib.h7
-rw-r--r--src/3rdparty/freetype/src/truetype/ttinterp.c2
-rw-r--r--src/3rdparty/freetype/src/truetype/ttpload.c6
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-impl.c4
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp28
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-stream.c2
-rw-r--r--src/3rdparty/libpng/pngconf.h4
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_config.h4
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_unix.c2
-rw-r--r--src/3rdparty/libtiff/libtiff/tiffio.h2
-rw-r--r--src/3rdparty/phonon/gstreamer/backend.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/abstractmediastream.cpp1
-rw-r--r--src/3rdparty/phonon/phonon/abstractmediastream.h2
-rw-r--r--src/3rdparty/phonon/phonon/abstractmediastream_p.h2
-rw-r--r--src/3rdparty/phonon/qt7/backend.mm2
-rw-r--r--src/3rdparty/webkit/WebCore/ChangeLog-2009-06-164
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpluginfactory.cpp4
-rw-r--r--src/3rdparty/webkit/WebKit/qt/ChangeLog6
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/simple/main.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webpage/main.cpp2
-rw-r--r--src/corelib/arch/arch.pri5
-rw-r--r--src/corelib/arch/generic/qatomic_generic_unix.cpp5
-rw-r--r--src/corelib/arch/qatomic_arch.h2
-rw-r--r--src/corelib/arch/qatomic_arm.h32
-rw-r--r--src/corelib/arch/qatomic_symbian.h56
-rw-r--r--src/corelib/arch/qatomic_windows.h9
-rw-r--r--src/corelib/arch/symbian/arch.pri5
-rw-r--r--src/corelib/arch/symbian/qatomic_symbian.cpp116
-rw-r--r--src/corelib/codecs/qisciicodec.cpp1
-rw-r--r--src/corelib/codecs/qtextcodec.cpp19
-rw-r--r--src/corelib/concurrent/qtconcurrentiteratekernel.cpp6
-rw-r--r--src/corelib/concurrent/qtconcurrentiteratekernel.h23
-rw-r--r--src/corelib/concurrent/qthreadpool.cpp6
-rw-r--r--src/corelib/corelib.pro8
-rw-r--r--src/corelib/global/qglobal.cpp459
-rw-r--r--src/corelib/global/qglobal.h213
-rw-r--r--src/corelib/global/qlibraryinfo.cpp28
-rw-r--r--src/corelib/global/qnamespace.h34
-rw-r--r--src/corelib/global/qnamespace.qdoc6
-rw-r--r--src/corelib/io/io.pri8
-rw-r--r--src/corelib/io/qabstractfileengine.cpp3
-rw-r--r--src/corelib/io/qabstractfileengine.h4
-rw-r--r--src/corelib/io/qdebug.h7
-rw-r--r--src/corelib/io/qdir.cpp34
-rw-r--r--src/corelib/io/qdir.h3
-rw-r--r--src/corelib/io/qdiriterator.cpp19
-rw-r--r--src/corelib/io/qdiriterator.h2
-rw-r--r--src/corelib/io/qfile.cpp13
-rw-r--r--src/corelib/io/qfileinfo.cpp2
-rw-r--r--src/corelib/io/qfileinfo.h3
-rw-r--r--src/corelib/io/qfilesystemwatcher.cpp4
-rw-r--r--src/corelib/io/qfilesystemwatcher_symbian.cpp289
-rw-r--r--src/corelib/io/qfilesystemwatcher_symbian_p.h130
-rw-r--r--src/corelib/io/qfsfileengine.h3
-rw-r--r--src/corelib/io/qfsfileengine_iterator_unix.cpp12
-rw-r--r--src/corelib/io/qfsfileengine_unix.cpp302
-rw-r--r--src/corelib/io/qfsfileengine_win.cpp4
-rw-r--r--src/corelib/io/qiodevice.cpp15
-rw-r--r--src/corelib/io/qiodevice.h3
-rw-r--r--src/corelib/io/qprocess.cpp38
-rw-r--r--src/corelib/io/qprocess.h7
-rw-r--r--src/corelib/io/qprocess_p.h7
-rw-r--r--src/corelib/io/qprocess_symbian.cpp1035
-rw-r--r--src/corelib/io/qresource.cpp5
-rw-r--r--src/corelib/io/qresource.h2
-rw-r--r--src/corelib/io/qsettings.cpp80
-rw-r--r--src/corelib/io/qsettings.h2
-rw-r--r--src/corelib/io/qsettings_p.h4
-rw-r--r--src/corelib/io/qtemporaryfile.cpp4
-rw-r--r--src/corelib/io/qtextstream.cpp3
-rw-r--r--src/corelib/io/qtextstream.h3
-rw-r--r--src/corelib/kernel/kernel.pri18
-rw-r--r--src/corelib/kernel/qcore_symbian_p.cpp179
-rw-r--r--src/corelib/kernel/qcore_symbian_p.h143
-rw-r--r--src/corelib/kernel/qcore_unix_p.h7
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp219
-rw-r--r--src/corelib/kernel/qcoreapplication.h4
-rw-r--r--src/corelib/kernel/qcoreapplication_p.h13
-rw-r--r--src/corelib/kernel/qcoreevent.cpp3
-rw-r--r--src/corelib/kernel/qcoreevent.h5
-rw-r--r--src/corelib/kernel/qeventdispatcher_symbian.cpp1001
-rw-r--r--src/corelib/kernel/qeventdispatcher_symbian_p.h307
-rw-r--r--src/corelib/kernel/qeventdispatcher_unix.cpp21
-rw-r--r--src/corelib/kernel/qeventdispatcher_unix_p.h1
-rw-r--r--src/corelib/kernel/qmetaobject.cpp2
-rw-r--r--src/corelib/kernel/qobject.cpp149
-rw-r--r--src/corelib/kernel/qobject.h3
-rw-r--r--src/corelib/kernel/qsharedmemory.cpp17
-rw-r--r--src/corelib/kernel/qsharedmemory_p.h9
-rw-r--r--src/corelib/kernel/qsharedmemory_symbian.cpp176
-rw-r--r--src/corelib/kernel/qsystemsemaphore.cpp16
-rw-r--r--src/corelib/kernel/qsystemsemaphore.h3
-rw-r--r--src/corelib/kernel/qsystemsemaphore_p.h13
-rw-r--r--src/corelib/kernel/qsystemsemaphore_symbian.cpp126
-rw-r--r--src/corelib/kernel/qvariant.cpp6
-rw-r--r--src/corelib/plugin/qfactoryloader.cpp13
-rw-r--r--src/corelib/plugin/qlibrary.cpp102
-rw-r--r--src/corelib/plugin/qlibrary_unix.cpp27
-rw-r--r--src/corelib/plugin/qpluginloader.cpp56
-rw-r--r--src/corelib/plugin/quuid.cpp2
-rw-r--r--src/corelib/statemachine/qstatemachine.cpp2
-rw-r--r--src/corelib/thread/qthread.cpp111
-rw-r--r--src/corelib/thread/qthread.h9
-rw-r--r--src/corelib/thread/qthread_p.h52
-rw-r--r--src/corelib/thread/qthread_unix.cpp120
-rw-r--r--src/corelib/thread/qthread_win.cpp9
-rw-r--r--src/corelib/thread/qthreadstorage.cpp14
-rw-r--r--src/corelib/tools/qbitarray.cpp2
-rw-r--r--src/corelib/tools/qbytearray.cpp66
-rw-r--r--src/corelib/tools/qbytearray.h20
-rw-r--r--src/corelib/tools/qcryptographichash.cpp4
-rw-r--r--src/corelib/tools/qdatetime.cpp18
-rw-r--r--src/corelib/tools/qdatetime.h3
-rw-r--r--src/corelib/tools/qdatetime_p.h4
-rw-r--r--src/corelib/tools/qharfbuzz.cpp5
-rw-r--r--src/corelib/tools/qharfbuzz_p.h2
-rw-r--r--src/corelib/tools/qhash.cpp78
-rw-r--r--src/corelib/tools/qhash.h64
-rw-r--r--src/corelib/tools/qlinkedlist.h44
-rw-r--r--src/corelib/tools/qlist.cpp64
-rw-r--r--src/corelib/tools/qlist.h121
-rw-r--r--src/corelib/tools/qlocale.cpp31
-rw-r--r--src/corelib/tools/qlocale_symbian.cpp879
-rw-r--r--src/corelib/tools/qmap.cpp35
-rw-r--r--src/corelib/tools/qmap.h43
-rw-r--r--src/corelib/tools/qpodlist_p.h192
-rw-r--r--src/corelib/tools/qregexp.cpp34
-rw-r--r--src/corelib/tools/qringbuffer_p.h4
-rw-r--r--src/corelib/tools/qscopedpointer.cpp218
-rw-r--r--src/corelib/tools/qscopedpointer.h298
-rw-r--r--src/corelib/tools/qshareddata.cpp2
-rw-r--r--src/corelib/tools/qshareddata.h4
-rw-r--r--src/corelib/tools/qsharedpointer.cpp9
-rw-r--r--src/corelib/tools/qsharedpointer_impl.h24
-rw-r--r--src/corelib/tools/qstring.cpp145
-rw-r--r--src/corelib/tools/qtextboundaryfinder.cpp12
-rw-r--r--src/corelib/tools/qvarlengtharray.h82
-rw-r--r--src/corelib/tools/qvector.cpp1
-rw-r--r--src/corelib/tools/qvector.h98
-rw-r--r--src/corelib/tools/tools.pri10
-rw-r--r--src/corelib/xml/qxmlstream.cpp5
-rw-r--r--src/corelib/xml/qxmlstream.h5
-rw-r--r--src/corelib/xml/qxmlstream_p.h1
-rw-r--r--src/dbus/qdbusabstractadaptor.cpp2
-rw-r--r--src/dbus/qdbuscontext.h2
-rw-r--r--src/gui/dialogs/dialogs.pri7
-rw-r--r--src/gui/dialogs/qdialog.cpp35
-rw-r--r--src/gui/dialogs/qfiledialog.cpp71
-rw-r--r--src/gui/dialogs/qfiledialog_embedded.ui (renamed from src/gui/dialogs/qfiledialog_wince.ui)0
-rw-r--r--src/gui/dialogs/qfiledialog_p.h59
-rw-r--r--src/gui/dialogs/qfileinfogatherer.cpp30
-rw-r--r--src/gui/dialogs/qfilesystemmodel.cpp35
-rw-r--r--src/gui/dialogs/qfscompleter_p.h82
-rw-r--r--src/gui/dialogs/qmessagebox.cpp2
-rw-r--r--src/gui/dialogs/qpagesetupdialog_win.cpp2
-rw-r--r--src/gui/dialogs/qprintdialog_unix.cpp5
-rw-r--r--src/gui/dialogs/qprintpreviewdialog.cpp13
-rw-r--r--src/gui/dialogs/qprintpreviewdialog.h2
-rw-r--r--src/gui/dialogs/qwizard.cpp2
-rw-r--r--src/gui/egl/qegl_p.h2
-rw-r--r--src/gui/embedded/qscreen_qws.cpp2
-rw-r--r--src/gui/embedded/qsoundqss_qws.cpp36
-rw-r--r--src/gui/embedded/qwindowsystem_qws.cpp52
-rw-r--r--src/gui/embedded/qwscursor_qws.cpp2
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp76
-rw-r--r--src/gui/graphicsview/qgraphicsitem.h3
-rw-r--r--src/gui/graphicsview/qgraphicsitem_p.h12
-rw-r--r--src/gui/graphicsview/qgraphicslayoutitem.cpp1
-rw-r--r--src/gui/graphicsview/qgraphicslayoutitem.h3
-rw-r--r--src/gui/graphicsview/qgraphicsproxywidget.h2
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicssceneevent.cpp1
-rw-r--r--src/gui/graphicsview/qgraphicssceneevent.h3
-rw-r--r--src/gui/graphicsview/qgraphicstransform.cpp2
-rw-r--r--src/gui/graphicsview/qgraphicsview.cpp21
-rw-r--r--src/gui/graphicsview/qgraphicswidget.cpp2
-rw-r--r--src/gui/graphicsview/qgraphicswidget.h2
-rw-r--r--src/gui/gui.pro7
-rw-r--r--src/gui/image/image.pri3
-rw-r--r--src/gui/image/qbitmap.cpp11
-rw-r--r--src/gui/image/qbitmap.h2
-rw-r--r--src/gui/image/qimage.cpp71
-rw-r--r--src/gui/image/qimageiohandler.cpp1
-rw-r--r--src/gui/image/qimageiohandler.h3
-rw-r--r--src/gui/image/qpicture.cpp74
-rw-r--r--src/gui/image/qpicture.h7
-rw-r--r--src/gui/image/qpicture_p.h8
-rw-r--r--src/gui/image/qpixmap.cpp52
-rw-r--r--src/gui/image/qpixmap.h15
-rw-r--r--src/gui/image/qpixmap_mac.cpp14
-rw-r--r--src/gui/image/qpixmap_qws.cpp8
-rw-r--r--src/gui/image/qpixmap_raster.cpp10
-rw-r--r--src/gui/image/qpixmap_s60.cpp236
-rw-r--r--src/gui/image/qpixmap_win.cpp2
-rw-r--r--src/gui/image/qpixmap_x11.cpp8
-rw-r--r--src/gui/image/qpixmapcache.cpp14
-rw-r--r--src/gui/image/qpixmapcache_p.h2
-rw-r--r--src/gui/image/qpixmapdata_p.h1
-rw-r--r--src/gui/image/qpixmapdatafactory.cpp4
-rw-r--r--src/gui/inputmethod/inputmethod.pri5
-rw-r--r--src/gui/inputmethod/qcoefepinputcontext_p.h154
-rw-r--r--src/gui/inputmethod/qcoefepinputcontext_s60.cpp752
-rw-r--r--src/gui/inputmethod/qinputcontext.cpp50
-rw-r--r--src/gui/inputmethod/qinputcontext.h8
-rw-r--r--src/gui/inputmethod/qinputcontextfactory.cpp23
-rw-r--r--src/gui/inputmethod/qwininputcontext_win.cpp7
-rw-r--r--src/gui/inputmethod/qximinputcontext_x11.cpp2
-rw-r--r--src/gui/itemviews/qabstractitemview.cpp8
-rw-r--r--src/gui/itemviews/qabstractitemview_p.h2
-rw-r--r--src/gui/itemviews/qcolumnview_p.h2
-rw-r--r--src/gui/itemviews/qdirmodel.cpp17
-rw-r--r--src/gui/itemviews/qfileiconprovider.cpp1
-rw-r--r--src/gui/itemviews/qfileiconprovider.h5
-rw-r--r--src/gui/itemviews/qheaderview.cpp8
-rw-r--r--src/gui/itemviews/qitemdelegate.cpp2
-rw-r--r--src/gui/itemviews/qstandarditemmodel.cpp26
-rw-r--r--src/gui/itemviews/qstandarditemmodel.h2
-rw-r--r--src/gui/itemviews/qstandarditemmodel_p.h4
-rw-r--r--src/gui/itemviews/qstyleditemdelegate.cpp2
-rw-r--r--src/gui/itemviews/qtreewidget.cpp2
-rw-r--r--src/gui/itemviews/qtreewidgetitemiterator.cpp3
-rw-r--r--src/gui/itemviews/qtreewidgetitemiterator.h3
-rw-r--r--src/gui/kernel/kernel.pri31
-rw-r--r--src/gui/kernel/qaction.cpp29
-rw-r--r--src/gui/kernel/qaction.h9
-rw-r--r--src/gui/kernel/qaction_p.h1
-rw-r--r--src/gui/kernel/qapplication.cpp116
-rw-r--r--src/gui/kernel/qapplication.h16
-rw-r--r--src/gui/kernel/qapplication_p.h13
-rw-r--r--src/gui/kernel/qapplication_qws.cpp29
-rw-r--r--src/gui/kernel/qapplication_s60.cpp1198
-rw-r--r--src/gui/kernel/qboxlayout.cpp29
-rw-r--r--src/gui/kernel/qclipboard_s60.cpp266
-rw-r--r--src/gui/kernel/qcursor.cpp3
-rw-r--r--src/gui/kernel/qcursor_qws.cpp6
-rw-r--r--src/gui/kernel/qcursor_s60.cpp60
-rw-r--r--src/gui/kernel/qdesktopwidget_s60.cpp201
-rw-r--r--src/gui/kernel/qdesktopwidget_x11.cpp2
-rw-r--r--src/gui/kernel/qdnd_s60.cpp395
-rw-r--r--src/gui/kernel/qevent.cpp11
-rw-r--r--src/gui/kernel/qevent.h5
-rw-r--r--src/gui/kernel/qeventdispatcher_s60.cpp130
-rw-r--r--src/gui/kernel/qeventdispatcher_s60_p.h96
-rw-r--r--src/gui/kernel/qkeymapper_mac.cpp10
-rw-r--r--src/gui/kernel/qkeymapper_p.h10
-rw-r--r--src/gui/kernel/qkeymapper_s60.cpp247
-rw-r--r--src/gui/kernel/qkeymapper_win.cpp9
-rw-r--r--src/gui/kernel/qkeysequence.cpp162
-rw-r--r--src/gui/kernel/qlayout.cpp14
-rw-r--r--src/gui/kernel/qshortcutmap.cpp5
-rw-r--r--src/gui/kernel/qshortcutmap_p.h3
-rw-r--r--src/gui/kernel/qsound.cpp3
-rw-r--r--src/gui/kernel/qsound_s60.cpp206
-rw-r--r--src/gui/kernel/qt_s60_p.h291
-rw-r--r--src/gui/kernel/qwidget.cpp307
-rw-r--r--src/gui/kernel/qwidget.h13
-rw-r--r--src/gui/kernel/qwidget_mac.mm6
-rw-r--r--src/gui/kernel/qwidget_p.h45
-rw-r--r--src/gui/kernel/qwidget_qws.cpp12
-rw-r--r--src/gui/kernel/qwidget_s60.cpp1206
-rw-r--r--src/gui/kernel/qwidget_win.cpp6
-rw-r--r--src/gui/kernel/qwidget_x11.cpp10
-rw-r--r--src/gui/kernel/qwindowdefs.h5
-rw-r--r--src/gui/kernel/symbian.pri3
-rw-r--r--src/gui/painting/painting.pri30
-rw-r--r--src/gui/painting/qbackingstore.cpp6
-rw-r--r--src/gui/painting/qblendfunctions_armv6_rvct.s222
-rw-r--r--src/gui/painting/qbrush.cpp107
-rw-r--r--src/gui/painting/qbrush.h6
-rw-r--r--src/gui/painting/qcolormap_s60.cpp107
-rw-r--r--src/gui/painting/qdrawhelper.cpp289
-rw-r--r--src/gui/painting/qdrawhelper_armv6_p.h81
-rw-r--r--src/gui/painting/qdrawhelper_armv6_rvct.inc496
-rw-r--r--src/gui/painting/qdrawhelper_armv6_rvct.s177
-rw-r--r--src/gui/painting/qdrawhelper_p.h95
-rw-r--r--src/gui/painting/qgraphicssystem.cpp4
-rw-r--r--src/gui/painting/qgraphicssystemfactory.cpp2
-rw-r--r--src/gui/painting/qgrayraster.c4
-rw-r--r--src/gui/painting/qpaintdevice_mac.cpp2
-rw-r--r--src/gui/painting/qpaintengine.cpp1
-rw-r--r--src/gui/painting/qpaintengine.h3
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp260
-rw-r--r--src/gui/painting/qpaintengine_raster_p.h14
-rw-r--r--src/gui/painting/qpaintengine_x11.cpp22
-rw-r--r--src/gui/painting/qpaintengineex.cpp6
-rw-r--r--src/gui/painting/qpaintengineex_p.h8
-rw-r--r--src/gui/painting/qpainter.cpp50
-rw-r--r--src/gui/painting/qpainter.h5
-rw-r--r--src/gui/painting/qpainter_p.h2
-rw-r--r--src/gui/painting/qpainterpath.cpp32
-rw-r--r--src/gui/painting/qpainterpath.h9
-rw-r--r--src/gui/painting/qpathclipper_p.h7
-rw-r--r--src/gui/painting/qprinter.cpp1
-rw-r--r--src/gui/painting/qprinter.h5
-rw-r--r--src/gui/painting/qprinterinfo.h3
-rw-r--r--src/gui/painting/qprinterinfo_mac.cpp26
-rw-r--r--src/gui/painting/qprinterinfo_unix.cpp27
-rw-r--r--src/gui/painting/qprinterinfo_win.cpp24
-rw-r--r--src/gui/painting/qrasterizer.cpp5
-rw-r--r--src/gui/painting/qregion.cpp160
-rw-r--r--src/gui/painting/qregion.h4
-rw-r--r--src/gui/painting/qregion_s60.cpp52
-rw-r--r--src/gui/painting/qtessellator.cpp15
-rw-r--r--src/gui/painting/qvectorpath_p.h6
-rw-r--r--src/gui/painting/qwindowsurface_raster.cpp8
-rw-r--r--src/gui/painting/qwindowsurface_raster_p.h2
-rw-r--r--src/gui/painting/qwindowsurface_s60.cpp237
-rw-r--r--src/gui/painting/qwindowsurface_s60_p.h95
-rw-r--r--src/gui/painting/qwindowsurface_x11.cpp2
-rw-r--r--src/gui/styles/qcommonstyle.cpp7
-rw-r--r--src/gui/styles/qs60style.cpp2892
-rw-r--r--src/gui/styles/qs60style.h108
-rw-r--r--src/gui/styles/qs60style_p.h506
-rw-r--r--src/gui/styles/qs60style_s60.cpp1387
-rw-r--r--src/gui/styles/qs60style_simulated.cpp449
-rw-r--r--src/gui/styles/qstyle.cpp17
-rw-r--r--src/gui/styles/qstyle.h6
-rw-r--r--src/gui/styles/qstyle_p.h2
-rw-r--r--src/gui/styles/qstyle_s60_simulated.qrc6
-rw-r--r--src/gui/styles/qstylefactory.cpp12
-rw-r--r--src/gui/styles/qstylesheetstyle_default.cpp7
-rw-r--r--src/gui/styles/qwindowscestyle.cpp3
-rw-r--r--src/gui/styles/qwindowsmobilestyle.cpp3
-rw-r--r--src/gui/styles/qwindowsstyle.cpp2
-rw-r--r--src/gui/styles/styles.pri16
-rw-r--r--src/gui/text/qabstractfontengine_p.h2
-rw-r--r--src/gui/text/qcssparser.cpp5
-rw-r--r--src/gui/text/qfont.cpp77
-rw-r--r--src/gui/text/qfont.h3
-rw-r--r--src/gui/text/qfont_s60.cpp94
-rw-r--r--src/gui/text/qfontdatabase.cpp235
-rw-r--r--src/gui/text/qfontdatabase.h3
-rw-r--r--src/gui/text/qfontdatabase_qws.cpp276
-rw-r--r--src/gui/text/qfontdatabase_s60.cpp423
-rw-r--r--src/gui/text/qfontengine.cpp43
-rw-r--r--src/gui/text/qfontengine_ft.cpp99
-rw-r--r--src/gui/text/qfontengine_ft_p.h3
-rw-r--r--src/gui/text/qfontengine_p.h19
-rw-r--r--src/gui/text/qfontengine_qpf.cpp31
-rw-r--r--src/gui/text/qfontengine_qpf_p.h1
-rw-r--r--src/gui/text/qfontengine_s60.cpp324
-rw-r--r--src/gui/text/qfontengine_s60_p.h146
-rw-r--r--src/gui/text/qfontengine_win.cpp11
-rw-r--r--src/gui/text/qfontmetrics.cpp8
-rw-r--r--src/gui/text/qfragmentmap_p.h21
-rw-r--r--src/gui/text/qtextcontrol.cpp34
-rw-r--r--src/gui/text/qtextdocument_p.cpp76
-rw-r--r--src/gui/text/qtextengine.cpp10
-rw-r--r--src/gui/text/qtextformat.cpp16
-rw-r--r--src/gui/text/qtextlayout.cpp2
-rw-r--r--src/gui/text/qtextoption.cpp10
-rw-r--r--src/gui/text/qtexttable.cpp11
-rw-r--r--src/gui/text/qzip.cpp10
-rw-r--r--src/gui/text/text.pri33
-rw-r--r--src/gui/util/qcompleter.cpp22
-rw-r--r--src/gui/util/qcompleter_p.h3
-rw-r--r--src/gui/util/qdesktopservices.cpp8
-rw-r--r--src/gui/util/qdesktopservices_s60.cpp440
-rw-r--r--src/gui/util/util.pri5
-rw-r--r--src/gui/widgets/qabstractscrollarea.cpp23
-rw-r--r--src/gui/widgets/qabstractscrollarea_p.h2
-rw-r--r--src/gui/widgets/qabstractslider.cpp3
-rw-r--r--src/gui/widgets/qabstractspinbox.cpp13
-rw-r--r--src/gui/widgets/qabstractspinbox.h2
-rw-r--r--src/gui/widgets/qactiontokeyeventmapper.cpp103
-rw-r--r--src/gui/widgets/qactiontokeyeventmapper_p.h81
-rw-r--r--src/gui/widgets/qcalendarwidget.cpp11
-rw-r--r--src/gui/widgets/qcombobox.cpp19
-rw-r--r--src/gui/widgets/qdatetimeedit.cpp20
-rw-r--r--src/gui/widgets/qlinecontrol.cpp39
-rw-r--r--src/gui/widgets/qlineedit.cpp24
-rw-r--r--src/gui/widgets/qlineedit_p.cpp2
-rw-r--r--src/gui/widgets/qlineedit_p.h5
-rw-r--r--src/gui/widgets/qmacnativewidget_mac.h2
-rw-r--r--src/gui/widgets/qmainwindow.cpp16
-rw-r--r--src/gui/widgets/qmenu.cpp39
-rw-r--r--src/gui/widgets/qmenu.h9
-rw-r--r--src/gui/widgets/qmenu_p.h42
-rw-r--r--src/gui/widgets/qmenu_symbian.cpp425
-rw-r--r--src/gui/widgets/qmenubar.cpp38
-rw-r--r--src/gui/widgets/qmenubar_p.h45
-rw-r--r--src/gui/widgets/qmenudata.h2
-rw-r--r--src/gui/widgets/qplaintextedit.cpp16
-rw-r--r--src/gui/widgets/qplaintextedit_p.h6
-rw-r--r--src/gui/widgets/qprintpreviewwidget.cpp13
-rw-r--r--src/gui/widgets/qprintpreviewwidget.h2
-rw-r--r--src/gui/widgets/qspinbox.cpp9
-rw-r--r--src/gui/widgets/qtextedit.cpp14
-rw-r--r--src/gui/widgets/qtextedit_p.h1
-rw-r--r--src/gui/widgets/widgets.pri12
-rw-r--r--src/network/access/qftp.cpp12
-rw-r--r--src/network/access/qhttp.cpp1
-rw-r--r--src/network/access/qhttp.h3
-rw-r--r--src/network/access/qhttpnetworkconnection.cpp6
-rw-r--r--src/network/access/qhttpnetworkconnection_p.h2
-rw-r--r--src/network/access/qhttpnetworkreply.cpp2
-rw-r--r--src/network/access/qnetworkaccesshttpbackend.cpp11
-rw-r--r--src/network/access/qnetworkaccessmanager.cpp2
-rw-r--r--src/network/access/qnetworkdiskcache.cpp42
-rw-r--r--src/network/access/qnetworkrequest.cpp3
-rw-r--r--src/network/kernel/kernel.pri3
-rw-r--r--src/network/kernel/qhostaddress.cpp5
-rw-r--r--src/network/kernel/qhostaddress.h3
-rw-r--r--src/network/kernel/qhostinfo.cpp20
-rw-r--r--src/network/kernel/qhostinfo.h3
-rw-r--r--src/network/kernel/qhostinfo_unix.cpp5
-rw-r--r--src/network/kernel/qnetworkinterface.cpp12
-rw-r--r--src/network/kernel/qnetworkinterface.h3
-rw-r--r--src/network/kernel/qnetworkinterface_symbian.cpp238
-rw-r--r--src/network/kernel/qnetworkinterface_win.cpp11
-rw-r--r--src/network/network.pro13
-rw-r--r--src/network/socket/qabstractsocket.cpp1
-rw-r--r--src/network/socket/qlocalserver.cpp4
-rw-r--r--src/network/socket/qlocalserver_unix.cpp18
-rw-r--r--src/network/socket/qlocalsocket_unix.cpp20
-rw-r--r--src/network/socket/qnativesocketengine.cpp9
-rw-r--r--src/network/socket/qnativesocketengine_p.h6
-rw-r--r--src/network/socket/qnativesocketengine_unix.cpp214
-rw-r--r--src/network/socket/qsocks5socketengine.cpp8
-rw-r--r--src/network/socket/qtcpserver.cpp7
-rw-r--r--src/network/socket/qudpsocket.cpp22
-rw-r--r--src/network/socket/socket.pri2
-rw-r--r--src/network/ssl/qsslcertificate.cpp10
-rw-r--r--src/network/ssl/qsslcertificate.h3
-rw-r--r--src/network/ssl/qsslcertificate_p.h1
-rw-r--r--src/network/ssl/qsslcipher.cpp5
-rw-r--r--src/network/ssl/qsslcipher.h3
-rw-r--r--src/network/ssl/qsslerror.cpp22
-rw-r--r--src/network/ssl/qsslerror.h10
-rw-r--r--src/network/ssl/qsslkey.cpp10
-rw-r--r--src/network/ssl/qsslkey.h5
-rw-r--r--src/network/ssl/qsslkey_p.h4
-rw-r--r--src/network/ssl/qsslsocket_openssl_p.h2
-rw-r--r--src/network/ssl/qsslsocket_openssl_symbols.cpp145
-rw-r--r--src/network/ssl/ssl.pri8
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp6
-rw-r--r--src/opengl/qgl.cpp7
-rw-r--r--src/opengl/qgl.h3
-rw-r--r--src/opengl/qglframebufferobject.cpp1
-rw-r--r--src/opengl/qglframebufferobject.h2
-rw-r--r--src/opengl/qglpaintdevice_qws.cpp2
-rw-r--r--src/opengl/qglpaintdevice_qws_p.h3
-rw-r--r--src/opengl/qglpixelbuffer.cpp1
-rw-r--r--src/opengl/qglpixelbuffer.h2
-rw-r--r--src/opengl/qpaintengine_opengl.cpp2
-rw-r--r--src/openvg/qpixmapdata_vg_p.h2
-rw-r--r--src/phonon/phonon.pro14
-rw-r--r--src/plugins/codecs/cn/cn.pro2
-rw-r--r--src/plugins/codecs/jp/jp.pro2
-rw-r--r--src/plugins/codecs/jp/qeucjpcodec.cpp1
-rw-r--r--src/plugins/codecs/kr/kr.pro2
-rw-r--r--src/plugins/codecs/tw/tw.pro2
-rw-r--r--src/plugins/iconengines/svgiconengine/svgiconengine.pro2
-rw-r--r--src/plugins/imageformats/gif/gif.pro2
-rw-r--r--src/plugins/imageformats/ico/ico.pro2
-rw-r--r--src/plugins/imageformats/jpeg/jpeg.pro7
-rw-r--r--src/plugins/imageformats/mng/mng.pro7
-rw-r--r--src/plugins/imageformats/mng/qmnghandler.cpp2
-rw-r--r--src/plugins/imageformats/mng/qmnghandler.h3
-rw-r--r--src/plugins/imageformats/svg/svg.pro2
-rw-r--r--src/plugins/imageformats/tiff/tiff.pro5
-rw-r--r--src/plugins/plugins.pro5
-rw-r--r--src/plugins/qpluginbase.pri6
-rw-r--r--src/plugins/s60/3_1/3_1.pro8
-rw-r--r--src/plugins/s60/3_2/3_2.pro15
-rw-r--r--src/plugins/s60/5_0/5_0.pro15
-rw-r--r--src/plugins/s60/bwins/qts60pluginu.def6
-rw-r--r--src/plugins/s60/eabi/qts60pluginu.def6
-rw-r--r--src/plugins/s60/s60.pro3
-rw-r--r--src/plugins/s60/s60pluginbase.pri15
-rw-r--r--src/plugins/s60/src/qdesktopservices_3_1.cpp49
-rw-r--r--src/plugins/s60/src/qdesktopservices_3_2.cpp79
-rw-r--r--src/plugins/s60/src/qlocale_3_1.cpp62
-rw-r--r--src/plugins/s60/src/qlocale_3_2.cpp64
-rw-r--r--src/plugins/sqldrivers/sqldrivers.pro4
-rw-r--r--src/plugins/sqldrivers/sqlite_symbian/SQLite3_v9.2.zipbin0 -> 3155605 bytes-rw-r--r--src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pro5
-rw-r--r--src/qbase.pri11
-rw-r--r--src/qt3support/itemviews/q3table.cpp1
-rw-r--r--src/qt3support/other/q3accel.cpp2
-rw-r--r--src/qt3support/painting/q3painter.h2
-rw-r--r--src/s60installs/.gitignore1
-rw-r--r--src/s60installs/qt.iby102
-rw-r--r--src/s60installs/qt_libs.pro91
-rw-r--r--src/s60installs/qtdemoapps.iby15
-rw-r--r--src/s60main/qts60main.cpp62
-rw-r--r--src/s60main/qts60main_mcrt0.cpp111
-rw-r--r--src/s60main/qts60mainapplication.cpp91
-rw-r--r--src/s60main/qts60mainapplication_p.h104
-rw-r--r--src/s60main/qts60mainappui.cpp213
-rw-r--r--src/s60main/qts60mainappui_p.h146
-rw-r--r--src/s60main/qts60maindocument.cpp117
-rw-r--r--src/s60main/qts60maindocument_p.h133
-rw-r--r--src/s60main/s60main.pro55
-rw-r--r--src/s60main/s60main.rss85
-rw-r--r--src/script/api/qscriptable.cpp2
-rw-r--r--src/script/api/qscriptable.h4
-rw-r--r--src/script/api/qscriptclass.cpp2
-rw-r--r--src/script/api/qscriptclass.h3
-rw-r--r--src/script/api/qscriptclasspropertyiterator.cpp2
-rw-r--r--src/script/api/qscriptclasspropertyiterator.h3
-rw-r--r--src/script/api/qscriptcontext.h1
-rw-r--r--src/script/api/qscriptcontextinfo.cpp19
-rw-r--r--src/script/api/qscriptcontextinfo.h3
-rw-r--r--src/script/api/qscriptengine.cpp18
-rw-r--r--src/script/api/qscriptengine.h5
-rw-r--r--src/script/api/qscriptengineagent.cpp4
-rw-r--r--src/script/api/qscriptengineagent.h3
-rw-r--r--src/script/api/qscriptstring.cpp15
-rw-r--r--src/script/api/qscriptstring.h5
-rw-r--r--src/script/api/qscriptvalue.cpp37
-rw-r--r--src/script/api/qscriptvalue.h8
-rw-r--r--src/script/api/qscriptvalue_p.h2
-rw-r--r--src/script/api/qscriptvalueiterator.cpp18
-rw-r--r--src/script/api/qscriptvalueiterator.h4
-rw-r--r--src/script/script.pro1
-rw-r--r--src/scripttools/debugging/qscriptbreakpointdata.cpp5
-rw-r--r--src/scripttools/debugging/qscriptbreakpointdata_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerbackend.cpp1
-rw-r--r--src/scripttools/debugging/qscriptdebuggerbackend_p.h2
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommand.cpp5
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommand_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommandexecutor.cpp1
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommandexecutor_p.h3
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsole.cpp1
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsole_p.h3
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommand.cpp1
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommand_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommandgroupdata.cpp14
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommandgroupdata_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommandmanager.cpp1
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommandmanager_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerevent.cpp5
-rw-r--r--src/scripttools/debugging/qscriptdebuggerevent_p.h3
-rw-r--r--src/scripttools/debugging/qscriptdebuggerfrontend.cpp1
-rw-r--r--src/scripttools/debugging/qscriptdebuggerfrontend_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerjob.cpp1
-rw-r--r--src/scripttools/debugging/qscriptdebuggerjob_p.h3
-rw-r--r--src/scripttools/debugging/qscriptdebuggerresponse.cpp5
-rw-r--r--src/scripttools/debugging/qscriptdebuggerresponse_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggervalue.cpp16
-rw-r--r--src/scripttools/debugging/qscriptdebuggervalue_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggervalueproperty.cpp14
-rw-r--r--src/scripttools/debugging/qscriptdebuggervalueproperty_p.h3
-rw-r--r--src/scripttools/debugging/qscriptscriptdata.cpp20
-rw-r--r--src/scripttools/debugging/qscriptscriptdata_p.h4
-rw-r--r--src/scripttools/debugging/qscriptstdmessagehandler.cpp1
-rw-r--r--src/scripttools/debugging/qscriptstdmessagehandler_p.h4
-rw-r--r--src/scripttools/debugging/qscriptvalueproperty.cpp14
-rw-r--r--src/scripttools/debugging/qscriptvalueproperty_p.h3
-rw-r--r--src/scripttools/scripttools.pro2
-rw-r--r--src/sql/drivers/sqlite/qsql_sqlite.cpp2
-rw-r--r--src/sql/sql.pro7
-rw-r--r--src/src.pro9
-rw-r--r--src/svg/qgraphicssvgitem.h6
-rw-r--r--src/svg/qsvggenerator.cpp1
-rw-r--r--src/svg/qsvggenerator.h3
-rw-r--r--src/svg/svg.pro2
-rw-r--r--src/testlib/3rdparty/cycle_p.h19
-rw-r--r--src/testlib/qbenchmark.cpp1
-rw-r--r--src/testlib/qplaintestlogger.cpp40
-rw-r--r--src/testlib/qtest.h7
-rw-r--r--src/testlib/qtest_global.h5
-rw-r--r--src/testlib/qtestcase.cpp32
-rw-r--r--src/testlib/qtestcase.h37
-rw-r--r--src/testlib/testlib.pro4
-rw-r--r--src/xml/dom/qdom.cpp88
-rw-r--r--src/xml/sax/qxml.cpp90
-rw-r--r--src/xml/sax/qxml.h5
-rw-r--r--src/xml/xml.pro2
-rw-r--r--src/xmlpatterns/api/qabstractxmlnodemodel.cpp1
-rw-r--r--src/xmlpatterns/api/qabstractxmlnodemodel.h3
-rw-r--r--src/xmlpatterns/api/qabstractxmlreceiver.cpp1
-rw-r--r--src/xmlpatterns/api/qabstractxmlreceiver.h3
-rw-r--r--src/xmlpatterns/api/qxmlresultitems.cpp1
-rw-r--r--src/xmlpatterns/api/qxmlresultitems.h3
-rw-r--r--src/xmlpatterns/data/qabstractfloatcasters.cpp7
-rw-r--r--src/xmlpatterns/data/qschemanumeric.cpp3
-rw-r--r--src/xmlpatterns/functions/qcomparingaggregator.cpp5
-rw-r--r--src/xmlpatterns/functions/qsequencefns_p.h11
-rw-r--r--tests/arthur/common/paintcommands.cpp7
-rw-r--r--tests/arthur/common/paintcommands.h2
-rw-r--r--tests/arthur/common/qengines.cpp7
-rw-r--r--tests/arthur/common/qengines.h3
-rw-r--r--tests/arthur/lance/lance.pro8
-rw-r--r--tests/arthur/lance/main.cpp7
-rw-r--r--tests/auto/auto.pro3
-rw-r--r--tests/auto/checkxmlfiles/checkxmlfiles.pro2
-rw-r--r--tests/auto/collections/collections.pro4
-rw-r--r--tests/auto/collections/tst_collections.cpp14
-rw-r--r--tests/auto/compilerwarnings/compilerwarnings.pro1
-rw-r--r--tests/auto/exceptionsafety/exceptionsafety.pro2
-rw-r--r--tests/auto/exceptionsafety/tst_exceptionsafety.cpp640
-rw-r--r--tests/auto/exceptionsafety_objects/3rdparty/memcheck.h319
-rw-r--r--tests/auto/exceptionsafety_objects/3rdparty/valgrind.h3924
-rw-r--r--tests/auto/exceptionsafety_objects/exceptionsafety_objects.pro3
-rw-r--r--tests/auto/exceptionsafety_objects/oomsimulator.h286
-rw-r--r--tests/auto/exceptionsafety_objects/tst_exceptionsafety_objects.cpp651
-rw-r--r--tests/auto/headers/headers.pro2
-rw-r--r--tests/auto/languagechange/tst_languagechange.cpp25
-rw-r--r--tests/auto/network-settings.h257
-rw-r--r--tests/auto/networkselftest/networkselftest.pro1
-rw-r--r--tests/auto/networkselftest/tst_networkselftest.cpp22
-rw-r--r--tests/auto/patternistexamplefiletree/patternistexamplefiletree.pro1
-rw-r--r--tests/auto/patternistexamples/patternistexamples.pro2
-rw-r--r--tests/auto/patternistheaders/patternistheaders.pro1
-rw-r--r--tests/auto/q3urloperator/copy.res/.gitattributes1
-rw-r--r--tests/auto/q_func_info/q_func_info.pro2
-rw-r--r--tests/auto/q_func_info/tst_q_func_info.cpp2
-rw-r--r--tests/auto/qabstractitemmodel/qabstractitemmodel.pro5
-rw-r--r--tests/auto/qabstractitemview/tst_qabstractitemview.cpp9
-rw-r--r--tests/auto/qabstractmessagehandler/qabstractmessagehandler.pro1
-rw-r--r--tests/auto/qabstractnetworkcache/qabstractnetworkcache.pro2
-rw-r--r--tests/auto/qabstractnetworkcache/tst_qabstractnetworkcache.cpp8
-rw-r--r--tests/auto/qabstracturiresolver/qabstracturiresolver.pro1
-rw-r--r--tests/auto/qabstractxmlforwarditerator/qabstractxmlforwarditerator.pro1
-rw-r--r--tests/auto/qabstractxmlreceiver/qabstractxmlreceiver.pro1
-rw-r--r--tests/auto/qaction/tst_qaction.cpp2
-rw-r--r--tests/auto/qanimationgroup/qanimationgroup.pro2
-rw-r--r--tests/auto/qapplication/desktopsettingsaware/desktopsettingsaware.pro9
-rw-r--r--tests/auto/qapplication/test/test.pro8
-rw-r--r--tests/auto/qapplication/tst_qapplication.cpp56
-rw-r--r--tests/auto/qatomicint/qatomicint.pro3
-rw-r--r--tests/auto/qatomicpointer/qatomicpointer.pro2
-rw-r--r--tests/auto/qautoptr/qautoptr.pro2
-rw-r--r--tests/auto/qbitarray/qbitarray.pro4
-rw-r--r--tests/auto/qbitarray/tst_qbitarray.cpp28
-rw-r--r--tests/auto/qbuffer/qbuffer.pro4
-rw-r--r--tests/auto/qbytearray/.gitattributes1
-rw-r--r--tests/auto/qbytearray/qbytearray.pro7
-rw-r--r--tests/auto/qbytearray/tst_qbytearray.cpp20
-rw-r--r--tests/auto/qcache/qcache.pro4
-rw-r--r--tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp2
-rw-r--r--tests/auto/qchar/qchar.pro2
-rw-r--r--tests/auto/qclipboard/test/test.pro2
-rw-r--r--tests/auto/qclipboard/tst_qclipboard.cpp8
-rw-r--r--tests/auto/qcolumnview/tst_qcolumnview.cpp2
-rw-r--r--tests/auto/qcombobox/qcombobox.pro2
-rw-r--r--tests/auto/qcombobox/tst_qcombobox.cpp23
-rw-r--r--tests/auto/qcompleter/tst_qcompleter.cpp3
-rw-r--r--tests/auto/qcoreapplication/qcoreapplication.pro3
-rw-r--r--tests/auto/qcryptographichash/qcryptographichash.pro6
-rw-r--r--tests/auto/qcssparser/qcssparser.pro7
-rw-r--r--tests/auto/qcssparser/tst_qcssparser.cpp4
-rw-r--r--tests/auto/qdatastream/qdatastream.pro12
-rw-r--r--tests/auto/qdatastream/tst_qdatastream.cpp39
-rw-r--r--tests/auto/qdate/qdate.pro4
-rw-r--r--tests/auto/qdatetime/tst_qdatetime.cpp14
-rw-r--r--tests/auto/qdatetimeedit/tst_qdatetimeedit.cpp23
-rw-r--r--tests/auto/qdebug/qdebug.pro4
-rw-r--r--tests/auto/qdesktopservices/qdesktopservices.pro25
-rw-r--r--tests/auto/qdesktopservices/tst_qdesktopservices.cpp205
-rw-r--r--tests/auto/qdir/qdir.pro10
-rw-r--r--tests/auto/qdir/tst_qdir.cpp187
-rw-r--r--tests/auto/qdiriterator/qdiriterator.pro2
-rw-r--r--tests/auto/qdiriterator/tst_qdiriterator.cpp23
-rw-r--r--tests/auto/qdirmodel/qdirmodel.pro12
-rw-r--r--tests/auto/qdirmodel/tst_qdirmodel.cpp28
-rw-r--r--tests/auto/qdom/qdom.pro6
-rw-r--r--tests/auto/qdom/tst_qdom.cpp4
-rw-r--r--tests/auto/qevent/qevent.pro3
-rw-r--r--tests/auto/qeventloop/tst_qeventloop.cpp398
-rw-r--r--tests/auto/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro2
-rw-r--r--tests/auto/qfile/test/test.pro42
-rw-r--r--tests/auto/qfile/tst_qfile.cpp78
-rw-r--r--tests/auto/qfiledialog/qfiledialog.pro5
-rw-r--r--tests/auto/qfiledialog/tst_qfiledialog.cpp27
-rw-r--r--tests/auto/qfileinfo/qfileinfo.pro6
-rw-r--r--tests/auto/qfileinfo/tst_qfileinfo.cpp110
-rw-r--r--tests/auto/qfilesystemmodel/qfilesystemmodel.pro9
-rw-r--r--tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp47
-rw-r--r--tests/auto/qfilesystemwatcher/qfilesystemwatcher.pro2
-rw-r--r--tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp36
-rw-r--r--tests/auto/qflags/qflags.pro3
-rw-r--r--tests/auto/qfontdatabase/qfontdatabase.pro4
-rw-r--r--tests/auto/qfontdatabase/tst_qfontdatabase.cpp10
-rw-r--r--tests/auto/qfontdialog/tst_qfontdialog.cpp2
-rw-r--r--tests/auto/qftp/.gitattributes2
-rw-r--r--tests/auto/qftp/qftp.pro5
-rw-r--r--tests/auto/qftp/tst_qftp.cpp24
-rw-r--r--tests/auto/qgetputenv/qgetputenv.pro4
-rw-r--r--tests/auto/qglobal/qglobal.pro3
-rw-r--r--tests/auto/qglobal/tst_qglobal.cpp72
-rw-r--r--tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp30
-rw-r--r--tests/auto/qgraphicslayout/tst_qgraphicslayout.cpp60
-rw-r--r--tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp2
-rw-r--r--tests/auto/qgraphicsscene/qgraphicsscene.pro9
-rw-r--r--tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp10
-rw-r--r--tests/auto/qgraphicsview/qgraphicsview.pro2
-rw-r--r--tests/auto/qgraphicsview/tst_qgraphicsview.cpp18
-rw-r--r--tests/auto/qgroupbox/tst_qgroupbox.cpp86
-rw-r--r--tests/auto/qhash/qhash.pro7
-rw-r--r--tests/auto/qhash/tst_qhash.cpp8
-rw-r--r--tests/auto/qhostinfo/tst_qhostinfo.cpp19
-rw-r--r--tests/auto/qhttp/qhttp.pro8
-rw-r--r--tests/auto/qhttp/tst_qhttp.cpp273
-rw-r--r--tests/auto/qhttpnetworkconnection/qhttpnetworkconnection.pro2
-rw-r--r--tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp26
-rw-r--r--tests/auto/qhttpsocketengine/tst_qhttpsocketengine.cpp19
-rw-r--r--tests/auto/qicoimageformat/qicoimageformat.pro8
-rw-r--r--tests/auto/qicoimageformat/tst_qicoimageformat.cpp6
-rw-r--r--tests/auto/qicon/qicon.pro7
-rw-r--r--tests/auto/qicon/tst_qicon.cpp7
-rw-r--r--tests/auto/qimage/qimage.pro7
-rw-r--r--tests/auto/qimage/tst_qimage.cpp20
-rw-r--r--tests/auto/qimagereader/qimagereader.pro11
-rw-r--r--tests/auto/qimagereader/tst_qimagereader.cpp8
-rw-r--r--tests/auto/qimagewriter/qimagewriter.pro8
-rw-r--r--tests/auto/qimagewriter/tst_qimagewriter.cpp13
-rw-r--r--tests/auto/qinputcontext/qinputcontext.pro2
-rw-r--r--tests/auto/qinputcontext/tst_qinputcontext.cpp249
-rw-r--r--tests/auto/qiodevice/qiodevice.pro5
-rw-r--r--tests/auto/qiodevice/tst_qiodevice.cpp7
-rw-r--r--tests/auto/qitemdelegate/tst_qitemdelegate.cpp38
-rw-r--r--tests/auto/qitemmodel/qitemmodel.pro9
-rw-r--r--tests/auto/qitemview/tst_qitemview.cpp7
-rw-r--r--tests/auto/qkeyevent/.gitignore1
-rw-r--r--tests/auto/qkeyevent/qkeyevent.pro5
-rw-r--r--tests/auto/qkeyevent/tst_qkeyevent.cpp228
-rw-r--r--tests/auto/qkeysequence/tst_qkeysequence.cpp27
-rw-r--r--tests/auto/qlabel/qlabel.pro7
-rw-r--r--tests/auto/qlabel/tst_qlabel.cpp3
-rw-r--r--tests/auto/qlayout/qlayout.pro2
-rw-r--r--tests/auto/qlibrary/lib/lib.pro3
-rw-r--r--tests/auto/qlibrary/lib/mylib.c4
-rw-r--r--tests/auto/qlibrary/lib2/lib2.pro20
-rw-r--r--tests/auto/qlibrary/lib2/mylib.c4
-rw-r--r--tests/auto/qlibrary/qlibrary.pro14
-rw-r--r--tests/auto/qlibrary/tst/tst.pro12
-rw-r--r--tests/auto/qlibrary/tst_qlibrary.cpp69
-rw-r--r--tests/auto/qline/qline.pro2
-rw-r--r--tests/auto/qlineedit/tst_qlineedit.cpp6
-rw-r--r--tests/auto/qlistview/tst_qlistview.cpp2
-rw-r--r--tests/auto/qlistwidget/tst_qlistwidget.cpp4
-rw-r--r--tests/auto/qlocale/test/test.pro8
-rw-r--r--tests/auto/qlocale/tst_qlocale.cpp56
-rw-r--r--tests/auto/qlocalsocket/lackey/lackey.pro4
-rw-r--r--tests/auto/qlocalsocket/lackey/main.cpp2
-rw-r--r--tests/auto/qlocalsocket/qlocalsocket.pro2
-rw-r--r--tests/auto/qlocalsocket/test/test.pro19
-rw-r--r--tests/auto/qlocalsocket/tst_qlocalsocket.cpp196
-rw-r--r--tests/auto/qmainwindow/qmainwindow.pro3
-rw-r--r--tests/auto/qmap/qmap.pro4
-rw-r--r--tests/auto/qmenu/tst_qmenu.cpp21
-rw-r--r--tests/auto/qmenubar/qmenubar.pro2
-rw-r--r--tests/auto/qmenubar/tst_qmenubar.cpp4
-rw-r--r--tests/auto/qmetatype/qmetatype.pro3
-rw-r--r--tests/auto/qmouseevent/tst_qmouseevent.cpp6
-rw-r--r--tests/auto/qmovie/qmovie.pro10
-rw-r--r--tests/auto/qmultiscreen/qmultiscreen.pro1
-rw-r--r--tests/auto/qmutex/qmutex.pro2
-rw-r--r--tests/auto/qmutexlocker/qmutexlocker.pro2
-rw-r--r--tests/auto/qnativesocketengine/tst_qnativesocketengine.cpp23
-rw-r--r--tests/auto/qnetworkaccessmanager_and_qprogressdialog/tst_qnetworkaccessmanager_and_qprogressdialog.cpp9
-rw-r--r--tests/auto/qnetworkinterface/tst_qnetworkinterface.cpp9
-rw-r--r--tests/auto/qnetworkreply/.gitattributes5
-rw-r--r--tests/auto/qnetworkreply/echo/echo.pro2
-rw-r--r--tests/auto/qnetworkreply/test/test.pro14
-rw-r--r--tests/auto/qnetworkreply/tst_qnetworkreply.cpp80
-rw-r--r--tests/auto/qnumeric/qnumeric.pro3
-rw-r--r--tests/auto/qobject/qobject.pro2
-rw-r--r--tests/auto/qobject/tst_qobject.cpp16
-rw-r--r--tests/auto/qobject/tst_qobject.pro5
-rw-r--r--tests/auto/qobjectrace/qobjectrace.pro3
-rw-r--r--tests/auto/qobjectrace/tst_qobjectrace.cpp32
-rw-r--r--tests/auto/qpainter/qpainter.pro9
-rw-r--r--tests/auto/qpainter/tst_qpainter.cpp13
-rw-r--r--tests/auto/qpathclipper/qpathclipper.pro2
-rw-r--r--tests/auto/qpen/tst_qpen.cpp12
-rw-r--r--tests/auto/qpixmap/qpixmap.pro8
-rw-r--r--tests/auto/qpixmap/tst_qpixmap.cpp126
-rw-r--r--tests/auto/qplaintextedit/tst_qplaintextedit.cpp29
-rw-r--r--tests/auto/qplugin/debugplugin/debugplugin.pro4
-rw-r--r--tests/auto/qplugin/qplugin.pro1
-rw-r--r--tests/auto/qplugin/releaseplugin/releaseplugin.pro4
-rw-r--r--tests/auto/qplugin/tst_qplugin.pro8
-rw-r--r--tests/auto/qpluginloader/lib/lib.pro3
-rw-r--r--tests/auto/qpluginloader/qpluginloader.pro3
-rw-r--r--tests/auto/qpluginloader/theplugin/theplugin.pro4
-rw-r--r--tests/auto/qpluginloader/tst/tst.pro9
-rw-r--r--tests/auto/qpluginloader/tst_qpluginloader.cpp66
-rw-r--r--tests/auto/qpoint/qpoint.pro5
-rw-r--r--tests/auto/qpolygon/qpolygon.pro2
-rw-r--r--tests/auto/qprocess/qprocess.pro9
-rw-r--r--tests/auto/qprocess/test/test.pro21
-rw-r--r--tests/auto/qprocess/testDetached/testDetached.pro3
-rw-r--r--tests/auto/qprocess/testProcessOutput/main.cpp18
-rw-r--r--tests/auto/qprocess/testProcessSpacesArgs/main.cpp12
-rw-r--r--tests/auto/qprocess/tst_qprocess.cpp290
-rw-r--r--tests/auto/qqueue/qqueue.pro3
-rw-r--r--tests/auto/qrand/qrand.pro2
-rw-r--r--tests/auto/qreadlocker/qreadlocker.pro2
-rw-r--r--tests/auto/qreadwritelock/qreadwritelock.pro2
-rw-r--r--tests/auto/qrect/qrect.pro2
-rw-r--r--tests/auto/qrect/tst_qrect.cpp320
-rw-r--r--tests/auto/qregexp/qregexp.pro3
-rw-r--r--tests/auto/qregexp/tst_qregexp.cpp4
-rw-r--r--tests/auto/qregion/tst_qregion.cpp4
-rw-r--r--tests/auto/qresourceengine/qresourceengine.pro22
-rw-r--r--tests/auto/qresourceengine/tst_qresourceengine.cpp4
-rw-r--r--tests/auto/qscopedpointer/.gitignore1
-rw-r--r--tests/auto/qscopedpointer/qscopedpointer.pro3
-rw-r--r--tests/auto/qscopedpointer/tst_qscopedpointer.cpp343
-rw-r--r--tests/auto/qscriptengine/qscriptengine.pro9
-rw-r--r--tests/auto/qscriptengine/tst_qscriptengine.cpp5
-rw-r--r--tests/auto/qscriptextqobject/qscriptextqobject.pro4
-rw-r--r--tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp4
-rw-r--r--tests/auto/qscriptjstestsuite/qscriptjstestsuite.pro9
-rw-r--r--tests/auto/qscriptjstestsuite/tst_qscriptjstestsuite.cpp6
-rw-r--r--tests/auto/qscriptv8testsuite/qscriptv8testsuite.pro6
-rw-r--r--tests/auto/qscriptv8testsuite/tst_qscriptv8testsuite.cpp8
-rw-r--r--tests/auto/qsequentialanimationgroup/qsequentialanimationgroup.pro2
-rw-r--r--tests/auto/qset/qset.pro7
-rw-r--r--tests/auto/qsettings/.gitattributes5
-rw-r--r--tests/auto/qsettings/tst_qsettings.cpp22
-rw-r--r--tests/auto/qsharedmemory/lackey/scripts/producer.js8
-rw-r--r--tests/auto/qsharedmemory/src/qsystemlock_p.h1
-rw-r--r--tests/auto/qsharedmemory/src/qsystemlock_unix.cpp24
-rw-r--r--tests/auto/qsharedmemory/test/test.pro10
-rw-r--r--tests/auto/qsharedmemory/tst_qsharedmemory.cpp39
-rw-r--r--tests/auto/qsharedpointer/externaltests.cpp4
-rw-r--r--tests/auto/qsharedpointer/externaltests.pri3
-rw-r--r--tests/auto/qsharedpointer/qsharedpointer.pro2
-rw-r--r--tests/auto/qsharedpointer/tst_qsharedpointer.cpp4
-rw-r--r--tests/auto/qsidebar/qsidebar.pro2
-rw-r--r--tests/auto/qsignalspy/qsignalspy.pro3
-rw-r--r--tests/auto/qsize/qsize.pro4
-rw-r--r--tests/auto/qsizef/qsizef.pro3
-rw-r--r--tests/auto/qsocketnotifier/tst_qsocketnotifier.cpp90
-rw-r--r--tests/auto/qsocks5socketengine/qsocks5socketengine.pro2
-rw-r--r--tests/auto/qsocks5socketengine/tst_qsocks5socketengine.cpp26
-rw-r--r--tests/auto/qsound/qsound.pro2
-rw-r--r--tests/auto/qsplitter/qsplitter.pro4
-rw-r--r--tests/auto/qsplitter/tst_qsplitter.cpp4
-rw-r--r--tests/auto/qsql/qsql.pro10
-rw-r--r--tests/auto/qsqldatabase/qsqldatabase.pro11
-rw-r--r--tests/auto/qsqlerror/qsqlerror.pro8
-rw-r--r--tests/auto/qsqlfield/qsqlfield.pro8
-rw-r--r--tests/auto/qsqlquery/qsqlquery.pro8
-rw-r--r--tests/auto/qsqlquerymodel/qsqlquerymodel.pro8
-rw-r--r--tests/auto/qsqlrecord/qsqlrecord.pro10
-rw-r--r--tests/auto/qsqlrelationaltablemodel/qsqlrelationaltablemodel.pro8
-rw-r--r--tests/auto/qsqltablemodel/qsqltablemodel.pro8
-rw-r--r--tests/auto/qsqlthread/qsqlthread.pro8
-rw-r--r--tests/auto/qsslcertificate/qsslcertificate.pro11
-rw-r--r--tests/auto/qsslcertificate/tst_qsslcertificate.cpp6
-rw-r--r--tests/auto/qsslcipher/qsslcipher.pro2
-rw-r--r--tests/auto/qsslerror/qsslerror.pro2
-rw-r--r--tests/auto/qsslkey/qsslkey.pro9
-rw-r--r--tests/auto/qsslkey/tst_qsslkey.cpp8
-rw-r--r--tests/auto/qsslsocket/certs/aspiriniks.ca.crt22
-rw-r--r--tests/auto/qsslsocket/qsslsocket.pro26
-rw-r--r--tests/auto/qsslsocket/tst_qsslsocket.cpp83
-rw-r--r--tests/auto/qstandarditem/tst_qstandarditem.cpp4
-rw-r--r--tests/auto/qstandarditemmodel/tst_qstandarditemmodel.cpp4
-rw-r--r--tests/auto/qstatemachine/tst_qstatemachine.cpp198
-rw-r--r--tests/auto/qstl/qstl.pro4
-rw-r--r--tests/auto/qstring/qstring.pro5
-rw-r--r--tests/auto/qstring/tst_qstring.cpp312
-rw-r--r--tests/auto/qstringlist/qstringlist.pro4
-rw-r--r--tests/auto/qstringlistmodel/tst_qstringlistmodel.cpp1
-rw-r--r--tests/auto/qstyle/qstyle.pro7
-rw-r--r--tests/auto/qstyle/tst_qstyle.cpp109
-rw-r--r--tests/auto/qstylesheetstyle/qstylesheetstyle.pro12
-rw-r--r--tests/auto/qsvggenerator/qsvggenerator.pro7
-rw-r--r--tests/auto/qsvggenerator/tst_qsvggenerator.cpp4
-rw-r--r--tests/auto/qsvgrenderer/qsvgrenderer.pro2
-rw-r--r--tests/auto/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp2
-rw-r--r--tests/auto/qsysinfo/qsysinfo.pro1
-rw-r--r--tests/auto/qsystemsemaphore/test/test.pro11
-rw-r--r--tests/auto/qsystemsemaphore/tst_qsystemsemaphore.cpp14
-rw-r--r--tests/auto/qtableview/qtableview.pro2
-rw-r--r--tests/auto/qtablewidget/qtablewidget.pro12
-rw-r--r--tests/auto/qtconcurrentfilter/tst_qtconcurrentfilter.cpp2
-rw-r--r--tests/auto/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp2
-rw-r--r--tests/auto/qtcpserver/crashingServer/main.cpp8
-rw-r--r--tests/auto/qtcpserver/test/test.pro6
-rw-r--r--tests/auto/qtcpserver/tst_qtcpserver.cpp38
-rw-r--r--tests/auto/qtcpsocket/qtcpsocket.pro3
-rw-r--r--tests/auto/qtcpsocket/test/test.pro4
-rw-r--r--tests/auto/qtcpsocket/tst_qtcpsocket.cpp85
-rw-r--r--tests/auto/qtemporaryfile/qtemporaryfile.pro9
-rw-r--r--tests/auto/qtemporaryfile/tst_qtemporaryfile.cpp8
-rw-r--r--tests/auto/qtextblock/tst_qtextblock.cpp2
-rw-r--r--tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro5
-rw-r--r--tests/auto/qtextboundaryfinder/tst_qtextboundaryfinder.cpp3
-rw-r--r--tests/auto/qtextbrowser/qtextbrowser.pro4
-rw-r--r--tests/auto/qtextbrowser/tst_qtextbrowser.cpp13
-rw-r--r--tests/auto/qtextcodec/test/test.pro7
-rw-r--r--tests/auto/qtextcodec/tst_qtextcodec.cpp10
-rw-r--r--tests/auto/qtextedit/qtextedit.pro9
-rw-r--r--tests/auto/qtextedit/tst_qtextedit.cpp39
-rw-r--r--tests/auto/qtextlayout/qtextlayout.pro3
-rw-r--r--tests/auto/qtextlayout/tst_qtextlayout.cpp6
-rw-r--r--tests/auto/qtextodfwriter/qtextodfwriter.pro4
-rw-r--r--tests/auto/qtextodfwriter/tst_qtextodfwriter.cpp4
-rw-r--r--tests/auto/qtextstream/test/test.pro17
-rw-r--r--tests/auto/qtextstream/tst_qtextstream.cpp28
-rw-r--r--tests/auto/qthread/qthread.pro3
-rw-r--r--tests/auto/qthread/tst_qthread.cpp2
-rw-r--r--tests/auto/qthreadstorage/qthreadstorage.pro3
-rw-r--r--tests/auto/qtime/qtime.pro3
-rw-r--r--tests/auto/qtimeline/qtimeline.pro3
-rw-r--r--tests/auto/qtimer/qtimer.pro3
-rw-r--r--tests/auto/qtimer/tst_qtimer.cpp87
-rw-r--r--tests/auto/qtransform/qtransform.pro2
-rw-r--r--tests/auto/qtransformedscreen/qtransformedscreen.pro1
-rw-r--r--tests/auto/qtranslator/qtranslator.pro2
-rw-r--r--tests/auto/qtreeview/tst_qtreeview.cpp12
-rw-r--r--tests/auto/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp10
-rw-r--r--tests/auto/qtwidgets/qtwidgets.pro1
-rw-r--r--tests/auto/qtwidgets/tst_qtwidgets.cpp13
-rw-r--r--tests/auto/qudpsocket/test/test.pro2
-rw-r--r--tests/auto/qudpsocket/tst_qudpsocket.cpp127
-rw-r--r--tests/auto/qudpsocket/udpServer/udpServer.pro1
-rw-r--r--tests/auto/qurl/qurl.pro5
-rw-r--r--tests/auto/quuid/quuid.pro3
-rw-r--r--tests/auto/qvariant/qvariant.pro1
-rw-r--r--tests/auto/qvariant/tst_qvariant.cpp26
-rw-r--r--tests/auto/qvarlengtharray/qvarlengtharray.pro3
-rw-r--r--tests/auto/qvector/qvector.pro4
-rw-r--r--tests/auto/qwaitcondition/tst_qwaitcondition.cpp859
-rw-r--r--tests/auto/qwidget/qwidget.pro6
-rw-r--r--tests/auto/qwidget/tst_qwidget.cpp135
-rw-r--r--tests/auto/qwindowsurface/tst_qwindowsurface.cpp2
-rw-r--r--tests/auto/qwineventnotifier/qwineventnotifier.pro3
-rw-r--r--tests/auto/qwizard/qwizard.pro1
-rw-r--r--tests/auto/qwmatrix/qwmatrix.pro2
-rw-r--r--tests/auto/qwritelocker/qwritelocker.pro2
-rw-r--r--tests/auto/qwsembedwidget/qwsembedwidget.pro4
-rw-r--r--tests/auto/qwsinputmethod/qwsinputmethod.pro4
-rw-r--r--tests/auto/qwswindowsystem/qwswindowsystem.pro4
-rw-r--r--tests/auto/qxml/qxml.pro2
-rw-r--r--tests/auto/qxmlformatter/qxmlformatter.pro2
-rw-r--r--tests/auto/qxmlquery/qxmlquery.pro10
-rw-r--r--tests/auto/qxmlquery/tst_qxmlquery.cpp5
-rw-r--r--tests/auto/qxmlsimplereader/qxmlsimplereader.pro4
-rw-r--r--tests/auto/qxmlsimplereader/tst_qxmlsimplereader.cpp8
-rw-r--r--tests/auto/qxmlstream/qxmlstream.pro2
-rw-r--r--tests/auto/qzip/qzip.pro4
-rw-r--r--tests/auto/qzip/tst_qzip.cpp4
-rw-r--r--tests/auto/symbian/orientationchange/orientationchange.pro7
-rw-r--r--tests/auto/symbian/orientationchange/tst_orientationchange.cpp165
-rw-r--r--tests/auto/symbian/qmainexceptions/qmainexceptions.pro3
-rw-r--r--tests/auto/symbian/qmainexceptions/tst_qmainexceptions.cpp468
-rw-r--r--tests/auto/symbian/qsymbiantests.pro2
-rw-r--r--tests/auto/uiloader/uiloader/tst_uiloader.cpp3
-rw-r--r--tests/auto/uiloader/uiloader/uiloader.pro4
-rw-r--r--tests/auto/xmlpatterns/tst_xmlpatterns.cpp2
-rw-r--r--tests/benchmarks/qfile/main.cpp5
-rw-r--r--tests/benchmarks/qgraphicsview/benchapps/scrolltest/main.cpp2
-rw-r--r--tests/benchmarks/qiodevice/main.cpp2
-rwxr-xr-xtests/benchmarks/qiodevice/qiodevice.pro1
-rw-r--r--tools/configure/configureapp.cpp265
-rw-r--r--tools/designer/src/components/formeditor/brushmanagerproxy.cpp4
-rw-r--r--tools/designer/src/components/formeditor/brushmanagerproxy.h2
-rw-r--r--tools/designer/src/components/formeditor/qtbrushmanager.cpp5
-rw-r--r--tools/designer/src/components/formeditor/qtbrushmanager.h2
-rw-r--r--tools/designer/src/lib/shared/iconselector.cpp5
-rw-r--r--tools/designer/src/lib/shared/iconselector_p.h4
-rw-r--r--tools/designer/src/lib/shared/qtresourceeditordialog.cpp5
-rw-r--r--tools/designer/src/lib/shared/qtresourceeditordialog_p.h3
-rw-r--r--tools/designer/src/lib/shared/qtresourcemodel.cpp2
-rw-r--r--tools/designer/src/lib/shared/qtresourcemodel_p.h5
-rw-r--r--tools/designer/src/lib/shared/qtresourceview.cpp4
-rw-r--r--tools/designer/src/lib/shared/qtresourceview_p.h4
-rw-r--r--tools/designer/src/lib/uilib/abstractformbuilder.cpp189
-rw-r--r--tools/designer/src/src.pro1
-rw-r--r--tools/designer/src/uitools/quiloader.cpp1
-rw-r--r--tools/designer/src/uitools/quiloader.h3
-rw-r--r--tools/shared/qtgradienteditor/qtcolorbutton.cpp4
-rw-r--r--tools/shared/qtgradienteditor/qtcolorbutton.h2
-rw-r--r--tools/shared/qtgradienteditor/qtcolorline.cpp4
-rw-r--r--tools/shared/qtgradienteditor/qtcolorline.h2
-rw-r--r--tools/shared/qtgradienteditor/qtgradientdialog.cpp4
-rw-r--r--tools/shared/qtgradienteditor/qtgradientdialog.h2
-rw-r--r--tools/shared/qtgradienteditor/qtgradienteditor.cpp4
-rw-r--r--tools/shared/qtgradienteditor/qtgradienteditor.h2
-rw-r--r--tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp4
-rw-r--r--tools/shared/qtgradienteditor/qtgradientstopscontroller.h2
-rw-r--r--tools/shared/qtgradienteditor/qtgradientstopsmodel.cpp7
-rw-r--r--tools/shared/qtgradienteditor/qtgradientstopsmodel.h4
-rw-r--r--tools/shared/qtgradienteditor/qtgradientstopswidget.cpp4
-rw-r--r--tools/shared/qtgradienteditor/qtgradientstopswidget.h2
-rw-r--r--tools/shared/qtgradienteditor/qtgradientwidget.cpp4
-rw-r--r--tools/shared/qtgradienteditor/qtgradientwidget.h2
-rw-r--r--tools/shared/qtpropertybrowser/qtbuttonpropertybrowser.cpp4
-rw-r--r--tools/shared/qtpropertybrowser/qtbuttonpropertybrowser.h2
-rw-r--r--tools/shared/qtpropertybrowser/qteditorfactory.cpp54
-rw-r--r--tools/shared/qtpropertybrowser/qteditorfactory.h30
-rw-r--r--tools/shared/qtpropertybrowser/qtgroupboxpropertybrowser.cpp4
-rw-r--r--tools/shared/qtpropertybrowser/qtgroupboxpropertybrowser.h2
-rw-r--r--tools/shared/qtpropertybrowser/qtpropertybrowser.cpp14
-rw-r--r--tools/shared/qtpropertybrowser/qtpropertybrowser.h8
-rw-r--r--tools/shared/qtpropertybrowser/qtpropertymanager.cpp128
-rw-r--r--tools/shared/qtpropertybrowser/qtpropertymanager.h44
-rw-r--r--tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp4
-rw-r--r--tools/shared/qtpropertybrowser/qttreepropertybrowser.h2
-rw-r--r--tools/shared/qtpropertybrowser/qtvariantproperty.cpp12
-rw-r--r--tools/shared/qtpropertybrowser/qtvariantproperty.h6
-rw-r--r--tools/shared/qttoolbardialog/qttoolbardialog.cpp14
-rw-r--r--tools/shared/qttoolbardialog/qttoolbardialog.h4
-rw-r--r--tools/tools.pro1
-rw-r--r--util/s60pixelmetrics/bld.inf45
-rw-r--r--util/s60pixelmetrics/pixel_metrics.cpp1223
-rw-r--r--util/s60pixelmetrics/pixel_metrics.h216
-rw-r--r--util/s60pixelmetrics/pm_mapper.hrh73
-rw-r--r--util/s60pixelmetrics/pm_mapper.mmp91
-rw-r--r--util/s60pixelmetrics/pm_mapper.pkg32
-rw-r--r--util/s60pixelmetrics/pm_mapper.rss162
-rw-r--r--util/s60pixelmetrics/pm_mapper_reg.rss57
-rw-r--r--util/s60pixelmetrics/pm_mapperapp.cpp1044
-rw-r--r--util/s60pixelmetrics/pm_mapperapp.h198
-rw-r--r--util/s60pixelmetrics/pm_mapperview.cpp375
-rw-r--r--util/s60pixelmetrics/pm_mapperview.h228
-rw-r--r--util/s60theme/README31
-rw-r--r--util/s60theme/main.cpp78
-rw-r--r--util/s60theme/s60theme.pro12
-rw-r--r--util/s60theme/s60themeconvert.cpp301
-rw-r--r--util/s60theme/s60themeconvert.h54
1535 files changed, 94593 insertions, 6356 deletions
diff --git a/.gitignore b/.gitignore
index 57a1b84..14b25f3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,6 +37,8 @@ tags
.DS_Store
*.debug
Makefile*
+!qmake/Makefile.win32*
+!qmake/Makefile.unix
*.prl
*.app
*.pro.user
@@ -65,6 +67,7 @@ bin/qhelpconverter*
bin/qhelpgenerator*
bin/qtconfig*
bin/xmlpatterns*
+bin/cetest*
bin/collectiongenerator
bin/helpconverter
bin/helpgenerator
@@ -171,6 +174,31 @@ doc/qch
doc-build
.rcc
.pch
+
+# Symbian build system generated files
+# ---------------------
+
+ABLD.BAT
+bld.inf
+*.mmp
+*.mk
+*.rss
+*.loc
+!s60main.rss
+*.pkg
+plugin_commonU.def
+*.qtplugin
+*.sis
+*.sisx
+
+# Generated by abldfast.bat from devtools.
+.abldsteps.*
+
+# Carbide project files
+# ---------------------
+.project
+.cproject
+
qtc-debugging-helper
src/corelib/lib
src/network/lib
diff --git a/bin/createpackage.bat b/bin/createpackage.bat
new file mode 100644
index 0000000..116d52b
--- /dev/null
+++ b/bin/createpackage.bat
@@ -0,0 +1,106 @@
+@echo off
+
+set installsigned_old=%installsigned%
+set pkgfile_old=%pkgfile%
+set basename_old=%basename%
+set signsis1_old=%signsis1%
+set signsis2_old=%signsis2%
+set signsis3_old=%signsis3%
+set unsigned_sis_name_old=%unsigned_sis_name%
+set signed_sis_name_old=%signed_sis_name%
+set scriptpath_old=%scriptpath%
+set certificate_old=%certificate%
+
+rem Help text
+if "%1"=="" (
+ echo Convenience script for creating signed packages you can install on your phone.
+ echo Usage: createpackage.bat [-i] myexample_armv5_udeb.pkg [certificate key [passphrase]]
+ echo.
+ echo If no certificate and key files are provided, either a RnD certificate or
+ echo a self-signed certificate from Qt installation root directory is used.
+ echo.
+ echo To install the package right away using PC suite, use -i argument.
+ goto done
+)
+
+if "%1"=="-i" (
+ set installsigned=true
+ set pkgfile=%2
+ set basename=%~n2
+ set signsis1=%3
+ set signsis2=%4
+ set signsis3=%5
+) else (
+ set installsigned=false
+ set pkgfile=%1
+ set basename=%~n1
+ set signsis1=%2
+ set signsis2=%3
+ set signsis3=%4
+)
+
+set unsigned_sis_name=%basename%_unsigned.sis
+set signed_sis_name=%basename%.sis
+
+rem Get absolute path to this script
+set scriptpath=%~dp0
+
+rem Check the .pkg actually exists.
+if not exist %pkgfile% (
+ echo Error: Package description file '%pkgfile%' does not exist.
+ goto done
+)
+
+rem Remove any existing .sis packages
+if exist %signed_sis_name% del %signed_sis_name%
+if exist %unsigned_sis_name% del %unsigned_sis_name%
+
+rem Create .sis package
+makesis %pkgfile% %unsigned_sis_name%
+
+rem If no certificate is given, check default options
+if x%signsis1% == x (
+ rem If RnD certificate is not found, sign with self signed certificate
+ if not exist %scriptpath%..\rd.cer (
+ set certificate=Self signed
+ signsis %unsigned_sis_name% %signed_sis_name% %scriptpath%..\selfsigned.cer %scriptpath%..\selfsigned.key
+ goto install
+ )
+
+ rem Sign with RnD certificate
+ set certificate=RnD
+ signsis %unsigned_sis_name% %signed_sis_name% %scriptpath%..\rd.cer %scriptpath%..\rd-key.pem
+) else (
+ if x%signsis2% == x (
+ echo Custom certificate key file parameter missing.
+ goto cleanup
+ )
+
+ set certificate=%signsis1%
+ signsis %unsigned_sis_name% %signed_sis_name% %signsis1% %signsis2% %signsis3%
+)
+
+:install
+if exist %signed_sis_name% (
+ echo Successfully created %signed_sis_name% using certificate %certificate%
+ if "%installsigned%" == "true" (
+ echo Installing %signed_sis_name%...
+ call %signed_sis_name%
+ )
+)
+
+:cleanup
+if exist %unsigned_sis_name% del %unsigned_sis_name%
+
+:done
+
+set installsigned=%installsigned_old%
+set pkgfile=%pkgfile_old%
+set basename=%basename_old%
+set signsis1=%signsis1_old%
+set signsis2=%signsis2_old%
+set signsis3=%signsis3_old%
+set unsigned_sis_name=%unsigned_sis_name_old%
+set signed_sis_name=%signed_sis_name_old%
+set scriptpath=%scriptpath_old%
+set certificate=%certificate_old%
diff --git a/bin/patch_capabilities.pl b/bin/patch_capabilities.pl
new file mode 100644
index 0000000..f1d94e0
--- /dev/null
+++ b/bin/patch_capabilities.pl
@@ -0,0 +1,107 @@
+#######################################################################
+#
+# A script for setting binary capabilities based on .pkg file contents.
+#
+# Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
+# Contact: Nokia Corporation (qt-info@nokia.com)
+#
+#######################################################################
+
+my @capabilitiesToSet = ("LocalServices", "NetworkServices", "ReadUserData", "UserEnvironment", "WriteUserData");
+
+# If arguments were given to the script,
+if (@ARGV)
+{
+ # Parse the first given script argument as a ".pkg" file name.
+ my $pkgFileName = shift(@ARGV);
+
+ # If the specified ".pkg" file exists (and can be read),
+ if (($pkgFileName =~ m|\.pkg$|i) && -r($pkgFileName))
+ {
+ # If there are more arguments given, parse them as capabilities.
+ if (@ARGV)
+ {
+ @capabilitiesToSet = ();
+ while (@ARGV)
+ {
+ push (@capabilitiesToSet, pop(@ARGV));
+ }
+ }
+
+ # Start with no binaries listed.
+ my @binaries = ();
+
+ my $tempPkgFileName = $pkgFileName."_@@TEMP@@";
+ unlink($tempPkgFileName);
+ open (NEW_PKG, ">>".$tempPkgFileName);
+ open (PKG, "<".$pkgFileName);
+
+ # Parse each line.
+ while (<PKG>)
+ {
+ my $line = $_;
+ my $newLine = $line;
+ if ( $line =~ m/^\#.*\(0x[0-9|a-f|A-F]*\).*$/)
+ {
+ $newLine =~ s/\(0x./\(0xE/;
+ }
+ print NEW_PKG $newLine;
+
+ chomp ($line);
+
+ # If the line specifies a file, parse the source and destination locations.
+ if ($line =~ m|\"([^\"]+)\"\s*\-\s*\"([^\"]+)\"|)
+ {
+ my $sourcePath = $1;
+ my $destinationPath = $2;
+
+ # If the given file is a binary, check the target and binary type (+ the actual filename) from its path.
+ if ($sourcePath =~ m:/epoc32/release/([^/]+)/(udeb|urel)/(\w+(\.dll|\.exe)):i)
+ {
+ push (@binaries, $sourcePath);
+ }
+ }
+ }
+
+ close (PKG);
+ close (NEW_PKG);
+
+ unlink($pkgFileName);
+ rename($tempPkgFileName, $pkgFileName);
+
+ print ("\n");
+
+ my $baseCommandToExecute = "elftran -vid 0x0 -capability \"";
+ if (@capabilitiesToSet)
+ {
+ $baseCommandToExecute .= join(" ", @capabilitiesToSet);
+ }
+ $baseCommandToExecute .= "\" ";
+
+ # Actually set the capabilities of the listed binaries.
+ foreach my $binaryPath(@binaries)
+ {
+ # Create the command line for setting the capabilities.
+ my $commandToExecute = $baseCommandToExecute;
+ $commandToExecute .= $binaryPath;
+
+ # Actually execute the elftran command to set the capabilities.
+ system ($commandToExecute." > NUL");
+ print ("Executed ".$commandToExecute."\n");
+
+ ## Create another command line to check that the set capabilities are correct.
+ #$commandToExecute = "elftran -dump s ".$binaryPath;
+ }
+
+ print ("\n");
+ }
+}
+else
+{
+ print("This script can be used to set capabilities of all binaries\n");
+ print("specified for deployment in a .pkg file.\n");
+ print("If no capabilities are given, the binaries will be given the\n");
+ print("capabilities supported by self-signed certificates.\n");
+ print("\nUsage: patch_capabilities.pl pkg_filename [capability list]\n");
+ print("\nE.g. patch_capabilities.pl myapp_armv5_urel.pkg \"All -TCB\"\n");
+}
diff --git a/config.tests/unix/openssl/openssl.pri b/config.tests/unix/openssl/openssl.pri
index f069396..377d630 100644
--- a/config.tests/unix/openssl/openssl.pri
+++ b/config.tests/unix/openssl/openssl.pri
@@ -1,3 +1,10 @@
# Empty file since Qt 4.6
# I'm too lazy to find all places where this file is included
+symbian{
+ TRY_INCLUDEPATHS = $${EPOCROOT}epoc32 $${EPOCROOT}epoc32/include $${EPOCROOT}epoc32/include/stdapis $${EPOCROOT}epoc32/include/stdapis/sys $$OS_LAYER_LIBC_SYSTEMINCLUDE $$QMAKE_INCDIR $$INCLUDEPATH
+ for(p, TRY_INCLUDEPATHS) {
+ pp = $$join(p, "", "", "/openssl")
+ exists($$pp):INCLUDEPATH *= $$pp
+ }
+}
diff --git a/configure b/configure
index 593c316..48a0202 100755
--- a/configure
+++ b/configure
@@ -7560,6 +7560,7 @@ for file in .projects .projects.3; do
case $a in
*winmain/winmain.pro) continue ;;
+ *s60main/s60main.pro) continue ;;
*/qmake/qmake.pro) continue ;;
*tools/bootstrap*|*tools/moc*|*tools/rcc*|*tools/uic*) SPEC=$QMAKESPEC ;;
*) SPEC=$XQMAKESPEC ;;
diff --git a/configure.exe b/configure.exe
index 846aa31..4c095d2 100644..100755
--- a/configure.exe
+++ b/configure.exe
Binary files differ
diff --git a/demos/affine/affine.pro b/demos/affine/affine.pro
index b928753..7f9e444 100644
--- a/demos/affine/affine.pro
+++ b/demos/affine/affine.pro
@@ -18,6 +18,8 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.html *.jpg
sources.path = $$[QT_INSTALL_DEMOS]/affine
INSTALLS += target sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
wince*: {
DEPLOYMENT_PLUGIN += qjpeg
}
diff --git a/demos/arthurplugin/arthurplugin.pro b/demos/arthurplugin/arthurplugin.pro
index e9eb1f3..3114293 100644
--- a/demos/arthurplugin/arthurplugin.pro
+++ b/demos/arthurplugin/arthurplugin.pro
@@ -44,6 +44,8 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.jpg *.png
sources.path = $$[QT_INSTALL_DEMOS]/arthurplugin
INSTALLS += target sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
win32-msvc* {
QMAKE_CFLAGS += /Zm500
QMAKE_CXXFLAGS += /Zm500
diff --git a/demos/books/books.pro b/demos/books/books.pro
index a2cd33f..a5e44e5 100644
--- a/demos/books/books.pro
+++ b/demos/books/books.pro
@@ -13,9 +13,11 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro images
sources.path = $$[QT_INSTALL_DEMOS]/books
INSTALLS += target sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
wince*: {
CONFIG(debug, debug|release):sqlPlugins.sources = $$QT_BUILD_TREE/plugins/sqldrivers/*d4.dll
CONFIG(release, debug|release):sqlPlugins.sources = $$QT_BUILD_TREE/plugins/sqldrivers/*[^d]4.dll
sqlPlugins.path = sqldrivers
DEPLOYMENT += sqlPlugins
-} \ No newline at end of file
+}
diff --git a/demos/browser/browser.pro b/demos/browser/browser.pro
index 13e8a1d..f54afe4 100644
--- a/demos/browser/browser.pro
+++ b/demos/browser/browser.pro
@@ -3,7 +3,7 @@ TARGET = browser
QT += webkit network
CONFIG += qt warn_on
-contains(QT_BUILD_PARTS, tools): CONFIG += uitools
+contains(QT_BUILD_PARTS, tools):!symbian: CONFIG += uitools
else: DEFINES += QT_NO_UITOOLS
FORMS += \
@@ -89,3 +89,8 @@ target.path = $$[QT_INSTALL_DEMOS]/browser
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.plist *.icns *.ico *.rc *.pro *.html *.doc images htmls data
sources.path = $$[QT_INSTALL_DEMOS]/browser
INSTALLS += target sources
+
+symbian {
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+ TARGET.UID3 = 0xA000CF70
+}
diff --git a/demos/browser/browsermainwindow.cpp b/demos/browser/browsermainwindow.cpp
index 8d4df01..010ed98 100644
--- a/demos/browser/browsermainwindow.cpp
+++ b/demos/browser/browsermainwindow.cpp
@@ -576,7 +576,7 @@ QUrl BrowserMainWindow::guessUrlFromString(const QString &string)
int dotIndex = urlStr.indexOf(QLatin1Char('.'));
if (dotIndex != -1) {
QString prefix = urlStr.left(dotIndex).toLower();
- QByteArray schema = (prefix == QLatin1String("ftp")) ? prefix.toLatin1() : "http";
+ QByteArray schema = (prefix == QLatin1String("ftp")) ? prefix.toLatin1() : QByteArray("http");
QUrl url =
QUrl::fromEncoded(schema + "://" + urlStr.toUtf8(), QUrl::TolerantMode);
if (url.isValid())
diff --git a/demos/browser/searchlineedit.cpp b/demos/browser/searchlineedit.cpp
index a9b924e..3ca6a53 100644
--- a/demos/browser/searchlineedit.cpp
+++ b/demos/browser/searchlineedit.cpp
@@ -50,7 +50,9 @@
ClearButton::ClearButton(QWidget *parent)
: QAbstractButton(parent)
{
+#ifndef QT_NO_CURSOR
setCursor(Qt::ArrowCursor);
+#endif // QT_NO_CURSOR
setToolTip(tr("Clear"));
setVisible(false);
setFocusPolicy(Qt::NoFocus);
@@ -103,7 +105,9 @@ SearchButton::SearchButton(QWidget *parent)
m_menu(0)
{
setObjectName(QLatin1String("SearchButton"));
+#ifndef QT_NO_CURSOR
setCursor(Qt::ArrowCursor);
+#endif //QT_NO_CURSOR
setFocusPolicy(Qt::NoFocus);
}
diff --git a/demos/browser/webview.cpp b/demos/browser/webview.cpp
index 004e995..21a9bae 100644
--- a/demos/browser/webview.cpp
+++ b/demos/browser/webview.cpp
@@ -54,7 +54,9 @@
#include <QtWebKit/QWebHitTestResult>
+#ifndef QT_NO_UITOOLS
#include <QtUiTools/QUiLoader>
+#endif //QT_NO_UITOOLS
#include <QtCore/QDebug>
#include <QtCore/QBuffer>
diff --git a/demos/chip/chip.pro b/demos/chip/chip.pro
index 53fa23b..4339f82 100644
--- a/demos/chip/chip.pro
+++ b/demos/chip/chip.pro
@@ -17,3 +17,4 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES *.png *.pro *.html *.doc images
sources.path = $$[QT_INSTALL_DEMOS]/chip
INSTALLS += target sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
diff --git a/demos/composition/composition.pro b/demos/composition/composition.pro
index d5c4a60..c820a8b 100644
--- a/demos/composition/composition.pro
+++ b/demos/composition/composition.pro
@@ -17,6 +17,8 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES *.png *.jpg *.pro *.html
sources.path = $$[QT_INSTALL_DEMOS]/composition
INSTALLS += target sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
win32-msvc* {
QMAKE_CXXFLAGS += /Zm500
QMAKE_CFLAGS += /Zm500
diff --git a/demos/deform/deform.pro b/demos/deform/deform.pro
index db8484d..4cce195 100644
--- a/demos/deform/deform.pro
+++ b/demos/deform/deform.pro
@@ -17,3 +17,8 @@ target.path = $$[QT_INSTALL_DEMOS]/deform
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.html
sources.path = $$[QT_INSTALL_DEMOS]/deform
INSTALLS += target sources
+
+symbian {
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+ TARGET.UID3 = 0xA000A63D
+}
diff --git a/demos/deform/pathdeform.cpp b/demos/deform/pathdeform.cpp
index 165af05..5530010 100644
--- a/demos/deform/pathdeform.cpp
+++ b/demos/deform/pathdeform.cpp
@@ -53,6 +53,10 @@
#include <QDesktopWidget>
#include <qmath.h>
+#if defined(Q_OS_SYMBIAN)
+// TODO: Remove all FONT_OUTLINE_TWEAK related code as soon as the S60FontEngine can deliver outlines
+#define FONT_OUTLINE_TWEAK
+#endif
PathDeformControls::PathDeformControls(QWidget *parent, PathDeformRenderer* renderer, bool smallScreen)
: QWidget(parent)
@@ -241,6 +245,14 @@ void PathDeformControls::layoutForSmallScreen()
QRect screen_size = QApplication::desktop()->screenGeometry();
radiusSlider->setValue(qMin(screen_size.width(), screen_size.height())/5);
+
+#ifdef FONT_OUTLINE_TWEAK
+ radiusSlider->setValue(qMin(screen_size.width(), screen_size.height())/7);
+ fontSizeLabel->setText("Qt Logo Size:");
+ m_renderer->setText("A"); // Any Letter would be fine
+ fontSizeSlider->setValue(100);
+#endif
+
m_renderer->setText(tr("Qt"));
}
diff --git a/demos/demobase.pri b/demos/demobase.pri
new file mode 100644
index 0000000..e6763d5
--- /dev/null
+++ b/demos/demobase.pri
@@ -0,0 +1,12 @@
+symbian {
+ RSS_RULES ="group_name=\"QtDemos\";"
+
+ vendorinfo = \
+ "; Localised Vendor name" \
+ "%{\"Nokia, Qt\"}" \
+ " " \
+ "; Unique Vendor name" \
+ ":\"Nokia, Qt\"" \
+ " "
+ default_deployment.pkg_prerules += vendorinfo
+}
diff --git a/demos/demos.pro b/demos/demos.pro
index eda04dc..c4b8872 100644
--- a/demos/demos.pro
+++ b/demos/demos.pro
@@ -1,27 +1,32 @@
TEMPLATE = subdirs
SUBDIRS = \
- demos_shared \
- demos_deform \
- demos_gradients \
- demos_pathstroke \
- demos_affine \
- demos_composition \
- demos_books \
- demos_interview \
- demos_mainwindow \
- demos_spreadsheet \
- demos_textedit \
- demos_chip \
- demos_embeddeddialogs \
- demos_undo \
- demos_sub-attaq
+ demos_shared \
+ demos_deform \
+ demos_gradients \
+ demos_pathstroke \
+ demos_affine \
+ demos_composition \
+ demos_books \
+ demos_interview \
+ demos_mainwindow \
+ demos_spreadsheet \
+ demos_textedit \
+ demos_chip \
+ demos_embeddeddialogs \
+ demos_undo \
+ demos_sub-attaq
+
+symbian: SUBDIRS = \
+ demos_shared \
+ demos_deform \
+ demos_pathstroke
contains(QT_CONFIG, opengl):!contains(QT_CONFIG, opengles1):!contains(QT_CONFIG, opengles1cl):!contains(QT_CONFIG, opengles2):{
SUBDIRS += demos_boxes
}
mac*: SUBDIRS += demos_macmainwindow
-wince*|embedded: SUBDIRS += embedded
+wince*|symbian|embedded: SUBDIRS += embedded
!contains(QT_EDITION, Console):!cross_compile:!embedded:!wince*:SUBDIRS += demos_arthurplugin
@@ -39,6 +44,8 @@ sources.files = README *.pro
sources.path = $$[QT_INSTALL_DEMOS]
INSTALLS += sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
demos_chip.subdir = chip
demos_embeddeddialogs.subdir = embeddeddialogs
demos_shared.subdir = shared
diff --git a/demos/embedded/anomaly/README.TXT b/demos/embedded/anomaly/README.TXT
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/demos/embedded/anomaly/README.TXT
diff --git a/demos/embedded/anomaly/anomaly.pro b/demos/embedded/anomaly/anomaly.pro
new file mode 100644
index 0000000..8fb1265
--- /dev/null
+++ b/demos/embedded/anomaly/anomaly.pro
@@ -0,0 +1,31 @@
+QT += network \
+ webkit
+HEADERS += src/BrowserWindow.h \
+ src/BrowserView.h \
+ src/TitleBar.h \
+ src/HomeView.h \
+ src/AddressBar.h \
+ src/BookmarksView.h \
+ src/flickcharm.h \
+ src/ZoomStrip.h \
+ src/ControlStrip.h
+SOURCES += src/Main.cpp \
+ src/BrowserWindow.cpp \
+ src/BrowserView.cpp \
+ src/TitleBar.cpp \
+ src/HomeView.cpp \
+ src/AddressBar.cpp \
+ src/BookmarksView.cpp \
+ src/flickcharm.cpp \
+ src/ZoomStrip.cpp \
+ src/ControlStrip.cpp
+RESOURCES += src/anomaly.qrc
+
+symbian {
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+ HEADERS += $$QT_SOURCE_TREE/examples/network/ftp/sym_iap_util.h
+ LIBS += -lesock -lconnmon
+ TARGET.CAPABILITY = NetworkServices
+ TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
+ TARGET.UID3 = 0xA000CF71
+}
diff --git a/demos/embedded/anomaly/src/AddressBar.cpp b/demos/embedded/anomaly/src/AddressBar.cpp
new file mode 100644
index 0000000..57ea6be
--- /dev/null
+++ b/demos/embedded/anomaly/src/AddressBar.cpp
@@ -0,0 +1,91 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Anomaly project on Qt Labs.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 or 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+#include "AddressBar.h"
+
+#include <QtCore>
+#include <QtGui>
+
+class LineEdit: public QLineEdit
+{
+public:
+ LineEdit(QWidget *parent = 0): QLineEdit(parent) {}
+
+ void paintEvent(QPaintEvent *event) {
+ QLineEdit::paintEvent(event);
+ if (text().isEmpty()) {
+ QPainter p(this);
+ int flags = Qt::AlignLeft | Qt::AlignVCenter;
+ p.setPen(palette().color(QPalette::Disabled, QPalette::Text));
+ p.drawText(rect().adjusted(10, 0, 0, 0), flags, "Enter address or search terms");
+ p.end();
+ }
+ }
+};
+
+AddressBar::AddressBar(QWidget *parent)
+ : QWidget(parent)
+{
+ m_lineEdit = new LineEdit(parent);
+ connect(m_lineEdit, SIGNAL(returnPressed()), SLOT(processAddress()));
+ m_toolButton = new QToolButton(parent);
+ m_toolButton->setText("Go");
+ connect(m_toolButton, SIGNAL(clicked()), SLOT(processAddress()));
+}
+
+QSize AddressBar::sizeHint() const
+{
+ return m_lineEdit->sizeHint();
+}
+
+void AddressBar::processAddress()
+{
+ if (!m_lineEdit->text().isEmpty())
+ emit addressEntered(m_lineEdit->text());
+}
+
+void AddressBar::resizeEvent(QResizeEvent *event)
+{
+ int x, y, w, h;
+
+ m_toolButton->adjustSize();
+ x = width() - m_toolButton->width();
+ y = 0;
+ w = m_toolButton->width();
+ h = height() - 1;
+ m_toolButton->setGeometry(x, y, w, h);
+ m_toolButton->show();
+
+ x = 0;
+ y = 0;
+ w = width() - m_toolButton->width();
+ h = height() - 1;
+ m_lineEdit->setGeometry(x, y, w, h);
+ m_lineEdit->show();
+}
+
+void AddressBar::focusInEvent(QFocusEvent *event)
+{
+ m_lineEdit->setFocus();
+ QWidget::focusInEvent(event);
+}
diff --git a/demos/embedded/anomaly/src/AddressBar.h b/demos/embedded/anomaly/src/AddressBar.h
new file mode 100644
index 0000000..2e9d1b5
--- /dev/null
+++ b/demos/embedded/anomaly/src/AddressBar.h
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Anomaly project on Qt Labs.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 or 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+#ifndef ADDRESSBAR_H
+#define ADDRESSBAR_H
+
+#include <QWidget>
+
+class QLineEdit;
+class QToolButton;
+
+class AddressBar : public QWidget
+{
+ Q_OBJECT
+
+public:
+ AddressBar(QWidget *parent = 0);
+ QSize sizeHint() const;
+
+protected:
+ void resizeEvent(QResizeEvent *event);
+ void focusInEvent(QFocusEvent *event);
+
+signals:
+ void addressEntered(const QString &address);
+
+private slots:
+ void processAddress();
+
+private:
+ QLineEdit *m_lineEdit;
+ QToolButton *m_toolButton;
+};
+
+#endif // ADDRESSBAR_H
diff --git a/demos/embedded/anomaly/src/BookmarksView.cpp b/demos/embedded/anomaly/src/BookmarksView.cpp
new file mode 100644
index 0000000..aa2233da
--- /dev/null
+++ b/demos/embedded/anomaly/src/BookmarksView.cpp
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Anomaly project on Qt Labs.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 or 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+#include "BookmarksView.h"
+
+#include <QtGui>
+
+BookmarksView::BookmarksView(QWidget *parent)
+ : QWidget(parent)
+{
+ QListWidget *m_iconView = new QListWidget(this);
+ connect(m_iconView, SIGNAL(itemActivated(QListWidgetItem*)), SLOT(activate(QListWidgetItem*)));
+
+ QVBoxLayout *layout = new QVBoxLayout(this);
+ setLayout(layout);
+ layout->addWidget(m_iconView);
+
+ m_iconView->addItem("www.google.com");
+ m_iconView->addItem("qt.nokia.com/doc/4.5");
+ m_iconView->addItem("news.bbc.co.uk/text_only.stm");
+ m_iconView->addItem("mobile.wikipedia.org");
+ m_iconView->addItem("qt.nokia.com");
+ m_iconView->addItem("en.wikipedia.org");
+
+ setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+}
+
+void BookmarksView::activate(QListWidgetItem *item)
+{
+ QUrl url = item->text().prepend("http://");
+ emit urlSelected(url);
+}
diff --git a/demos/embedded/anomaly/src/BookmarksView.h b/demos/embedded/anomaly/src/BookmarksView.h
new file mode 100644
index 0000000..b918192
--- /dev/null
+++ b/demos/embedded/anomaly/src/BookmarksView.h
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Anomaly project on Qt Labs.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 or 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+#ifndef BOOKMARKSVIEW_H
+#define BOOKMARKSVIEW_H
+
+#include <QWidget>
+
+class QListWidgetItem;
+class QUrl;
+
+class BookmarksView : public QWidget
+{
+ Q_OBJECT
+
+public:
+ BookmarksView(QWidget *parent = 0);
+
+signals:
+ void urlSelected(const QUrl &url);
+
+private slots:
+ void activate(QListWidgetItem *item);
+};
+
+#endif // BOOKMARKSVIEW_H
diff --git a/demos/embedded/anomaly/src/BrowserView.cpp b/demos/embedded/anomaly/src/BrowserView.cpp
new file mode 100644
index 0000000..9eea7b2
--- /dev/null
+++ b/demos/embedded/anomaly/src/BrowserView.cpp
@@ -0,0 +1,167 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Anomaly project on Qt Labs.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 or 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+#include "BrowserView.h"
+
+#include <QtGui>
+#include <QtNetwork>
+#include <QtWebKit>
+
+#include "ControlStrip.h"
+#include "TitleBar.h"
+#include "flickcharm.h"
+#include "ZoomStrip.h"
+
+#if defined (Q_OS_SYMBIAN)
+#include "sym_iap_util.h"
+#endif
+
+BrowserView::BrowserView(QWidget *parent)
+ : QWidget(parent)
+ , m_titleBar(0)
+ , m_webView(0)
+ , m_progress(0)
+ , m_currentZoom(100)
+{
+ m_titleBar = new TitleBar(this);
+ m_webView = new QWebView(this);
+ m_zoomStrip = new ZoomStrip(this);
+ m_controlStrip = new ControlStrip(this);
+
+ m_zoomLevels << 30 << 50 << 67 << 80 << 90;
+ m_zoomLevels << 100;
+ m_zoomLevels << 110 << 120 << 133 << 150 << 170 << 200 << 240 << 300;
+
+ QTimer::singleShot(0, this, SLOT(initialize()));
+}
+
+void BrowserView::initialize()
+{
+ connect(m_zoomStrip, SIGNAL(zoomInClicked()), SLOT(zoomIn()));
+ connect(m_zoomStrip, SIGNAL(zoomOutClicked()), SLOT(zoomOut()));
+
+ connect(m_controlStrip, SIGNAL(menuClicked()), SIGNAL(menuButtonClicked()));
+ connect(m_controlStrip, SIGNAL(backClicked()), m_webView, SLOT(back()));
+ connect(m_controlStrip, SIGNAL(forwardClicked()), m_webView, SLOT(forward()));
+
+ QPalette pal = m_webView->palette();
+ pal.setBrush(QPalette::Base, Qt::white);
+ m_webView->setPalette(pal);
+
+ FlickCharm *flickCharm = new FlickCharm(this);
+ flickCharm->activateOn(m_webView);
+
+ m_webView->setZoomFactor(static_cast<qreal>(m_currentZoom)/100.0);
+ connect(m_webView, SIGNAL(loadStarted()), SLOT(start()));
+ connect(m_webView, SIGNAL(loadProgress(int)), SLOT(setProgress(int)));
+ connect(m_webView, SIGNAL(loadFinished(bool)), SLOT(finish(bool)));
+ connect(m_webView, SIGNAL(urlChanged(QUrl)), SLOT(updateTitleBar()));
+
+ m_webView->setHtml("Will try to load page soon!");
+ m_webView->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ m_webView->setFocus();
+#ifdef Q_OS_SYMBIAN
+ QTimer::singleShot(0, this, SLOT(setDefaultIap()));
+#endif
+}
+
+void BrowserView::start()
+{
+ m_progress = 0;
+ updateTitleBar();
+ //m_titleBar->setText(m_webView->url().toString());
+}
+
+void BrowserView::setProgress(int percent)
+{
+ m_progress = percent;
+ updateTitleBar();
+ //m_titleBar->setText(QString("Loading %1%").arg(percent));
+}
+
+void BrowserView::updateTitleBar()
+{
+ QUrl url = m_webView->url();
+ m_titleBar->setHost(url.host());
+ m_titleBar->setTitle(m_webView->title());
+ m_titleBar->setProgress(m_progress);
+}
+
+void BrowserView::finish(bool ok)
+{
+ m_progress = 0;
+ updateTitleBar();
+
+ // TODO: handle error
+ if (!ok) {
+ //m_titleBar->setText("Loading failed.");
+ }
+}
+
+void BrowserView::zoomIn()
+{
+ int i = m_zoomLevels.indexOf(m_currentZoom);
+ Q_ASSERT(i >= 0);
+ if (i < m_zoomLevels.count() - 1)
+ m_currentZoom = m_zoomLevels[i + 1];
+
+ m_webView->setZoomFactor(static_cast<qreal>(m_currentZoom)/100.0);
+}
+
+void BrowserView::zoomOut()
+{
+ int i = m_zoomLevels.indexOf(m_currentZoom);
+ Q_ASSERT(i >= 0);
+ if (i > 0)
+ m_currentZoom = m_zoomLevels[i - 1];
+
+ m_webView->setZoomFactor(static_cast<qreal>(m_currentZoom)/100.0);
+}
+
+void BrowserView::resizeEvent(QResizeEvent *event)
+{
+ QWidget::resizeEvent(event);
+
+ int h1 = m_titleBar->sizeHint().height();
+ int h2 = m_controlStrip->sizeHint().height();
+
+ m_titleBar->setGeometry(0, 0, width(), h1);
+ m_controlStrip->setGeometry(0, height() - h2, width(), h2);
+ m_webView->setGeometry(0, h1, width(), height() - h1);
+
+ int zw = m_zoomStrip->sizeHint().width();
+ int zh = m_zoomStrip->sizeHint().height();
+ m_zoomStrip->move(width() - zw, (height() - zh) / 2);
+}
+#ifdef Q_OS_SYMBIAN
+void BrowserView::setDefaultIap()
+{
+ qt_SetDefaultIap();
+ m_webView->load(QUrl("http://news.bbc.co.uk/text_only.stm"));
+}
+#endif
+
+void BrowserView::navigate(const QUrl &url)
+{
+ m_webView->load(url);
+}
diff --git a/demos/embedded/anomaly/src/BrowserView.h b/demos/embedded/anomaly/src/BrowserView.h
new file mode 100644
index 0000000..e80166a
--- /dev/null
+++ b/demos/embedded/anomaly/src/BrowserView.h
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Anomaly project on Qt Labs.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 or 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+#ifndef BROWSERVIEW_H
+#define BROWSERVIEW_H
+
+#include <QWidget>
+#include <QVector>
+
+class QUrl;
+class QWebView;
+class TitleBar;
+class ControlStrip;
+class ZoomStrip;
+
+class BrowserView : public QWidget
+{
+ Q_OBJECT
+
+public:
+ BrowserView(QWidget *parent = 0);
+
+public slots:
+ void navigate(const QUrl &url);
+ void zoomIn();
+ void zoomOut();
+#ifdef Q_OS_SYMBIAN
+ void setDefaultIap();
+#endif
+
+private slots:
+ void initialize();
+ void start();
+ void setProgress(int percent);
+ void finish(bool);
+ void updateTitleBar();
+
+signals:
+ void menuButtonClicked();
+
+protected:
+ void resizeEvent(QResizeEvent *event);
+
+private:
+ TitleBar *m_titleBar;
+ QWebView *m_webView;
+ ZoomStrip *m_zoomStrip;
+ ControlStrip *m_controlStrip;
+ int m_progress;
+ int m_currentZoom;
+ QVector<int> m_zoomLevels;
+};
+
+#endif // BROWSERVIEW_H
diff --git a/demos/embedded/anomaly/src/BrowserWindow.cpp b/demos/embedded/anomaly/src/BrowserWindow.cpp
new file mode 100644
index 0000000..9f81fe3
--- /dev/null
+++ b/demos/embedded/anomaly/src/BrowserWindow.cpp
@@ -0,0 +1,169 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Anomaly project on Qt Labs.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 or 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+#include "BrowserWindow.h"
+
+#include <QtCore>
+#include <QtGui>
+
+#include "BrowserView.h"
+#include "HomeView.h"
+
+BrowserWindow::BrowserWindow()
+ : QWidget()
+ , m_homeView(0)
+ , m_browserView(0)
+{
+ m_timeLine = new QTimeLine(300, this);
+ m_timeLine->setCurveShape(QTimeLine::EaseInOutCurve);
+ QTimer::singleShot(0, this, SLOT(initialize()));
+}
+
+void BrowserWindow::initialize()
+{
+ m_homeView = new HomeView(this);
+ m_browserView = new BrowserView(this);
+
+ m_homeView->hide();
+ m_homeView->resize(size());
+ m_homeView->move(0, 0);
+
+ m_browserView->hide();
+ m_browserView->resize(size());
+ m_browserView->move(0, 0);
+
+ connect(m_homeView, SIGNAL(addressEntered(QString)), SLOT(gotoAddress(QString)));
+ connect(m_homeView, SIGNAL(urlActivated(QUrl)), SLOT(navigate(QUrl)));
+
+ connect(m_browserView, SIGNAL(menuButtonClicked()), SLOT(showHomeView()));
+
+ m_homeView->setVisible(false);
+ m_browserView->setVisible(false);
+ slide(0);
+
+ connect(m_timeLine, SIGNAL(frameChanged(int)), SLOT(slide(int)));
+}
+
+
+// from Demo Browser
+QUrl guessUrlFromString(const QString &string)
+{
+ QString urlStr = string.trimmed();
+ QRegExp test(QLatin1String("^[a-zA-Z]+\\:.*"));
+
+ // Check if it looks like a qualified URL. Try parsing it and see.
+ bool hasSchema = test.exactMatch(urlStr);
+ if (hasSchema) {
+ QUrl url = QUrl::fromEncoded(urlStr.toUtf8(), QUrl::TolerantMode);
+ if (url.isValid())
+ return url;
+ }
+
+ // Might be a file.
+ if (QFile::exists(urlStr)) {
+ QFileInfo info(urlStr);
+ return QUrl::fromLocalFile(info.absoluteFilePath());
+ }
+
+ // Might be a shorturl - try to detect the schema.
+ if (!hasSchema) {
+ int dotIndex = urlStr.indexOf(QLatin1Char('.'));
+ if (dotIndex != -1) {
+ QString prefix = urlStr.left(dotIndex).toLower();
+ QString schema = (prefix == QString("ftp")) ? prefix.toLatin1() : QString("http");
+ QString location = schema + "://" + urlStr;
+ QUrl url = QUrl::fromEncoded(location.toUtf8(), QUrl::TolerantMode);
+ if (url.isValid())
+ return url;
+ }
+ }
+
+ // Fall back to QUrl's own tolerant parser.
+ QUrl url = QUrl::fromEncoded(string.toUtf8(), QUrl::TolerantMode);
+
+ // finally for cases where the user just types in a hostname add http
+ if (url.scheme().isEmpty())
+ url = QUrl::fromEncoded("http://" + string.toUtf8(), QUrl::TolerantMode);
+ return url;
+}
+
+void BrowserWindow::gotoAddress(const QString &address)
+{
+ m_browserView->navigate(guessUrlFromString(address));
+ showBrowserView();
+}
+
+void BrowserWindow::navigate(const QUrl &url)
+{
+ m_browserView->navigate(url);
+ showBrowserView();
+}
+
+void BrowserWindow::slide(int pos)
+{
+ m_browserView->move(pos, 0);
+ m_homeView->move(pos - width(), 0);
+ m_browserView->show();
+ m_homeView->show();
+}
+
+void BrowserWindow::showHomeView()
+{
+ if (m_timeLine->state() != QTimeLine::NotRunning)
+ return;
+
+ m_timeLine->setFrameRange(0, width());
+ m_timeLine->start();
+ m_homeView->setFocus();
+}
+
+void BrowserWindow::showBrowserView()
+{
+ if (m_timeLine->state() != QTimeLine::NotRunning)
+ return;
+
+ m_timeLine->setFrameRange(width(), 0);
+ m_timeLine->start();
+ m_browserView->setFocus();
+}
+
+void BrowserWindow::keyReleaseEvent(QKeyEvent *event)
+{
+ QWidget::keyReleaseEvent(event);
+
+ if (event->key() == Qt::Key_F3) {
+ if (m_homeView->isVisible())
+ showBrowserView();
+ else
+ showHomeView();
+ }
+}
+
+void BrowserWindow::resizeEvent(QResizeEvent *event)
+{
+ if (m_homeView)
+ m_homeView->resize(size());
+
+ if (m_browserView)
+ m_browserView->resize(size());
+}
diff --git a/demos/embedded/anomaly/src/BrowserWindow.h b/demos/embedded/anomaly/src/BrowserWindow.h
new file mode 100644
index 0000000..2b9757f
--- /dev/null
+++ b/demos/embedded/anomaly/src/BrowserWindow.h
@@ -0,0 +1,62 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Anomaly project on Qt Labs.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 or 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+
+#ifndef BROWSERWINDOW_H
+#define BROWSERWINDOW_H
+
+#include <QWidget>
+class QTimeLine;
+class QUrl;
+
+class BrowserView;
+class HomeView;
+
+class BrowserWindow : public QWidget
+{
+ Q_OBJECT
+
+public:
+ BrowserWindow();
+
+private slots:
+ void initialize();
+ void navigate(const QUrl &url);
+ void gotoAddress(const QString &address);
+
+public slots:
+ void showBrowserView();
+ void showHomeView();
+ void slide(int);
+
+protected:
+ void keyReleaseEvent(QKeyEvent *event);
+ void resizeEvent(QResizeEvent *event);
+
+private:
+ HomeView *m_homeView;
+ BrowserView *m_browserView;
+ QTimeLine *m_timeLine;
+};
+
+#endif // BROWSERWINDOW_H
diff --git a/demos/embedded/anomaly/src/ControlStrip.cpp b/demos/embedded/anomaly/src/ControlStrip.cpp
new file mode 100644
index 0000000..190db30
--- /dev/null
+++ b/demos/embedded/anomaly/src/ControlStrip.cpp
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Anomaly project on Qt Labs.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 or 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+#include "ControlStrip.h"
+
+#include <QtCore>
+#include <QtGui>
+
+ControlStrip::ControlStrip(QWidget *parent)
+ : QWidget(parent)
+{
+ menuPixmap.load(":/images/edit-find.png");
+ backPixmap.load(":/images/go-previous.png");
+ forwardPixmap.load(":/images/go-next.png");
+}
+
+QSize ControlStrip::sizeHint() const
+{
+ return minimumSizeHint();
+}
+
+QSize ControlStrip::minimumSizeHint() const
+{
+ return QSize(320, 48);
+}
+
+void ControlStrip::mousePressEvent(QMouseEvent *event)
+{
+ int h = height();
+ int x = event->pos().x();
+
+ if (x < h) {
+ emit menuClicked();
+ event->accept();
+ return;
+ }
+
+ if (x > width() - h) {
+ emit forwardClicked();
+ event->accept();
+ return;
+ }
+
+ if ((x < width() - 2 * h) && (x > width() - 3 * h)) {
+ emit backClicked();
+ event->accept();
+ return;
+ }
+}
+
+void ControlStrip::paintEvent(QPaintEvent *event)
+{
+ int h = height();
+ int s = (h - menuPixmap.height()) / 2;
+
+ QPainter p(this);
+ p.fillRect(event->rect(), QColor(32, 32, 32, 192));
+ p.setCompositionMode(QPainter::CompositionMode_SourceOver);
+ p.drawPixmap(s, s, menuPixmap);
+ p.drawPixmap(width() - 3 * h + s, s, backPixmap);
+ p.drawPixmap(width() - h + s, s, forwardPixmap);
+ p.end();
+}
diff --git a/demos/embedded/anomaly/src/ControlStrip.h b/demos/embedded/anomaly/src/ControlStrip.h
new file mode 100644
index 0000000..bf8d7e8
--- /dev/null
+++ b/demos/embedded/anomaly/src/ControlStrip.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Anomaly project on Qt Labs.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 or 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+#ifndef CONTROLSTRIP_H
+#define CONTROLSTRIP_H
+
+#include <QWidget>
+
+class ControlStrip : public QWidget
+{
+ Q_OBJECT
+
+public:
+ ControlStrip(QWidget *parent = 0);
+
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+
+signals:
+ void menuClicked();
+ void backClicked();
+ void forwardClicked();
+
+protected:
+ void paintEvent(QPaintEvent *event);
+ void mousePressEvent(QMouseEvent *event);
+
+private:
+ QPixmap menuPixmap;
+ QPixmap backPixmap;
+ QPixmap forwardPixmap;
+};
+
+#endif // CONTROLSTRIP_H
diff --git a/demos/embedded/anomaly/src/HomeView.cpp b/demos/embedded/anomaly/src/HomeView.cpp
new file mode 100644
index 0000000..def677d
--- /dev/null
+++ b/demos/embedded/anomaly/src/HomeView.cpp
@@ -0,0 +1,58 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Anomaly project on Qt Labs.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 or 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+#include "HomeView.h"
+
+#include <QtCore>
+#include <QtGui>
+
+#include "AddressBar.h"
+#include "BookmarksView.h"
+
+HomeView::HomeView(QWidget *parent)
+ : QWidget(parent)
+ , m_addressBar(0)
+{
+ m_addressBar = new AddressBar(parent);
+ connect(m_addressBar, SIGNAL(addressEntered(QString)), SLOT(gotoAddress(QString)));
+
+ m_bookmarks = new BookmarksView(parent);
+ connect(m_bookmarks, SIGNAL(urlSelected(QUrl)), SIGNAL(urlActivated(QUrl)));
+
+ QVBoxLayout *layout = new QVBoxLayout(this);
+ layout->setMargin(4);
+ layout->setSpacing(4);
+ layout->addWidget(m_addressBar);
+ layout->addWidget(m_bookmarks);
+}
+
+void HomeView::gotoAddress(const QString &address)
+{
+ emit addressEntered(address);
+}
+
+void HomeView::focusInEvent(QFocusEvent *event)
+{
+ m_addressBar->setFocus();
+ QWidget::focusInEvent(event);
+}
diff --git a/demos/embedded/anomaly/src/HomeView.h b/demos/embedded/anomaly/src/HomeView.h
new file mode 100644
index 0000000..2a56295
--- /dev/null
+++ b/demos/embedded/anomaly/src/HomeView.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Anomaly project on Qt Labs.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 or 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+#ifndef HOMEVIEW_H
+#define HOMEVIEW_H
+
+#include <QWidget>
+
+class QUrl;
+
+class AddressBar;
+class BookmarksView;
+
+class HomeView : public QWidget
+{
+ Q_OBJECT
+
+public:
+ HomeView(QWidget *parent);
+
+signals:
+ void urlActivated(const QUrl &url);
+ void addressEntered(const QString &address);
+
+private slots:
+ void gotoAddress(const QString &address);
+
+protected:
+ void focusInEvent(QFocusEvent *event);
+
+private:
+ AddressBar *m_addressBar;
+ BookmarksView *m_bookmarks;
+};
+
+#endif // HOMEVIEW_H
diff --git a/demos/embedded/anomaly/src/Main.cpp b/demos/embedded/anomaly/src/Main.cpp
new file mode 100644
index 0000000..d73e58a
--- /dev/null
+++ b/demos/embedded/anomaly/src/Main.cpp
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Anomaly project on Qt Labs.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 or 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+#include <QtCore>
+#include <QtGui>
+#include <QtWebKit>
+
+#include "BrowserWindow.h"
+
+int main(int argc, char *argv[])
+{
+#if !defined(Q_WS_S60)
+ QApplication::setGraphicsSystem("raster");
+#endif
+
+ QApplication app(argc, argv);
+
+ app.setApplicationName("Anomaly");
+ app.setApplicationVersion("0.0.0");
+
+ BrowserWindow window;
+#ifdef Q_OS_SYMBIAN
+ window.showFullScreen();
+ QWebSettings::globalSettings()->setObjectCacheCapacities(128*1024, 1024*1024, 1024*1024);
+ QWebSettings::globalSettings()->setMaximumPagesInCache(3);
+#else
+ window.resize(360, 640);
+ window.show();
+ app.setStyle("windows");
+#endif
+
+ return app.exec();
+}
diff --git a/demos/embedded/anomaly/src/TitleBar.cpp b/demos/embedded/anomaly/src/TitleBar.cpp
new file mode 100644
index 0000000..f33ccab
--- /dev/null
+++ b/demos/embedded/anomaly/src/TitleBar.cpp
@@ -0,0 +1,106 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Anomaly project on Qt Labs.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 or 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+#include "TitleBar.h"
+
+#include <QtCore>
+#include <QtGui>
+
+TitleBar::TitleBar(QWidget *parent)
+ : QWidget(parent)
+ , m_progress(0)
+{
+ setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum);
+}
+
+void TitleBar::setHost(const QString &host)
+{
+ m_host = host;
+ update();
+}
+
+void TitleBar::setTitle(const QString &title)
+{
+ m_title = title;
+ update();
+}
+
+void TitleBar::setProgress(int percent)
+{
+ m_progress = percent;
+ update();
+}
+
+QSize TitleBar::sizeHint() const
+{
+ return minimumSizeHint();
+}
+
+QSize TitleBar::minimumSizeHint() const
+{
+ QFontMetrics fm = fontMetrics();
+ return QSize(100, fm.height());
+}
+
+void TitleBar::paintEvent(QPaintEvent *event)
+{
+ QString title = m_host;
+ if (!m_title.isEmpty())
+ title.append(": ").append(m_title);
+
+ QPalette pal = palette();
+ QPainter p(this);
+ p.fillRect(event->rect(), pal.color(QPalette::Highlight));
+
+ if (m_progress > 0) {
+
+ QRect box = rect();
+ box.setLeft(16);
+ box.setWidth(width() - box.left() - 110);
+
+ p.setPen(pal.color(QPalette::HighlightedText));
+ p.setOpacity(0.8);
+ p.drawText(box, Qt::AlignLeft + Qt::AlignVCenter, title);
+
+ int x = width() - 100 - 5;
+ int y = 1;
+ int h = height() - 4;
+
+ p.setOpacity(1.0);
+ p.setBrush(Qt::NoBrush);
+ p.setPen(pal.color(QPalette::HighlightedText));
+ p.drawRect(x, y, 100, h);
+ p.setPen(Qt::NoPen);
+ p.setBrush(pal.color(QPalette::HighlightedText));
+ p.drawRect(x, y, m_progress, h);
+ } else {
+
+ QRect box = rect();
+ box.setLeft(16);
+ box.setWidth(width() - box.left() - 5);
+ p.setPen(pal.color(QPalette::HighlightedText));
+ p.drawText(box, Qt::AlignLeft + Qt::AlignVCenter, title);
+ }
+
+ p.end();
+}
diff --git a/demos/embedded/anomaly/src/TitleBar.h b/demos/embedded/anomaly/src/TitleBar.h
new file mode 100644
index 0000000..5e982ff
--- /dev/null
+++ b/demos/embedded/anomaly/src/TitleBar.h
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Anomaly project on Qt Labs.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 or 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+#ifndef TITLEBAR_H
+#define TITLEBAR_H
+
+#include <QWidget>
+
+class TitleBar : public QWidget
+{
+ Q_OBJECT
+
+public:
+ TitleBar(QWidget *parent = 0);
+
+ void setHost(const QString &host);
+ void setTitle(const QString &title);
+ void setProgress(int percent);
+
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+
+protected:
+ void paintEvent(QPaintEvent *event);
+
+private:
+ QString m_host;
+ QString m_title;
+ int m_progress;
+};
+
+#endif // TITLEBAR_H
diff --git a/demos/embedded/anomaly/src/ZoomStrip.cpp b/demos/embedded/anomaly/src/ZoomStrip.cpp
new file mode 100644
index 0000000..167a4f7
--- /dev/null
+++ b/demos/embedded/anomaly/src/ZoomStrip.cpp
@@ -0,0 +1,64 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Anomaly project on Qt Labs.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 or 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+#include "ZoomStrip.h"
+
+#include <QtCore>
+#include <QtGui>
+
+ZoomStrip::ZoomStrip(QWidget *parent)
+ : QWidget(parent)
+{
+ zoomInPixmap.load(":/images/list-add.png");
+ zoomOutPixmap.load(":/images/list-remove.png");
+}
+
+QSize ZoomStrip::sizeHint() const
+{
+ return minimumSizeHint();
+}
+
+QSize ZoomStrip::minimumSizeHint() const
+{
+ return QSize(48, 96);
+}
+
+void ZoomStrip::mousePressEvent(QMouseEvent *event)
+{
+ if (event->pos().y() < height() / 2)
+ emit zoomInClicked();
+ else
+ emit zoomOutClicked();
+}
+
+void ZoomStrip::paintEvent(QPaintEvent *event)
+{
+ int w = width();
+ int s = (w - zoomInPixmap.width()) / 2;
+
+ QPainter p(this);
+ p.fillRect(event->rect(), QColor(128, 128, 128, 128));
+ p.drawPixmap(s, s, zoomInPixmap);
+ p.drawPixmap(s, s + w, zoomOutPixmap);
+ p.end();
+}
diff --git a/demos/embedded/anomaly/src/ZoomStrip.h b/demos/embedded/anomaly/src/ZoomStrip.h
new file mode 100644
index 0000000..88ce264
--- /dev/null
+++ b/demos/embedded/anomaly/src/ZoomStrip.h
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Anomaly project on Qt Labs.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 or 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+#ifndef ZOOMSTRIP_H
+#define ZOOMSTRIP_H
+
+#include <QWidget>
+
+class ZoomStrip : public QWidget
+{
+ Q_OBJECT
+
+public:
+ ZoomStrip(QWidget *parent = 0);
+
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+
+signals:
+ void zoomInClicked();
+ void zoomOutClicked();
+
+protected:
+ void paintEvent(QPaintEvent *event);
+ void mousePressEvent(QMouseEvent *event);
+
+private:
+ QPixmap zoomInPixmap;
+ QPixmap zoomOutPixmap;
+};
+
+#endif // ZOOMSTRIP_H
diff --git a/demos/embedded/anomaly/src/anomaly.qrc b/demos/embedded/anomaly/src/anomaly.qrc
new file mode 100644
index 0000000..601a34e
--- /dev/null
+++ b/demos/embedded/anomaly/src/anomaly.qrc
@@ -0,0 +1,9 @@
+<RCC>
+ <qresource prefix="/" >
+ <file>images/go-next.png</file>
+ <file>images/go-previous.png</file>
+ <file>images/edit-find.png</file>
+ <file>images/list-add.png</file>
+ <file>images/list-remove.png</file>
+ </qresource>
+</RCC>
diff --git a/demos/embedded/anomaly/src/flickcharm.cpp b/demos/embedded/anomaly/src/flickcharm.cpp
new file mode 100644
index 0000000..ec257b3
--- /dev/null
+++ b/demos/embedded/anomaly/src/flickcharm.cpp
@@ -0,0 +1,309 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Graphics Dojo project on Qt Labs.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 or 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+#include "flickcharm.h"
+
+#include <QAbstractScrollArea>
+#include <QApplication>
+#include <QBasicTimer>
+#include <QEvent>
+#include <QHash>
+#include <QList>
+#include <QMouseEvent>
+#include <QScrollBar>
+#include <QWebFrame>
+#include <QWebView>
+
+#include <QDebug>
+
+struct FlickData {
+ typedef enum { Steady, Pressed, ManualScroll, AutoScroll, Stop } State;
+ State state;
+ QWidget *widget;
+ QPoint pressPos;
+ QPoint offset;
+ QPoint dragPos;
+ QPoint speed;
+ QList<QEvent*> ignored;
+};
+
+class FlickCharmPrivate
+{
+public:
+ QHash<QWidget*, FlickData*> flickData;
+ QBasicTimer ticker;
+};
+
+FlickCharm::FlickCharm(QObject *parent): QObject(parent)
+{
+ d = new FlickCharmPrivate;
+}
+
+FlickCharm::~FlickCharm()
+{
+ delete d;
+}
+
+void FlickCharm::activateOn(QWidget *widget)
+{
+ QAbstractScrollArea *scrollArea = dynamic_cast<QAbstractScrollArea*>(widget);
+ if (scrollArea) {
+ scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+ scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+
+ QWidget *viewport = scrollArea->viewport();
+
+ viewport->installEventFilter(this);
+ scrollArea->installEventFilter(this);
+
+ d->flickData.remove(viewport);
+ d->flickData[viewport] = new FlickData;
+ d->flickData[viewport]->widget = widget;
+ d->flickData[viewport]->state = FlickData::Steady;
+
+ return;
+ }
+
+ QWebView *webView = dynamic_cast<QWebView*>(widget);
+ if (webView) {
+ QWebFrame *frame = webView->page()->mainFrame();
+ frame->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff);
+ frame->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff);
+
+ webView->installEventFilter(this);
+
+ d->flickData.remove(webView);
+ d->flickData[webView] = new FlickData;
+ d->flickData[webView]->widget = webView;
+ d->flickData[webView]->state = FlickData::Steady;
+
+ return;
+ }
+
+ qWarning() << "FlickCharm only works on QAbstractScrollArea (and derived classes)";
+ qWarning() << "or QWebView (and derived classes)";
+}
+
+void FlickCharm::deactivateFrom(QWidget *widget)
+{
+ QAbstractScrollArea *scrollArea = dynamic_cast<QAbstractScrollArea*>(widget);
+ if (scrollArea) {
+ QWidget *viewport = scrollArea->viewport();
+
+ viewport->removeEventFilter(this);
+ scrollArea->removeEventFilter(this);
+
+ delete d->flickData[viewport];
+ d->flickData.remove(viewport);
+
+ return;
+ }
+
+ QWebView *webView = dynamic_cast<QWebView*>(widget);
+ if (webView) {
+ webView->removeEventFilter(this);
+
+ delete d->flickData[webView];
+ d->flickData.remove(webView);
+
+ return;
+ }
+}
+
+static QPoint scrollOffset(QWidget *widget)
+{
+ int x = 0, y = 0;
+
+ QAbstractScrollArea *scrollArea = dynamic_cast<QAbstractScrollArea*>(widget);
+ if (scrollArea) {
+ x = scrollArea->horizontalScrollBar()->value();
+ y = scrollArea->verticalScrollBar()->value();
+ }
+
+ QWebView *webView = dynamic_cast<QWebView*>(widget);
+ if (webView) {
+ QWebFrame *frame = webView->page()->mainFrame();
+ x = frame->evaluateJavaScript("window.scrollX").toInt();
+ y = frame->evaluateJavaScript("window.scrollY").toInt();
+ }
+
+ return QPoint(x, y);
+}
+
+static void setScrollOffset(QWidget *widget, const QPoint &p)
+{
+ QAbstractScrollArea *scrollArea = dynamic_cast<QAbstractScrollArea*>(widget);
+ if (scrollArea) {
+ scrollArea->horizontalScrollBar()->setValue(p.x());
+ scrollArea->verticalScrollBar()->setValue(p.y());
+ }
+
+ QWebView *webView = dynamic_cast<QWebView*>(widget);
+ QWebFrame *frame = webView ? webView->page()->mainFrame() : 0;
+ if (frame)
+ frame->evaluateJavaScript(QString("window.scrollTo(%1,%2);").arg(p.x()).arg(p.y()));
+}
+
+static QPoint deaccelerate(const QPoint &speed, int a = 1, int max = 64)
+{
+ int x = qBound(-max, speed.x(), max);
+ int y = qBound(-max, speed.y(), max);
+ x = (x == 0) ? x : (x > 0) ? qMax(0, x - a) : qMin(0, x + a);
+ y = (y == 0) ? y : (y > 0) ? qMax(0, y - a) : qMin(0, y + a);
+ return QPoint(x, y);
+}
+
+bool FlickCharm::eventFilter(QObject *object, QEvent *event)
+{
+ if (!object->isWidgetType())
+ return false;
+
+ QEvent::Type type = event->type();
+ if (type != QEvent::MouseButtonPress &&
+ type != QEvent::MouseButtonRelease &&
+ type != QEvent::MouseMove)
+ return false;
+
+ QMouseEvent *mouseEvent = dynamic_cast<QMouseEvent*>(event);
+ if (!mouseEvent || mouseEvent->modifiers() != Qt::NoModifier)
+ return false;
+
+ QWidget *viewport = dynamic_cast<QWidget*>(object);
+ FlickData *data = d->flickData.value(viewport);
+ if (!viewport || !data || data->ignored.removeAll(event))
+ return false;
+
+ bool consumed = false;
+ switch (data->state) {
+
+ case FlickData::Steady:
+ if (mouseEvent->type() == QEvent::MouseButtonPress)
+ if (mouseEvent->buttons() == Qt::LeftButton) {
+ consumed = true;
+ data->state = FlickData::Pressed;
+ data->pressPos = mouseEvent->pos();
+ data->offset = scrollOffset(data->widget);
+ }
+ break;
+
+ case FlickData::Pressed:
+ if (mouseEvent->type() == QEvent::MouseButtonRelease) {
+ consumed = true;
+ data->state = FlickData::Steady;
+
+ QMouseEvent *event1 = new QMouseEvent(QEvent::MouseButtonPress,
+ data->pressPos, Qt::LeftButton,
+ Qt::LeftButton, Qt::NoModifier);
+ QMouseEvent *event2 = new QMouseEvent(*mouseEvent);
+
+ data->ignored << event1;
+ data->ignored << event2;
+ QApplication::postEvent(object, event1);
+ QApplication::postEvent(object, event2);
+ }
+ if (mouseEvent->type() == QEvent::MouseMove) {
+ consumed = true;
+ data->state = FlickData::ManualScroll;
+ data->dragPos = QCursor::pos();
+ if (!d->ticker.isActive())
+ d->ticker.start(20, this);
+ }
+ break;
+
+ case FlickData::ManualScroll:
+ if (mouseEvent->type() == QEvent::MouseMove) {
+ consumed = true;
+ QPoint delta = mouseEvent->pos() - data->pressPos;
+ setScrollOffset(data->widget, data->offset - delta);
+ }
+ if (mouseEvent->type() == QEvent::MouseButtonRelease) {
+ consumed = true;
+ data->state = FlickData::AutoScroll;
+ }
+ break;
+
+ case FlickData::AutoScroll:
+ if (mouseEvent->type() == QEvent::MouseButtonPress) {
+ consumed = true;
+ data->state = FlickData::Stop;
+ data->speed = QPoint(0, 0);
+ data->pressPos = mouseEvent->pos();
+ data->offset = scrollOffset(data->widget);
+ }
+ if (mouseEvent->type() == QEvent::MouseButtonRelease) {
+ consumed = true;
+ data->state = FlickData::Steady;
+ data->speed = QPoint(0, 0);
+ }
+ break;
+
+ case FlickData::Stop:
+ if (mouseEvent->type() == QEvent::MouseButtonRelease) {
+ consumed = true;
+ data->state = FlickData::Steady;
+ }
+ if (mouseEvent->type() == QEvent::MouseMove) {
+ consumed = true;
+ data->state = FlickData::ManualScroll;
+ data->dragPos = QCursor::pos();
+ if (!d->ticker.isActive())
+ d->ticker.start(20, this);
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return consumed;
+}
+
+void FlickCharm::timerEvent(QTimerEvent *event)
+{
+ int count = 0;
+ QHashIterator<QWidget*, FlickData*> item(d->flickData);
+ while (item.hasNext()) {
+ item.next();
+ FlickData *data = item.value();
+
+ if (data->state == FlickData::ManualScroll) {
+ count++;
+ data->speed = QCursor::pos() - data->dragPos;
+ data->dragPos = QCursor::pos();
+ }
+
+ if (data->state == FlickData::AutoScroll) {
+ count++;
+ data->speed = deaccelerate(data->speed);
+ QPoint p = scrollOffset(data->widget);
+ setScrollOffset(data->widget, p - data->speed);
+ if (data->speed == QPoint(0, 0))
+ data->state = FlickData::Steady;
+ }
+ }
+
+ if (!count)
+ d->ticker.stop();
+
+ QObject::timerEvent(event);
+}
diff --git a/demos/embedded/anomaly/src/flickcharm.h b/demos/embedded/anomaly/src/flickcharm.h
new file mode 100644
index 0000000..9e36296
--- /dev/null
+++ b/demos/embedded/anomaly/src/flickcharm.h
@@ -0,0 +1,49 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Graphics Dojo project on Qt Labs.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 or 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+#ifndef FLICKCHARM_H
+#define FLICKCHARM_H
+
+#include <QObject>
+
+class FlickCharmPrivate;
+class QWidget;
+
+class FlickCharm: public QObject
+{
+ Q_OBJECT
+public:
+ FlickCharm(QObject *parent = 0);
+ ~FlickCharm();
+ void activateOn(QWidget *widget);
+ void deactivateFrom(QWidget *widget);
+ bool eventFilter(QObject *object, QEvent *event);
+
+protected:
+ void timerEvent(QTimerEvent *event);
+
+private:
+ FlickCharmPrivate *d;
+};
+
+#endif // FLICKCHARM_H
diff --git a/demos/embedded/anomaly/src/images/edit-find.png b/demos/embedded/anomaly/src/images/edit-find.png
new file mode 100644
index 0000000..5594785
--- /dev/null
+++ b/demos/embedded/anomaly/src/images/edit-find.png
Binary files differ
diff --git a/demos/embedded/anomaly/src/images/go-next.png b/demos/embedded/anomaly/src/images/go-next.png
new file mode 100644
index 0000000..a68e2db
--- /dev/null
+++ b/demos/embedded/anomaly/src/images/go-next.png
Binary files differ
diff --git a/demos/embedded/anomaly/src/images/go-previous.png b/demos/embedded/anomaly/src/images/go-previous.png
new file mode 100644
index 0000000..c37bc04
--- /dev/null
+++ b/demos/embedded/anomaly/src/images/go-previous.png
Binary files differ
diff --git a/demos/embedded/anomaly/src/images/list-add.png b/demos/embedded/anomaly/src/images/list-add.png
new file mode 100644
index 0000000..2acdd8f
--- /dev/null
+++ b/demos/embedded/anomaly/src/images/list-add.png
Binary files differ
diff --git a/demos/embedded/anomaly/src/images/list-remove.png b/demos/embedded/anomaly/src/images/list-remove.png
new file mode 100644
index 0000000..c5524f7
--- /dev/null
+++ b/demos/embedded/anomaly/src/images/list-remove.png
Binary files differ
diff --git a/demos/embedded/desktopservices/contenttab.cpp b/demos/embedded/desktopservices/contenttab.cpp
new file mode 100644
index 0000000..d1b7a02
--- /dev/null
+++ b/demos/embedded/desktopservices/contenttab.cpp
@@ -0,0 +1,154 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+// EXTERNAL INCLUDES
+#include <QKeyEvent>
+#include <QMessageBox>
+#include <QListWidget>
+#include <QVBoxLayout>
+#include <QFileInfoList>
+#include <QListWidgetItem>
+
+// INTERNAL INCLUDES
+
+// CLASS HEADER
+#include "contenttab.h"
+
+
+// CONSTRUCTORS & DESTRUCTORS
+ContentTab::ContentTab(QWidget *parent) :
+ QListWidget(parent)
+{
+ setDragEnabled(false);
+ setIconSize(QSize(45, 45));
+}
+
+ContentTab::~ContentTab()
+{
+}
+
+// NEW PUBLIC METHODS
+void ContentTab::init(const QDesktopServices::StandardLocation &location,
+ const QString &filter,
+ const QString &icon)
+{
+ setContentDir(location);
+ QStringList filterList;
+ filterList = filter.split(";");
+ m_ContentDir.setNameFilters(filterList);
+ setIcon(icon);
+
+ connect(this, SIGNAL(itemClicked(QListWidgetItem *)),
+ this, SLOT(openItem(QListWidgetItem *)));
+
+ populateListWidget();
+}
+
+// NEW PROTECTED METHODS
+void ContentTab::setContentDir(const QDesktopServices::StandardLocation &location)
+{
+ m_ContentDir.setPath(QDesktopServices::storageLocation(location));
+}
+
+void ContentTab::setIcon(const QString &icon)
+{
+ m_Icon = QIcon(icon);
+}
+
+void ContentTab::populateListWidget()
+{
+ QFileInfoList fileList = m_ContentDir.entryInfoList(QDir::Files, QDir::Time);
+ foreach(QFileInfo item, fileList) {
+ new QListWidgetItem(m_Icon, itemName(item), this);
+ }
+}
+
+QString ContentTab::itemName(const QFileInfo &item)
+{
+ return QString(item.baseName() + "." + item.completeSuffix());
+}
+
+QUrl ContentTab::itemUrl(QListWidgetItem *item)
+{
+ return QUrl("file:///" + m_ContentDir.absolutePath() + "/" + item->text());
+}
+
+void ContentTab::keyPressEvent(QKeyEvent *event)
+{
+ switch (event->key()) {
+ case Qt::Key_Up:
+ if (currentRow() == 0) {
+ setCurrentRow(count() - 1);
+ } else {
+ setCurrentRow(currentRow() - 1);
+ }
+ break;
+ case Qt::Key_Down:
+ if (currentRow() == (count() - 1)) {
+ setCurrentRow(0);
+ } else {
+ setCurrentRow(currentRow() + 1);
+ }
+ break;
+ case Qt::Key_Select:
+ openItem(currentItem());
+ default:
+ QListWidget::keyPressEvent(event);
+ break;
+ }
+}
+
+void ContentTab::handleErrorInOpen(QListWidgetItem *item)
+{
+ Q_UNUSED(item);
+ QMessageBox::warning(this, tr("Operation Failed"), tr("Unkown error!"), QMessageBox::Close);
+}
+
+// NEW SLOTS
+void ContentTab::openItem(QListWidgetItem *item)
+{
+ bool ret = QDesktopServices::openUrl(itemUrl(item));
+ if (!ret)
+ handleErrorInOpen(item);
+}
+
+
+// End of File
diff --git a/demos/embedded/desktopservices/contenttab.h b/demos/embedded/desktopservices/contenttab.h
new file mode 100644
index 0000000..1840827
--- /dev/null
+++ b/demos/embedded/desktopservices/contenttab.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef CONTENTTAB_H_
+#define CONTENTTAB_H_
+
+// EXTERNAL INCLUDES
+#include <QDir>
+#include <QUrl>
+#include <QIcon>
+#include <QFileInfo>
+#include <QListWidget>
+#include <QDesktopServices>
+
+// INTERNAL INCLUDES
+
+// FORWARD DECLARATIONS
+QT_BEGIN_NAMESPACE
+class QListWidgetItem;
+QT_END_NAMESPACE
+
+// CLASS DECLARATION
+
+/**
+* ContentTab class.
+*
+* This class implements general purpose tab for media files.
+*/
+class ContentTab : public QListWidget
+{
+ Q_OBJECT
+
+public: // Constructors & Destructors
+ ContentTab(QWidget *parent);
+ virtual ~ContentTab();
+
+public: // New Methods
+ virtual void init(const QDesktopServices::StandardLocation &location,
+ const QString &filter,
+ const QString &icon);
+
+protected: // New Methods
+ virtual void setContentDir(const QDesktopServices::StandardLocation &location);
+ virtual void setIcon(const QString &icon);
+ virtual void populateListWidget();
+ virtual QString itemName(const QFileInfo &item);
+ virtual QUrl itemUrl(QListWidgetItem *item);
+ virtual void handleErrorInOpen(QListWidgetItem *item);
+protected:
+ void keyPressEvent(QKeyEvent *event);
+
+public slots: // New Slots
+ virtual void openItem(QListWidgetItem *item);
+
+protected: // Owned variables
+ QDir m_ContentDir;
+ QIcon m_Icon;
+};
+
+
+#endif // CONTENTTAB_H_
+
+// End of File
diff --git a/demos/embedded/desktopservices/data/Explosion.wav b/demos/embedded/desktopservices/data/Explosion.wav
new file mode 100644
index 0000000..7b140b1
--- /dev/null
+++ b/demos/embedded/desktopservices/data/Explosion.wav
Binary files differ
diff --git a/demos/embedded/desktopservices/data/designer.png b/demos/embedded/desktopservices/data/designer.png
new file mode 100644
index 0000000..0988fce
--- /dev/null
+++ b/demos/embedded/desktopservices/data/designer.png
Binary files differ
diff --git a/demos/embedded/desktopservices/data/monkey_on_64x64.png b/demos/embedded/desktopservices/data/monkey_on_64x64.png
new file mode 100644
index 0000000..990f604
--- /dev/null
+++ b/demos/embedded/desktopservices/data/monkey_on_64x64.png
Binary files differ
diff --git a/demos/embedded/desktopservices/data/sax.mp3 b/demos/embedded/desktopservices/data/sax.mp3
new file mode 100644
index 0000000..0a078b1
--- /dev/null
+++ b/demos/embedded/desktopservices/data/sax.mp3
Binary files differ
diff --git a/demos/embedded/desktopservices/desktopservices.pro b/demos/embedded/desktopservices/desktopservices.pro
new file mode 100644
index 0000000..81fe16d
--- /dev/null
+++ b/demos/embedded/desktopservices/desktopservices.pro
@@ -0,0 +1,22 @@
+TEMPLATE = app
+TARGET =
+INCLUDEPATH += .
+
+HEADERS += desktopwidget.h contenttab.h linktab.h
+SOURCES += desktopwidget.cpp contenttab.cpp linktab.cpp main.cpp
+
+RESOURCES += desktopservices.qrc
+
+music.sources = data/*.mp3 data/*.wav
+music.path = /data/sounds/
+
+image.sources = data/*.png
+image.path = /data/images/
+
+DEPLOYMENT += music image
+
+symbian {
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+ TARGET.UID3 = 0xA000C611
+ ICON = ./resources/heart.svg
+}
diff --git a/demos/embedded/desktopservices/desktopservices.qrc b/demos/embedded/desktopservices/desktopservices.qrc
new file mode 100644
index 0000000..410175f
--- /dev/null
+++ b/demos/embedded/desktopservices/desktopservices.qrc
@@ -0,0 +1,8 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource prefix="/">
+ <file>resources/music.png</file>
+ <file>resources/photo.png</file>
+ <file>resources/browser.png</file>
+ <file>resources/message.png</file>
+</qresource>
+</RCC>
diff --git a/demos/embedded/desktopservices/desktopwidget.cpp b/demos/embedded/desktopservices/desktopwidget.cpp
new file mode 100644
index 0000000..015e8f3
--- /dev/null
+++ b/demos/embedded/desktopservices/desktopwidget.cpp
@@ -0,0 +1,90 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+// EXTERNAL INCLUDES
+#include <QTabWidget>
+#include <QVBoxLayout>
+#include <QDesktopServices>
+
+// INTERNAL INCLUDES
+#include "linktab.h"
+#include "contenttab.h"
+
+// CLASS HEADER
+#include "desktopwidget.h"
+
+// CONSTRUCTORS & DESTRUCTORS
+DesktopWidget::DesktopWidget(QWidget *parent) : QWidget(parent)
+
+{
+ QTabWidget *tabWidget = new QTabWidget(this);
+
+ // Images
+ ContentTab* imageTab = new ContentTab(tabWidget);
+ imageTab->init(QDesktopServices::PicturesLocation,
+ "*.png;*.jpg;*.jpeg;*.bmp;*.gif",
+ ":/resources/photo.png");
+ tabWidget->addTab(imageTab, tr("Images"));
+
+ // Music
+ ContentTab* musicTab = new ContentTab(tabWidget);
+ musicTab->init(QDesktopServices::MusicLocation,
+ "*.wav;*.mp3;*.mp4",
+ ":/resources/music.png");
+ tabWidget->addTab(musicTab, tr("Music"));
+
+ // Links
+ LinkTab* othersTab = new LinkTab(tabWidget);;
+ // Given icon file will be overriden by LinkTab
+ othersTab->init(QDesktopServices::PicturesLocation, "", "");
+ tabWidget->addTab(othersTab, tr("Links"));
+
+ // Layout
+ QVBoxLayout *layout = new QVBoxLayout;
+ layout->addWidget(tabWidget);
+ setLayout(layout);
+}
+
+DesktopWidget::~DesktopWidget()
+{
+}
+
+// End of file
diff --git a/demos/embedded/desktopservices/desktopwidget.h b/demos/embedded/desktopservices/desktopwidget.h
new file mode 100644
index 0000000..960127a
--- /dev/null
+++ b/demos/embedded/desktopservices/desktopwidget.h
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef DESKTOPWIDGET_H_
+#define DESKTOPWIDGET_H_
+
+// EXTERNAL INCLUDES
+#include <QWidget>
+
+// INTERNAL INCLUDES
+
+// FORWARD DECLARATIONS
+QT_BEGIN_NAMESPACE
+class QTabWidget;
+QT_END_NAMESPACE
+
+// CLASS DECLARATION
+/**
+* DesktopWidget class.
+*
+* Implements the main top level widget for QDesktopServices demo app.
+*/
+class DesktopWidget : public QWidget
+{
+ Q_OBJECT
+
+public: // Constructors & Destructors
+ DesktopWidget(QWidget *parent);
+ ~DesktopWidget();
+
+};
+
+#endif // DESKTOPWIDGET_H_
+
+// End of file
diff --git a/demos/embedded/desktopservices/linktab.cpp b/demos/embedded/desktopservices/linktab.cpp
new file mode 100644
index 0000000..4ae43f0
--- /dev/null
+++ b/demos/embedded/desktopservices/linktab.cpp
@@ -0,0 +1,88 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+// EXTERNAL INCLUDES
+#include <QUrl>
+#include <QMessageBox>
+#include <QListWidgetItem>
+
+// INTERNAL INCLUDES
+
+// CLASS HEADER
+#include "linktab.h"
+
+LinkTab::LinkTab(QWidget *parent) :
+ ContentTab(parent)
+{
+}
+
+LinkTab::~LinkTab()
+{
+}
+
+void LinkTab::populateListWidget()
+{
+ m_WebItem = new QListWidgetItem(QIcon(":/resources/browser.png"), tr("Launch Browser"), this);
+ m_MailToItem = new QListWidgetItem(QIcon(":/resources/message.png"), tr("New e-mail"), this);
+}
+
+QUrl LinkTab::itemUrl(QListWidgetItem *item)
+{
+ if (m_WebItem == item) {
+ return QUrl(tr("http://qt.nokia.com"));
+ } else if (m_MailToItem == item) {
+ return QUrl(tr("mailto:qts60-feedback@trolltech.com?subject=QtS60 feedback&body=Hello"));
+ } else {
+ // We should never endup here
+ Q_ASSERT(false);
+ return QUrl();
+ }
+}
+void LinkTab::handleErrorInOpen(QListWidgetItem *item)
+{
+ if (m_MailToItem == item) {
+ QMessageBox::warning(this, tr("Operation Failed"), tr("Please check that you have\ne-mail account defined."), QMessageBox::Close);
+ } else {
+ ContentTab::handleErrorInOpen(item);
+ }
+}
+
+// End of file
diff --git a/demos/embedded/desktopservices/linktab.h b/demos/embedded/desktopservices/linktab.h
new file mode 100644
index 0000000..1ddd354
--- /dev/null
+++ b/demos/embedded/desktopservices/linktab.h
@@ -0,0 +1,86 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef LINKTAB_H_
+#define LINKTAB_H_
+
+// EXTERNAL INCLUDES
+
+// INTERNAL INCLUDES
+#include "contenttab.h"
+
+// FORWARD DECLARATIONS
+QT_BEGIN_NAMESPACE
+class QWidget;
+class QListWidgetItem;
+QT_END_NAMESPACE
+
+// CLASS DECLARATION
+
+/**
+* LinkTab class.
+*
+* This class implements tab for opening http and mailto links.
+*/
+class LinkTab : public ContentTab
+{
+ Q_OBJECT
+
+public: // Constructors & Destructors
+ LinkTab(QWidget *parent);
+ ~LinkTab();
+
+protected: // Derived Methods
+ virtual void populateListWidget();
+ virtual QUrl itemUrl(QListWidgetItem *item);
+ virtual void handleErrorInOpen(QListWidgetItem *item);
+
+private: // Used variables
+ QListWidgetItem *m_WebItem;
+ QListWidgetItem *m_MailToItem;
+
+private: // Owned variables
+
+};
+
+#endif // CONTENTTAB_H_
+
+// End of File
diff --git a/demos/embedded/desktopservices/main.cpp b/demos/embedded/desktopservices/main.cpp
new file mode 100644
index 0000000..c200f4b
--- /dev/null
+++ b/demos/embedded/desktopservices/main.cpp
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QApplication>
+#include "desktopwidget.h"
+
+int main(int argc, char *argv[])
+{
+ Q_INIT_RESOURCE(desktopservices);
+
+ QApplication app(argc, argv);
+ DesktopWidget* myWidget = new DesktopWidget(0);
+ myWidget->showMaximized();
+
+ return app.exec();
+}
+
+// End of file
diff --git a/demos/embedded/desktopservices/resources/browser.png b/demos/embedded/desktopservices/resources/browser.png
new file mode 100644
index 0000000..28561e1
--- /dev/null
+++ b/demos/embedded/desktopservices/resources/browser.png
Binary files differ
diff --git a/demos/embedded/desktopservices/resources/heart.svg b/demos/embedded/desktopservices/resources/heart.svg
new file mode 100644
index 0000000..ba5f050
--- /dev/null
+++ b/demos/embedded/desktopservices/resources/heart.svg
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) --><svg viewBox="100 200 550 500" height="595.27559pt" id="svg1" inkscape:version="0.40+cvs" sodipodi:docbase="C:\Documents and Settings\Jon Phillips\My Documents\projects\clipart-project\submissions" sodipodi:docname="heart-left-highlight.svg" sodipodi:version="0.32" width="595.27559pt" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg">
+<metadata>
+<rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<cc:Work rdf:about="">
+<dc:title>Heart Left-Highlight</dc:title>
+<dc:description>This is a normal valentines day heart.</dc:description>
+<dc:subject>
+<rdf:Bag>
+<rdf:li>holiday</rdf:li>
+<rdf:li>valentines</rdf:li>
+<rdf:li></rdf:li>
+<rdf:li>valentine</rdf:li>
+<rdf:li>hash(0x8a091c0)</rdf:li>
+<rdf:li>hash(0x8a0916c)</rdf:li>
+<rdf:li>signs_and_symbols</rdf:li>
+<rdf:li>hash(0x8a091f0)</rdf:li>
+<rdf:li>day</rdf:li>
+</rdf:Bag>
+</dc:subject>
+<dc:publisher>
+<cc:Agent rdf:about="http://www.openclipart.org">
+<dc:title>Jon Phillips</dc:title>
+</cc:Agent>
+</dc:publisher>
+<dc:creator>
+<cc:Agent>
+<dc:title>Jon Phillips</dc:title>
+</cc:Agent>
+</dc:creator>
+<dc:rights>
+<cc:Agent>
+<dc:title>Jon Phillips</dc:title>
+</cc:Agent>
+</dc:rights>
+<dc:date></dc:date>
+<dc:format>image/svg+xml</dc:format>
+<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+<cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+<dc:language>en</dc:language>
+</cc:Work>
+<cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+<cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+<cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+<cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+</cc:License>
+</rdf:RDF>
+</metadata>
+<defs id="defs3"/>
+<sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:current-layer="layer1" inkscape:cx="549.40674" inkscape:cy="596.00159" inkscape:document-units="px" inkscape:guide-bbox="true" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="615" inkscape:window-width="866" inkscape:window-x="88" inkscape:window-y="116" inkscape:zoom="0.35000000" pagecolor="#ffffff" showguides="true"/>
+<g id="layer1" inkscape:groupmode="layer" inkscape:label="Layer 1">
+<path d="M 263.41570,235.14588 C 197.17570,235.14588 143.41575,288.90587 143.41575,355.14588 C 143.41575,489.90139 279.34890,525.23318 371.97820,658.45392 C 459.55244,526.05056 600.54070,485.59932 600.54070,355.14588 C 600.54070,288.90588 546.78080,235.14587 480.54070,235.14588 C 432.49280,235.14588 391.13910,263.51631 371.97820,304.33338 C 352.81740,263.51630 311.46370,235.14587 263.41570,235.14588 z " id="path7" sodipodi:nodetypes="ccccccc" style="fill:#e60000;fill-opacity:1.0000000;stroke:#000000;stroke-width:18.700001;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/>
+<path d="M 265.00000,253.59375 C 207.04033,253.59375 160.00000,300.63407 160.00000,358.59375 C 160.00000,476.50415 278.91857,507.43251 359.96875,624.00000 C 366.52868,614.08205 220.00000,478.47309 220.00000,378.59375 C 220.00000,320.63407 267.04033,273.59375 325.00000,273.59375 C 325.50453,273.59375 325.99718,273.64912 326.50000,273.65625 C 309.22436,261.07286 288.00557,253.59374 265.00000,253.59375 z " id="path220" sodipodi:nodetypes="ccccccc" style="fill:#e6e6e6;fill-opacity:0.64556962;stroke:none;stroke-width:18.700001;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/>
+</g>
+</svg>
diff --git a/demos/embedded/desktopservices/resources/message.png b/demos/embedded/desktopservices/resources/message.png
new file mode 100644
index 0000000..e30052b
--- /dev/null
+++ b/demos/embedded/desktopservices/resources/message.png
Binary files differ
diff --git a/demos/embedded/desktopservices/resources/music.png b/demos/embedded/desktopservices/resources/music.png
new file mode 100644
index 0000000..11a57bb
--- /dev/null
+++ b/demos/embedded/desktopservices/resources/music.png
Binary files differ
diff --git a/demos/embedded/desktopservices/resources/photo.png b/demos/embedded/desktopservices/resources/photo.png
new file mode 100644
index 0000000..5ba15c1
--- /dev/null
+++ b/demos/embedded/desktopservices/resources/photo.png
Binary files differ
diff --git a/demos/embedded/digiflip/digiflip.cpp b/demos/embedded/digiflip/digiflip.cpp
new file mode 100644
index 0000000..b822659
--- /dev/null
+++ b/demos/embedded/digiflip/digiflip.cpp
@@ -0,0 +1,425 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore>
+#include <QtGui>
+
+class Digits: public QWidget
+{
+ Q_OBJECT
+
+public:
+
+ enum {
+ Slide,
+ Flip,
+ Rotate
+ };
+
+ Digits(QWidget *parent)
+ : QWidget(parent)
+ , m_number(0)
+ , m_transition(Slide)
+ {
+ setAttribute(Qt::WA_OpaquePaintEvent, true);
+ setAttribute(Qt::WA_NoSystemBackground, true);
+ connect(&m_animator, SIGNAL(frameChanged(int)), SLOT(update()));
+ m_animator.setFrameRange(0, 100);
+ m_animator.setDuration(600);
+ m_animator.setCurveShape(QTimeLine::EaseInOutCurve);
+ }
+
+ void setTransition(int tr) {
+ m_transition = tr;
+ }
+
+ int transition() const {
+ return m_transition;
+ }
+
+ void setNumber(int n) {
+ if (m_number != n) {
+ m_number = qBound(0, n, 99);
+ preparePixmap();
+ update();
+ }
+ }
+
+ void flipTo(int n) {
+ if (m_number != n) {
+ m_number = qBound(0, n, 99);
+ m_lastPixmap = m_pixmap;
+ preparePixmap();
+ m_animator.stop();
+ m_animator.start();
+ }
+ }
+
+protected:
+
+ void drawFrame(QPainter *p, const QRect &rect) {
+ p->setPen(Qt::NoPen);
+ QLinearGradient gradient(rect.topLeft(), rect.bottomLeft());
+ gradient.setColorAt(0.00, QColor(245, 245, 245));
+ gradient.setColorAt(0.49, QColor(192, 192, 192));
+ gradient.setColorAt(0.51, QColor(245, 245, 245));
+ gradient.setColorAt(1.00, QColor(192, 192, 192));
+ p->setBrush(gradient);
+ QRect r = rect;
+ p->drawRoundedRect(r, 15, 15, Qt::RelativeSize);
+ r.adjust(1, 4, -1, -4);
+ p->setPen(QColor(181, 181, 181));
+ p->setBrush(Qt::NoBrush);
+ p->drawRoundedRect(r, 15, 15, Qt::RelativeSize);
+ p->setPen(QColor(159, 159, 159));
+ int y = rect.top() + rect.height() / 2 - 1;
+ p->drawLine(rect.left(), y, rect.right(), y);
+ }
+
+ QPixmap drawDigits(int n, const QRect &rect) {
+
+ int scaleFactor = 2;
+#if defined(Q_OS_SYMBIAN)
+ if (rect.height() > 240)
+ scaleFactor = 1;
+#endif
+
+ QString str = QString::number(n);
+ if (str.length() == 1)
+ str.prepend("0");
+
+ QFont font;
+ font.setFamily("Helvetica");
+ int fontHeight = scaleFactor * 0.55 * rect.height();
+ font.setPixelSize(fontHeight);
+ font.setBold(true);
+
+ QPixmap pixmap(rect.size() * scaleFactor);
+ pixmap.fill(Qt::transparent);
+
+ QLinearGradient gradient(QPoint(0, 0), QPoint(0, pixmap.height()));
+ gradient.setColorAt(0.00, QColor(128, 128, 128));
+ gradient.setColorAt(0.49, QColor(64, 64, 64));
+ gradient.setColorAt(0.51, QColor(128, 128, 128));
+ gradient.setColorAt(1.00, QColor(16, 16, 16));
+
+ QPainter p;
+ p.begin(&pixmap);
+ p.setFont(font);
+ QPen pen;
+ pen.setBrush(QBrush(gradient));
+ p.setPen(pen);
+ p.drawText(pixmap.rect(), Qt::AlignCenter, str);
+ p.end();
+
+ return pixmap.scaledToWidth(width(), Qt::SmoothTransformation);
+ }
+
+ void preparePixmap() {
+ m_pixmap = QPixmap(size());
+ m_pixmap.fill(Qt::transparent);
+ QPainter p;
+ p.begin(&m_pixmap);
+ p.drawPixmap(0, 0, drawDigits(m_number, rect()));
+ p.end();
+ }
+
+ void resizeEvent(QResizeEvent*) {
+ preparePixmap();
+ update();
+ }
+
+ void paintStatic() {
+ QPainter p(this);
+ p.fillRect(rect(), Qt::black);
+
+ int pad = width() / 10;
+ drawFrame(&p, rect().adjusted(pad, pad, -pad, -pad));
+ p.drawPixmap(0, 0, m_pixmap);
+ }
+
+ void paintSlide() {
+ QPainter p(this);
+ p.fillRect(rect(), Qt::black);
+
+ int pad = width() / 10;
+ QRect fr = rect().adjusted(pad, pad, -pad, -pad);
+ drawFrame(&p, fr);
+ p.setClipRect(fr);
+
+ int y = height() * m_animator.currentFrame() / 100;
+ p.drawPixmap(0, y, m_lastPixmap);
+ p.drawPixmap(0, y - height(), m_pixmap);
+ }
+
+ void paintFlip() {
+ QPainter p(this);
+#if !defined(Q_OS_SYMBIAN)
+ p.setRenderHint(QPainter::SmoothPixmapTransform, true);
+ p.setRenderHint(QPainter::Antialiasing, true);
+#endif
+ p.fillRect(rect(), Qt::black);
+
+ int hw = width() / 2;
+ int hh = height() / 2;
+
+ // behind is the new pixmap
+ int pad = width() / 10;
+ QRect fr = rect().adjusted(pad, pad, -pad, -pad);
+ drawFrame(&p, fr);
+ p.drawPixmap(0, 0, m_pixmap);
+
+ int index = m_animator.currentFrame();
+
+ if (index <= 50) {
+
+ // the top part of the old pixmap is flipping
+ int angle = -180 * index / 100;
+ QTransform transform;
+ transform.translate(hw, hh);
+ transform.rotate(angle, Qt::XAxis);
+ p.setTransform(transform);
+ drawFrame(&p, fr.adjusted(-hw, -hh, -hw, -hh));
+ p.drawPixmap(-hw, -hh, m_lastPixmap);
+
+ // the bottom part is still the old pixmap
+ p.resetTransform();
+ p.setClipRect(0, hh, width(), hh);
+ drawFrame(&p, fr);
+ p.drawPixmap(0, 0, m_lastPixmap);
+ } else {
+
+ p.setClipRect(0, hh, width(), hh);
+
+ // the bottom part is still the old pixmap
+ drawFrame(&p, fr);
+ p.drawPixmap(0, 0, m_lastPixmap);
+
+ // the bottom part of the new pixmap is flipping
+ int angle = 180 - 180 * m_animator.currentFrame() / 100;
+ QTransform transform;
+ transform.translate(hw, hh);
+ transform.rotate(angle, Qt::XAxis);
+ p.setTransform(transform);
+ drawFrame(&p, fr.adjusted(-hw, -hh, -hw, -hh));
+ p.drawPixmap(-hw, -hh, m_pixmap);
+
+ }
+
+ }
+
+ void paintRotate() {
+ QPainter p(this);
+
+ int pad = width() / 10;
+ QRect fr = rect().adjusted(pad, pad, -pad, -pad);
+ drawFrame(&p, fr);
+ p.setClipRect(fr);
+
+ int angle1 = -180 * m_animator.currentFrame() / 100;
+ int angle2 = 180 - 180 * m_animator.currentFrame() / 100;
+ int angle = (m_animator.currentFrame() <= 50) ? angle1 : angle2;
+ QPixmap pix = (m_animator.currentFrame() <= 50) ? m_lastPixmap : m_pixmap;
+
+ QTransform transform;
+ transform.translate(width() / 2, height() / 2);
+ transform.rotate(angle, Qt::XAxis);
+
+ p.setTransform(transform);
+ p.setRenderHint(QPainter::SmoothPixmapTransform, true);
+ p.drawPixmap(-width() / 2, -height() / 2, pix);
+ }
+
+ void paintEvent(QPaintEvent *event) {
+ Q_UNUSED(event);
+ if (m_animator.state() == QTimeLine::Running) {
+ if (m_transition == Slide)
+ paintSlide();
+ if (m_transition == Flip)
+ paintFlip();
+ if (m_transition == Rotate)
+ paintRotate();
+ } else {
+ paintStatic();
+ }
+ }
+
+private:
+ int m_number;
+ int m_transition;
+ QPixmap m_pixmap;
+ QPixmap m_lastPixmap;
+ QTimeLine m_animator;
+};
+
+class DigiFlip : public QMainWindow
+{
+ Q_OBJECT
+
+public:
+ DigiFlip(QWidget *parent = 0)
+ : QMainWindow(parent)
+ {
+ m_hour = new Digits(this);
+ m_hour->show();
+ m_minute = new Digits(this);
+ m_minute->show();
+
+ QPalette pal = palette();
+ pal.setColor(QPalette::Window, Qt::black);
+ setPalette(pal);
+
+ m_ticker.start(1000, this);
+ QTime t = QTime::currentTime();
+ m_hour->setNumber(t.hour());
+ m_minute->setNumber(t.minute());
+ updateTime();
+
+ QAction *slideAction = new QAction("&Slide", this);
+ QAction *flipAction = new QAction("&Flip", this);
+ QAction *rotateAction = new QAction("&Rotate", this);
+ connect(slideAction, SIGNAL(triggered()), SLOT(chooseSlide()));
+ connect(flipAction, SIGNAL(triggered()), SLOT(chooseFlip()));
+ connect(rotateAction, SIGNAL(triggered()), SLOT(chooseRotate()));
+#if defined(Q_OS_SYMBIAN)
+ menuBar()->addAction(slideAction);
+ menuBar()->addAction(flipAction);
+ menuBar()->addAction(rotateAction);
+#else
+ addAction(slideAction);
+ addAction(flipAction);
+ addAction(rotateAction);
+ setContextMenuPolicy(Qt::ActionsContextMenu);
+#endif
+ }
+
+ void updateTime() {
+ QTime t = QTime::currentTime();
+ m_hour->flipTo(t.hour());
+ m_minute->flipTo(t.minute());
+ QString str = t.toString("hh:mm:ss");
+ str.prepend(": ");
+ if (m_hour->transition() == Digits::Slide)
+ str.prepend("Slide");
+ if (m_hour->transition() == Digits::Flip)
+ str.prepend("Flip");
+ if (m_hour->transition() == Digits::Rotate)
+ str.prepend("Rotate");
+ setWindowTitle(str);
+ }
+
+ void switchTransition(int delta) {
+ int i = (m_hour->transition() + delta + 3) % 3;
+ m_hour->setTransition(i);
+ m_minute->setTransition(i);
+ updateTime();
+ }
+
+protected:
+ void resizeEvent(QResizeEvent*) {
+ int digitsWidth = width() / 2;
+ int digitsHeight = digitsWidth * 1.2;
+
+ int y = (height() - digitsHeight) / 3;
+
+ m_hour->resize(digitsWidth, digitsHeight);
+ m_hour->move(0, y);
+
+ m_minute->resize(digitsWidth, digitsHeight);
+ m_minute->move(width() / 2, y);
+ }
+
+ void timerEvent(QTimerEvent*) {
+ updateTime();
+ }
+
+ void keyPressEvent(QKeyEvent *event) {
+ if (event->key() == Qt::Key_Right) {
+ switchTransition(1);
+ event->accept();
+ }
+ if (event->key() == Qt::Key_Left) {
+ switchTransition(-1);
+ event->accept();
+ }
+ }
+
+private slots:
+ void chooseSlide() {
+ m_hour->setTransition(0);
+ m_minute->setTransition(0);
+ updateTime();
+ }
+
+ void chooseFlip() {
+ m_hour->setTransition(1);
+ m_minute->setTransition(1);
+ updateTime();
+ }
+
+ void chooseRotate() {
+ m_hour->setTransition(2);
+ m_minute->setTransition(2);
+ updateTime();
+ }
+
+private:
+ QBasicTimer m_ticker;
+ Digits *m_hour;
+ Digits *m_minute;
+};
+
+#include "digiflip.moc"
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+ DigiFlip time;
+#if defined(Q_OS_SYMBIAN)
+ time.showMaximized();
+#else
+ time.resize(320, 240);
+ time.show();
+#endif
+
+ return app.exec();
+}
diff --git a/demos/embedded/digiflip/digiflip.pro b/demos/embedded/digiflip/digiflip.pro
new file mode 100644
index 0000000..6654088
--- /dev/null
+++ b/demos/embedded/digiflip/digiflip.pro
@@ -0,0 +1 @@
+SOURCES = digiflip.cpp
diff --git a/demos/embedded/embedded.pro b/demos/embedded/embedded.pro
index 4fd8f9f..3d814f7 100644
--- a/demos/embedded/embedded.pro
+++ b/demos/embedded/embedded.pro
@@ -1,14 +1,27 @@
TEMPLATE = subdirs
-SUBDIRS = styledemo
+SUBDIRS = styledemo raycasting flickable digiflip
contains(QT_CONFIG, svg) {
- SUBDIRS += embeddedsvgviewer
- # no QProcess
+ SUBDIRS += embeddedsvgviewer \
+ desktopservices
!vxworks:!qnx:SUBDIRS += fluidlauncher
}
+contains(QT_CONFIG, network) {
+ SUBDIRS += lightmaps
+ SUBDIRS += flightinfo
+ contains(QT_CONFIG, svg) {
+ SUBDIRS += weatherinfo
+ }
+}
+
+contains(QT_CONFIG, webkit) {
+ SUBDIRS += anomaly
+}
+
# install
sources.files = README *.pro
sources.path = $$[QT_INSTALL_DEMOS]/embedded
INSTALLS += sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
diff --git a/demos/embedded/embeddedsvgviewer/embeddedsvgviewer.cpp b/demos/embedded/embeddedsvgviewer/embeddedsvgviewer.cpp
index 42756a4..9613905 100644
--- a/demos/embedded/embeddedsvgviewer/embeddedsvgviewer.cpp
+++ b/demos/embedded/embeddedsvgviewer/embeddedsvgviewer.cpp
@@ -143,7 +143,7 @@ void EmbeddedSvgViewer::updateImageScale()
}
-void EmbeddedSvgViewer::resizeEvent ( QResizeEvent * event )
+void EmbeddedSvgViewer::resizeEvent ( QResizeEvent * /* event */ )
{
qreal origZoom = m_zoomLevel;
diff --git a/demos/embedded/embeddedsvgviewer/embeddedsvgviewer.pro b/demos/embedded/embeddedsvgviewer/embeddedsvgviewer.pro
index 505e607..9401871 100644
--- a/demos/embedded/embeddedsvgviewer/embeddedsvgviewer.pro
+++ b/demos/embedded/embeddedsvgviewer/embeddedsvgviewer.pro
@@ -9,8 +9,13 @@ RESOURCES += embeddedsvgviewer.qrc
target.path = $$[QT_INSTALL_DEMOS]/embedded/embeddedsvgviewer
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.html *.svg files
sources.path = $$[QT_INSTALL_DEMOS]/embedded/embeddedsvgviewer
-INSTALLS += target sources
+INSTALLS += target sources
-wince*: {
+wince* {
DEPLOYMENT_PLUGIN += qsvg
}
+
+symbian {
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+ TARGET.UID3 = 0xA000A640
+}
diff --git a/demos/embedded/flickable/flickable.cpp b/demos/embedded/flickable/flickable.cpp
new file mode 100644
index 0000000..8fbefe6
--- /dev/null
+++ b/demos/embedded/flickable/flickable.cpp
@@ -0,0 +1,284 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "flickable.h"
+
+#include <QtCore>
+#include <QtGui>
+
+class FlickableTicker: QObject
+{
+public:
+ FlickableTicker(Flickable *scroller) {
+ m_scroller = scroller;
+ }
+
+ void start(int interval) {
+ if (!m_timer.isActive())
+ m_timer.start(interval, this);
+ }
+
+ void stop() {
+ m_timer.stop();
+ }
+
+protected:
+ void timerEvent(QTimerEvent *event) {
+ Q_UNUSED(event);
+ m_scroller->tick();
+ }
+
+private:
+ Flickable *m_scroller;
+ QBasicTimer m_timer;
+};
+
+class FlickablePrivate
+{
+public:
+ typedef enum {
+ Steady,
+ Pressed,
+ ManualScroll,
+ AutoScroll,
+ Stop
+ } State;
+
+ State state;
+ int threshold;
+ QPoint pressPos;
+ QPoint offset;
+ QPoint delta;
+ QPoint speed;
+ FlickableTicker *ticker;
+ QTime timeStamp;
+ QWidget *target;
+ QList<QEvent*> ignoreList;
+};
+
+Flickable::Flickable()
+{
+ d = new FlickablePrivate;
+ d->state = FlickablePrivate::Steady;
+ d->threshold = 10;
+ d->ticker = new FlickableTicker(this);
+ d->timeStamp = QTime::currentTime();
+ d->target = 0;
+}
+
+Flickable::~Flickable()
+{
+ delete d;
+}
+
+void Flickable::setThreshold(int th)
+{
+ if (th >= 0)
+ d->threshold = th;
+}
+
+int Flickable::threshold() const
+{
+ return d->threshold;
+}
+
+void Flickable::setAcceptMouseClick(QWidget *target)
+{
+ d->target = target;
+}
+
+static QPoint deaccelerate(const QPoint &speed, int a = 1, int max = 64)
+{
+ int x = qBound(-max, speed.x(), max);
+ int y = qBound(-max, speed.y(), max);
+ x = (x == 0) ? x : (x > 0) ? qMax(0, x - a) : qMin(0, x + a);
+ y = (y == 0) ? y : (y > 0) ? qMax(0, y - a) : qMin(0, y + a);
+ return QPoint(x, y);
+}
+
+void Flickable::handleMousePress(QMouseEvent *event)
+{
+ event->ignore();
+
+ if (event->button() != Qt::LeftButton)
+ return;
+
+ if (d->ignoreList.removeAll(event))
+ return;
+
+ switch (d->state) {
+
+ case FlickablePrivate::Steady:
+ event->accept();
+ d->state = FlickablePrivate::Pressed;
+ d->pressPos = event->pos();
+ break;
+
+ case FlickablePrivate::AutoScroll:
+ event->accept();
+ d->state = FlickablePrivate::Stop;
+ d->speed = QPoint(0, 0);
+ d->pressPos = event->pos();
+ d->offset = scrollOffset();
+ d->ticker->stop();
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Flickable::handleMouseRelease(QMouseEvent *event)
+{
+ event->ignore();
+
+ if (event->button() != Qt::LeftButton)
+ return;
+
+ if (d->ignoreList.removeAll(event))
+ return;
+
+ QPoint delta;
+
+ switch (d->state) {
+
+ case FlickablePrivate::Pressed:
+ event->accept();
+ d->state = FlickablePrivate::Steady;
+ if (d->target) {
+ QMouseEvent *event1 = new QMouseEvent(QEvent::MouseButtonPress,
+ d->pressPos, Qt::LeftButton,
+ Qt::LeftButton, Qt::NoModifier);
+ QMouseEvent *event2 = new QMouseEvent(*event);
+ d->ignoreList << event1;
+ d->ignoreList << event2;
+ QApplication::postEvent(d->target, event1);
+ QApplication::postEvent(d->target, event2);
+ }
+ break;
+
+ case FlickablePrivate::ManualScroll:
+ event->accept();
+ delta = event->pos() - d->pressPos;
+ if (d->timeStamp.elapsed() > 100) {
+ d->timeStamp = QTime::currentTime();
+ d->speed = delta - d->delta;
+ d->delta = delta;
+ }
+ d->offset = scrollOffset();
+ d->pressPos = event->pos();
+ if (d->speed == QPoint(0, 0)) {
+ d->state = FlickablePrivate::Steady;
+ } else {
+ d->speed /= 4;
+ d->state = FlickablePrivate::AutoScroll;
+ d->ticker->start(20);
+ }
+ break;
+
+ case FlickablePrivate::Stop:
+ event->accept();
+ d->state = FlickablePrivate::Steady;
+ d->offset = scrollOffset();
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Flickable::handleMouseMove(QMouseEvent *event)
+{
+ event->ignore();
+
+ if (!(event->buttons() & Qt::LeftButton))
+ return;
+
+ if (d->ignoreList.removeAll(event))
+ return;
+
+ QPoint delta;
+
+ switch (d->state) {
+
+ case FlickablePrivate::Pressed:
+ case FlickablePrivate::Stop:
+ delta = event->pos() - d->pressPos;
+ if (delta.x() > d->threshold || delta.x() < -d->threshold ||
+ delta.y() > d->threshold || delta.y() < -d->threshold) {
+ d->timeStamp = QTime::currentTime();
+ d->state = FlickablePrivate::ManualScroll;
+ d->delta = QPoint(0, 0);
+ d->pressPos = event->pos();
+ event->accept();
+ }
+ break;
+
+ case FlickablePrivate::ManualScroll:
+ event->accept();
+ delta = event->pos() - d->pressPos;
+ setScrollOffset(d->offset - delta);
+ if (d->timeStamp.elapsed() > 100) {
+ d->timeStamp = QTime::currentTime();
+ d->speed = delta - d->delta;
+ d->delta = delta;
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Flickable::tick()
+{
+ if (d->state == FlickablePrivate:: AutoScroll) {
+ d->speed = deaccelerate(d->speed);
+ setScrollOffset(d->offset - d->speed);
+ d->offset = scrollOffset();
+ if (d->speed == QPoint(0, 0)) {
+ d->state = FlickablePrivate::Steady;
+ d->ticker->stop();
+ }
+ } else {
+ d->ticker->stop();
+ }
+}
diff --git a/demos/embedded/flickable/flickable.h b/demos/embedded/flickable/flickable.h
new file mode 100644
index 0000000..26497db
--- /dev/null
+++ b/demos/embedded/flickable/flickable.h
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef FLICKABLE_H
+#define FLICKABLE_H
+
+class QMouseEvent;
+class QPoint;
+class QWidget;
+
+class FlickableTicker;
+class FlickablePrivate;
+
+class Flickable
+{
+public:
+
+ Flickable();
+ virtual ~Flickable();
+
+ void setThreshold(int threshold);
+ int threshold() const;
+
+ void setAcceptMouseClick(QWidget *target);
+
+ void handleMousePress(QMouseEvent *event);
+ void handleMouseMove(QMouseEvent *event);
+ void handleMouseRelease(QMouseEvent *event);
+
+protected:
+ virtual QPoint scrollOffset() const = 0;
+ virtual void setScrollOffset(const QPoint &offset) = 0;
+
+private:
+ void tick();
+
+private:
+ FlickablePrivate *d;
+ friend class FlickableTicker;
+};
+
+#endif // FLICKABLE_H
diff --git a/demos/embedded/flickable/flickable.pro b/demos/embedded/flickable/flickable.pro
new file mode 100644
index 0000000..3c021dd
--- /dev/null
+++ b/demos/embedded/flickable/flickable.pro
@@ -0,0 +1,2 @@
+SOURCES = flickable.cpp main.cpp
+HEADERS = flickable.h
diff --git a/demos/embedded/flickable/main.cpp b/demos/embedded/flickable/main.cpp
new file mode 100644
index 0000000..cc024d9
--- /dev/null
+++ b/demos/embedded/flickable/main.cpp
@@ -0,0 +1,233 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore>
+#include <QtGui>
+
+#include "flickable.h"
+
+// Returns a list of two-word color names
+static QStringList colorPairs(int max)
+{
+ // capitalize the first letter
+ QStringList colors = QColor::colorNames();
+ colors.removeAll("transparent");
+ int num = colors.count();
+ for (int c = 0; c < num; ++c)
+ colors[c] = colors[c][0].toUpper() + colors[c].mid(1);
+
+ // combine two colors, e.g. "lime skyblue"
+ QStringList combinedColors;
+ for (int i = 0; i < num; ++i)
+ for (int j = 0; j < num; ++j)
+ combinedColors << QString("%1 %2").arg(colors[i]).arg(colors[j]);
+
+ // randomize it
+ colors.clear();
+ while (combinedColors.count()) {
+ int i = qrand() % combinedColors.count();
+ colors << combinedColors[i];
+ combinedColors.removeAt(i);
+ if (colors.count() == max)
+ break;
+ }
+
+ return colors;
+}
+
+class ColorList : public QWidget, public Flickable
+{
+ Q_OBJECT
+
+public:
+ ColorList(QWidget *parent = 0)
+ : QWidget(parent) {
+ m_offset = 0;
+ m_height = QFontMetrics(font()).height() + 5;
+ m_highlight = -1;
+ m_selected = -1;
+
+ QStringList colors = colorPairs(999);
+ for (int i = 0; i < colors.count(); ++i) {
+ QString c = colors[i];
+ QString str;
+ str.sprintf("%4d", i + 1);
+ m_colorNames << (str + " " + c);
+
+ QStringList duet = c.split(' ');
+ m_firstColor << duet[0];
+ m_secondColor << duet[1];
+ }
+
+ setAttribute(Qt::WA_OpaquePaintEvent, true);
+ setAttribute(Qt::WA_NoSystemBackground, true);
+
+ setMouseTracking(true);
+ Flickable::setAcceptMouseClick(this);
+ }
+
+protected:
+ // reimplement from Flickable
+ virtual QPoint scrollOffset() const {
+ return QPoint(0, m_offset);
+ }
+
+ // reimplement from Flickable
+ virtual void setScrollOffset(const QPoint &offset) {
+ int yy = offset.y();
+ if (yy != m_offset) {
+ m_offset = qBound(0, yy, m_height * m_colorNames.count() - height());
+ update();
+ }
+ }
+
+protected:
+ void paintEvent(QPaintEvent *event) {
+ QPainter p(this);
+ p.fillRect(event->rect(), Qt::white);
+ int start = m_offset / m_height;
+ int y = start * m_height - m_offset;
+ if (m_offset <= 0) {
+ start = 0;
+ y = -m_offset;
+ }
+ int end = start + height() / m_height + 1;
+ if (end > m_colorNames.count() - 1)
+ end = m_colorNames.count() - 1;
+ for (int i = start; i <= end; ++i, y += m_height) {
+
+ p.setBrush(Qt::NoBrush);
+ p.setPen(Qt::black);
+ if (i == m_highlight) {
+ p.fillRect(0, y, width(), m_height, QColor(0, 64, 128));
+ p.setPen(Qt::white);
+ }
+ if (i == m_selected) {
+ p.fillRect(0, y, width(), m_height, QColor(0, 128, 240));
+ p.setPen(Qt::white);
+ }
+
+ p.drawText(m_height + 2, y, width(), m_height, Qt::AlignVCenter, m_colorNames[i]);
+
+ p.setPen(Qt::NoPen);
+ p.setBrush(m_firstColor[i]);
+ p.drawRect(1, y + 1, m_height - 2, m_height - 2);
+ p.setBrush(m_secondColor[i]);
+ p.drawRect(5, y + 5, m_height - 11, m_height - 11);
+ }
+ p.end();
+ }
+
+ void keyReleaseEvent(QKeyEvent *event) {
+ if (event->key() == Qt::Key_Down) {
+ m_offset += 20;
+ event->accept();
+ update();
+ return;
+ }
+ if (event->key() == Qt::Key_Up) {
+ m_offset -= 20;
+ event->accept();
+ update();
+ return;
+ }
+ }
+
+ void mousePressEvent(QMouseEvent *event) {
+ Flickable::handleMousePress(event);
+ if (event->isAccepted())
+ return;
+
+ if (event->button() == Qt::LeftButton) {
+ int y = event->pos().y() + m_offset;
+ int i = y / m_height;
+ if (i != m_highlight) {
+ m_highlight = i;
+ m_selected = -1;
+ update();
+ }
+ event->accept();
+ }
+ }
+
+ void mouseMoveEvent(QMouseEvent *event) {
+ Flickable::handleMouseMove(event);
+ }
+
+ void mouseReleaseEvent(QMouseEvent *event) {
+ Flickable::handleMouseRelease(event);
+ if (event->isAccepted())
+ return;
+
+ if (event->button() == Qt::LeftButton) {
+ m_selected = m_highlight;
+ event->accept();
+ update();
+ }
+ }
+
+private:
+ int m_offset;
+ int m_height;
+ int m_highlight;
+ int m_selected;
+ QStringList m_colorNames;
+ QList<QColor> m_firstColor;
+ QList<QColor> m_secondColor;
+};
+
+#include "main.moc"
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+ ColorList list;
+ list.setWindowTitle("Kinetic Scrolling");
+#ifdef Q_OS_SYMBIAN
+ list.showMaximized();
+#else
+ list.resize(320, 320);
+ list.show();
+#endif
+
+ return app.exec();
+}
diff --git a/demos/embedded/flightinfo/aircraft.png b/demos/embedded/flightinfo/aircraft.png
new file mode 100644
index 0000000..0845cb4
--- /dev/null
+++ b/demos/embedded/flightinfo/aircraft.png
Binary files differ
diff --git a/demos/embedded/flightinfo/flightinfo.cpp b/demos/embedded/flightinfo/flightinfo.cpp
new file mode 100644
index 0000000..de3a9e9
--- /dev/null
+++ b/demos/embedded/flightinfo/flightinfo.cpp
@@ -0,0 +1,415 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore>
+#include <QtGui>
+#include <QtNetwork>
+
+#if defined (Q_OS_SYMBIAN)
+#include "sym_iap_util.h"
+#endif
+
+#include "ui_form.h"
+
+#define FLIGHTVIEW_URL "http://mobile.flightview.com/TrackByFlight.aspx"
+#define FLIGHTVIEW_RANDOM "http://mobile.flightview.com/TrackSampleFlight.aspx"
+
+// strips all invalid constructs that might trip QXmlStreamReader
+static QString sanitized(const QString &xml)
+{
+ QString data = xml;
+
+ // anything up to the html tag
+ int i = data.indexOf("<html");
+ if (i > 0)
+ data.remove(0, i - 1);
+
+ // everything inside the head tag
+ i = data.indexOf("<head");
+ if (i > 0)
+ data.remove(i, data.indexOf("</head>") - i + 7);
+
+ // invalid link for JavaScript code
+ while (true) {
+ i = data.indexOf("onclick=\"gotoUrl(");
+ if (i < 0)
+ break;
+ data.remove(i, data.indexOf('\"', i + 9) - i + 1);
+ }
+
+ // all inline frames
+ while (true) {
+ i = data.indexOf("<iframe");
+ if (i < 0)
+ break;
+ data.remove(i, data.indexOf("</iframe>") - i + 8);
+ }
+
+ // entities
+ data.remove("&nbsp;");
+ data.remove("&copy;");
+
+ return data;
+}
+
+class FlightInfo : public QMainWindow
+{
+ Q_OBJECT
+
+private:
+
+ Ui_Form ui;
+ QUrl m_url;
+ QDate m_searchDate;
+ QPixmap m_map;
+
+public:
+
+ FlightInfo(QMainWindow *parent = 0): QMainWindow(parent) {
+
+ QWidget *w = new QWidget(this);
+ ui.setupUi(w);
+ setCentralWidget(w);
+
+ ui.searchBar->hide();
+ ui.infoBox->hide();
+ connect(ui.searchButton, SIGNAL(clicked()), SLOT(startSearch()));
+ connect(ui.flightEdit, SIGNAL(returnPressed()), SLOT(startSearch()));
+
+ setWindowTitle("Flight Info");
+ QTimer::singleShot(0, this, SLOT(delayedInit()));
+
+ // Rendered from the public-domain vectorized aircraft
+ // http://openclipart.org/media/people/Jarno
+ m_map = QPixmap(":/aircraft.png");
+
+ QAction *searchTodayAction = new QAction("Today's Flight", this);
+ QAction *searchYesterdayAction = new QAction("Yesterday's Flight", this);
+ QAction *randomAction = new QAction("Random Flight", this);
+ connect(searchTodayAction, SIGNAL(triggered()), SLOT(today()));
+ connect(searchYesterdayAction, SIGNAL(triggered()), SLOT(yesterday()));
+ connect(randomAction, SIGNAL(triggered()), SLOT(randomFlight()));
+#if defined(Q_OS_SYMBIAN)
+ menuBar()->addAction(searchTodayAction);
+ menuBar()->addAction(searchYesterdayAction);
+ menuBar()->addAction(randomAction);
+#else
+ addAction(searchTodayAction);
+ addAction(searchYesterdayAction);
+ addAction(randomAction);
+ setContextMenuPolicy(Qt::ActionsContextMenu);
+#endif
+ }
+
+private slots:
+ void delayedInit() {
+#if defined(Q_OS_SYMBIAN)
+ qt_SetDefaultIap();
+#endif
+ }
+
+
+ void handleNetworkData(QNetworkReply *networkReply) {
+ if (!networkReply->error()) {
+ // Assume UTF-8 encoded
+ QByteArray data = networkReply->readAll();
+ QString xml = QString::fromUtf8(data);
+ digest(xml);
+ }
+ networkReply->deleteLater();
+ networkReply->manager()->deleteLater();
+ }
+
+ void handleMapData(QNetworkReply *networkReply) {
+ if (!networkReply->error()) {
+ m_map.loadFromData(networkReply->readAll());
+ update();
+ }
+ networkReply->deleteLater();
+ networkReply->manager()->deleteLater();
+ }
+
+ void today() {
+ QDateTime timestamp = QDateTime::currentDateTime();
+ m_searchDate = timestamp.date();
+ searchFlight();
+ }
+
+ void yesterday() {
+ QDateTime timestamp = QDateTime::currentDateTime();
+ timestamp = timestamp.addDays(-1);
+ m_searchDate = timestamp.date();
+ searchFlight();
+ }
+
+ void searchFlight() {
+ ui.searchBar->show();
+ ui.infoBox->hide();
+ ui.flightStatus->hide();
+ ui.flightName->setText("Enter flight number");
+ m_map = QPixmap();
+ update();
+ }
+
+ void startSearch() {
+ ui.searchBar->hide();
+ QString flight = ui.flightEdit->text().simplified();
+ if (!flight.isEmpty())
+ request(flight, m_searchDate);
+ }
+
+ void randomFlight() {
+ request(QString(), QDate::currentDate());
+ }
+
+public slots:
+
+ void request(const QString &flightCode, const QDate &date) {
+
+ setWindowTitle("Loading...");
+
+ QString code = flightCode.simplified();
+ QString airlineCode = code.left(2).toUpper();
+ QString flightNumber = code.mid(2, code.length());
+
+ ui.flightName->setText("Searching for " + code);
+
+ m_url = QUrl(FLIGHTVIEW_URL);
+ m_url.addEncodedQueryItem("view", "detail");
+ m_url.addEncodedQueryItem("al", QUrl::toPercentEncoding(airlineCode));
+ m_url.addEncodedQueryItem("fn", QUrl::toPercentEncoding(flightNumber));
+ m_url.addEncodedQueryItem("dpdat", QUrl::toPercentEncoding(date.toString("yyyyMMdd")));
+
+ if (code.isEmpty()) {
+ // random flight as sample
+ m_url = QUrl(FLIGHTVIEW_RANDOM);
+ ui.flightName->setText("Getting a random flight...");
+ }
+
+ QNetworkAccessManager *manager = new QNetworkAccessManager(this);
+ connect(manager, SIGNAL(finished(QNetworkReply*)),
+ this, SLOT(handleNetworkData(QNetworkReply*)));
+ manager->get(QNetworkRequest(m_url));
+ }
+
+
+private:
+
+ void digest(const QString &content) {
+
+ setWindowTitle("Flight Info");
+ QString data = sanitized(content);
+
+ // do we only get the flight list?
+ // we grab the first leg in the flight list
+ // then fetch another URL for the real flight info
+ int i = data.indexOf("a href=\"?view=detail");
+ if (i > 0) {
+ QString href = data.mid(i, data.indexOf('\"', i + 8) - i + 1);
+ QRegExp regex("dpap=([A-Za-z0-9]+)");
+ regex.indexIn(href);
+ QString airport = regex.cap(1);
+ m_url.addEncodedQueryItem("dpap", QUrl::toPercentEncoding(airport));
+ QNetworkAccessManager *manager = new QNetworkAccessManager(this);
+ connect(manager, SIGNAL(finished(QNetworkReply*)),
+ this, SLOT(handleNetworkData(QNetworkReply*)));
+ manager->get(QNetworkRequest(m_url));
+ return;
+ }
+
+ QXmlStreamReader xml(data);
+ bool inFlightName = false;
+ bool inFlightStatus = false;
+ bool inFlightMap = false;
+ bool inFieldName = false;
+ bool inFieldValue = false;
+
+ QString flightName;
+ QString flightStatus;
+ QStringList fieldNames;
+ QStringList fieldValues;
+
+ while (!xml.atEnd()) {
+ xml.readNext();
+
+ if (xml.tokenType() == QXmlStreamReader::StartElement) {
+ QStringRef className = xml.attributes().value("class");
+ inFlightName |= xml.name() == "h1";
+ inFlightStatus |= className == "FlightDetailHeaderStatus";
+ inFlightMap |= className == "flightMap";
+ if (xml.name() == "td" && !className.isEmpty()) {
+ QString cn = className.toString();
+ if (cn.contains("fieldTitle")) {
+ inFieldName = true;
+ fieldNames += QString();
+ fieldValues += QString();
+ }
+ if (cn.contains("fieldValue"))
+ inFieldValue = true;
+ }
+ if (xml.name() == "img" && inFlightMap) {
+ QString src = xml.attributes().value("src").toString();
+ src.prepend("http://mobile.flightview.com");
+ QUrl url = QUrl::fromPercentEncoding(src.toAscii());
+ QNetworkAccessManager *manager = new QNetworkAccessManager(this);
+ connect(manager, SIGNAL(finished(QNetworkReply*)),
+ this, SLOT(handleMapData(QNetworkReply*)));
+ manager->get(QNetworkRequest(url));
+ }
+ }
+
+ if (xml.tokenType() == QXmlStreamReader::EndElement) {
+ inFlightName &= xml.name() != "h1";
+ inFlightStatus &= xml.name() != "div";
+ inFlightMap &= xml.name() != "div";
+ inFieldName &= xml.name() != "td";
+ inFieldValue &= xml.name() != "td";
+ }
+
+ if (xml.tokenType() == QXmlStreamReader::Characters) {
+ if (inFlightName)
+ flightName += xml.text();
+ if (inFlightStatus)
+ flightStatus += xml.text();
+ if (inFieldName)
+ fieldNames.last() += xml.text();
+ if (inFieldValue)
+ fieldValues.last() += xml.text();
+ }
+ }
+
+ if (fieldNames.isEmpty()) {
+ QString code = ui.flightEdit->text().simplified().left(10);
+ QString msg = QString("Flight %1 is not found").arg(code);
+ ui.flightName->setText(msg);
+ return;
+ }
+
+ ui.flightName->setText(flightName);
+ flightStatus.remove("Status: ");
+ ui.flightStatus->setText(flightStatus);
+ ui.flightStatus->show();
+
+ QStringList whiteList;
+ whiteList << "Departure";
+ whiteList << "Arrival";
+ whiteList << "Scheduled";
+ whiteList << "Takeoff";
+ whiteList << "Estimated";
+ whiteList << "Term-Gate";
+
+ QString text;
+ text = QString("<table width=%1>").arg(width() - 25);
+ for (int i = 0; i < fieldNames.count(); i++) {
+ QString fn = fieldNames[i].simplified();
+ if (fn.endsWith(':'))
+ fn = fn.left(fn.length() - 1);
+ if (!whiteList.contains(fn))
+ continue;
+
+ QString fv = fieldValues[i].simplified();
+ bool special = false;
+ special |= fn.startsWith("Departure");
+ special |= fn.startsWith("Arrival");
+ text += "<tr>";
+ if (special) {
+ text += "<td align=center colspan=2>";
+ text += "<b><font size=+1>" + fv + "</font></b>";
+ text += "</td>";
+ } else {
+ text += "<td align=right>";
+ text += fn;
+ text += " : ";
+ text += "&nbsp;";
+ text += "</td>";
+ text += "<td>";
+ text += fv;
+ text += "</td>";
+ }
+ text += "</tr>";
+ }
+ text += "</table>";
+ ui.detailedInfo->setText(text);
+ ui.infoBox->show();
+ }
+
+ void resizeEvent(QResizeEvent *event) {
+ Q_UNUSED(event);
+ ui.detailedInfo->setMaximumWidth(width() - 25);
+ }
+
+ void paintEvent(QPaintEvent *event) {
+ QMainWindow::paintEvent(event);
+ QPainter p(this);
+ p.fillRect(rect(), QColor(131, 171, 210));
+ if (!m_map.isNull()) {
+ int x = (width() - m_map.width()) / 2;
+ int space = ui.infoBox->pos().y();
+ if (!ui.infoBox->isVisible())
+ space = height();
+ int top = ui.titleBox->height();
+ int y = qMax(top, (space - m_map.height()) / 2);
+ p.drawPixmap(x, y, m_map);
+ }
+ p.end();
+ }
+
+};
+
+
+#include "flightinfo.moc"
+
+int main(int argc, char **argv)
+{
+ Q_INIT_RESOURCE(flightinfo);
+
+ QApplication app(argc, argv);
+
+ FlightInfo w;
+#if defined(Q_OS_SYMBIAN)
+ w.showMaximized();
+#else
+ w.resize(360, 504);
+ w.show();
+#endif
+
+ return app.exec();
+}
diff --git a/demos/embedded/flightinfo/flightinfo.pro b/demos/embedded/flightinfo/flightinfo.pro
new file mode 100644
index 0000000..5edb175
--- /dev/null
+++ b/demos/embedded/flightinfo/flightinfo.pro
@@ -0,0 +1,12 @@
+TEMPLATE = app
+TARGET = flightinfo
+SOURCES = flightinfo.cpp
+FORMS += form.ui
+RESOURCES = flightinfo.qrc
+QT += network
+
+symbian {
+ HEADERS += $$QT_SOURCE_TREE/examples/network/ftp/sym_iap_util.h
+ LIBS += -lesock -lconnmon
+ TARGET.CAPABILITY = NetworkServices
+}
diff --git a/demos/embedded/flightinfo/flightinfo.qrc b/demos/embedded/flightinfo/flightinfo.qrc
new file mode 100644
index 0000000..babea7e
--- /dev/null
+++ b/demos/embedded/flightinfo/flightinfo.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/" >
+ <file>aircraft.png</file>
+ </qresource>
+</RCC>
diff --git a/demos/embedded/flightinfo/form.ui b/demos/embedded/flightinfo/form.ui
new file mode 100644
index 0000000..3a24c75
--- /dev/null
+++ b/demos/embedded/flightinfo/form.ui
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>220</width>
+ <height>171</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QFrame" name="titleBox">
+ <property name="styleSheet">
+ <string>QFrame {
+background-color: #45629a;
+}
+
+QLabel {
+color: white;
+}</string>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ <property name="lineWidth">
+ <number>0</number>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="margin">
+ <number>4</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="flightName">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Powered by FlightView</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="flightStatus">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="styleSheet">
+ <string>background-color: white;
+color: #45629a;</string>
+ </property>
+ <property name="lineWidth">
+ <number>0</number>
+ </property>
+ <property name="text">
+ <string>Ready</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ <property name="margin">
+ <number>4</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QFrame" name="searchBar">
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="margin">
+ <number>5</number>
+ </property>
+ <item>
+ <widget class="QLineEdit" name="flightEdit">
+ <property name="styleSheet">
+ <string>color: black;
+border: 1px solid black;
+background: white;
+selection-background-color: lightgray;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="searchButton">
+ <property name="styleSheet">
+ <string>color: rgb(255, 255, 255);
+background-color: rgb(85, 85, 255);
+padding: 2px;
+border: 2px solid rgb(0, 0, 127);</string>
+ </property>
+ <property name="text">
+ <string>Search</string>
+ </property>
+ <property name="toolButtonStyle">
+ <enum>Qt::ToolButtonTextBesideIcon</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>58</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QFrame" name="infoBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="MinimumExpanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="styleSheet">
+ <string>QFrame { border: 2px solid white;
+border-radius: 10px;
+margin: 5px;
+background-color: rgba(69, 98, 154, 192); }</string>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="margin">
+ <number>5</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="detailedInfo">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="MinimumExpanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="styleSheet">
+ <string>color: white;
+border: none;
+background-color: none;</string>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::RichText</enum>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ <property name="textInteractionFlags">
+ <set>Qt::NoTextInteraction</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/demos/embedded/fluidlauncher/config_s60/config.xml b/demos/embedded/fluidlauncher/config_s60/config.xml
new file mode 100644
index 0000000..192a2e3
--- /dev/null
+++ b/demos/embedded/fluidlauncher/config_s60/config.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<demolauncher>
+ <demos>
+ <example filename="embeddedsvgviewer" name="SVG Viewer" image="screenshots/embeddedsvgviewer_s60.png" args="/data/images/qt/demos/embeddedsvgviewer/shapes.svg"/>
+ <example filename="styledemo" name="Stylesheets" image="screenshots/styledemo_s60.png"/>
+ <example filename="deform" name="Vector Deformation" image="screenshots/deform.png" args="-small-screen"/>
+ <example filename="pathstroke" name="Path Stroking" image="screenshots/pathstroke.png" args="-small-screen"/>
+ <example filename="wiggly" name="Wiggly Text" image="screenshots/wiggly_s60.png" args="-small-screen"/>
+ <example filename="ftp" name="Ftp Client" image="screenshots/ftp_s60.png"/>
+ <example filename="context2d" name="Context2d" image="screenshots/context2d_s60.png"/>
+ <example filename="saxbookmarks" name="SaxBookmarks" image="screenshots/saxbookmarks_s60.png"/>
+ <example filename="desktopservices" name="Desktop Services" image="screenshots/desktopservices_s60.png"/>
+ <example filename="fridgemagnets" name="Fridge Magnets" image="screenshots/fridgemagnets_s60.png" args="-small-screen"/>
+ <example filename="drilldown" name="Drilldown" image="screenshots/drilldown_s60.png"/>
+ <example filename="softkeys" name="Softkeys" image="screenshots/softkeys_s60.png"/>
+ <example filename="anomaly" name="Anomaly Browser" image="screenshots/anomaly_s60.png"/>
+ <example filename="raycasting" name="Ray casting" image="screenshots/raycasting.png"/>
+ <example filename="lightmaps" name="OpenStreetMap" image="screenshots/lightmaps.png"/>
+ <example filename="flightinfo" name="Flight Info" image="screenshots/flightinfo_s60.png"/>
+ <example filename="weatherinfo" name="Weather Info" image="screenshots/weatherinfo.png"/>
+ <example filename="flickable" name="Kinetic Scrolling" image="screenshots/flickable.png"/>
+ <example filename="digiflip" name="Flipping Clock" image="screenshots/digiflip.png"/>
+ </demos>
+ <slideshow timeout="60000" interval="10000">
+ <imagedir dir="slides"/>
+ </slideshow>
+</demolauncher>
diff --git a/demos/embedded/fluidlauncher/fluidlauncher.cpp b/demos/embedded/fluidlauncher/fluidlauncher.cpp
index 27ec5b4..e93e023 100644
--- a/demos/embedded/fluidlauncher/fluidlauncher.cpp
+++ b/demos/embedded/fluidlauncher/fluidlauncher.cpp
@@ -39,12 +39,14 @@
**
****************************************************************************/
-#include <QtXml>
+#include <QXmlStreamReader>
#include "fluidlauncher.h"
#define DEFAULT_INPUT_TIMEOUT 10000
+#define SIZING_FACTOR_HEIGHT 6/10
+#define SIZING_FACTOR_WIDTH 6/10
FluidLauncher::FluidLauncher(QStringList* args)
{
@@ -62,7 +64,11 @@ FluidLauncher::FluidLauncher(QStringList* args)
inputTimer->setSingleShot(true);
inputTimer->setInterval(DEFAULT_INPUT_TIMEOUT);
- pictureFlowWidget->setSlideSize(QSize( (screen_size.width()*2)/5, (screen_size.height()*2)/5 ));
+ const int h = screen_size.height() * SIZING_FACTOR_HEIGHT;
+ const int w = screen_size.width() * SIZING_FACTOR_WIDTH;
+ const int hh = qMin(h, w);
+ const int ww = hh / 3 * 2;
+ pictureFlowWidget->setSlideSize(QSize(ww, hh));
bool success;
int configIndex = args->indexOf("-config");
@@ -100,61 +106,97 @@ bool FluidLauncher::loadConfig(QString configPath)
slideShowWidget->clearImages();
- QDomDocument xmlDoc;
- xmlDoc.setContent(&xmlFile, true);
+ xmlFile.open(QIODevice::ReadOnly);
+ QXmlStreamReader reader(&xmlFile);
+ while (!reader.atEnd()) {
+ reader.readNext();
- QDomElement rootElement = xmlDoc.documentElement();
-
- // Process the demos node:
- QDomNodeList demoNodes = rootElement.firstChildElement("demos").elementsByTagName("example");
- for (int i=0; i<demoNodes.size(); i++) {
- QDomElement element = demoNodes.item(i).toElement();
-
- if (element.hasAttribute("filename")) {
- DemoApplication* newDemo = new DemoApplication(
- element.attribute("filename"),
- element.attribute("name", "Unamed Demo"),
- element.attribute("image"),
- element.attribute("args").split(" "));
- demoList.append(newDemo);
+ if (reader.isStartElement()) {
+ if (reader.name() == "demos")
+ parseDemos(reader);
+ else if(reader.name() == "slideshow")
+ parseSlideshow(reader);
}
}
+ if (reader.hasError()) {
+ qDebug() << QString("Error parsing %1 on line %2 column %3: \n%4")
+ .arg(configPath)
+ .arg(reader.lineNumber())
+ .arg(reader.columnNumber())
+ .arg(reader.errorString());
+ }
- // Process the slideshow node:
- QDomElement slideshowElement = rootElement.firstChildElement("slideshow");
+ // Append an exit Item
+ DemoApplication* exitItem = new DemoApplication(QString(), QLatin1String("Exit Embedded Demo"), QString(), QStringList());
+ demoList.append(exitItem);
- if (slideshowElement.hasAttribute("timeout")) {
- bool valid;
- int timeout = slideshowElement.attribute("timeout").toInt(&valid);
- if (valid)
- inputTimer->setInterval(timeout);
- }
+ return true;
+}
- if (slideshowElement.hasAttribute("interval")) {
- bool valid;
- int interval = slideshowElement.attribute("interval").toInt(&valid);
- if (valid)
- slideShowWidget->setSlideInterval(interval);
+
+void FluidLauncher::parseDemos(QXmlStreamReader& reader)
+{
+ while (!reader.atEnd()) {
+ reader.readNext();
+ if (reader.isStartElement() && reader.name() == "example") {
+ QXmlStreamAttributes attrs = reader.attributes();
+ QStringRef filename = attrs.value("filename");
+ if (!filename.isEmpty()) {
+ QStringRef name = attrs.value("name");
+ QStringRef image = attrs.value("image");
+ QStringRef args = attrs.value("args");
+
+ DemoApplication* newDemo = new DemoApplication(
+ filename.toString(),
+ name.isEmpty() ? "Unamed Demo" : name.toString(),
+ image.toString(),
+ args.toString().split(" "));
+ demoList.append(newDemo);
+ }
+ } else if(reader.isEndElement() && reader.name() == "demos") {
+ return;
+ }
}
+}
- for (QDomNode node=slideshowElement.firstChild(); !node.isNull(); node=node.nextSibling()) {
- QDomElement element = node.toElement();
+void FluidLauncher::parseSlideshow(QXmlStreamReader& reader)
+{
+ QXmlStreamAttributes attrs = reader.attributes();
+
+ QStringRef timeout = attrs.value("timeout");
+ bool valid;
+ if (!timeout.isEmpty()) {
+ int t = timeout.toString().toInt(&valid);
+ if (valid)
+ inputTimer->setInterval(t);
+ }
- if (element.tagName() == "imagedir")
- slideShowWidget->addImageDir(element.attribute("dir"));
- else if (element.tagName() == "image")
- slideShowWidget->addImage(element.attribute("image"));
+ QStringRef interval = attrs.value("interval");
+ if (!interval.isEmpty()) {
+ int i = interval.toString().toInt(&valid);
+ if (valid)
+ slideShowWidget->setSlideInterval(i);
}
- // Append an exit Item
- DemoApplication* exitItem = new DemoApplication(QString(), QLatin1String("Exit Embedded Demo"), QString(), QStringList());
- demoList.append(exitItem);
+ while (!reader.atEnd()) {
+ reader.readNext();
+ if (reader.isStartElement()) {
+ QXmlStreamAttributes attrs = reader.attributes();
+ if (reader.name() == "imagedir") {
+ QStringRef dir = attrs.value("dir");
+ slideShowWidget->addImageDir(dir.toString());
+ } else if(reader.name() == "image") {
+ QStringRef image = attrs.value("image");
+ slideShowWidget->addImage(image.toString());
+ }
+ } else if(reader.isEndElement() && reader.name() == "slideshow") {
+ return;
+ }
+ }
- return true;
}
-
void FluidLauncher::populatePictureFlow()
{
pictureFlowWidget->setSlideCount(demoList.count());
diff --git a/demos/embedded/fluidlauncher/fluidlauncher.h b/demos/embedded/fluidlauncher/fluidlauncher.h
index 77d0980..7914847 100644
--- a/demos/embedded/fluidlauncher/fluidlauncher.h
+++ b/demos/embedded/fluidlauncher/fluidlauncher.h
@@ -44,6 +44,7 @@
#include <QtGui>
#include <QTimer>
+#include <QStringRef>
#include "pictureflow.h"
#include "slideshow.h"
@@ -73,7 +74,8 @@ private:
bool loadConfig(QString configPath);
void populatePictureFlow();
void switchToSlideshow();
-
+ void parseDemos(QXmlStreamReader& reader);
+ void parseSlideshow(QXmlStreamReader& reader);
};
diff --git a/demos/embedded/fluidlauncher/fluidlauncher.pro b/demos/embedded/fluidlauncher/fluidlauncher.pro
index 76d12ad..3eff37b 100644
--- a/demos/embedded/fluidlauncher/fluidlauncher.pro
+++ b/demos/embedded/fluidlauncher/fluidlauncher.pro
@@ -1,8 +1,7 @@
TEMPLATE = app
-TARGET =
+TARGET =
DEPENDPATH += .
INCLUDEPATH += .
-QT += xml
# Input
HEADERS += \
@@ -40,7 +39,8 @@ wince*{
$$QT_BUILD_TREE/demos/pathstroke/$${BUILD_DIR}/pathstroke.exe \
$$QT_BUILD_TREE/examples/graphicsview/elasticnodes/$${BUILD_DIR}/elasticnodes.exe \
$$QT_BUILD_TREE/examples/widgets/wiggly/$${BUILD_DIR}/wiggly.exe \
- $$QT_BUILD_TREE/examples/painting/concentriccircles/$${BUILD_DIR}/concentriccircles.exe
+ $$QT_BUILD_TREE/examples/painting/concentriccircles/$${BUILD_DIR}/concentriccircles.exe \
+ $$QT_BUILD_TREE/examples/draganddrop/$${BUILD_DIR}/fridgemagnets.exe
executables.path = .
@@ -54,3 +54,96 @@ wince*{
DEPLOYMENT_PLUGIN += qgif qjpeg qmng qsvg
}
+
+symbian {
+ load(data_caging_paths)
+
+ TARGET.UID3 = 0xA000A641
+
+ executables.sources = \
+ embeddedsvgviewer.exe \
+ styledemo.exe \
+ deform.exe \
+ pathstroke.exe \
+ wiggly.exe \
+ ftp.exe \
+ context2d.exe \
+ saxbookmarks.exe \
+ desktopservices.exe \
+ fridgemagnets.exe \
+ drilldown.exe \
+ softkeys.exe
+ contains(QT_CONFIG, webkit) {
+ executables.sources += anomaly.exe
+ }
+
+ executables.path = /sys/bin
+
+ reg_resource.sources = \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/embeddedsvgviewer_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/styledemo_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/deform_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/pathstroke_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/wiggly_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/ftp_reg.rsc\
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/context2d_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/saxbookmarks_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/desktopservices_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/fridgemagnets_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/drilldown_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/softkeys_reg.rsc
+ contains(QT_CONFIG, webkit) {
+ reg_resource.sources += $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/anomaly_reg.rsc
+ }
+
+ reg_resource.path = $$REG_RESOURCE_IMPORT_DIR
+
+ resource.sources = \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/embeddedsvgviewer.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/styledemo.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/deform.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/pathstroke.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/wiggly.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/ftp.rsc\
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/context2d.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/saxbookmarks.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/desktopservices.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/fridgemagnets.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/drilldown.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/softkeys.rsc
+ contains(QT_CONFIG, webkit) {
+ resource.sources += $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/anomaly.rsc
+ }
+
+ resource.path = $$APP_RESOURCE_DIR
+
+ mifs.sources = \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/0xA000C611.mif
+ mifs.path = $$APP_RESOURCE_DIR
+
+ files.sources = $$PWD/screenshots $$PWD/slides
+ files.path = .
+
+ config.sources = $$PWD/config_s60/config.xml
+ config.path = .
+
+ viewerimages.sources = $$PWD/../embeddedsvgviewer/shapes.svg
+ viewerimages.path = /data/images/qt/demos/embeddedsvgviewer
+
+ desktopservices_music.sources = \
+ $$PWD/../desktopservices/data/*.mp3 \
+ $$PWD/../desktopservices/data/*.wav
+ desktopservices_music.path = /data/sounds
+
+ desktopservices_images.sources = $$PWD/../desktopservices/data/*.png
+ desktopservices_images.path = /data/images
+
+ saxbookmarks.sources = $$PWD/../../../examples/xml/saxbookmarks/frank.xbel
+ saxbookmarks.sources += $$PWD/../../../examples/xml/saxbookmarks/jennifer.xbel
+ saxbookmarks.path = /data/qt/saxbookmarks
+
+ DEPLOYMENT += config files executables viewerimages saxbookmarks reg_resource resource \
+ mifs desktopservices_music desktopservices_images
+
+ TARGET.EPOCHEAPSIZE = 100000 20000000
+}
diff --git a/demos/embedded/fluidlauncher/pictureflow.cpp b/demos/embedded/fluidlauncher/pictureflow.cpp
index 2173b28..31f5e86 100644
--- a/demos/embedded/fluidlauncher/pictureflow.cpp
+++ b/demos/embedded/fluidlauncher/pictureflow.cpp
@@ -108,6 +108,14 @@
#include <QDebug>
+static const int captionFontSize =
+#ifdef Q_WS_S60
+ 8;
+#else
+ 14;
+#endif
+
+
// uncomment this to enable bilinear filtering for texture mapping
// gives much better rendering, at the cost of memory space
// #define PICTUREFLOW_BILINEAR_FILTER
@@ -742,14 +750,14 @@ void PictureFlowPrivate::render()
QPainter painter;
painter.begin(&buffer);
- QFont font("Arial", 14);
+ QFont font("Arial", captionFontSize);
font.setBold(true);
painter.setFont(font);
painter.setPen(Qt::white);
//painter.setPen(QColor(255,255,255,127));
if (!captions.isEmpty())
- painter.drawText( QRect(0,0, buffer.width(), (buffer.height() - slideSize().height())/2),
+ painter.drawText( QRect(0,0, buffer.width(), (buffer.height() - slideSize().height())/4),
Qt::AlignCenter, captions[centerIndex]);
painter.end();
@@ -790,18 +798,18 @@ void PictureFlowPrivate::render()
QPainter painter;
painter.begin(&buffer);
- QFont font("Arial", 14);
+ QFont font("Arial", captionFontSize);
font.setBold(true);
painter.setFont(font);
int leftTextIndex = (step>0) ? centerIndex : centerIndex-1;
painter.setPen(QColor(255,255,255, (255-fade) ));
- painter.drawText( QRect(0,0, buffer.width(), (buffer.height() - slideSize().height())/2),
+ painter.drawText( QRect(0,0, buffer.width(), (buffer.height() - slideSize().height())/4),
Qt::AlignCenter, captions[leftTextIndex]);
painter.setPen(QColor(255,255,255, fade));
- painter.drawText( QRect(0,0, buffer.width(), (buffer.height() - slideSize().height())/2),
+ painter.drawText( QRect(0,0, buffer.width(), (buffer.height() - slideSize().height())/4),
Qt::AlignCenter, captions[leftTextIndex+1]);
painter.end();
@@ -1265,6 +1273,12 @@ void PictureFlow::keyPressEvent(QKeyEvent* event)
return;
}
+ if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Select) {
+ emit itemActivated(d->getTarget());
+ event->accept();
+ return;
+ }
+
event->ignore();
}
diff --git a/demos/embedded/fluidlauncher/screenshots/anomaly_s60.png b/demos/embedded/fluidlauncher/screenshots/anomaly_s60.png
new file mode 100644
index 0000000..b9a73fd
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/anomaly_s60.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/context2d_s60.png b/demos/embedded/fluidlauncher/screenshots/context2d_s60.png
new file mode 100644
index 0000000..a53f5b0
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/context2d_s60.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/desktopservices_s60.png b/demos/embedded/fluidlauncher/screenshots/desktopservices_s60.png
new file mode 100644
index 0000000..f4aa1a2
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/desktopservices_s60.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/digiflip.png b/demos/embedded/fluidlauncher/screenshots/digiflip.png
new file mode 100644
index 0000000..117b61b
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/digiflip.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/drilldown_s60.png b/demos/embedded/fluidlauncher/screenshots/drilldown_s60.png
new file mode 100644
index 0000000..50376c1
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/drilldown_s60.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/embeddedsvgviewer_s60.png b/demos/embedded/fluidlauncher/screenshots/embeddedsvgviewer_s60.png
new file mode 100644
index 0000000..11459dc
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/embeddedsvgviewer_s60.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/flickable.png b/demos/embedded/fluidlauncher/screenshots/flickable.png
new file mode 100644
index 0000000..7080fc1
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/flickable.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/flightinfo_s60.png b/demos/embedded/fluidlauncher/screenshots/flightinfo_s60.png
new file mode 100644
index 0000000..8a304eb
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/flightinfo_s60.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/fridgemagnets_s60.png b/demos/embedded/fluidlauncher/screenshots/fridgemagnets_s60.png
new file mode 100644
index 0000000..56da9dc
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/fridgemagnets_s60.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/ftp_s60.png b/demos/embedded/fluidlauncher/screenshots/ftp_s60.png
new file mode 100644
index 0000000..ea6a321
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/ftp_s60.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/lightmaps.png b/demos/embedded/fluidlauncher/screenshots/lightmaps.png
new file mode 100644
index 0000000..7cbe2e4
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/lightmaps.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/raycasting.png b/demos/embedded/fluidlauncher/screenshots/raycasting.png
new file mode 100644
index 0000000..d3c86e9
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/raycasting.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/saxbookmarks_s60.png b/demos/embedded/fluidlauncher/screenshots/saxbookmarks_s60.png
new file mode 100644
index 0000000..c451198
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/saxbookmarks_s60.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/softkeys_s60.png b/demos/embedded/fluidlauncher/screenshots/softkeys_s60.png
new file mode 100644
index 0000000..03989fb
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/softkeys_s60.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/styledemo_s60.png b/demos/embedded/fluidlauncher/screenshots/styledemo_s60.png
new file mode 100644
index 0000000..bad9692
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/styledemo_s60.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/weatherinfo.png b/demos/embedded/fluidlauncher/screenshots/weatherinfo.png
new file mode 100644
index 0000000..b18608d
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/weatherinfo.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/wiggly_s60.png b/demos/embedded/fluidlauncher/screenshots/wiggly_s60.png
new file mode 100644
index 0000000..690ab48
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/wiggly_s60.png
Binary files differ
diff --git a/demos/embedded/lightmaps/lightmaps.cpp b/demos/embedded/lightmaps/lightmaps.cpp
new file mode 100644
index 0000000..6ad2020
--- /dev/null
+++ b/demos/embedded/lightmaps/lightmaps.cpp
@@ -0,0 +1,579 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore>
+#include <QtGui>
+#include <QtNetwork>
+
+#if defined (Q_OS_SYMBIAN)
+#include "sym_iap_util.h"
+#endif
+
+#include <math.h>
+
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
+
+// how long (milliseconds) the user need to hold (after a tap on the screen)
+// before triggering the magnifying glass feature
+// 701, a prime number, is the sum of 229, 233, 239
+// (all three are also prime numbers, consecutive!)
+#define HOLD_TIME 701
+
+// maximum size of the magnifier
+// Hint: see above to find why I picked this one :)
+#define MAX_MAGNIFIER 229
+
+uint qHash(const QPoint& p)
+{
+ return p.x() * 17 ^ p.y();
+}
+
+// tile size in pixels
+const int tdim = 256;
+
+QPointF tileForCoordinate(qreal lat, qreal lng, int zoom)
+{
+ qreal zn = static_cast<qreal>(1 << zoom);
+ qreal tx = (lng + 180.0) / 360.0;
+ qreal ty = (1.0 - log(tan(lat * M_PI / 180.0) +
+ 1.0 / cos(lat * M_PI / 180.0)) / M_PI) / 2.0;
+ return QPointF(tx * zn, ty * zn);
+}
+
+qreal longitudeFromTile(qreal tx, int zoom)
+{
+ qreal zn = static_cast<qreal>(1 << zoom);
+ qreal lat = tx / zn * 360.0 - 180.0;
+ return lat;
+}
+
+qreal latitudeFromTile(qreal ty, int zoom)
+{
+ qreal zn = static_cast<qreal>(1 << zoom);
+ qreal n = M_PI - 2 * M_PI * ty / zn;
+ qreal lng = 180.0 / M_PI * atan(0.5 * (exp(n) - exp(-n)));
+ return lng;
+}
+
+class SlippyMap: public QObject
+{
+ Q_OBJECT
+
+public:
+ int width;
+ int height;
+ int zoom;
+ qreal latitude;
+ qreal longitude;
+
+ SlippyMap(QObject *parent = 0)
+ : QObject(parent)
+ , width(400)
+ , height(300)
+ , zoom(15)
+ , latitude(59.9138204)
+ , longitude(10.7387413) {
+ m_emptyTile = QPixmap(tdim, tdim);
+ m_emptyTile.fill(Qt::lightGray);
+
+ QNetworkDiskCache *cache = new QNetworkDiskCache;
+ cache->setCacheDirectory(QDesktopServices::storageLocation
+ (QDesktopServices::CacheLocation));
+ m_manager.setCache(cache);
+ connect(&m_manager, SIGNAL(finished(QNetworkReply*)),
+ this, SLOT(handleNetworkData(QNetworkReply*)));
+ }
+
+ void invalidate() {
+ if (width <= 0 || height <= 0)
+ return;
+
+ QPointF ct = tileForCoordinate(latitude, longitude, zoom);
+ qreal tx = ct.x();
+ qreal ty = ct.y();
+
+ // top-left corner of the center tile
+ int xp = width / 2 - (tx - floor(tx)) * tdim;
+ int yp = height / 2 - (ty - floor(ty)) * tdim;
+
+ // first tile vertical and horizontal
+ int xa = (xp + tdim - 1) / tdim;
+ int ya = (yp + tdim - 1) / tdim;
+ int xs = static_cast<int>(tx) - xa;
+ int ys = static_cast<int>(ty) - ya;
+
+ // offset for top-left tile
+ m_offset = QPoint(xp - xa * tdim, yp - ya * tdim);
+
+ // last tile vertical and horizontal
+ int xe = static_cast<int>(tx) + (width - xp - 1) / tdim;
+ int ye = static_cast<int>(ty) + (height - yp - 1) / tdim;
+
+ // build a rect
+ m_tilesRect = QRect(xs, ys, xe - xs + 1, ye - ys + 1);
+
+ if (m_url.isEmpty())
+ download();
+
+ emit updated(QRect(0, 0, width, height));
+ }
+
+ void render(QPainter *p, const QRect &rect) {
+ for (int x = 0; x <= m_tilesRect.width(); ++x)
+ for (int y = 0; y <= m_tilesRect.height(); ++y) {
+ QPoint tp(x + m_tilesRect.left(), y + m_tilesRect.top());
+ QRect box = tileRect(tp);
+ if (rect.intersects(box)) {
+ if (m_tilePixmaps.contains(tp))
+ p->drawPixmap(box, m_tilePixmaps.value(tp));
+ else
+ p->drawPixmap(box, m_emptyTile);
+ }
+ }
+ }
+
+ void pan(const QPoint &delta) {
+ QPointF dx = QPointF(delta) / qreal(tdim);
+ QPointF center = tileForCoordinate(latitude, longitude, zoom) - dx;
+ latitude = latitudeFromTile(center.y(), zoom);
+ longitude = longitudeFromTile(center.x(), zoom);
+ invalidate();
+ }
+
+private slots:
+
+ void handleNetworkData(QNetworkReply *reply) {
+ QImage img;
+ QPoint tp = reply->request().attribute(QNetworkRequest::User).toPoint();
+ QUrl url = reply->url();
+ if (!reply->error())
+ if (!img.load(reply, 0))
+ img = QImage();
+ reply->deleteLater();
+ m_tilePixmaps[tp] = QPixmap::fromImage(img);
+ if (img.isNull())
+ m_tilePixmaps[tp] = m_emptyTile;
+ emit updated(tileRect(tp));
+
+ // purge unused spaces
+ QRect bound = m_tilesRect.adjusted(-2, -2, 2, 2);
+ foreach(QPoint tp, m_tilePixmaps.keys())
+ if (!bound.contains(tp))
+ m_tilePixmaps.remove(tp);
+
+ download();
+ }
+
+ void download() {
+ QPoint grab(0, 0);
+ for (int x = 0; x <= m_tilesRect.width(); ++x)
+ for (int y = 0; y <= m_tilesRect.height(); ++y) {
+ QPoint tp = m_tilesRect.topLeft() + QPoint(x, y);
+ if (!m_tilePixmaps.contains(tp)) {
+ grab = tp;
+ break;
+ }
+ }
+ if (grab == QPoint(0, 0)) {
+ m_url = QUrl();
+ return;
+ }
+
+ QString path = "http://tile.openstreetmap.org/%1/%2/%3.png";
+ m_url = QUrl(path.arg(zoom).arg(grab.x()).arg(grab.y()));
+ QNetworkRequest request;
+ request.setUrl(m_url);
+ request.setRawHeader("User-Agent", "Nokia (Qt) Graphics Dojo 1.0");
+ request.setAttribute(QNetworkRequest::User, QVariant(grab));
+ m_manager.get(request);
+ }
+
+signals:
+ void updated(const QRect &rect);
+
+protected:
+ QRect tileRect(const QPoint &tp) {
+ QPoint t = tp - m_tilesRect.topLeft();
+ int x = t.x() * tdim + m_offset.x();
+ int y = t.y() * tdim + m_offset.y();
+ return QRect(x, y, tdim, tdim);
+ }
+
+private:
+ QPoint m_offset;
+ QRect m_tilesRect;
+ QPixmap m_emptyTile;
+ QHash<QPoint, QPixmap> m_tilePixmaps;
+ QNetworkAccessManager m_manager;
+ QUrl m_url;
+};
+
+class LightMaps: public QWidget
+{
+ Q_OBJECT
+
+public:
+ LightMaps(QWidget *parent = 0)
+ : QWidget(parent)
+ , pressed(false)
+ , snapped(false)
+ , zoomed(false)
+ , invert(false) {
+ m_normalMap = new SlippyMap(this);
+ m_largeMap = new SlippyMap(this);
+ connect(m_normalMap, SIGNAL(updated(QRect)), SLOT(updateMap(QRect)));
+ connect(m_largeMap, SIGNAL(updated(QRect)), SLOT(update()));
+ }
+
+ void setCenter(qreal lat, qreal lng) {
+ m_normalMap->latitude = lat;
+ m_normalMap->longitude = lng;
+ m_normalMap->invalidate();
+ m_largeMap->invalidate();
+ }
+
+public slots:
+ void toggleNightMode() {
+ invert = !invert;
+ update();
+ }
+
+private slots:
+ void updateMap(const QRect &r) {
+ update(r);
+ }
+
+protected:
+
+ void activateZoom() {
+ zoomed = true;
+ tapTimer.stop();
+ m_largeMap->zoom = m_normalMap->zoom + 1;
+ m_largeMap->width = m_normalMap->width * 2;
+ m_largeMap->height = m_normalMap->height * 2;
+ m_largeMap->latitude = m_normalMap->latitude;
+ m_largeMap->longitude = m_normalMap->longitude;
+ m_largeMap->invalidate();
+ update();
+ }
+
+ void resizeEvent(QResizeEvent *) {
+ m_normalMap->width = width();
+ m_normalMap->height = height();
+ m_normalMap->invalidate();
+ m_largeMap->width = m_normalMap->width * 2;
+ m_largeMap->height = m_normalMap->height * 2;
+ m_largeMap->invalidate();
+ }
+
+ void paintEvent(QPaintEvent *event) {
+ QPainter p;
+ p.begin(this);
+ m_normalMap->render(&p, event->rect());
+ p.setPen(Qt::black);
+#if defined(Q_OS_SYMBIAN)
+ QFont font = p.font();
+ font.setPixelSize(13);
+ p.setFont(font);
+#endif
+ p.drawText(rect(), Qt::AlignBottom | Qt::TextWordWrap,
+ "Map data CCBYSA 2009 OpenStreetMap.org contributors");
+ p.end();
+
+ if (zoomed) {
+ int dim = qMin(width(), height());
+ int magnifierSize = qMin(MAX_MAGNIFIER, dim * 2 / 3);
+ int radius = magnifierSize / 2;
+ int ring = radius - 15;
+ QSize box = QSize(magnifierSize, magnifierSize);
+
+ // reupdate our mask
+ if (maskPixmap.size() != box) {
+ maskPixmap = QPixmap(box);
+ maskPixmap.fill(Qt::transparent);
+
+ QRadialGradient g;
+ g.setCenter(radius, radius);
+ g.setFocalPoint(radius, radius);
+ g.setRadius(radius);
+ g.setColorAt(1.0, QColor(255, 255, 255, 0));
+ g.setColorAt(0.5, QColor(128, 128, 128, 255));
+
+ QPainter mask(&maskPixmap);
+ mask.setRenderHint(QPainter::Antialiasing);
+ mask.setCompositionMode(QPainter::CompositionMode_Source);
+ mask.setBrush(g);
+ mask.setPen(Qt::NoPen);
+ mask.drawRect(maskPixmap.rect());
+ mask.setBrush(QColor(Qt::transparent));
+ mask.drawEllipse(g.center(), ring, ring);
+ mask.end();
+ }
+
+ QPoint center = dragPos - QPoint(0, radius);
+ center = center + QPoint(0, radius / 2);
+ QPoint corner = center - QPoint(radius, radius);
+
+ QPoint xy = center * 2 - QPoint(radius, radius);
+
+ // only set the dimension to the magnified portion
+ if (zoomPixmap.size() != box) {
+ zoomPixmap = QPixmap(box);
+ zoomPixmap.fill(Qt::lightGray);
+ }
+ if (true) {
+ QPainter p(&zoomPixmap);
+ p.translate(-xy);
+ m_largeMap->render(&p, QRect(xy, box));
+ p.end();
+ }
+
+ QPainterPath clipPath;
+ clipPath.addEllipse(center, ring, ring);
+
+ QPainter p(this);
+ p.setRenderHint(QPainter::Antialiasing);
+ p.setClipPath(clipPath);
+ p.drawPixmap(corner, zoomPixmap);
+ p.setClipping(false);
+ p.drawPixmap(corner, maskPixmap);
+ p.setPen(Qt::gray);
+ p.drawPath(clipPath);
+ }
+ if (invert) {
+ QPainter p(this);
+ p.setCompositionMode(QPainter::CompositionMode_Difference);
+ p.fillRect(event->rect(), Qt::white);
+ p.end();
+ }
+ }
+
+ void timerEvent(QTimerEvent *) {
+ if (!zoomed)
+ activateZoom();
+ update();
+ }
+
+ void mousePressEvent(QMouseEvent *event) {
+ if (event->buttons() != Qt::LeftButton)
+ return;
+ pressed = snapped = true;
+ pressPos = dragPos = event->pos();
+ tapTimer.stop();
+ tapTimer.start(HOLD_TIME, this);
+ }
+
+ void mouseMoveEvent(QMouseEvent *event) {
+ if (!event->buttons())
+ return;
+ if (!zoomed) {
+ if (!pressed || !snapped) {
+ QPoint delta = event->pos() - pressPos;
+ pressPos = event->pos();
+ m_normalMap->pan(delta);
+ return;
+ } else {
+ const int threshold = 10;
+ QPoint delta = event->pos() - pressPos;
+ if (snapped) {
+ snapped &= delta.x() < threshold;
+ snapped &= delta.y() < threshold;
+ snapped &= delta.x() > -threshold;
+ snapped &= delta.y() > -threshold;
+ }
+ if (!snapped)
+ tapTimer.stop();
+ }
+ } else {
+ dragPos = event->pos();
+ update();
+ }
+ }
+
+ void mouseReleaseEvent(QMouseEvent *) {
+ zoomed = false;
+ update();
+ }
+
+ void keyPressEvent(QKeyEvent *event) {
+ if (!zoomed) {
+ if (event->key() == Qt::Key_Left)
+ m_normalMap->pan(QPoint(20, 0));
+ if (event->key() == Qt::Key_Right)
+ m_normalMap->pan(QPoint(-20, 0));
+ if (event->key() == Qt::Key_Up)
+ m_normalMap->pan(QPoint(0, 20));
+ if (event->key() == Qt::Key_Down)
+ m_normalMap->pan(QPoint(0, -20));
+ if (event->key() == Qt::Key_Z || event->key() == Qt::Key_Select) {
+ dragPos = QPoint(width() / 2, height() / 2);
+ activateZoom();
+ }
+ } else {
+ if (event->key() == Qt::Key_Z || event->key() == Qt::Key_Select) {
+ zoomed = false;
+ update();
+ }
+ QPoint delta(0, 0);
+ if (event->key() == Qt::Key_Left)
+ delta = QPoint(-15, 0);
+ if (event->key() == Qt::Key_Right)
+ delta = QPoint(15, 0);
+ if (event->key() == Qt::Key_Up)
+ delta = QPoint(0, -15);
+ if (event->key() == Qt::Key_Down)
+ delta = QPoint(0, 15);
+ if (delta != QPoint(0, 0)) {
+ dragPos += delta;
+ update();
+ }
+ }
+ }
+
+private:
+ SlippyMap *m_normalMap;
+ SlippyMap *m_largeMap;
+ bool pressed;
+ bool snapped;
+ QPoint pressPos;
+ QPoint dragPos;
+ QBasicTimer tapTimer;
+ bool zoomed;
+ QPixmap zoomPixmap;
+ QPixmap maskPixmap;
+ bool invert;
+};
+
+class MapZoom : public QMainWindow
+{
+ Q_OBJECT
+
+private:
+ LightMaps *map;
+
+public:
+ MapZoom(): QMainWindow(0) {
+ map = new LightMaps(this);
+ setCentralWidget(map);
+ map->setFocus();
+
+ QAction *osloAction = new QAction("&Oslo", this);
+ QAction *berlinAction = new QAction("&Berlin", this);
+ QAction *jakartaAction = new QAction("&Jakarta", this);
+ QAction *nightModeAction = new QAction("Night Mode", this);
+ nightModeAction->setCheckable(true);
+ nightModeAction->setChecked(false);
+ QAction *osmAction = new QAction("About OpenStreetMap", this);
+ connect(osloAction, SIGNAL(triggered()), SLOT(chooseOslo()));
+ connect(berlinAction, SIGNAL(triggered()), SLOT(chooseBerlin()));
+ connect(jakartaAction, SIGNAL(triggered()), SLOT(chooseJakarta()));
+ connect(nightModeAction, SIGNAL(triggered()), map, SLOT(toggleNightMode()));
+ connect(osmAction, SIGNAL(triggered()), SLOT(aboutOsm()));
+
+#if defined(Q_OS_SYMBIAN)
+ menuBar()->addAction(osloAction);
+ menuBar()->addAction(berlinAction);
+ menuBar()->addAction(jakartaAction);
+ menuBar()->addAction(nightModeAction);
+ menuBar()->addAction(osmAction);
+#else
+ QMenu *menu = menuBar()->addMenu("&Options");
+ menu->addAction(osloAction);
+ menu->addAction(berlinAction);
+ menu->addAction(jakartaAction);
+ menu->addSeparator();
+ menu->addAction(nightModeAction);
+ menu->addAction(osmAction);
+#endif
+
+ QTimer::singleShot(0, this, SLOT(delayedInit()));
+ }
+
+private slots:
+
+ void delayedInit() {
+#if defined(Q_OS_SYMBIAN)
+ qt_SetDefaultIap();
+#endif
+ }
+
+ void chooseOslo() {
+ map->setCenter(59.9138204, 10.7387413);
+ }
+
+ void chooseBerlin() {
+ map->setCenter(52.52958999943302, 13.383053541183472);
+ }
+
+ void chooseJakarta() {
+ map->setCenter(-6.211544, 106.845172);
+ }
+
+ void aboutOsm() {
+ QDesktopServices::openUrl(QUrl("http://www.openstreetmap.org"));
+ }
+};
+
+
+#include "lightmaps.moc"
+
+int main(int argc, char **argv)
+{
+#if defined(Q_WS_X11)
+ QApplication::setGraphicsSystem("raster");
+#endif
+
+ QApplication app(argc, argv);
+ app.setApplicationName("LightMaps");
+
+ MapZoom w;
+ w.setWindowTitle("OpenStreetMap");
+#if defined(Q_OS_SYMBIAN)
+ w.showMaximized();
+#else
+ w.resize(600, 450);
+ w.show();
+#endif
+
+ return app.exec();
+}
diff --git a/demos/embedded/lightmaps/lightmaps.pro b/demos/embedded/lightmaps/lightmaps.pro
new file mode 100644
index 0000000..e57d15d
--- /dev/null
+++ b/demos/embedded/lightmaps/lightmaps.pro
@@ -0,0 +1,10 @@
+TEMPLATE = app
+SOURCES = lightmaps.cpp
+QT += network
+
+symbian {
+ HEADERS += $$QT_SOURCE_TREE/examples/network/ftp/sym_iap_util.h
+ LIBS += -lesock -lconnmon
+ TARGET.CAPABILITY = NetworkServices
+ TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
+}
diff --git a/demos/embedded/raycasting/raycasting.cpp b/demos/embedded/raycasting/raycasting.cpp
new file mode 100644
index 0000000..7d61c4f
--- /dev/null
+++ b/demos/embedded/raycasting/raycasting.cpp
@@ -0,0 +1,310 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore>
+#include <QtGui>
+
+#include <math.h>
+
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
+
+#define WORLD_SIZE 8
+int world_map[WORLD_SIZE][WORLD_SIZE] = {
+ { 1, 1, 1, 1, 6, 1, 1, 1 },
+ { 1, 0, 0, 1, 0, 0, 0, 7 },
+ { 1, 1, 0, 1, 0, 1, 1, 1 },
+ { 6, 0, 0, 0, 0, 0, 0, 3 },
+ { 1, 8, 8, 0, 8, 0, 8, 1 },
+ { 2, 2, 0, 0, 8, 8, 7, 1 },
+ { 3, 0, 0, 0, 0, 0, 0, 5 },
+ { 2, 2, 2, 2, 7, 4, 4, 4 },
+};
+
+#define TEXTURE_SIZE 64
+#define TEXTURE_BLOCK (TEXTURE_SIZE * TEXTURE_SIZE)
+
+class Raycasting: public QWidget
+{
+public:
+ Raycasting(QWidget *parent = 0)
+ : QWidget(parent)
+ , angle(0.5)
+ , playerPos(1.5, 1.5)
+ , angleDelta(0)
+ , moveDelta(0) {
+
+ // http://www.areyep.com/RIPandMCS-TextureLibrary.html
+ textureImg.load(":/textures.png");
+ textureImg = textureImg.convertToFormat(QImage::Format_ARGB32);
+ Q_ASSERT(textureImg.width() == TEXTURE_SIZE * 2);
+ Q_ASSERT(textureImg.bytesPerLine() == 4 * TEXTURE_SIZE * 2);
+ textureCount = textureImg.height() / TEXTURE_SIZE;
+
+ watch.start();
+ ticker.start(25, this);
+ setAttribute(Qt::WA_OpaquePaintEvent, true);
+ }
+
+ void updatePlayer() {
+ int interval = qBound(20, watch.elapsed(), 250);
+ watch.start();
+ angle += angleDelta * interval / 1000;
+ qreal step = moveDelta * interval / 1000;
+ qreal dx = cos(angle) * step;
+ qreal dy = sin(angle) * step;
+ QPointF pos = playerPos + 3 * QPointF(dx, dy);
+ int xi = static_cast<int>(pos.x());
+ int yi = static_cast<int>(pos.y());
+ if (world_map[yi][xi] == 0)
+ playerPos = playerPos + QPointF(dx, dy);
+ }
+
+ void showFps() {
+ static QTime frameTick;
+ static int totalFrame = 0;
+ if (!(totalFrame & 31)) {
+ int elapsed = frameTick.elapsed();
+ frameTick.start();
+ int fps = 32 * 1000 / (1 + elapsed);
+ setWindowTitle(QString("Raycasting (%1 FPS)").arg(fps));
+ }
+ totalFrame++;
+ }
+
+ void render() {
+
+ // setup the screen surface
+ if (buffer.size() != size())
+ buffer = QImage(size(), QImage::Format_ARGB32);
+ int bufw = buffer.width();
+ int bufh = buffer.height();
+
+ // we intentionally cheat here, to avoid detach
+ const uchar *ptr = buffer.bits();
+ QRgb *start = (QRgb*)(ptr);
+ QRgb stride = buffer.bytesPerLine() / 4;
+ QRgb *finish = start + stride * bufh;
+
+ // prepare the texture pointer
+ const uchar *src = textureImg.bits();
+ const QRgb *texsrc = reinterpret_cast<const QRgb*>(src);
+
+ // cast all rays here
+ qreal sina = sin(angle);
+ qreal cosa = cos(angle);
+ qreal u = cosa - sina;
+ qreal v = sina + cosa;
+ qreal du = 2 * sina / bufw;
+ qreal dv = -2 * cosa / bufw;
+
+ for (int ray = 0; ray < bufw; ++ray, u += du, v += dv) {
+ // everytime this ray advances 'u' units in x direction,
+ // it also advanced 'v' units in y direction
+ qreal uu = (u < 0) ? -u : u;
+ qreal vv = (v < 0) ? -v : v;
+ qreal duu = 1 / uu;
+ qreal dvv = 1 / vv;
+ int stepx = (u < 0) ? -1 : 1;
+ int stepy = (v < 0) ? -1 : 1;
+
+ // the cell in the map that we need to check
+ qreal px = playerPos.x();
+ qreal py = playerPos.y();
+ int mapx = static_cast<int>(px);
+ int mapy = static_cast<int>(py);
+
+ // the position and texture for the hit
+ int texture = 0;
+ qreal hitdist = 0.1;
+ qreal texofs = 0;
+ bool dark = false;
+
+ // first hit at constant x and constant y lines
+ qreal distx = (u > 0) ? (mapx + 1 - px) * duu : (px - mapx) * duu;
+ qreal disty = (v > 0) ? (mapy + 1 - py) * dvv : (py - mapy) * dvv;
+
+ // loop until we hit something
+ while (texture <= 0) {
+ if (distx > disty) {
+ // shorter distance to a hit in constant y line
+ hitdist = disty;
+ disty += dvv;
+ mapy += stepy;
+ texture = world_map[mapy][mapx];
+ if (texture > 0) {
+ dark = true;
+ if (stepy > 0) {
+ qreal ofs = px + u * (mapy - py) / v;
+ texofs = ofs - floor(ofs);
+ } else {
+ qreal ofs = px + u * (mapy + 1 - py) / v;
+ texofs = ofs - floor(ofs);
+ }
+ }
+ } else {
+ // shorter distance to a hit in constant x line
+ hitdist = distx;
+ distx += duu;
+ mapx += stepx;
+ texture = world_map[mapy][mapx];
+ if (texture > 0) {
+ if (stepx > 0) {
+ qreal ofs = py + v * (mapx - px) / u;
+ texofs = ofs - floor(ofs);
+ } else {
+ qreal ofs = py + v * (mapx + 1 - px) / u;
+ texofs = ceil(ofs) - ofs;
+ }
+ }
+ }
+ }
+
+ // get the texture, note that the texture image
+ // has two textures horizontally, "normal" vs "dark"
+ int col = static_cast<int>(texofs * TEXTURE_SIZE);
+ col = qBound(0, col, TEXTURE_SIZE - 1);
+ texture = (texture - 1) % textureCount;
+ const QRgb *tex = texsrc + TEXTURE_BLOCK * texture * 2 +
+ (TEXTURE_SIZE * 2 * col);
+ if (dark)
+ tex += TEXTURE_SIZE;
+
+ // start from the texture center (horizontally)
+ int h = static_cast<int>(bufw / hitdist / 2);
+ int dy = (TEXTURE_SIZE << 12) / h;
+ int p1 = ((TEXTURE_SIZE / 2) << 12) - dy;
+ int p2 = p1 + dy;
+
+ // start from the screen center (vertically)
+ // y1 will go up (decrease), y2 will go down (increase)
+ int y1 = bufh / 2;
+ int y2 = y1 + 1;
+ QRgb *pixel1 = start + y1 * stride + ray;
+ QRgb *pixel2 = pixel1 + stride;
+
+ // map the texture to the sliver
+ while (y1 >= 0 && y2 < bufh && p1 >= 0) {
+ *pixel1 = tex[p1 >> 12];
+ *pixel2 = tex[p2 >> 12];
+ p1 -= dy;
+ p2 += dy;
+ --y1;
+ ++y2;
+ pixel1 -= stride;
+ pixel2 += stride;
+ }
+
+ // ceiling and floor
+ for (; pixel1 > start; pixel1 -= stride)
+ *pixel1 = qRgb(0, 0, 0);
+ for (; pixel2 < finish; pixel2 += stride)
+ *pixel2 = qRgb(96, 96, 96);
+ }
+
+ update();
+ }
+
+protected:
+
+ void timerEvent(QTimerEvent*) {
+ updatePlayer();
+ render();
+ showFps();
+ }
+
+ void paintEvent(QPaintEvent *event) {
+ QPainter p(this);
+ p.drawImage(event->rect(), buffer, event->rect());
+ }
+
+ void keyPressEvent(QKeyEvent *event) {
+ event->accept();
+ if (event->key() == Qt::Key_Left)
+ angleDelta = 1.3 * M_PI;
+ if (event->key() == Qt::Key_Right)
+ angleDelta = -1.3 * M_PI;
+ if (event->key() == Qt::Key_Up)
+ moveDelta = 2.5;
+ if (event->key() == Qt::Key_Down)
+ moveDelta = -2.5;
+ }
+
+ void keyReleaseEvent(QKeyEvent *event) {
+ event->accept();
+ if (event->key() == Qt::Key_Left)
+ angleDelta = (angleDelta > 0) ? 0 : angleDelta;
+ if (event->key() == Qt::Key_Right)
+ angleDelta = (angleDelta < 0) ? 0 : angleDelta;
+ if (event->key() == Qt::Key_Up)
+ moveDelta = (moveDelta > 0) ? 0 : moveDelta;
+ if (event->key() == Qt::Key_Down)
+ moveDelta = (moveDelta < 0) ? 0 : moveDelta;
+ }
+
+private:
+ QTime watch;
+ QBasicTimer ticker;
+ QImage buffer;
+ qreal angle;
+ QPointF playerPos;
+ qreal angleDelta;
+ qreal moveDelta;
+ QImage textureImg;
+ int textureCount;
+};
+
+int main(int argc, char **argv)
+{
+ QApplication app(argc, argv);
+
+ Raycasting w;
+ w.setWindowTitle("Raycasting");
+#if defined(Q_OS_SYMBIAN)
+ w.showMaximized();
+#else
+ w.resize(640, 480);
+ w.show();
+#endif
+
+ return app.exec();
+}
diff --git a/demos/embedded/raycasting/raycasting.pro b/demos/embedded/raycasting/raycasting.pro
new file mode 100644
index 0000000..dae9412
--- /dev/null
+++ b/demos/embedded/raycasting/raycasting.pro
@@ -0,0 +1,3 @@
+TEMPLATE = app
+SOURCES = raycasting.cpp
+RESOURCES += raycasting.qrc
diff --git a/demos/embedded/raycasting/raycasting.qrc b/demos/embedded/raycasting/raycasting.qrc
new file mode 100644
index 0000000..974a060
--- /dev/null
+++ b/demos/embedded/raycasting/raycasting.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/" >
+ <file>textures.png</file>
+ </qresource>
+</RCC>
diff --git a/demos/embedded/raycasting/textures.png b/demos/embedded/raycasting/textures.png
new file mode 100644
index 0000000..839488b
--- /dev/null
+++ b/demos/embedded/raycasting/textures.png
Binary files differ
diff --git a/demos/embedded/styledemo/files/application.qss b/demos/embedded/styledemo/files/application.qss
index a632ad1..432fe6b 100644
--- a/demos/embedded/styledemo/files/application.qss
+++ b/demos/embedded/styledemo/files/application.qss
@@ -6,7 +6,7 @@ QWidget#StyleWidget
QLabel, QAbstractButton
{
- font: 18px bold;
+ font: bold;
color: beige;
}
diff --git a/demos/embedded/styledemo/files/blue.qss b/demos/embedded/styledemo/files/blue.qss
index aa87277..ac8671b 100644
--- a/demos/embedded/styledemo/files/blue.qss
+++ b/demos/embedded/styledemo/files/blue.qss
@@ -5,7 +5,7 @@
QLabel, QAbstractButton
{
- font: 10pt bold;
+ font: bold;
color: yellow;
}
@@ -28,7 +28,6 @@ QAbstractButton
border-style: solid;
border-radius: 5;
padding: 3px;
- qproperty-focusPolicy: NoFocus;
}
QAbstractButton:pressed
diff --git a/demos/embedded/styledemo/files/khaki.qss b/demos/embedded/styledemo/files/khaki.qss
index 9c0f77c..b0d4a0f 100644
--- a/demos/embedded/styledemo/files/khaki.qss
+++ b/demos/embedded/styledemo/files/khaki.qss
@@ -16,7 +16,6 @@ QPushButton, QToolButton {
padding: 3px;
/* min-width: 96px; */
/* min-height: 48px; */
- qproperty-focusPolicy: NoFocus
}
QPushButton:hover, QToolButton:hover {
@@ -30,7 +29,7 @@ QPushButton:pressed, QToolButton:pressed {
}
QLabel, QAbstractButton {
- font: italic 11pt "Times New Roman";
+ font: italic "Times New Roman";
}
QFrame, QLabel#title {
diff --git a/demos/embedded/styledemo/files/transparent.qss b/demos/embedded/styledemo/files/transparent.qss
index e3a9912..b38eb36 100644
--- a/demos/embedded/styledemo/files/transparent.qss
+++ b/demos/embedded/styledemo/files/transparent.qss
@@ -6,7 +6,6 @@ QWidget#StyleWidget
QLabel, QAbstractButton
{
- font: 13pt;
color: beige;
}
diff --git a/demos/embedded/styledemo/styledemo.pro b/demos/embedded/styledemo/styledemo.pro
index ee5e4d6..7107798 100644
--- a/demos/embedded/styledemo/styledemo.pro
+++ b/demos/embedded/styledemo/styledemo.pro
@@ -10,3 +10,8 @@ target.path = $$[QT_INSTALL_DEMOS]/embedded/styledemo
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro *.html
sources.path = $$[QT_INSTALL_DEMOS]/embedded/styledemo
INSTALLS += target sources
+
+symbian {
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+ TARGET.UID3 = 0xA000A63F
+}
diff --git a/demos/embedded/styledemo/stylewidget.ui b/demos/embedded/styledemo/stylewidget.ui
index 586faea..a084dde 100644
--- a/demos/embedded/styledemo/stylewidget.ui
+++ b/demos/embedded/styledemo/stylewidget.ui
@@ -1,135 +1,139 @@
-<ui version="4.0" >
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
<class>StyleWidget</class>
- <widget class="QWidget" name="StyleWidget" >
- <property name="geometry" >
+ <widget class="QWidget" name="StyleWidget">
+ <property name="geometry">
<rect>
<x>0</x>
<y>0</y>
- <width>339</width>
- <height>230</height>
+ <width>174</width>
+ <height>220</height>
</rect>
</property>
- <property name="windowTitle" >
+ <property name="windowTitle">
<string>Form</string>
</property>
- <layout class="QVBoxLayout" name="verticalLayout" >
- <property name="margin" >
- <number>3</number>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="spacing">
+ <number>4</number>
+ </property>
+ <property name="margin">
+ <number>4</number>
</property>
<item>
- <widget class="QGroupBox" name="groupBox" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Expanding" >
+ <widget class="QGroupBox" name="groupBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="title" >
+ <property name="title">
<string>Styles</string>
</property>
- <layout class="QHBoxLayout" >
- <property name="spacing" >
- <number>3</number>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <property name="margin">
+ <number>4</number>
</property>
- <property name="margin" >
- <number>3</number>
+ <property name="spacing">
+ <number>4</number>
</property>
- <item>
- <widget class="QPushButton" name="noStyle" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="MinimumExpanding" hsizetype="Minimum" >
+ <item row="0" column="0">
+ <widget class="QPushButton" name="transparentStyle">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="focusPolicy" >
- <enum>Qt::NoFocus</enum>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
</property>
- <property name="text" >
- <string>No-Style</string>
+ <property name="text">
+ <string>Transp.</string>
</property>
- <property name="checkable" >
+ <property name="checkable">
<bool>true</bool>
</property>
- <property name="checked" >
- <bool>true</bool>
+ <property name="checked">
+ <bool>false</bool>
</property>
- <property name="autoExclusive" >
+ <property name="autoExclusive">
<bool>true</bool>
</property>
</widget>
</item>
- <item>
- <widget class="QPushButton" name="blueStyle" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="MinimumExpanding" hsizetype="Minimum" >
+ <item row="2" column="0">
+ <widget class="QPushButton" name="blueStyle">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="focusPolicy" >
- <enum>Qt::NoFocus</enum>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
</property>
- <property name="text" >
+ <property name="text">
<string>Blue</string>
</property>
- <property name="checkable" >
+ <property name="checkable">
<bool>true</bool>
</property>
- <property name="checked" >
+ <property name="checked">
<bool>false</bool>
</property>
- <property name="autoExclusive" >
+ <property name="autoExclusive">
<bool>true</bool>
</property>
</widget>
</item>
- <item>
- <widget class="QPushButton" name="khakiStyle" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="MinimumExpanding" hsizetype="Minimum" >
+ <item row="0" column="1">
+ <widget class="QPushButton" name="khakiStyle">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="focusPolicy" >
- <enum>Qt::NoFocus</enum>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
</property>
- <property name="text" >
+ <property name="text">
<string>Khaki</string>
</property>
- <property name="checkable" >
+ <property name="checkable">
<bool>true</bool>
</property>
- <property name="checked" >
+ <property name="checked">
<bool>false</bool>
</property>
- <property name="autoExclusive" >
+ <property name="autoExclusive">
<bool>true</bool>
</property>
</widget>
</item>
- <item>
- <widget class="QPushButton" name="transparentStyle" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="MinimumExpanding" hsizetype="Minimum" >
+ <item row="2" column="1">
+ <widget class="QPushButton" name="noStyle">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="focusPolicy" >
- <enum>Qt::NoFocus</enum>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
</property>
- <property name="text" >
- <string>Transparent</string>
+ <property name="text">
+ <string>None</string>
</property>
- <property name="checkable" >
+ <property name="checkable">
<bool>true</bool>
</property>
- <property name="checked" >
- <bool>false</bool>
+ <property name="checked">
+ <bool>true</bool>
</property>
- <property name="autoExclusive" >
+ <property name="autoExclusive">
<bool>true</bool>
</property>
</widget>
@@ -138,11 +142,11 @@
</widget>
</item>
<item>
- <spacer name="verticalSpacer_3" >
- <property name="orientation" >
+ <spacer name="verticalSpacer_3">
+ <property name="orientation">
<enum>Qt::Vertical</enum>
</property>
- <property name="sizeHint" stdset="0" >
+ <property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
@@ -151,56 +155,56 @@
</spacer>
</item>
<item>
- <widget class="QFrame" name="frame" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="MinimumExpanding" hsizetype="Expanding" >
+ <widget class="QFrame" name="frame">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="frameShape" >
+ <property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
- <property name="frameShadow" >
+ <property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
- <layout class="QVBoxLayout" name="frameLayout" >
- <property name="margin" >
- <number>3</number>
+ <layout class="QVBoxLayout" name="frameLayout">
+ <property name="margin">
+ <number>0</number>
</property>
<item>
- <layout class="QHBoxLayout" name="horizontalLayout" >
+ <layout class="QHBoxLayout" name="horizontalLayout">
<item>
- <widget class="QLabel" name="label" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
+ <widget class="QLabel" name="label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="text" >
+ <property name="text">
<string>My Value is:</string>
</property>
- <property name="alignment" >
+ <property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
- <widget class="QSpinBox" name="spinBox" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
+ <widget class="QSpinBox" name="spinBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="focusPolicy" >
- <enum>Qt::NoFocus</enum>
+ <property name="focusPolicy">
+ <enum>Qt::WheelFocus</enum>
</property>
- <property name="alignment" >
+ <property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
- <property name="keyboardTracking" >
+ <property name="keyboardTracking">
<bool>false</bool>
</property>
</widget>
@@ -208,85 +212,88 @@
</layout>
</item>
<item>
- <layout class="QGridLayout" name="gridLayout" >
- <item row="0" column="0" >
- <widget class="QScrollBar" name="horizontalScrollBar" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
+ <layout class="QGridLayout" name="gridLayout">
+ <property name="spacing">
+ <number>4</number>
+ </property>
+ <item row="0" column="0">
+ <widget class="QScrollBar" name="horizontalScrollBar">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="minimumSize" >
+ <property name="minimumSize">
<size>
<width>0</width>
<height>24</height>
</size>
</property>
- <property name="orientation" >
+ <property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
- <item row="1" column="0" >
- <widget class="QPushButton" name="pushButton_2" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="MinimumExpanding" hsizetype="MinimumExpanding" >
+ <item row="1" column="0">
+ <widget class="QPushButton" name="pushButton_2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="focusPolicy" >
- <enum>Qt::NoFocus</enum>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
</property>
- <property name="text" >
- <string>Show Scroller</string>
+ <property name="text">
+ <string>Show</string>
</property>
- <property name="checkable" >
+ <property name="checkable">
<bool>true</bool>
</property>
- <property name="checked" >
+ <property name="checked">
<bool>true</bool>
</property>
- <property name="flat" >
+ <property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
- <item row="0" column="1" >
- <widget class="QScrollBar" name="horizontalScrollBar_2" >
- <property name="minimumSize" >
+ <item row="0" column="1">
+ <widget class="QScrollBar" name="horizontalScrollBar_2">
+ <property name="minimumSize">
<size>
<width>0</width>
<height>24</height>
</size>
</property>
- <property name="orientation" >
+ <property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
- <item row="1" column="1" >
- <widget class="QPushButton" name="pushButton" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="MinimumExpanding" hsizetype="MinimumExpanding" >
+ <item row="1" column="1">
+ <widget class="QPushButton" name="pushButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="focusPolicy" >
- <enum>Qt::NoFocus</enum>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
</property>
- <property name="text" >
- <string>Enable Scroller</string>
+ <property name="text">
+ <string>Enable</string>
</property>
- <property name="checkable" >
+ <property name="checkable">
<bool>true</bool>
</property>
- <property name="checked" >
+ <property name="checked">
<bool>true</bool>
</property>
- <property name="flat" >
+ <property name="flat">
<bool>false</bool>
</property>
</widget>
@@ -297,14 +304,14 @@
</widget>
</item>
<item>
- <spacer name="verticalSpacer" >
- <property name="orientation" >
+ <spacer name="verticalSpacer">
+ <property name="orientation">
<enum>Qt::Vertical</enum>
</property>
- <property name="sizeType" >
+ <property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
- <property name="sizeHint" stdset="0" >
+ <property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
@@ -313,13 +320,13 @@
</spacer>
</item>
<item>
- <layout class="QHBoxLayout" >
+ <layout class="QHBoxLayout">
<item>
<spacer>
- <property name="orientation" >
+ <property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
- <property name="sizeHint" stdset="0" >
+ <property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
@@ -328,11 +335,11 @@
</spacer>
</item>
<item>
- <widget class="QPushButton" name="close" >
- <property name="focusPolicy" >
- <enum>Qt::NoFocus</enum>
+ <widget class="QPushButton" name="close">
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
</property>
- <property name="text" >
+ <property name="text">
<string>Close</string>
</property>
</widget>
@@ -342,7 +349,7 @@
</layout>
</widget>
<resources>
- <include location="StyleDemo.qrc" />
+ <include location="StyleDemo.qrc"/>
</resources>
<connections>
<connection>
@@ -351,13 +358,13 @@
<receiver>horizontalScrollBar_2</receiver>
<slot>setValue(int)</slot>
<hints>
- <hint type="sourcelabel" >
- <x>134</x>
- <y>196</y>
+ <hint type="sourcelabel">
+ <x>84</x>
+ <y>147</y>
</hint>
- <hint type="destinationlabel" >
- <x>523</x>
- <y>193</y>
+ <hint type="destinationlabel">
+ <x>166</x>
+ <y>147</y>
</hint>
</hints>
</connection>
@@ -367,13 +374,13 @@
<receiver>horizontalScrollBar</receiver>
<slot>setValue(int)</slot>
<hints>
- <hint type="sourcelabel" >
- <x>577</x>
- <y>199</y>
+ <hint type="sourcelabel">
+ <x>166</x>
+ <y>147</y>
</hint>
- <hint type="destinationlabel" >
- <x>127</x>
- <y>207</y>
+ <hint type="destinationlabel">
+ <x>84</x>
+ <y>147</y>
</hint>
</hints>
</connection>
@@ -383,13 +390,13 @@
<receiver>horizontalScrollBar_2</receiver>
<slot>setEnabled(bool)</slot>
<hints>
- <hint type="sourcelabel" >
- <x>566</x>
- <y>241</y>
+ <hint type="sourcelabel">
+ <x>166</x>
+ <y>175</y>
</hint>
- <hint type="destinationlabel" >
- <x>492</x>
- <y>207</y>
+ <hint type="destinationlabel">
+ <x>166</x>
+ <y>147</y>
</hint>
</hints>
</connection>
@@ -399,13 +406,13 @@
<receiver>horizontalScrollBar</receiver>
<slot>setVisible(bool)</slot>
<hints>
- <hint type="sourcelabel" >
- <x>123</x>
- <y>239</y>
+ <hint type="sourcelabel">
+ <x>84</x>
+ <y>175</y>
</hint>
- <hint type="destinationlabel" >
- <x>123</x>
- <y>184</y>
+ <hint type="destinationlabel">
+ <x>84</x>
+ <y>147</y>
</hint>
</hints>
</connection>
@@ -415,13 +422,29 @@
<receiver>horizontalScrollBar_2</receiver>
<slot>setValue(int)</slot>
<hints>
- <hint type="sourcelabel" >
- <x>603</x>
- <y>136</y>
+ <hint type="sourcelabel">
+ <x>166</x>
+ <y>115</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>166</x>
+ <y>147</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>horizontalScrollBar_2</sender>
+ <signal>valueChanged(int)</signal>
+ <receiver>spinBox</receiver>
+ <slot>setValue(int)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>132</x>
+ <y>132</y>
</hint>
- <hint type="destinationlabel" >
- <x>575</x>
- <y>199</y>
+ <hint type="destinationlabel">
+ <x>135</x>
+ <y>110</y>
</hint>
</hints>
</connection>
diff --git a/demos/embedded/weatherinfo/icons/README.txt b/demos/embedded/weatherinfo/icons/README.txt
new file mode 100644
index 0000000..d384153
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/README.txt
@@ -0,0 +1,5 @@
+The scalable icons are from:
+
+http://tango.freedesktop.org/Tango_Icon_Library
+http://darkobra.deviantart.com/art/Tango-Weather-Icon-Pack-98024429
+
diff --git a/demos/embedded/weatherinfo/icons/weather-few-clouds.svg b/demos/embedded/weatherinfo/icons/weather-few-clouds.svg
new file mode 100644
index 0000000..57d45e9
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-few-clouds.svg
@@ -0,0 +1,738 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg1306"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docbase="/home/garrett/Source/tango-icon-theme/scalable/status"
+ sodipodi:docname="weather-few-clouds.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs1308">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 24 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="48 : 24 : 1"
+ inkscape:persp3d-origin="24 : 16 : 1"
+ id="perspective108" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient6724"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient6722"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient6720"
+ gradientUnits="userSpaceOnUse"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient6718"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient6716"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient6714"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient6712"
+ gradientUnits="userSpaceOnUse"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient6839"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6549">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6551" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6553" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient6837"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6527">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6530" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6532" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient6835"
+ gradientUnits="userSpaceOnUse"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6538">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6540" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6542" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient6833"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6513">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6515" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6517" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient6831"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6497">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6499" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6501" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient6829"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6470">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6472" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6474" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient6827"
+ gradientUnits="userSpaceOnUse"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ id="linearGradient4083">
+ <stop
+ id="stop4085"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="0.75"
+ id="stop4089" />
+ <stop
+ id="stop4087"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4032">
+ <stop
+ id="stop4034"
+ offset="0"
+ style="stop-color:#fff7c2;stop-opacity:0.63829786" />
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:0.18348624;"
+ offset="0.59394139"
+ id="stop4036" />
+ <stop
+ id="stop4038"
+ offset="0.83850551"
+ style="stop-color:#fcaf3e;stop-opacity:0.50458717;" />
+ <stop
+ id="stop4040"
+ offset="1"
+ style="stop-color:#fcaf3e;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4026">
+ <stop
+ id="stop4028"
+ offset="0"
+ style="stop-color:#fff9c6;stop-opacity:1" />
+ <stop
+ style="stop-color:#fff28c;stop-opacity:1;"
+ offset="0.54166669"
+ id="stop4042" />
+ <stop
+ id="stop4030"
+ offset="1"
+ style="stop-color:#ffea85;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4026"
+ id="linearGradient3168"
+ gradientUnits="userSpaceOnUse"
+ x1="-28.968945"
+ y1="-25.326815"
+ x2="-37.19698"
+ y2="-9.5590506" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4032"
+ id="radialGradient4020"
+ cx="-33.519073"
+ cy="-22.113297"
+ fx="-33.519073"
+ fy="-22.113297"
+ r="9.5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.487739,1.292402,-1.10267,0.497242,-41.77393,32.41492)" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4083"
+ id="radialGradient4081"
+ cx="23.99999"
+ cy="23.381506"
+ fx="23.99999"
+ fy="23.381506"
+ r="19.141981"
+ gradientTransform="matrix(1.006701,2.235326e-16,-2.23715e-16,1.007522,-0.160816,0.426981)"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="10.54135"
+ inkscape:cx="8.0181254"
+ inkscape:cy="24.950603"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="859"
+ inkscape:window-height="818"
+ inkscape:window-x="0"
+ inkscape:window-y="30"
+ inkscape:showpageshadow="false" />
+ <metadata
+ id="metadata1311">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>weather-clear</dc:title>
+ <dc:date>January 2006</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Ryan Collier (pseudo)</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:publisher>
+ <cc:Agent>
+ <dc:title>http://www.tango-project.org</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:source>http://www.pseudocode.org</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>weather</rdf:li>
+ <rdf:li>applet</rdf:li>
+ <rdf:li>notification</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Garrett LeSage</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/publicdomain/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <g
+ id="g6783"
+ transform="translate(-263.99,459.9855)">
+ <path
+ sodipodi:nodetypes="ccsscsssscsscc"
+ id="path6785"
+ d="M 280.50000,-445.50000 C 278.22917,-445.50000 276.39009,-443.94972 275.78125,-441.87500 C 275.08802,-442.23883 274.33674,-442.50000 273.50000,-442.50000 C 270.74000,-442.50000 268.49999,-440.26001 268.50000,-437.50000 C 268.50000,-436.92107 268.66252,-436.39230 268.84375,-435.87500 C 267.47028,-435.10426 266.50000,-433.68600 266.50000,-432.00000 C 266.50000,-429.51600 268.51600,-427.49999 271.00000,-427.50000 C 271.17713,-427.50000 289.82287,-427.50000 290.00000,-427.50000 C 292.48399,-427.50000 294.50000,-429.51600 294.50000,-432.00000 C 294.50000,-433.68600 293.52972,-435.10426 292.15625,-435.87500 C 292.33749,-436.39229 292.50000,-436.92108 292.50000,-437.50000 C 292.50000,-440.26000 290.26000,-442.49999 287.50000,-442.50000 C 286.66326,-442.50000 285.91198,-442.23883 285.21875,-441.87500 C 284.60991,-443.94972 282.77083,-445.50000 280.50000,-445.50000 z "
+ style="fill:#c4c5c2;fill-opacity:1.0000000;stroke:#888a85;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="ccsscsssscsscc"
+ id="path6787"
+ d="M 280.50000,-445.00000 C 278.31028,-445.00000 276.77640,-443.66423 276.10445,-441.15648 C 275.43599,-441.50010 274.55686,-441.98983 273.75000,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.11240,-434.89433 267.00000,-433.73178 267.00000,-432.24973 C 267.00000,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294.00000,-429.90368 294.00000,-432.24973 C 294.00000,-433.84210 292.88760,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.05100 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.60820,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445.00000 280.50000,-445.00000 z "
+ style="opacity:1.0000000;fill:url(#linearGradient6827);fill-opacity:1.0000000;stroke:none;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <g
+ id="g6789">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6791"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient6829);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6793"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" />
+ </g>
+ <rect
+ y="-438.00000"
+ x="271.00000"
+ height="9.0000000"
+ width="20.000000"
+ id="rect6795"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830195,-35.68869)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path6797"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <g
+ id="g6799">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6801"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19811,24.86321)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient6831);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6803"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19818,24.86331)" />
+ </g>
+ <g
+ id="g6805">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6807"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient6833);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6809"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" />
+ </g>
+ <g
+ transform="translate(-1.000000,0.000000)"
+ id="g6811">
+ <path
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 280.46875,-440.96875 C 276.88937,-440.96875 274.00000,-438.04812 274.00000,-434.46875 C 274.00000,-432.09807 275.34943,-430.13096 277.25000,-429.00000 L 283.71875,-429.00000 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.50000 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z "
+ id="path6813" />
+ <path
+ style="opacity:1.0000000;fill:url(#linearGradient6835);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 280.50000,-441.00000 C 276.91200,-441.00000 274.00000,-438.08799 274.00000,-434.50000 C 274.00000,-432.12360 275.34485,-430.13368 277.25000,-429.00000 L 283.75000,-429.00000 C 285.65515,-430.13368 287.00000,-432.12360 287.00000,-434.50000 C 287.00000,-438.08800 284.08800,-440.99999 280.50000,-441.00000 z "
+ id="path6815" />
+ </g>
+ <path
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830296,-35.68884)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path6817"
+ style="opacity:1.0000000;fill:url(#linearGradient6837);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:nodetypes="ccss"
+ id="path6819"
+ d="M 292.95640,-437.33396 C 292.95487,-434.64940 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.95640,-437.33396 292.95640,-437.33396 z "
+ style="fill:#888a85;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
+ <g
+ transform="matrix(1.142857,0.000000,0.000000,1.142857,-28.57139,67.00008)"
+ id="g6821">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6823"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient6839);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6825"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" />
+ </g>
+ </g>
+ <g
+ id="g3936">
+ <g
+ style="opacity:0.7"
+ id="g4091">
+ <path
+ style="fill:#fce94f;fill-opacity:1;stroke:#fcaf3e;stroke-width:0.73732895;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 24 2.5 L 21.625 9.1875 C 22.399034 9.0641318 23.191406 9 24 9 C 24.808594 9 25.600966 9.0641317 26.375 9.1875 L 24 2.5 z M 8.8125 8.78125 L 11.84375 15.21875 C 12.779034 13.928569 13.928569 12.779034 15.21875 11.84375 L 8.8125 8.78125 z M 39.21875 8.78125 L 32.78125 11.84375 C 34.071431 12.779034 35.220966 13.928569 36.15625 15.21875 L 39.21875 8.78125 z M 9.1875 21.59375 L 2.5 23.96875 L 9.1875 26.34375 C 9.0673373 25.57952 9 24.797813 9 24 C 9 23.180625 9.0608858 22.377571 9.1875 21.59375 z M 38.8125 21.625 C 38.935868 22.399034 39 23.191406 39 24 C 39 24.808594 38.935868 25.600966 38.8125 26.375 L 45.5 24 L 38.8125 21.625 z M 11.84375 32.78125 L 8.8125 39.1875 L 15.21875 36.15625 C 13.928569 35.220966 12.779034 34.071431 11.84375 32.78125 z M 36.15625 32.78125 C 35.229789 34.05926 34.087617 35.194799 32.8125 36.125 L 39.21875 39.1875 L 36.15625 32.78125 z M 21.625 38.8125 L 24 45.5 L 26.375 38.8125 C 25.600966 38.935868 24.808594 39 24 39 C 23.191406 39 22.399034 38.935868 21.625 38.8125 z "
+ id="path7492" />
+ <path
+ style="fill:none;fill-opacity:1;stroke:url(#radialGradient4081);stroke-width:0.84646249;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 24 5.25 L 22.65625 9.0625 C 23.098888 9.0231486 23.547187 9 24 9 C 24.452813 9 24.901112 9.0231486 25.34375 9.0625 L 24 5.25 z M 10.78125 10.75 L 12.5 14.375 C 13.071538 13.694089 13.724004 13.038745 14.40625 12.46875 L 10.78125 10.75 z M 37.25 10.75 L 33.625 12.46875 C 34.304675 13.038189 34.961811 13.695325 35.53125 14.375 L 37.25 10.75 z M 9.0625 22.625 L 5.28125 23.96875 L 9.0625 25.3125 C 9.024981 24.880146 9 24.442031 9 24 C 9 23.536406 9.0212735 23.077908 9.0625 22.625 z M 38.9375 22.65625 C 38.976851 23.098888 39 23.547187 39 24 C 39 24.452813 38.976851 24.901112 38.9375 25.34375 L 42.71875 24 L 38.9375 22.65625 z M 35.53125 33.59375 C 34.958293 34.27954 34.309985 34.957363 33.625 35.53125 L 37.25 37.25 L 35.53125 33.59375 z M 12.5 33.625 L 10.78125 37.21875 L 14.375 35.5 C 13.702932 34.935884 13.064116 34.297068 12.5 33.625 z M 22.65625 38.9375 L 24 42.71875 L 25.34375 38.9375 C 24.901112 38.976851 24.452813 39 24 39 C 23.547187 39 23.098888 38.976851 22.65625 38.9375 z "
+ id="path7494" />
+ </g>
+ <g
+ id="g4046">
+ <g
+ id="g3931">
+ <path
+ inkscape:r_cy="true"
+ inkscape:r_cx="true"
+ transform="matrix(0.778062,-1.061285,1.061287,0.778062,67.47952,3.641324)"
+ d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z"
+ sodipodi:ry="9.5"
+ sodipodi:rx="9.5"
+ sodipodi:cy="-17.5"
+ sodipodi:cx="-32"
+ id="path7498"
+ style="fill:#ffee54;fill-opacity:1;stroke:#fcaf3e;stroke-width:0.75991178;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ inkscape:r_cy="true"
+ inkscape:r_cx="true"
+ transform="matrix(1.244257,-0.167707,0.216642,1.251844,67.61648,40.527)"
+ d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z"
+ sodipodi:ry="9.5"
+ sodipodi:rx="9.5"
+ sodipodi:cy="-17.5"
+ sodipodi:cx="-32"
+ id="path7500"
+ style="fill:url(#radialGradient4020);fill-opacity:1;stroke:none;stroke-width:1.01737845;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ inkscape:r_cy="true"
+ inkscape:r_cx="true"
+ transform="matrix(0.715791,-0.976349,0.97635,0.715792,64.00044,5.269544)"
+ d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z"
+ sodipodi:ry="9.5"
+ sodipodi:rx="9.5"
+ sodipodi:cy="-17.5"
+ sodipodi:cx="-32"
+ id="path7502"
+ style="fill:none;fill-opacity:1;stroke:url(#linearGradient3168);stroke-width:0.82601947;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:type="arc" />
+ </g>
+ </g>
+ </g>
+ <g
+ id="g6668"
+ transform="translate(-248.99,467.9855)">
+ <path
+ sodipodi:nodetypes="ccsscsssscsscc"
+ id="path6670"
+ d="M 280.50000,-445.50000 C 278.22917,-445.50000 276.39009,-443.94972 275.78125,-441.87500 C 275.08802,-442.23883 274.33674,-442.50000 273.50000,-442.50000 C 270.74000,-442.50000 268.49999,-440.26001 268.50000,-437.50000 C 268.50000,-436.92107 268.66252,-436.39230 268.84375,-435.87500 C 267.47028,-435.10426 266.50000,-433.68600 266.50000,-432.00000 C 266.50000,-429.51600 268.51600,-427.49999 271.00000,-427.50000 C 271.17713,-427.50000 289.82287,-427.50000 290.00000,-427.50000 C 292.48399,-427.50000 294.50000,-429.51600 294.50000,-432.00000 C 294.50000,-433.68600 293.52972,-435.10426 292.15625,-435.87500 C 292.33749,-436.39229 292.50000,-436.92108 292.50000,-437.50000 C 292.50000,-440.26000 290.26000,-442.49999 287.50000,-442.50000 C 286.66326,-442.50000 285.91198,-442.23883 285.21875,-441.87500 C 284.60991,-443.94972 282.77083,-445.50000 280.50000,-445.50000 z "
+ style="fill:#c4c5c2;fill-opacity:1.0000000;stroke:#888a85;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="ccsscsssscsscc"
+ id="path6672"
+ d="M 280.50000,-445.00000 C 278.31028,-445.00000 276.77640,-443.66423 276.10445,-441.15648 C 275.43599,-441.50010 274.55686,-441.98983 273.75000,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.11240,-434.89433 267.00000,-433.73178 267.00000,-432.24973 C 267.00000,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294.00000,-429.90368 294.00000,-432.24973 C 294.00000,-433.84210 292.88760,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.05100 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.60820,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445.00000 280.50000,-445.00000 z "
+ style="opacity:1.0000000;fill:url(#linearGradient6712);fill-opacity:1.0000000;stroke:none;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <g
+ id="g6674">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6676"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient6714);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6678"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" />
+ </g>
+ <rect
+ y="-438.00000"
+ x="271.00000"
+ height="9.0000000"
+ width="20.000000"
+ id="rect6680"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830195,-35.68869)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path6682"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <g
+ id="g6684">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6686"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19811,24.86321)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient6716);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6688"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19818,24.86331)" />
+ </g>
+ <g
+ id="g6690">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6692"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient6718);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6694"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" />
+ </g>
+ <g
+ transform="translate(-1.000000,0.000000)"
+ id="g6696">
+ <path
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 280.46875,-440.96875 C 276.88937,-440.96875 274.00000,-438.04812 274.00000,-434.46875 C 274.00000,-432.09807 275.34943,-430.13096 277.25000,-429.00000 L 283.71875,-429.00000 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.50000 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z "
+ id="path6698" />
+ <path
+ style="opacity:1.0000000;fill:url(#linearGradient6720);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 280.50000,-441.00000 C 276.91200,-441.00000 274.00000,-438.08799 274.00000,-434.50000 C 274.00000,-432.12360 275.34485,-430.13368 277.25000,-429.00000 L 283.75000,-429.00000 C 285.65515,-430.13368 287.00000,-432.12360 287.00000,-434.50000 C 287.00000,-438.08800 284.08800,-440.99999 280.50000,-441.00000 z "
+ id="path6700" />
+ </g>
+ <path
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830296,-35.68884)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path6702"
+ style="opacity:1.0000000;fill:url(#linearGradient6722);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:nodetypes="ccss"
+ id="path6704"
+ d="M 292.95640,-437.33396 C 292.95487,-434.64940 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.95640,-437.33396 292.95640,-437.33396 z "
+ style="fill:#888a85;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
+ <g
+ transform="matrix(1.142857,0.000000,0.000000,1.142857,-28.57139,67.00008)"
+ id="g6706">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6708"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient6724);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6710"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/icons/weather-fog.svg b/demos/embedded/weatherinfo/icons/weather-fog.svg
new file mode 100644
index 0000000..a9a4ca8
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-fog.svg
@@ -0,0 +1,1585 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48"
+ height="48"
+ id="svg2670"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ version="1.0"
+ sodipodi:docname="weather-fog.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs2672">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6549">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6551" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6553" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6527">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6530" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6532" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6538">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6540" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6542" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6513">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6515" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6517" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6497">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6499" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6501" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6470">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6472" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6474" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient7834">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop7836" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop7838" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8397">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8400" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8402" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8315">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8317" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8319" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8381">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8383" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8385" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8331">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8333" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8335" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient8302">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8304" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8306" />
+ </linearGradient>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2678" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8302"
+ id="linearGradient4844"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(69.00259,102)"
+ x1="228.50261"
+ y1="-392.30591"
+ x2="278.91510"
+ y2="-375.37952" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8331"
+ id="linearGradient4846"
+ gradientUnits="userSpaceOnUse"
+ x1="240.07379"
+ y1="-393.40720"
+ x2="245.82706"
+ y2="-388.55029" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8381"
+ id="linearGradient4848"
+ gradientUnits="userSpaceOnUse"
+ x1="246.74042"
+ y1="-391.31381"
+ x2="252.69785"
+ y2="-385.35165" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8315"
+ id="linearGradient4850"
+ gradientUnits="userSpaceOnUse"
+ x1="230.87598"
+ y1="-390.43951"
+ x2="235.25652"
+ y2="-386.95901" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8397"
+ id="linearGradient4852"
+ gradientUnits="userSpaceOnUse"
+ x1="238.00478"
+ y1="-388.47476"
+ x2="245.65462"
+ y2="-382.64539" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7834"
+ id="linearGradient4854"
+ gradientUnits="userSpaceOnUse"
+ x1="-156.29044"
+ y1="-100.53421"
+ x2="-153.09810"
+ y2="-96.544556" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient4856"
+ gradientUnits="userSpaceOnUse"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient4858"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient4860"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient4862"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient4864"
+ gradientUnits="userSpaceOnUse"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient4866"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient4868"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient4870"
+ gradientUnits="userSpaceOnUse"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient4872"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient4874"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient4876"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient4878"
+ gradientUnits="userSpaceOnUse"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient4880"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient4882"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8302"
+ id="linearGradient5018"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(69.00259,102)"
+ x1="228.50261"
+ y1="-392.30591"
+ x2="278.91510"
+ y2="-375.37952" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8331"
+ id="linearGradient5020"
+ gradientUnits="userSpaceOnUse"
+ x1="240.07379"
+ y1="-393.40720"
+ x2="245.82706"
+ y2="-388.55029" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8381"
+ id="linearGradient5022"
+ gradientUnits="userSpaceOnUse"
+ x1="246.74042"
+ y1="-391.31381"
+ x2="252.69785"
+ y2="-385.35165" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8315"
+ id="linearGradient5024"
+ gradientUnits="userSpaceOnUse"
+ x1="230.87598"
+ y1="-390.43951"
+ x2="235.25652"
+ y2="-386.95901" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8397"
+ id="linearGradient5026"
+ gradientUnits="userSpaceOnUse"
+ x1="238.00478"
+ y1="-388.47476"
+ x2="245.65462"
+ y2="-382.64539" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7834"
+ id="linearGradient5028"
+ gradientUnits="userSpaceOnUse"
+ x1="-156.29044"
+ y1="-100.53421"
+ x2="-153.09810"
+ y2="-96.544556" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient5030"
+ gradientUnits="userSpaceOnUse"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient5032"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient5034"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient5036"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient5038"
+ gradientUnits="userSpaceOnUse"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient5040"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient5042"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient5044"
+ gradientUnits="userSpaceOnUse"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient5046"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient5048"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient5050"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient5052"
+ gradientUnits="userSpaceOnUse"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient5054"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient5056"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8302"
+ id="linearGradient5119"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-245.83994,432.62036)"
+ x1="228.50261"
+ y1="-392.30591"
+ x2="278.91510"
+ y2="-375.37952" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient5122"
+ gradientUnits="userSpaceOnUse"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient5124"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient5126"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient5128"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient5130"
+ gradientUnits="userSpaceOnUse"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient5132"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient5134"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient5156"
+ gradientUnits="userSpaceOnUse"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991"
+ gradientTransform="translate(-276.83994,492.62036)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient5159"
+ gradientUnits="userSpaceOnUse"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient5161"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient5163"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient5165"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient5167"
+ gradientUnits="userSpaceOnUse"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient5169"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient5171"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient5193"
+ gradientUnits="userSpaceOnUse"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991"
+ gradientTransform="translate(-291.84253,488.62036)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient5221"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-291.84253,488.62036)"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8302"
+ id="linearGradient5298"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(69.00259,102)"
+ x1="228.50261"
+ y1="-392.30591"
+ x2="278.91510"
+ y2="-375.37952" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8331"
+ id="linearGradient5300"
+ gradientUnits="userSpaceOnUse"
+ x1="240.07379"
+ y1="-393.40720"
+ x2="245.82706"
+ y2="-388.55029" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8381"
+ id="linearGradient5302"
+ gradientUnits="userSpaceOnUse"
+ x1="246.74042"
+ y1="-391.31381"
+ x2="252.69785"
+ y2="-385.35165" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8315"
+ id="linearGradient5304"
+ gradientUnits="userSpaceOnUse"
+ x1="230.87598"
+ y1="-390.43951"
+ x2="235.25652"
+ y2="-386.95901" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8397"
+ id="linearGradient5306"
+ gradientUnits="userSpaceOnUse"
+ x1="238.00478"
+ y1="-388.47476"
+ x2="245.65462"
+ y2="-382.64539" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7834"
+ id="linearGradient5308"
+ gradientUnits="userSpaceOnUse"
+ x1="-156.29044"
+ y1="-100.53421"
+ x2="-153.09810"
+ y2="-96.544556" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient5310"
+ gradientUnits="userSpaceOnUse"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient5312"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient5314"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient5316"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient5318"
+ gradientUnits="userSpaceOnUse"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient5320"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient5322"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient5324"
+ gradientUnits="userSpaceOnUse"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient5326"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient5328"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient5330"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient5332"
+ gradientUnits="userSpaceOnUse"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient5334"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient5336"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8302"
+ id="linearGradient5399"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-217.99871,406.5)"
+ x1="228.50261"
+ y1="-392.30591"
+ x2="278.91510"
+ y2="-375.37952" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8302"
+ id="linearGradient5432"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-245.83994,432.62036)"
+ x1="228.50261"
+ y1="-392.30591"
+ x2="278.91510"
+ y2="-375.37952" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient5434"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-276.83994,492.62036)"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient5436"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-291.84253,488.62036)"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8302"
+ id="linearGradient5515"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-217.99871,406.5)"
+ x1="228.50261"
+ y1="-392.30591"
+ x2="278.91510"
+ y2="-375.37952" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8331"
+ id="linearGradient5517"
+ gradientUnits="userSpaceOnUse"
+ x1="240.07379"
+ y1="-393.40720"
+ x2="245.82706"
+ y2="-388.55029" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8381"
+ id="linearGradient5519"
+ gradientUnits="userSpaceOnUse"
+ x1="246.74042"
+ y1="-391.31381"
+ x2="252.69785"
+ y2="-385.35165" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8315"
+ id="linearGradient5521"
+ gradientUnits="userSpaceOnUse"
+ x1="230.87598"
+ y1="-390.43951"
+ x2="235.25652"
+ y2="-386.95901" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8397"
+ id="linearGradient5523"
+ gradientUnits="userSpaceOnUse"
+ x1="238.00478"
+ y1="-388.47476"
+ x2="245.65462"
+ y2="-382.64539" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7834"
+ id="linearGradient5525"
+ gradientUnits="userSpaceOnUse"
+ x1="-156.29044"
+ y1="-100.53421"
+ x2="-153.09810"
+ y2="-96.544556" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient5527"
+ gradientUnits="userSpaceOnUse"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient5529"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient5531"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient5533"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient5535"
+ gradientUnits="userSpaceOnUse"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient5537"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient5539"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient5541"
+ gradientUnits="userSpaceOnUse"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient5543"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient5545"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient5547"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient5549"
+ gradientUnits="userSpaceOnUse"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient5551"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient5553"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient5689"
+ gradientUnits="userSpaceOnUse"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient5691"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient5693"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient5695"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient5697"
+ gradientUnits="userSpaceOnUse"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient5699"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient5701"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient5703"
+ gradientUnits="userSpaceOnUse"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient5705"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient5707"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient5709"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient5711"
+ gradientUnits="userSpaceOnUse"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient5713"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient5715"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="16.270833"
+ inkscape:cx="12.725406"
+ inkscape:cy="24"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1272"
+ inkscape:window-height="965"
+ inkscape:window-x="0"
+ inkscape:window-y="0" />
+ <metadata
+ id="metadata2675">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <g
+ id="g5641"
+ transform="translate(5e-6,-4)">
+ <g
+ style="opacity:0.45"
+ transform="translate(-248.99871,466.5)"
+ id="g7794">
+ <path
+ style="fill:#c4c5c2;fill-opacity:1;stroke:#888a85;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 280.5,-445.5 C 278.22917,-445.5 276.39009,-443.94972 275.78125,-441.875 C 275.08802,-442.23883 274.33674,-442.5 273.5,-442.5 C 270.74,-442.5 268.49999,-440.26001 268.5,-437.5 C 268.5,-436.92107 268.66252,-436.3923 268.84375,-435.875 C 267.47028,-435.10426 266.5,-433.686 266.5,-432 C 266.5,-429.516 268.516,-427.49999 271,-427.5 C 271.17713,-427.5 289.82287,-427.5 290,-427.5 C 292.48399,-427.5 294.5,-429.516 294.5,-432 C 294.5,-433.686 293.52972,-435.10426 292.15625,-435.875 C 292.33749,-436.39229 292.5,-436.92108 292.5,-437.5 C 292.5,-440.26 290.26,-442.49999 287.5,-442.5 C 286.66326,-442.5 285.91198,-442.23883 285.21875,-441.875 C 284.60991,-443.94972 282.77083,-445.5 280.5,-445.5 z"
+ id="path7796"
+ sodipodi:nodetypes="ccsscsssscsscc" />
+ <path
+ style="opacity:1;fill:url(#linearGradient5689);fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 280.5,-445 C 278.31028,-445 276.7764,-443.66423 276.10445,-441.15648 C 275.43599,-441.5001 274.55686,-441.98983 273.75,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.1124,-434.89433 267,-433.73178 267,-432.24973 C 267,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294,-429.90368 294,-432.24973 C 294,-433.8421 292.8876,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.051 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.6082,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445 280.5,-445 z"
+ id="path7798"
+ sodipodi:nodetypes="ccsscsssscsscc" />
+ <g
+ id="g7800">
+ <path
+ transform="matrix(1.056604,0,0,1.056604,-24.19818,21.86331)"
+ d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z"
+ sodipodi:ry="3.3125"
+ sodipodi:rx="3.3125"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.375"
+ id="path7802"
+ style="opacity:1;fill:#c4c5c2;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0,0,1.056604,-24.19818,21.86331)"
+ d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z"
+ sodipodi:ry="3.3125"
+ sodipodi:rx="3.3125"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.375"
+ id="path7804"
+ style="opacity:1;fill:url(#linearGradient5691);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ </g>
+ <rect
+ style="opacity:1;fill:#c4c5c2;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect7806"
+ width="20"
+ height="9"
+ x="271"
+ y="-438" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#c4c5c2;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path7808"
+ sodipodi:cx="288.375"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125"
+ sodipodi:ry="3.3125"
+ d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z"
+ transform="matrix(0.90566,0,0,0.90566,9.830195,-35.68869)" />
+ <g
+ id="g7810">
+ <path
+ transform="matrix(1.056604,0,0,1.056604,-17.19811,24.86321)"
+ d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z"
+ sodipodi:ry="3.3125"
+ sodipodi:rx="3.3125"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.375"
+ id="path7812"
+ style="opacity:1;fill:#c4c5c2;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0,0,1.056604,-17.19818,24.86331)"
+ d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z"
+ sodipodi:ry="3.3125"
+ sodipodi:rx="3.3125"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.375"
+ id="path7814"
+ style="opacity:1;fill:url(#linearGradient5693);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g7816">
+ <path
+ transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)"
+ d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z"
+ sodipodi:ry="3.3125"
+ sodipodi:rx="3.3125"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.375"
+ id="path7818"
+ style="opacity:1;fill:#c4c5c2;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)"
+ d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z"
+ sodipodi:ry="3.3125"
+ sodipodi:rx="3.3125"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.375"
+ id="path7820"
+ style="opacity:1;fill:url(#linearGradient5695);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g7822"
+ transform="translate(-1,0)">
+ <path
+ id="path7824"
+ d="M 280.46875,-440.96875 C 276.88937,-440.96875 274,-438.04812 274,-434.46875 C 274,-432.09807 275.34943,-430.13096 277.25,-429 L 283.71875,-429 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.5 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z"
+ style="opacity:1;fill:#c4c5c2;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ id="path7826"
+ d="M 280.5,-441 C 276.912,-441 274,-438.08799 274,-434.5 C 274,-432.1236 275.34485,-430.13368 277.25,-429 L 283.75,-429 C 285.65515,-430.13368 287,-432.1236 287,-434.5 C 287,-438.088 284.088,-440.99999 280.5,-441 z"
+ style="opacity:1;fill:url(#linearGradient5697);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ </g>
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:url(#linearGradient5699);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path7828"
+ sodipodi:cx="288.375"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125"
+ sodipodi:ry="3.3125"
+ d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z"
+ transform="matrix(0.90566,0,0,0.90566,9.830296,-35.68884)" />
+ <path
+ style="fill:#888a85;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 292.9564,-437.33396 C 292.95487,-434.6494 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.9564,-437.33396 292.9564,-437.33396 z"
+ id="path7830"
+ sodipodi:nodetypes="ccss" />
+ <g
+ id="g7832"
+ transform="matrix(1.142857,0,0,1.142857,-28.57139,67.00008)">
+ <path
+ transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)"
+ d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z"
+ sodipodi:ry="3.3125"
+ sodipodi:rx="3.3125"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.375"
+ id="path7834"
+ style="opacity:1;fill:#c4c5c2;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)"
+ d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z"
+ sodipodi:ry="3.3125"
+ sodipodi:rx="3.3125"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.375"
+ id="path7836"
+ style="opacity:1;fill:url(#linearGradient5701);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ </g>
+ </g>
+ <path
+ sodipodi:nodetypes="ccsscsssscsscc"
+ id="path4934"
+ d="M 31.501294,21.49982 C 29.311574,21.49982 27.777694,22.83559 27.105744,25.34334 C 26.437284,24.99972 25.558154,24.50999 24.751294,24.50999 C 22.034784,24.50999 19.996154,26.44881 19.996164,29.05553 C 19.996164,29.6023 20.263374,30.38897 20.438124,30.87754 C 19.113694,31.60549 18.001294,32.76804 18.001294,34.25009 C 18.001294,36.59614 19.547464,38.50018 22.340574,38.50018 C 22.511384,38.50018 40.491214,38.50018 40.662014,38.50018 C 43.433024,38.50018 45.001294,36.59614 45.001294,34.25009 C 45.001294,32.65772 43.888894,31.5834 42.564464,30.85545 C 42.739224,30.36689 43.028534,29.60229 43.028534,29.05553 C 43.028534,26.44882 40.912724,24.4879 38.251304,24.48789 C 37.444434,24.48789 36.609494,24.97763 35.941034,25.32125 C 35.292184,22.89971 33.691024,21.49982 31.501294,21.49982 z"
+ style="opacity:0.45;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <g
+ style="opacity:0.45"
+ transform="translate(-264.0013,462.5)"
+ id="g7852">
+ <path
+ style="fill:#c4c5c2;fill-opacity:1;stroke:#888a85;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 280.5,-445.5 C 278.22917,-445.5 276.39009,-443.94972 275.78125,-441.875 C 275.08802,-442.23883 274.33674,-442.5 273.5,-442.5 C 270.74,-442.5 268.49999,-440.26001 268.5,-437.5 C 268.5,-436.92107 268.66252,-436.3923 268.84375,-435.875 C 267.47028,-435.10426 266.5,-433.686 266.5,-432 C 266.5,-429.516 268.516,-427.49999 271,-427.5 C 271.17713,-427.5 289.82287,-427.5 290,-427.5 C 292.48399,-427.5 294.5,-429.516 294.5,-432 C 294.5,-433.686 293.52972,-435.10426 292.15625,-435.875 C 292.33749,-436.39229 292.5,-436.92108 292.5,-437.5 C 292.5,-440.26 290.26,-442.49999 287.5,-442.5 C 286.66326,-442.5 285.91198,-442.23883 285.21875,-441.875 C 284.60991,-443.94972 282.77083,-445.5 280.5,-445.5 z"
+ id="path7854"
+ sodipodi:nodetypes="ccsscsssscsscc" />
+ <path
+ style="opacity:1;fill:url(#linearGradient5703);fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 280.5,-445 C 278.31028,-445 276.7764,-443.66423 276.10445,-441.15648 C 275.43599,-441.5001 274.55686,-441.98983 273.75,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.1124,-434.89433 267,-433.73178 267,-432.24973 C 267,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294,-429.90368 294,-432.24973 C 294,-433.8421 292.8876,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.051 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.6082,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445 280.5,-445 z"
+ id="path7856"
+ sodipodi:nodetypes="ccsscsssscsscc" />
+ <g
+ id="g7858">
+ <path
+ transform="matrix(1.056604,0,0,1.056604,-24.19818,21.86331)"
+ d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z"
+ sodipodi:ry="3.3125"
+ sodipodi:rx="3.3125"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.375"
+ id="path7860"
+ style="opacity:1;fill:#c4c5c2;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0,0,1.056604,-24.19818,21.86331)"
+ d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z"
+ sodipodi:ry="3.3125"
+ sodipodi:rx="3.3125"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.375"
+ id="path7862"
+ style="opacity:1;fill:url(#linearGradient5705);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ </g>
+ <rect
+ style="opacity:1;fill:#c4c5c2;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect7864"
+ width="20"
+ height="9"
+ x="271"
+ y="-438" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#c4c5c2;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path7866"
+ sodipodi:cx="288.375"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125"
+ sodipodi:ry="3.3125"
+ d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z"
+ transform="matrix(0.90566,0,0,0.90566,9.830195,-35.68869)" />
+ <g
+ id="g7868">
+ <path
+ transform="matrix(1.056604,0,0,1.056604,-17.19811,24.86321)"
+ d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z"
+ sodipodi:ry="3.3125"
+ sodipodi:rx="3.3125"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.375"
+ id="path7870"
+ style="opacity:1;fill:#c4c5c2;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0,0,1.056604,-17.19818,24.86331)"
+ d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z"
+ sodipodi:ry="3.3125"
+ sodipodi:rx="3.3125"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.375"
+ id="path7872"
+ style="opacity:1;fill:url(#linearGradient5707);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g7874">
+ <path
+ transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)"
+ d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z"
+ sodipodi:ry="3.3125"
+ sodipodi:rx="3.3125"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.375"
+ id="path7876"
+ style="opacity:1;fill:#c4c5c2;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)"
+ d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z"
+ sodipodi:ry="3.3125"
+ sodipodi:rx="3.3125"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.375"
+ id="path7878"
+ style="opacity:1;fill:url(#linearGradient5709);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g7880"
+ transform="translate(-1,0)">
+ <path
+ id="path7882"
+ d="M 280.46875,-440.96875 C 276.88937,-440.96875 274,-438.04812 274,-434.46875 C 274,-432.09807 275.34943,-430.13096 277.25,-429 L 283.71875,-429 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.5 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z"
+ style="opacity:1;fill:#c4c5c2;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ id="path7884"
+ d="M 280.5,-441 C 276.912,-441 274,-438.08799 274,-434.5 C 274,-432.1236 275.34485,-430.13368 277.25,-429 L 283.75,-429 C 285.65515,-430.13368 287,-432.1236 287,-434.5 C 287,-438.088 284.088,-440.99999 280.5,-441 z"
+ style="opacity:1;fill:url(#linearGradient5711);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ </g>
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:url(#linearGradient5713);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path7886"
+ sodipodi:cx="288.375"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125"
+ sodipodi:ry="3.3125"
+ d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z"
+ transform="matrix(0.90566,0,0,0.90566,9.830296,-35.68884)" />
+ <path
+ style="fill:#888a85;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 292.9564,-437.33396 C 292.95487,-434.6494 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.9564,-437.33396 292.9564,-437.33396 z"
+ id="path7888"
+ sodipodi:nodetypes="ccss" />
+ <g
+ id="g7890"
+ transform="matrix(1.142857,0,0,1.142857,-28.57139,67.00008)">
+ <path
+ transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)"
+ d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z"
+ sodipodi:ry="3.3125"
+ sodipodi:rx="3.3125"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.375"
+ id="path7892"
+ style="opacity:1;fill:#c4c5c2;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)"
+ d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z"
+ sodipodi:ry="3.3125"
+ sodipodi:rx="3.3125"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.375"
+ id="path7896"
+ style="opacity:1;fill:url(#linearGradient5715);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ </g>
+ </g>
+ <path
+ sodipodi:nodetypes="ccsscsssscsscc"
+ id="path4978"
+ d="M 16.498705,17.499819 C 14.308985,17.499819 12.775105,18.835589 12.103155,21.343339 C 11.434695,20.999719 10.555565,20.509989 9.748705,20.509989 C 7.032195,20.509989 4.993565,22.448809 4.993575,25.055529 C 4.993575,25.602299 5.260785,26.388969 5.435535,26.877539 C 4.111105,27.605489 2.998705,28.768039 2.998705,30.250089 C 2.998705,32.596139 4.544875,34.500179 7.337985,34.500179 C 7.508795,34.500179 25.488624,34.500179 25.659424,34.500179 C 28.430434,34.500179 29.998704,32.596139 29.998704,30.250089 C 29.998704,28.657719 28.886304,27.583399 27.561874,26.855449 C 27.736634,26.366889 28.025944,25.602289 28.025944,25.055529 C 28.025944,22.448819 25.910134,20.487899 23.248714,20.487889 C 22.441844,20.487889 21.606904,20.977629 20.938444,21.321249 C 20.289594,18.899709 18.688434,17.499819 16.498705,17.499819 z"
+ style="opacity:0.45;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ </g>
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/icons/weather-haze.svg b/demos/embedded/weatherinfo/icons/weather-haze.svg
new file mode 100644
index 0000000..f2d6671
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-haze.svg
@@ -0,0 +1,1121 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48"
+ height="48"
+ id="svg14353"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ version="1.0"
+ sodipodi:docname="weather-haze.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="-122"
+ inkscape:cy="24"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:showpageshadow="false"
+ showborder="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="982"
+ inkscape:window-height="965"
+ inkscape:window-x="1281"
+ inkscape:window-y="29"
+ borderlayer="false" />
+ <defs
+ id="defs14355">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8371">
+ <stop
+ style="stop-color:#e8d277;stop-opacity:1;"
+ offset="0"
+ id="stop8373" />
+ <stop
+ style="stop-color:#e8d277;stop-opacity:0;"
+ offset="1"
+ id="stop8375" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient9810">
+ <stop
+ style="stop-color:#ddc76e;stop-opacity:1;"
+ offset="0"
+ id="stop9812" />
+ <stop
+ style="stop-color:#e6d965;stop-opacity:0;"
+ offset="1"
+ id="stop9814" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient9636">
+ <stop
+ style="stop-color:#fce94f;stop-opacity:1;"
+ offset="0"
+ id="stop9638" />
+ <stop
+ style="stop-color:#fce94f;stop-opacity:0;"
+ offset="1"
+ id="stop9640" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient9362">
+ <stop
+ id="stop9364"
+ offset="0"
+ style="stop-color:#392100;stop-opacity:1;" />
+ <stop
+ id="stop9366"
+ offset="1"
+ style="stop-color:#392100;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient7010">
+ <stop
+ style="stop-color:#aec2d7;stop-opacity:1;"
+ offset="0"
+ id="stop7012" />
+ <stop
+ id="stop9915"
+ offset="1"
+ style="stop-color:#81a0c1;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6825">
+ <stop
+ style="stop-color:#3a2400;stop-opacity:1;"
+ offset="0"
+ id="stop6827" />
+ <stop
+ id="stop6833"
+ offset="0.28565985"
+ style="stop-color:#8c5600;stop-opacity:1;" />
+ <stop
+ style="stop-color:#a36400;stop-opacity:1;"
+ offset="1"
+ id="stop6829" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6772">
+ <stop
+ style="stop-color:#888a85;stop-opacity:1;"
+ offset="0"
+ id="stop6774" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="1"
+ id="stop6776" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6764">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop6766" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop6768" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6746">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop6748" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop6750" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6728">
+ <stop
+ style="stop-color:#babdb6;stop-opacity:1;"
+ offset="0"
+ id="stop6730" />
+ <stop
+ style="stop-color:#babdb6;stop-opacity:0;"
+ offset="1"
+ id="stop6732" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6685">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop6687" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop6689" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6631">
+ <stop
+ style="stop-color:#555753;stop-opacity:1;"
+ offset="0"
+ id="stop6633" />
+ <stop
+ id="stop6639"
+ offset="0.0343047"
+ style="stop-color:#eeeeec;stop-opacity:0.49803922;" />
+ <stop
+ style="stop-color:#555753;stop-opacity:1;"
+ offset="0.06714281"
+ id="stop6641" />
+ <stop
+ id="stop6643"
+ offset="0.08441304"
+ style="stop-color:#eeeeec;stop-opacity:0.49803922;" />
+ <stop
+ style="stop-color:#555753;stop-opacity:1;"
+ offset="0.13726114"
+ id="stop6645" />
+ <stop
+ id="stop6647"
+ offset="0.15779018"
+ style="stop-color:#eeeeec;stop-opacity:0.49803922;" />
+ <stop
+ style="stop-color:#555753;stop-opacity:1;"
+ offset="0.21104114"
+ id="stop6649" />
+ <stop
+ id="stop6651"
+ offset="0.23053712"
+ style="stop-color:#eeeeec;stop-opacity:0.49803922;" />
+ <stop
+ style="stop-color:#555753;stop-opacity:1;"
+ offset="0.27452311"
+ id="stop6653" />
+ <stop
+ id="stop6655"
+ offset="0.29490501"
+ style="stop-color:#eeeeec;stop-opacity:0.49803922;" />
+ <stop
+ style="stop-color:#555753;stop-opacity:1;"
+ offset="0.34954464"
+ id="stop6657" />
+ <stop
+ id="stop6659"
+ offset="0.36960241"
+ style="stop-color:#eeeeec;stop-opacity:0.49803922;" />
+ <stop
+ style="stop-color:#555753;stop-opacity:1;"
+ offset="0.4220143"
+ id="stop6675" />
+ <stop
+ id="stop6677"
+ offset="0.44345734"
+ style="stop-color:#eeeeec;stop-opacity:0.49803922;" />
+ <stop
+ style="stop-color:#555753;stop-opacity:1;"
+ offset="0.50078195"
+ id="stop6679" />
+ <stop
+ id="stop6681"
+ offset="0.52629334"
+ style="stop-color:#eeeeec;stop-opacity:0.49803922;" />
+ <stop
+ style="stop-color:#555753;stop-opacity:1;"
+ offset="0.57410157"
+ id="stop6683" />
+ <stop
+ id="stop6693"
+ offset="0.5898369"
+ style="stop-color:#eeeeec;stop-opacity:0.49803922;" />
+ <stop
+ style="stop-color:#555753;stop-opacity:1;"
+ offset="0.64333093"
+ id="stop6695" />
+ <stop
+ id="stop6697"
+ offset="0.66151941"
+ style="stop-color:#eeeeec;stop-opacity:0.49803922;" />
+ <stop
+ style="stop-color:#555753;stop-opacity:1;"
+ offset="0.70865703"
+ id="stop6699" />
+ <stop
+ id="stop6701"
+ offset="0.72415513"
+ style="stop-color:#eeeeec;stop-opacity:0.49803922;" />
+ <stop
+ style="stop-color:#555753;stop-opacity:1;"
+ offset="1"
+ id="stop6661" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient15161">
+ <stop
+ style="stop-color:#c3b49d;stop-opacity:0.3539823;"
+ offset="0"
+ id="stop15163" />
+ <stop
+ id="stop9310"
+ offset="1"
+ style="stop-color:#dcd070;stop-opacity:1;" />
+ </linearGradient>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective14361" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15161"
+ id="linearGradient15167"
+ x1="21.285088"
+ y1="33.110512"
+ x2="21.285088"
+ y2="-0.0017124993"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9479167,0,0,0.9479167,1.2500007,1.2500003)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15161"
+ id="linearGradient15250"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9479167,0,0,0.9479167,1.2500007,1.2500003)"
+ x1="21.285088"
+ y1="33.110512"
+ x2="21.285088"
+ y2="-0.0017124993" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6631"
+ id="linearGradient6637"
+ x1="-0.52151477"
+ y1="29.500589"
+ x2="18.516363"
+ y2="14.809909"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6685"
+ id="radialGradient6691"
+ cx="122"
+ cy="401.95938"
+ fx="122"
+ fy="401.95938"
+ r="6.7283827"
+ gradientTransform="matrix(-0.5944965,-3.8328271e-7,4.1781509e-7,-0.6480585,194.52841,528.49324)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6728"
+ id="linearGradient6734"
+ x1="15.072129"
+ y1="21.263441"
+ x2="17.008948"
+ y2="21.263441"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6728"
+ id="linearGradient6742"
+ x1="15.133464"
+ y1="32.587334"
+ x2="17.008692"
+ y2="32.587334"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6746"
+ id="linearGradient6752"
+ x1="15.526249"
+ y1="2.097311"
+ x2="15.526249"
+ y2="14.758003"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6764"
+ id="linearGradient6770"
+ x1="11.884123"
+ y1="10.724713"
+ x2="6.123559"
+ y2="29.316263"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6772"
+ id="linearGradient6778"
+ x1="7.8838124"
+ y1="18.558826"
+ x2="7.8838124"
+ y2="34.97258"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6825"
+ id="linearGradient6831"
+ x1="37.997959"
+ y1="18.245197"
+ x2="37.997959"
+ y2="39.658928"
+ gradientUnits="userSpaceOnUse" />
+ <pattern
+ patternUnits="userSpaceOnUse"
+ width="45.991676"
+ height="45.991676"
+ patternTransform="translate(-0.532328,52.691734)"
+ id="pattern7396">
+ <rect
+ y="0"
+ x="0"
+ height="45.991676"
+ width="45.991676"
+ id="rect15159"
+ style="fill:url(#linearGradient7399);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ </pattern>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15161"
+ id="linearGradient7399"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9479167,0,0,0.9479167,0.2458325,0.2458356)"
+ x1="21.285088"
+ y1="33.110512"
+ x2="21.285088"
+ y2="-0.0017124993" />
+ <filter
+ id="filter8124"
+ inkscape:label="filter1"
+ width="11.589999999999989" />
+ <filter
+ id="filter8126"
+ inkscape:label="filter2" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9362"
+ id="linearGradient9360"
+ x1="8.5806656"
+ y1="20.995518"
+ x2="8.5806656"
+ y2="23.085056"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9362"
+ id="linearGradient9370"
+ gradientUnits="userSpaceOnUse"
+ x1="8.5806656"
+ y1="20.995518"
+ x2="8.5806656"
+ y2="23.085056"
+ gradientTransform="translate(25.006402,2.9778958e-7)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9362"
+ id="linearGradient9374"
+ gradientUnits="userSpaceOnUse"
+ x1="8.5806656"
+ y1="20.995518"
+ x2="8.5806656"
+ y2="23.085056"
+ gradientTransform="translate(35.006405,2.9778958e-7)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9810"
+ id="linearGradient9981"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,4.6999999,18,-122.2)"
+ x1="96"
+ y1="36"
+ x2="96"
+ y2="30" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9810"
+ id="linearGradient9983"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.6289807,90.020139,-27.933112)"
+ x1="6.0670195"
+ y1="46"
+ x2="6.0670195"
+ y2="20.59375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9810"
+ id="linearGradient9985"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.6289807,93.329052,-27.775305)"
+ x1="14.197642"
+ y1="46"
+ x2="14.197642"
+ y2="20.593699" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9810"
+ id="linearGradient9987"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.6289807,96.870945,-27.775305)"
+ x1="23.1"
+ y1="46"
+ x2="23.1"
+ y2="20.592798" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9810"
+ id="linearGradient9989"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.6289807,99.712841,-27.775305)"
+ x1="32.200001"
+ y1="46"
+ x2="32.200001"
+ y2="20.59375" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7010"
+ id="radialGradient6968"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.2893727,-0.2474294,0.6139915,0.7180729,9.91225,5.2335615)"
+ cx="17.055056"
+ cy="3.5953908"
+ fx="17.055056"
+ fy="3.5953908"
+ r="24" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9810"
+ id="linearGradient6977"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,4.6999999,-72,-123.2)"
+ x1="96"
+ y1="35.333096"
+ x2="96"
+ y2="30" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9810"
+ id="linearGradient6979"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.6289807,2.0139e-2,-28.933112)"
+ x1="6.0670195"
+ y1="46"
+ x2="6.0670195"
+ y2="20.59375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9810"
+ id="linearGradient6981"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.6289807,3.329052,-28.775305)"
+ x1="14.197642"
+ y1="46"
+ x2="14.197642"
+ y2="20.593699" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9810"
+ id="linearGradient6983"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.6289807,6.870945,-28.775305)"
+ x1="23.1"
+ y1="46"
+ x2="23.1"
+ y2="20.592798" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9810"
+ id="linearGradient6985"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.6289807,9.712841,-28.775305)"
+ x1="32.200001"
+ y1="46"
+ x2="32.200001"
+ y2="20.59375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6825"
+ id="linearGradient7066"
+ gradientUnits="userSpaceOnUse"
+ x1="37.997959"
+ y1="18.245197"
+ x2="37.997959"
+ y2="39.658928" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6772"
+ id="linearGradient7068"
+ gradientUnits="userSpaceOnUse"
+ x1="7.8838124"
+ y1="18.558826"
+ x2="7.8838124"
+ y2="34.97258" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6728"
+ id="linearGradient7070"
+ gradientUnits="userSpaceOnUse"
+ x1="15.133464"
+ y1="32.587334"
+ x2="17.008692"
+ y2="32.587334" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6631"
+ id="linearGradient7072"
+ gradientUnits="userSpaceOnUse"
+ x1="-0.52151477"
+ y1="29.500589"
+ x2="18.516363"
+ y2="14.809909" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6685"
+ id="radialGradient7074"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.5944965,-3.8328271e-7,4.1781509e-7,-0.6480585,194.52841,528.49324)"
+ cx="122"
+ cy="401.95938"
+ fx="122"
+ fy="401.95938"
+ r="6.7283827" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6728"
+ id="linearGradient7076"
+ gradientUnits="userSpaceOnUse"
+ x1="15.072129"
+ y1="21.263441"
+ x2="17.008948"
+ y2="21.263441" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6746"
+ id="linearGradient7078"
+ gradientUnits="userSpaceOnUse"
+ x1="15.526249"
+ y1="2.097311"
+ x2="15.526249"
+ y2="14.758003" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6764"
+ id="linearGradient7080"
+ gradientUnits="userSpaceOnUse"
+ x1="11.884123"
+ y1="10.724713"
+ x2="6.123559"
+ y2="29.316263" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9362"
+ id="linearGradient7082"
+ gradientUnits="userSpaceOnUse"
+ x1="8.5806656"
+ y1="20.995518"
+ x2="8.5806656"
+ y2="23.085056" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9362"
+ id="linearGradient7084"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(25.006402,2.9778958e-7)"
+ x1="8.5806656"
+ y1="20.995518"
+ x2="8.5806656"
+ y2="23.085056" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9362"
+ id="linearGradient7086"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(35.006405,2.9778958e-7)"
+ x1="8.5806656"
+ y1="20.995518"
+ x2="8.5806656"
+ y2="23.085056" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6825"
+ id="linearGradient7132"
+ gradientUnits="userSpaceOnUse"
+ x1="37.997959"
+ y1="18.245197"
+ x2="37.997959"
+ y2="39.658928" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6772"
+ id="linearGradient7134"
+ gradientUnits="userSpaceOnUse"
+ x1="7.8838124"
+ y1="18.558826"
+ x2="7.8838124"
+ y2="34.97258" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6728"
+ id="linearGradient7136"
+ gradientUnits="userSpaceOnUse"
+ x1="15.133464"
+ y1="32.587334"
+ x2="17.008692"
+ y2="32.587334" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6631"
+ id="linearGradient7138"
+ gradientUnits="userSpaceOnUse"
+ x1="-0.52151477"
+ y1="29.500589"
+ x2="18.516363"
+ y2="14.809909" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6685"
+ id="radialGradient7140"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.5944965,-3.8328271e-7,4.1781509e-7,-0.6480585,194.52841,528.49324)"
+ cx="122"
+ cy="401.95938"
+ fx="122"
+ fy="401.95938"
+ r="6.7283827" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6728"
+ id="linearGradient7142"
+ gradientUnits="userSpaceOnUse"
+ x1="15.072129"
+ y1="21.263441"
+ x2="17.008948"
+ y2="21.263441" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6746"
+ id="linearGradient7144"
+ gradientUnits="userSpaceOnUse"
+ x1="15.526249"
+ y1="2.097311"
+ x2="15.526249"
+ y2="14.758003" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6764"
+ id="linearGradient7146"
+ gradientUnits="userSpaceOnUse"
+ x1="11.884123"
+ y1="10.724713"
+ x2="6.123559"
+ y2="29.316263" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9362"
+ id="linearGradient7148"
+ gradientUnits="userSpaceOnUse"
+ x1="8.5806656"
+ y1="20.995518"
+ x2="8.5806656"
+ y2="23.085056" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9362"
+ id="linearGradient7150"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(25.006402,2.9778958e-7)"
+ x1="8.5806656"
+ y1="20.995518"
+ x2="8.5806656"
+ y2="23.085056" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9362"
+ id="linearGradient7152"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(35.006405,2.9778958e-7)"
+ x1="8.5806656"
+ y1="20.995518"
+ x2="8.5806656"
+ y2="23.085056" />
+ <filter
+ inkscape:collect="always"
+ id="filter7663"
+ x="-0.1147047"
+ width="1.2294094"
+ y="-0.12580788"
+ height="1.2516158">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="2.2006423"
+ id="feGaussianBlur7665" />
+ </filter>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9810"
+ id="linearGradient7668"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.6289807,9.712841,-28.775305)"
+ x1="32.200001"
+ y1="46"
+ x2="32.200001"
+ y2="20.59375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9810"
+ id="linearGradient7671"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.6289807,6.870945,-28.775305)"
+ x1="23.1"
+ y1="46"
+ x2="23.1"
+ y2="32.256355" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9810"
+ id="linearGradient7674"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.6289807,3.329052,-28.775305)"
+ x1="14.197642"
+ y1="46"
+ x2="14.197642"
+ y2="20.593699" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9810"
+ id="linearGradient7677"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.6289807,2.0139e-2,-28.933112)"
+ x1="6.0670195"
+ y1="46"
+ x2="6.0670195"
+ y2="33.256096" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8371"
+ id="linearGradient8377"
+ x1="24"
+ y1="45.998173"
+ x2="24"
+ y2="2.0644991"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <metadata
+ id="metadata14358">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="fill:url(#radialGradient6968);fill-opacity:1;fill-rule:evenodd;stroke:#132c50;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect14363"
+ width="47"
+ height="47"
+ x="0.5"
+ y="0.5" />
+ <g
+ id="g7018"
+ transform="translate(-1.6037056e-2,3.090275e-2)">
+ <path
+ sodipodi:nodetypes="cccccccccccccccccc"
+ id="path7020"
+ d="M 1.5112736,46.463508 L 46.518528,46.463508 L 46.518528,20.097311 L 42.49936,11.994593 L 37.997439,20.097311 L 33.503201,11.994593 L 29.51269,20.097311 L 29.51269,40.518226 L 17.513556,40.518226 L 17.513556,15.979513 L 18.991385,15.979513 L 15.625234,5.482499 L 11.994559,15.979622 L 13.487574,15.979622 L 13.487574,22.494238 L 8.5736236,16.493825 L 1.5112736,16.493825 L 1.5112736,46.463508 z"
+ style="fill:#888a85;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path7022"
+ d="M 46.499202,19.996278 L 46.499164,39.496968 L 29.497928,39.514749 L 29.496716,20.073218 L 33.471729,13.30179 L 37.969149,19.742327 L 42.464705,13.30179 L 46.499202,19.996278 z"
+ style="fill:url(#linearGradient7066);fill-opacity:1;fill-rule:evenodd;stroke:#331f00;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path7024"
+ d="M 30.4991,19.359794 L 30.495194,38.512814 L 45.998784,38.497189"
+ style="opacity:0.25;fill:none;fill-rule:evenodd;stroke:#eeeeec;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <rect
+ y="14.973112"
+ x="13.484319"
+ height="24.544136"
+ width="4.027225"
+ id="rect7026"
+ style="fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ y="25.958162"
+ x="1.5003295"
+ height="13.560402"
+ width="14.000328"
+ id="rect7028"
+ style="fill:url(#linearGradient7068);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path7030"
+ d="M 16.000204,26.158288 L 17.008692,26.165076 L 17.006997,39.016383 L 16.000204,39.016383 L 16.000204,26.158288 z"
+ style="fill:url(#linearGradient7070);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path7032"
+ d="M 1.5018555,16.471187 L 1.5018555,26.192359 L 16.519497,26.192359 L 8.5470601,16.471187 L 1.5018555,16.471187 z"
+ style="fill:#7f4f01;fill-opacity:1;fill-rule:evenodd;stroke:#392100;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path7034"
+ d="M 46.494238,19.981528 L 42.46863,15.428034 L 37.978753,20.107557 L 33.495519,15.782001 L 28.445309,22.028089 L 33.475653,11.989135 L 37.973073,19.908885 L 42.468629,12.0045 L 46.494238,19.981528 z"
+ style="fill:#d3d7cf;fill-rule:evenodd;stroke:#d3d7cf;stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path7036"
+ d="M 1.9983315,16.96932 L 1.9983315,25.690091 L 15.466816,25.690091 L 8.3170492,16.96932 L 1.9983315,16.96932 z"
+ style="opacity:0.5;fill:url(#linearGradient7072);fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient7074);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path7038"
+ d="M 15.632485,5.4903604 L 12.001677,15.991016 L 19.003769,15.992368 L 15.632485,5.4903604 z"
+ style="fill:#532323;fill-opacity:1;fill-rule:evenodd;stroke:#2a1111;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccscc"
+ id="path7040"
+ d="M 13.983416,22.32144 L 13.983416,16.492941 L 17.007669,16.492941 L 17.007669,21.219904 L 17.008948,26.033783 C 17.008949,26.039055 16.935124,25.911261 16.894583,25.856332 L 13.983416,22.32144 z"
+ style="fill:url(#linearGradient7076);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path7042"
+ d="M 15.595391,8.6350832 L 13.413573,14.980794 L 17.638924,14.980794 L 15.595391,8.6350832 z"
+ style="opacity:0.5;fill:none;fill-rule:evenodd;stroke:url(#linearGradient7078);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path7044"
+ d="M 1.9974392,25.190652 L 14.412292,25.190652 L 8.0819463,17.470171 L 2.0013455,17.470171"
+ style="opacity:0.5;fill:none;fill-rule:evenodd;stroke:url(#linearGradient7080);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <g
+ style="fill:#fce94f"
+ id="g7046">
+ <rect
+ style="fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect7048"
+ width="2"
+ height="2"
+ x="30.999861"
+ y="22.002562" />
+ <rect
+ style="fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect7050"
+ width="2"
+ height="2"
+ x="34.001801"
+ y="22.000923" />
+ <rect
+ style="fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect7052"
+ width="2"
+ height="2"
+ x="40.997707"
+ y="22.000923" />
+ <rect
+ style="fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect7054"
+ width="2"
+ height="2"
+ x="9.0004454"
+ y="22.002562" />
+ <rect
+ style="fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect7056"
+ width="2"
+ height="2"
+ x="6.0018048"
+ y="22.002562" />
+ </g>
+ <g
+ id="g7058">
+ <path
+ style="fill:url(#linearGradient7082);fill-opacity:1;fill-rule:evenodd;stroke:#392100;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 4.4711906,23.06274 L 5.7618436,21.495518 L 11.216391,21.495518 L 12.507043,23.06274"
+ id="path7060"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:url(#linearGradient7084);fill-opacity:1;fill-rule:evenodd;stroke:#392100;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 29.477593,23.06274 L 30.768246,21.495518 L 36.222793,21.495518 L 37.513445,23.06274"
+ id="path7062"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:url(#linearGradient7086);fill-opacity:1;fill-rule:evenodd;stroke:#392100;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 39.477596,23.06274 L 40.768249,21.495518 L 43.203584,21.495518 L 44.822027,23.06274"
+ id="path7064"
+ sodipodi:nodetypes="cccc" />
+ </g>
+ </g>
+ <g
+ id="g6993"
+ transform="translate(-7.6824584e-3,3.0729835e-2)"
+ style="filter:url(#filter7663);opacity:0.6">
+ <path
+ sodipodi:nodetypes="cccccccccccccccccc"
+ id="path15135"
+ d="M 1.4995548,46.463508 L 46.518528,46.463508 L 46.518528,20.097311 L 42.49936,11.994593 L 37.997439,20.097311 L 33.503201,11.994593 L 29.51269,20.097311 L 29.51269,40.518226 L 17.513556,40.518226 L 17.513556,15.979513 L 18.991385,15.979513 L 15.625234,5.482499 L 11.994559,15.979622 L 13.487574,15.979622 L 13.487574,22.494238 L 8.5736236,16.493825 L 1.4995548,16.493825 L 1.4995548,46.463508 z"
+ style="fill:#888a85;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path6819"
+ d="M 46.499202,19.996278 L 46.499164,39.496968 L 29.497928,39.514749 L 29.496716,20.073218 L 33.471729,13.30179 L 37.969149,19.742327 L 42.464705,13.30179 L 46.499202,19.996278 z"
+ style="fill:url(#linearGradient7132);fill-opacity:1;fill-rule:evenodd;stroke:#331f00;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path6843"
+ d="M 30.4991,19.359794 L 30.495194,38.512814 L 45.998784,38.497189"
+ style="opacity:0.25000000000000000;fill:none;fill-rule:evenodd;stroke:#eeeeec;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <rect
+ y="14.973112"
+ x="13.484319"
+ height="24.544136"
+ width="4.027225"
+ id="rect6714"
+ style="fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ y="25.958162"
+ x="1.5003295"
+ height="13.560402"
+ width="14.000328"
+ id="rect6611"
+ style="fill:url(#linearGradient7134);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path6718"
+ d="M 16.000204,26.158288 L 17.008692,26.165076 L 17.006997,39.016383 L 16.000204,39.016383 L 16.000204,26.158288 z"
+ style="fill:url(#linearGradient7136);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path6607"
+ d="M 1.5018555,16.471187 L 1.5018555,26.192359 L 16.519497,26.192359 L 8.5470601,16.471187 L 1.5018555,16.471187 z"
+ style="fill:#7f4f01;fill-opacity:1;fill-rule:evenodd;stroke:#392100;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path6817"
+ d="M 46.494238,19.981528 L 42.46863,15.428034 L 37.978753,20.107557 L 33.495519,15.782001 L 28.445309,22.028089 L 33.475653,11.989135 L 37.973073,19.908885 L 42.468629,12.0045 L 46.494238,19.981528 z"
+ style="fill:#d3d7cf;fill-rule:evenodd;stroke:#d3d7cf;stroke-width:1.10000002000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path6629"
+ d="M 1.9983315,16.96932 L 1.9983315,25.690091 L 15.466816,25.690091 L 8.3170492,16.96932 L 1.9983315,16.96932 z"
+ style="opacity:0.50000000000000000;fill:url(#linearGradient7138);fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient7140);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path6712"
+ d="M 15.632485,5.4903604 L 12.001677,15.991016 L 19.003769,15.992368 L 15.632485,5.4903604 z"
+ style="fill:#532323;fill-opacity:1;fill-rule:evenodd;stroke:#2a1111;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccscc"
+ id="path6716"
+ d="M 13.983416,22.32144 L 13.983416,16.492941 L 17.007669,16.492941 L 17.007669,21.219904 L 17.008948,26.033783 C 17.008949,26.039055 16.935124,25.911261 16.894583,25.856332 L 13.983416,22.32144 z"
+ style="fill:url(#linearGradient7142);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path6744"
+ d="M 15.595391,8.6350832 L 13.413573,14.980794 L 17.638924,14.980794 L 15.595391,8.6350832 z"
+ style="opacity:0.50000000000000000;fill:none;fill-rule:evenodd;stroke:url(#linearGradient7144);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path6754"
+ d="M 1.9974392,25.190652 L 14.412292,25.190652 L 8.0819463,17.470171 L 2.0013455,17.470171"
+ style="opacity:0.50000000000000000;fill:none;fill-rule:evenodd;stroke:url(#linearGradient7146);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <g
+ style="fill:#fce94f"
+ id="g6598">
+ <rect
+ style="fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect15193"
+ width="2"
+ height="2"
+ x="30.999861"
+ y="22.002562" />
+ <rect
+ style="fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect15201"
+ width="2"
+ height="2"
+ x="34.001801"
+ y="22.000923" />
+ <rect
+ style="fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect15213"
+ width="2"
+ height="2"
+ x="40.997707"
+ y="22.000923" />
+ <rect
+ style="fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect15231"
+ width="2"
+ height="2"
+ x="9.0004454"
+ y="22.002562" />
+ <rect
+ style="fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect15235"
+ width="2"
+ height="2"
+ x="6.0018048"
+ y="22.002562" />
+ </g>
+ <g
+ id="g6422">
+ <path
+ style="fill:url(#linearGradient7148);fill-opacity:1;fill-rule:evenodd;stroke:#392100;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 4.4711906,23.06274 L 5.7618436,21.495518 L 11.216391,21.495518 L 12.507043,23.06274"
+ id="path9350"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:url(#linearGradient7150);fill-opacity:1;fill-rule:evenodd;stroke:#392100;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 29.477593,23.06274 L 30.768246,21.495518 L 36.222793,21.495518 L 37.513445,23.06274"
+ id="path9368"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:url(#linearGradient7152);fill-opacity:1;fill-rule:evenodd;stroke:#392100;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 39.477596,23.06274 L 40.768249,21.495518 L 43.203584,21.495518 L 44.822027,23.06274"
+ id="path9372"
+ sodipodi:nodetypes="cccc" />
+ </g>
+ </g>
+ <rect
+ style="opacity:0.5;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#eeeeec;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect15237"
+ width="45"
+ height="45"
+ x="1.5"
+ y="1.5" />
+ <rect
+ style="opacity:0.5;fill:url(#linearGradient8377);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect9717"
+ width="44"
+ height="43.933674"
+ x="2"
+ y="2.0644991" />
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/icons/weather-icy.svg b/demos/embedded/weatherinfo/icons/weather-icy.svg
new file mode 100644
index 0000000..fe42860
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-icy.svg
@@ -0,0 +1,255 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48"
+ height="48"
+ id="svg6619"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ version="1.0"
+ sodipodi:docname="weather-icy.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs6621">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient7440">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop7442" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop7444" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient7430">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop7432" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop7434" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient7392">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop7394" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop7396" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient7380">
+ <stop
+ style="stop-color:#cedeef;stop-opacity:1;"
+ offset="0"
+ id="stop7382" />
+ <stop
+ style="stop-color:#cedeef;stop-opacity:0;"
+ offset="1"
+ id="stop7384" />
+ </linearGradient>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective6627" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7380"
+ id="linearGradient7386"
+ x1="18.165867"
+ y1="9.2548895"
+ x2="20.711481"
+ y2="21.572344"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7392"
+ id="radialGradient7398"
+ cx="17.700384"
+ cy="13.797695"
+ fx="17.700384"
+ fy="13.797695"
+ r="1.4135723"
+ gradientTransform="matrix(1,0,0,1.0652174,6.1248392e-7,-0.8998502)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7392"
+ id="radialGradient7402"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.0652174,6.1248392e-7,-0.8998502)"
+ cx="17.700384"
+ cy="13.797695"
+ fx="17.700384"
+ fy="13.797695"
+ r="1.4135723" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7430"
+ id="radialGradient7438"
+ cx="10.693982"
+ cy="16.471191"
+ fx="10.693982"
+ fy="16.471191"
+ r="0.553137"
+ gradientTransform="matrix(2.1647007,0,0,0.8888889,-12.455288,1.8301322)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7440"
+ id="radialGradient7448"
+ cx="10.693982"
+ cy="16.471191"
+ fx="10.693982"
+ fy="16.471191"
+ r="0.553137"
+ gradientTransform="matrix(2.2783611,0,0,0.8888889,-13.670771,1.8301322)"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="31.408407"
+ inkscape:cy="30.326192"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="982"
+ inkscape:window-height="965"
+ inkscape:window-x="1280"
+ inkscape:window-y="28" />
+ <metadata
+ id="metadata6624">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <g
+ id="g7906">
+ <path
+ id="path7342"
+ d="M 24 10.375 C 11.701921 10.375 1.71875 12.767211 1.71875 15.71875 C 1.71875 17.498261 5.3609075 19.059125 10.9375 20.03125 L 14.3125 46.90625 L 17.9375 26.1875 L 21.3125 41.90625 L 25.5625 23.71875 L 28.03125 37.6875 L 32.3125 22.9375 L 34.84375 33.0625 L 38.375 19.8125 C 43.199321 18.83144 46.28125 17.354051 46.28125 15.71875 C 46.28125 12.767211 36.298079 10.375 24 10.375 z "
+ style="fill:#729fcf;fill-rule:evenodd;stroke:#204a87;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cssssscssssscscssssszsssssc"
+ id="path7150"
+ d="M 24.013525,20.535861 C 29.915498,20.535861 35.256377,19.860148 39.169775,19.061611 C 41.126474,18.662343 42.702812,18.185066 43.857275,17.628422 C 45.011738,17.071777 45.794775,16.382816 45.794775,15.758562 C 45.794775,15.111496 45.011739,14.383887 43.857275,13.827243 C 42.702811,13.270598 41.126474,12.706404 39.169775,12.307136 C 35.256377,11.508599 29.915498,10.878502 24.013525,10.878502 C 18.111552,10.878502 12.739423,11.552057 8.826025,12.350594 C 6.8693258,12.749862 5.2929887,13.270598 4.138525,13.827243 C 2.9840613,14.383887 2.201025,14.939123 2.201025,15.758562 C 2.201025,16.578001 2.9840613,17.071777 4.138525,17.628422 C 5.2929887,18.185066 6.8693258,18.662343 8.826025,19.061611 M 8.826025,19.061611 C 12.739423,19.860148 18.111552,20.535861 24.013525,20.535861 M 24.013525,11.738416 C 29.832893,11.738416 35.083852,12.397075 38.857275,13.16705 C 40.743987,13.552037 42.268014,14.087721 43.263525,14.567724 C 44.259036,15.047727 44.669775,15.382119 44.669775,15.758562 C 44.669775,16.135005 44.259035,16.407937 43.263525,16.88794 C 42.268015,17.367943 40.743986,17.840596 38.857275,18.225584 C 35.083852,18.995559 29.832893,19.652061 24.013525,19.652061 C 18.194157,19.652061 12.911948,18.995559 9.138525,18.225584 C 7.2518134,17.840596 5.7277856,17.367943 4.732275,16.88794 C 3.7367644,16.407937 3.326025,16.135005 3.326025,15.758562 C 3.326025,15.382119 3.7367644,15.047727 4.732275,14.567724 C 5.7277856,14.087721 7.2518134,13.595495 9.138525,13.210508 C 12.911948,12.440533 18.194157,11.738416 24.013525,11.738416 z"
+ style="opacity:0.5;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.14379668;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path7140"
+ d="M 20.220231,11.00128 L 29.138835,20.368103 L 24.21511,20.523801 L 15.180538,11.370038 L 20.220231,11.00128 z"
+ style="fill:#cedeef;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1" />
+ <path
+ sodipodi:nodetypes="cccccccccccc"
+ id="path7355"
+ d="M 11.915494,19.751601 L 14.481435,40.163892 L 16.883534,26.331262 C 17.063009,24.706837 18.883373,24.906404 18.990928,26.307141 L 21.349551,37.344431 L 24.506026,23.859196 C 24.638961,22.408831 26.471791,22.275606 26.60475,23.905247 L 28.263765,33.272727 L 31.29544,22.83487 C 31.632247,21.540581 33.13534,21.733731 33.309125,22.813719 L 34.878361,29.055058 L 37.413573,19.544174"
+ style="fill:none;fill-rule:evenodd;stroke:#eeeeec;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:7;stroke-dasharray:none;opacity:0.5" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path7358"
+ d="M 24.796795,10.87836 L 33.030717,20.024802 L 31.057055,20.187957 L 22.768625,10.889409 L 24.796795,10.87836 z"
+ style="fill:#cedeef;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path7364"
+ d="M 28.334973,10.980368 L 36.114053,19.582843 L 35.115621,19.734949 L 27.305235,10.925125 L 28.334973,10.980368 z"
+ style="fill:#cedeef;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccccc"
+ id="path7372"
+ d="M 24.276568,13.090909 C 16.315524,13.346336 6.9039601,14.217661 2.7042254,16.717029 C 1.2906531,14.934699 3.0729833,13.828425 9.2804097,12.230474 C 14.942786,11.172151 20.784867,10.869471 24.346019,10.869471 C 29.101893,10.979193 33.366216,11.259555 39.81653,12.450903 C 39.81653,12.450903 46.858243,14.197968 45.56759,16.287597 C 41.461334,13.814622 33.948682,12.944657 24.276568,13.090909 z"
+ style="fill:url(#linearGradient7386);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1" />
+ <path
+ transform="matrix(2.1222827,0,0,1.9923469,-21.167011,-16.108233)"
+ d="M 19.113956,13.797695 A 1.4135723,1.5057619 0 1 1 16.286812,13.797695 A 1.4135723,1.5057619 0 1 1 19.113956,13.797695 z"
+ sodipodi:ry="1.5057619"
+ sodipodi:rx="1.4135723"
+ sodipodi:cy="13.797695"
+ sodipodi:cx="17.700384"
+ id="path7390"
+ style="opacity:1;fill:url(#radialGradient7398);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:7;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.8078704,0,0,1.0169271,-3.0298763,-5.1757356)"
+ d="M 11.247119,16.471191 A 0.553137,0.49167734 0 1 1 10.140845,16.471191 A 0.553137,0.49167734 0 1 1 11.247119,16.471191 z"
+ sodipodi:ry="0.49167734"
+ sodipodi:rx="0.553137"
+ sodipodi:cy="16.471191"
+ sodipodi:cx="10.693982"
+ id="path7416"
+ style="opacity:1;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:7;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(4.4701088,0,0,4.6249999,-65.908816,-42.825863)"
+ d="M 19.113956,13.797695 A 1.4135723,1.5057619 0 1 1 16.286812,13.797695 A 1.4135723,1.5057619 0 1 1 19.113956,13.797695 z"
+ sodipodi:ry="1.5057619"
+ sodipodi:rx="1.4135723"
+ sodipodi:cy="13.797695"
+ sodipodi:cx="17.700384"
+ id="path7400"
+ style="opacity:1;fill:url(#radialGradient7402);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:7;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(4.5196759,0,0,1.0169271,-35.029811,3.0059967)"
+ d="M 11.247119,16.471191 A 0.553137,0.49167734 0 1 1 10.140845,16.471191 A 0.553137,0.49167734 0 1 1 11.247119,16.471191 z"
+ sodipodi:ry="0.49167734"
+ sodipodi:rx="0.553137"
+ sodipodi:cy="16.471191"
+ sodipodi:cx="10.693982"
+ id="path7418"
+ style="opacity:1;fill:url(#radialGradient7438);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:7;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(0,4.5196759,-2.0338541,0,46.913063,-27.253478)"
+ d="M 11.247119,16.471191 A 0.553137,0.49167734 0 1 1 10.140845,16.471191 A 0.553137,0.49167734 0 1 1 11.247119,16.471191 z"
+ sodipodi:ry="0.49167734"
+ sodipodi:rx="0.553137"
+ sodipodi:cy="16.471191"
+ sodipodi:cx="10.693982"
+ id="path7420"
+ style="opacity:1;fill:url(#radialGradient7448);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:7;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ </g>
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/icons/weather-overcast.svg b/demos/embedded/weatherinfo/icons/weather-overcast.svg
new file mode 100644
index 0000000..35fb4a4
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-overcast.svg
@@ -0,0 +1,3036 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg1306"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docbase="/home/rcollier/Work/Novell/Tango/weather"
+ sodipodi:docname="weather-overcast.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs1308">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 24 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="48 : 24 : 1"
+ inkscape:persp3d-origin="24 : 16 : 1"
+ id="perspective361" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient10670"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient10668"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient10666"
+ gradientUnits="userSpaceOnUse"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient10664"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient10662"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient10660"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient10658"
+ gradientUnits="userSpaceOnUse"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient10656"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6549">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6551" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6553" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient10654"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6527">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6530" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6532" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient10652"
+ gradientUnits="userSpaceOnUse"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6538">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6540" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6542" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient10650"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6513">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6515" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6517" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient10648"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6497">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6499" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6501" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient10646"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6470">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6472" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6474" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient10644"
+ gradientUnits="userSpaceOnUse"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient7834">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop7836" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop7838" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7834"
+ id="linearGradient10642"
+ gradientUnits="userSpaceOnUse"
+ x1="-156.29044"
+ y1="-100.53421"
+ x2="-153.09810"
+ y2="-96.544556" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8397">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8400" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8402" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8397"
+ id="linearGradient10640"
+ gradientUnits="userSpaceOnUse"
+ x1="238.00478"
+ y1="-388.47476"
+ x2="245.65462"
+ y2="-382.64539" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8315">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8317" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8319" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8315"
+ id="linearGradient10638"
+ gradientUnits="userSpaceOnUse"
+ x1="230.87598"
+ y1="-390.43951"
+ x2="235.25652"
+ y2="-386.95901" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8381">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8383" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8385" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8381"
+ id="linearGradient10636"
+ gradientUnits="userSpaceOnUse"
+ x1="246.74042"
+ y1="-391.31381"
+ x2="252.69785"
+ y2="-385.35165" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8331">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8333" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8335" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8331"
+ id="linearGradient10634"
+ gradientUnits="userSpaceOnUse"
+ x1="240.07379"
+ y1="-393.40720"
+ x2="245.82706"
+ y2="-388.55029" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8302">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8304" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8306" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8302"
+ id="linearGradient10632"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(69.00259,102.0000)"
+ x1="228.50261"
+ y1="-392.30591"
+ x2="278.91510"
+ y2="-375.37952" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3019">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3021" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3023" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2298"
+ id="linearGradient2861"
+ gradientUnits="userSpaceOnUse"
+ x1="-27.006643"
+ y1="-37.550461"
+ x2="-34.700153"
+ y2="-4.4493785" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2527"
+ id="linearGradient2859"
+ gradientUnits="userSpaceOnUse"
+ x1="-25.137094"
+ y1="-1.2491118"
+ x2="-35.652866"
+ y2="-24.884460" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3478"
+ id="linearGradient2857"
+ gradientUnits="userSpaceOnUse"
+ x1="11.149398"
+ y1="-43.997444"
+ x2="4.9625983"
+ y2="-8.3080902" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4488">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop4490" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop4492" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3478">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3480" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3482" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2298">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2300" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop2302" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3347">
+ <stop
+ style="stop-color:#edd400;stop-opacity:1;"
+ offset="0"
+ id="stop3349" />
+ <stop
+ style="stop-color:#edd400;stop-opacity:0;"
+ offset="1"
+ id="stop3351" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2527">
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:1;"
+ offset="0"
+ id="stop2529" />
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:0;"
+ offset="1"
+ id="stop2531" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2500">
+ <stop
+ style="stop-color:#fce94f;stop-opacity:1;"
+ offset="0"
+ id="stop2502" />
+ <stop
+ style="stop-color:#fce94f;stop-opacity:0;"
+ offset="1"
+ id="stop2504" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2392">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop2394" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop2396" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2254">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2256" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop2258" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2263"
+ gradientUnits="userSpaceOnUse"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581"
+ gradientTransform="translate(-1.608757,3.097272)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2267"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.555020,0.968578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2271"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(9.263651,3.495228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2275"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8.497184,-2.330824)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2279"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(14.46340,2.014073)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2283"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2287"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2291"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2295"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2299"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2303"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1.707748,-5.784024)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2311"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2350"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(16.14002,24.66420)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2352"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.932144,25.87240)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2354"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.356636,23.86870)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2356"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(11.19027,26.52035)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2358"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(10.30638,19.27251)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2360"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,0.229156,30.76299)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2362"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,16.67145,27.22746)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2364"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,17.05272,31.47010)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2366"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-4.010744,24.96040)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2368"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,8.185476,29.52556)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2370"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(4.207586,21.30544)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2372"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.12415,32.08882)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2392"
+ id="linearGradient2398"
+ x1="6.6651416"
+ y1="13.802798"
+ x2="41.403877"
+ y2="13.802798"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2426"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(14.46340,2.014073)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2428"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8.497184,-2.330824)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2430"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-1.608757,3.097272)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2432"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.555020,0.968578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2434"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(9.263651,3.495228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2436"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2438"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2440"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2442"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2444"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2446"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2392"
+ id="linearGradient2448"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ x1="6.6651416"
+ y1="13.802798"
+ x2="41.403877"
+ y2="13.802798" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2392"
+ id="linearGradient2451"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,4.378541,10.65407)"
+ x1="6.6651416"
+ y1="13.802798"
+ x2="41.403877"
+ y2="13.802798" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2457"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2460"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2463"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2469"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2472"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(12.51365,8.745228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2475"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(6.805020,6.218578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2478"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1.641243,8.347272)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2483"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0.842481,-3.998086)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2506"
+ x1="37.000000"
+ y1="-21.750000"
+ x2="53.750000"
+ y2="9.0000000"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2509"
+ gradientUnits="userSpaceOnUse"
+ x1="37.000000"
+ y1="-21.750000"
+ x2="53.750000"
+ y2="9.0000000"
+ gradientTransform="matrix(0.889091,0.000000,0.000000,0.617886,-4.771368,39.81402)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2513"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.605509,0.000000,0.000000,0.710542,-0.224971,42.19500)"
+ x1="38.857941"
+ y1="-18.407482"
+ x2="53.750000"
+ y2="9.0000000" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2517"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.414169,0.000000,0.000000,0.778853,-1.910724,36.87850)"
+ x1="37.000000"
+ y1="-21.750000"
+ x2="53.750000"
+ y2="9.0000000" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2527"
+ id="linearGradient2533"
+ x1="-25.137094"
+ y1="-1.2491118"
+ x2="-35.652866"
+ y2="-24.884460"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2537"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(17.33814,3.415985)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2541"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.40064,1.353485)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2555"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-7.499805,1.708617)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2563"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.726830,2.481141)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3347"
+ id="linearGradient3353"
+ x1="23.303862"
+ y1="29.115711"
+ x2="29.750000"
+ y2="46.092930"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3366"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.40064,1.353485)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3368"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1.641243,8.347272)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3370"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(6.805020,6.218578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3372"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(12.51365,8.745228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3374"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3376"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3378"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3380"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3383"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3386"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3389"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3392"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3395"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.674812,3.088370)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3398"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-2.033818,0.561720)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3401"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-7.197595,2.690414)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3405"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(4.561802,-4.303373)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="-4.4493785"
+ x2="-34.700153"
+ y1="-37.550461"
+ x1="-27.006643"
+ id="linearGradient2916"
+ xlink:href="#linearGradient2298"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2914"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(57.97693,-10.56876)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2912"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,123.1162,-5.446357)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2910"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2908"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2906"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2904"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2902"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.674812,3.088370)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2900"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-2.033818,0.561720)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2898"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.197595,2.690414)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2896"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2894"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,79.36909,-3.193747)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2892"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,56.25514,-12.39388)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2890"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(88.49344,-9.697877)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2888"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(4.561802,-4.303373)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2886"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.197595,2.690414)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2884"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-2.033818,0.561720)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2882"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.674812,3.088370)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2880"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2878"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2876"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2874"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2872"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2870"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2868"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2866"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2864"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(12.51365,8.745228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2862"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(6.805020,6.218578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2860"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.641243,8.347272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2858"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(13.40064,1.353485)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2856"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="46.092930"
+ x2="29.750000"
+ y1="29.115711"
+ x1="23.303862"
+ id="linearGradient2854"
+ xlink:href="#linearGradient3347"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-0.726830,2.481141)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2852"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.499805,1.708617)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2850"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(13.40064,1.353485)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2848"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(17.33814,3.415985)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2846"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ id="linearGradient2844"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ gradientTransform="matrix(0.414169,0.000000,0.000000,0.778853,-1.910724,36.87850)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2842"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-18.407482"
+ x1="38.857941"
+ gradientTransform="matrix(0.605509,0.000000,0.000000,0.710542,-0.224971,42.19500)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2840"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="matrix(0.889091,0.000000,0.000000,0.617886,-4.771368,39.81402)"
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2838"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ id="linearGradient2836"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(0.842481,-3.998086)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2834"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.641243,8.347272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2832"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(6.805020,6.218578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2830"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(12.51365,8.745228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2828"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2826"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2824"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2822"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2820"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,4.378541,10.65407)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2818"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2816"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2814"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2812"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2810"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2808"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2806"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2804"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(9.263651,3.495228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2802"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.555020,0.968578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2800"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-1.608757,3.097272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2798"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(8.497184,-2.330824)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2796"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(14.46340,2.014073)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2794"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ gradientUnits="userSpaceOnUse"
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ id="linearGradient2792"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.12415,32.08882)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2790"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(4.207586,21.30544)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2788"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,8.185476,29.52556)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2786"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-4.010744,24.96040)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2784"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,17.05272,31.47010)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2782"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,16.67145,27.22746)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2780"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,0.229156,30.76299)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2778"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(10.30638,19.27251)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2776"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(11.19027,26.52035)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2774"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(5.356636,23.86870)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2772"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-0.932144,25.87240)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2770"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(16.14002,24.66420)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2768"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2766"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.707748,-5.784024)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2764"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2762"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2760"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2758"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2756"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2754"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(14.46340,2.014073)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2752"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(8.497184,-2.330824)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2750"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(9.263651,3.495228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2748"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.555020,0.968578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2746"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="translate(-1.608757,3.097272)"
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2744"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient4434"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(41.44608,-6.716447)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient4436"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(46.60985,-8.845141)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient4438"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(52.31848,-6.318491)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient4440"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,42.85737,-2.200849)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient4442"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,57.93093,-1.243739)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient4444"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,37.36747,-8.003450)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient4446"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,49.43869,-3.313289)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient4464"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(41.44608,-6.716447)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient4466"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(46.60985,-8.845141)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient4468"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(52.31848,-6.318491)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient4470"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,42.85737,-2.200849)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient4472"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,57.93093,-1.243739)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient4474"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,37.36747,-8.003450)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient4476"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,49.43869,-3.313289)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient4538"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(41.44608,-6.716447)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient4540"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(46.60985,-8.845141)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient4542"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(52.31848,-6.318491)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient4544"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,42.85737,-2.200849)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient4546"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,57.93093,-1.243739)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient4548"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,37.36747,-8.003450)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient4550"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,49.43869,-3.313289)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4488"
+ id="linearGradient4552"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.927204,0.000000,0.000000,0.882329,2.105168,3.373861)"
+ x1="17.181321"
+ y1="32.443652"
+ x2="47.342173"
+ y2="32.443652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4488"
+ id="linearGradient2276"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.926905,0.000000,0.000000,0.881886,2.081767,3.390390)"
+ x1="17.181321"
+ y1="32.443652"
+ x2="47.342173"
+ y2="32.443652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4488"
+ id="linearGradient2289"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.931230,0.000000,0.000000,0.881886,-13.99458,-6.609596)"
+ x1="17.181321"
+ y1="32.443652"
+ x2="47.342173"
+ y2="32.443652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient3025"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient3029"
+ gradientUnits="userSpaceOnUse"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient3033"
+ gradientUnits="userSpaceOnUse"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient3037"
+ gradientUnits="userSpaceOnUse"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient3041"
+ gradientUnits="userSpaceOnUse"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient3045"
+ gradientUnits="userSpaceOnUse"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient3049"
+ gradientUnits="userSpaceOnUse"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient3053"
+ gradientUnits="userSpaceOnUse"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient3056"
+ gradientUnits="userSpaceOnUse"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641"
+ gradientTransform="translate(3.437500,-3.000000)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient3060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.333333,0.000000,0.000000,1.000000,-6.911612,2.585786)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient3064"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-3.146447,8.838835e-2)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient3068"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,13.66667,3.000000)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient3072"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,15.66667,8.000000)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient3076"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.813402,0.000000,0.000000,0.813402,-0.698434,10.27557)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient3080"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.613903,0.000000,0.000000,0.613903,17.68234,16.99480)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient3107"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.437500,-3.000000)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient3109"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.333333,0.000000,0.000000,1.000000,-6.911612,2.585786)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient3111"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-3.146447,8.838835e-2)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient3113"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,13.66667,3.000000)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient3115"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,15.66667,8.000000)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient3117"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.813402,0.000000,0.000000,0.813402,-0.698434,10.27557)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient3119"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.613903,0.000000,0.000000,0.613903,17.68234,16.99480)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="11.313709"
+ inkscape:cx="8.6163343"
+ inkscape:cy="24.822365"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1210"
+ inkscape:window-height="704"
+ inkscape:window-x="182"
+ inkscape:window-y="144"
+ inkscape:showpageshadow="false"
+ showguides="true"
+ inkscape:guide-bbox="true" />
+ <metadata
+ id="metadata1311">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>weather-overcast</dc:title>
+ <dc:date>January 2006</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Ryan Collier (pseudo)</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:publisher>
+ <cc:Agent>
+ <dc:title>http://www.tango-project.org</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:source>http://www.pseudocode.org</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>weather</rdf:li>
+ <rdf:li>applet</rdf:li>
+ <rdf:li>notify</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/publicdomain/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <g
+ id="g10011"
+ transform="translate(-287.0000,298.0000)">
+ <path
+ id="path8267"
+ d="M 311.50259,-296.00000 C 308.73017,-296.00000 306.39436,-294.42629 305.09634,-292.18750 C 304.15198,-292.66254 303.13115,-293.00000 302.00259,-293.00000 C 298.13859,-293.00000 295.00259,-289.86400 295.00259,-286.00000 C 295.00259,-282.13600 298.13859,-279.00000 302.00259,-279.00000 C 304.42226,-279.00000 306.43268,-280.31932 307.69009,-282.18750 C 308.82429,-281.49788 310.07907,-281.00000 311.50259,-281.00000 C 312.41571,-281.00000 313.25554,-281.23202 314.06509,-281.53125 C 314.57503,-280.66352 315.24421,-279.95153 316.06509,-279.37500 C 316.05785,-279.24462 316.00259,-279.13218 316.00259,-279.00000 C 316.00259,-275.13600 319.13858,-272.00000 323.00259,-272.00000 C 326.86659,-272.00000 330.00259,-275.13600 330.00259,-279.00000 C 330.00259,-281.36969 328.74361,-283.35834 326.94009,-284.62500 C 326.94733,-284.75538 327.00259,-284.86782 327.00259,-285.00000 C 327.00259,-288.86400 323.86660,-292.00000 320.00259,-292.00000 C 319.37989,-292.00000 318.82740,-291.77781 318.25259,-291.62500 C 317.05806,-294.18384 314.51125,-296.00000 311.50259,-296.00000 z "
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ id="path8291"
+ d="M 311.50259,-295.00000 C 308.72211,-295.00000 306.36808,-293.23815 305.44009,-290.78125 C 304.45467,-291.49069 303.30866,-292.00000 302.00259,-292.00000 C 298.69059,-292.00000 296.00259,-289.31200 296.00259,-286.00000 C 296.00259,-282.68800 298.69059,-280.00000 302.00259,-280.00000 C 304.43034,-280.00000 306.49583,-281.45558 307.44009,-283.53125 C 308.56085,-282.61369 309.94223,-282.00000 311.50259,-282.00000 C 312.57713,-282.00000 313.54687,-282.31896 314.44009,-282.78125 C 314.83849,-281.78149 315.54123,-280.99493 316.37759,-280.34375 C 316.19758,-279.74813 316.00259,-279.15410 316.00259,-278.50000 C 316.00259,-274.91200 318.91459,-272.00000 322.50259,-272.00000 C 326.09059,-272.00000 329.00259,-274.91200 329.00259,-278.50000 C 329.00259,-280.86079 327.66826,-282.83019 325.78384,-283.96875 C 325.84643,-284.31598 326.00259,-284.63483 326.00259,-285.00000 C 326.00259,-288.31200 323.31459,-291.00000 320.00259,-291.00000 C 319.14961,-291.00000 318.33129,-290.82132 317.59634,-290.50000 C 316.74257,-293.09388 314.38110,-294.99999 311.50259,-295.00000 z "
+ style="opacity:1.0000000;fill:url(#linearGradient10632);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(0.964447,0.000000,0.000000,0.964447,89.29111,91.52621)"
+ d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z"
+ sodipodi:ry="6.7396116"
+ sodipodi:rx="6.7396116"
+ sodipodi:cy="-383.66660"
+ sodipodi:cx="241.80843"
+ id="path8414"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <g
+ transform="translate(69.00259,102.0000)"
+ id="g8349">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path8327"
+ sodipodi:cx="243.95184"
+ sodipodi:cy="-389.30136"
+ sodipodi:rx="6.2313786"
+ sodipodi:ry="6.2313786"
+ d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z"
+ transform="matrix(0.882630,0.000000,0.000000,0.882630,27.18078,-46.89094)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient10634);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path8329"
+ sodipodi:cx="243.95184"
+ sodipodi:cy="-389.30136"
+ sodipodi:rx="6.2313786"
+ sodipodi:ry="6.2313786"
+ d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z"
+ transform="matrix(0.882630,0.000000,0.000000,0.882630,27.18078,-46.89094)" />
+ </g>
+ <g
+ transform="translate(69.00259,102.0000)"
+ id="g8389">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path8368"
+ sodipodi:cx="251.22179"
+ sodipodi:cy="-385.78790"
+ sodipodi:rx="6.0325046"
+ sodipodi:ry="6.0325046"
+ d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z"
+ transform="matrix(0.911728,0.000000,0.000000,0.911728,21.45407,-34.76637)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient10636);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path8370"
+ sodipodi:cx="251.22179"
+ sodipodi:cy="-385.78790"
+ sodipodi:rx="6.0325046"
+ sodipodi:ry="6.0325046"
+ d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z"
+ transform="matrix(0.911728,0.000000,0.000000,0.911728,21.45407,-34.76637)" />
+ </g>
+ <g
+ transform="translate(69.00259,102.0000)"
+ id="g8323">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path8311"
+ sodipodi:cx="233.43362"
+ sodipodi:cy="-387.88715"
+ sodipodi:rx="4.3752232"
+ sodipodi:ry="4.3752232"
+ d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z"
+ transform="matrix(1.142799,0.000000,0.000000,1.142799,-33.76771,55.27704)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient10638);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path8313"
+ sodipodi:cx="233.43362"
+ sodipodi:cy="-387.88715"
+ sodipodi:rx="4.3752232"
+ sodipodi:ry="4.3752232"
+ d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z"
+ transform="matrix(1.142799,0.000000,0.000000,1.142799,-33.76771,55.27704)" />
+ </g>
+ <g
+ transform="translate(69.00259,102.0000)"
+ id="g8406">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path8393"
+ sodipodi:cx="241.80843"
+ sodipodi:cy="-383.66660"
+ sodipodi:rx="6.7396116"
+ sodipodi:ry="6.7396116"
+ d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z"
+ transform="matrix(1.038636,0.000000,0.000000,1.038636,-9.150940,14.48994)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient10640);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path8395"
+ sodipodi:cx="241.80843"
+ sodipodi:cy="-383.66660"
+ sodipodi:rx="6.7396116"
+ sodipodi:ry="6.7396116"
+ d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z"
+ transform="matrix(1.038636,0.000000,0.000000,1.038636,-9.150933,14.48993)" />
+ </g>
+ <g
+ style="stroke:none"
+ transform="matrix(0.935028,0.000000,0.000000,0.935028,446.8280,-187.6162)"
+ id="g4518">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:0.33115697;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path4520"
+ sodipodi:cx="-155.06250"
+ sodipodi:cy="-96.937500"
+ sodipodi:rx="3.1250000"
+ sodipodi:ry="3.1250000"
+ d="M -151.93750 -96.937500 A 3.1250000 3.1250000 0 1 1 -158.18750,-96.937500 A 3.1250000 3.1250000 0 1 1 -151.93750 -96.937500 z"
+ transform="matrix(1.737733,0.000000,0.000000,1.737733,110.8322,70.07649)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient10642);fill-opacity:1.0000000;stroke:none;stroke-width:0.45224530;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path4522"
+ sodipodi:cx="-155.06250"
+ sodipodi:cy="-96.937500"
+ sodipodi:rx="3.1250000"
+ sodipodi:ry="3.1250000"
+ d="M -151.93750 -96.937500 A 3.1250000 3.1250000 0 1 1 -158.18750,-96.937500 A 3.1250000 3.1250000 0 1 1 -151.93750 -96.937500 z"
+ transform="matrix(1.737733,0.000000,0.000000,1.737733,110.8948,70.01402)" />
+ </g>
+ <g
+ transform="translate(38.00259,162.0000)"
+ id="g7794">
+ <path
+ style="fill:#c4c5c2;fill-opacity:1.0000000;stroke:#888a85;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 280.50000,-445.50000 C 278.22917,-445.50000 276.39009,-443.94972 275.78125,-441.87500 C 275.08802,-442.23883 274.33674,-442.50000 273.50000,-442.50000 C 270.74000,-442.50000 268.49999,-440.26001 268.50000,-437.50000 C 268.50000,-436.92107 268.66252,-436.39230 268.84375,-435.87500 C 267.47028,-435.10426 266.50000,-433.68600 266.50000,-432.00000 C 266.50000,-429.51600 268.51600,-427.49999 271.00000,-427.50000 C 271.17713,-427.50000 289.82287,-427.50000 290.00000,-427.50000 C 292.48399,-427.50000 294.50000,-429.51600 294.50000,-432.00000 C 294.50000,-433.68600 293.52972,-435.10426 292.15625,-435.87500 C 292.33749,-436.39229 292.50000,-436.92108 292.50000,-437.50000 C 292.50000,-440.26000 290.26000,-442.49999 287.50000,-442.50000 C 286.66326,-442.50000 285.91198,-442.23883 285.21875,-441.87500 C 284.60991,-443.94972 282.77083,-445.50000 280.50000,-445.50000 z "
+ id="path7796"
+ sodipodi:nodetypes="ccsscsssscsscc" />
+ <path
+ style="opacity:1.0000000;fill:url(#linearGradient10644);fill-opacity:1.0000000;stroke:none;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 280.50000,-445.00000 C 278.31028,-445.00000 276.77640,-443.66423 276.10445,-441.15648 C 275.43599,-441.50010 274.55686,-441.98983 273.75000,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.11240,-434.89433 267.00000,-433.73178 267.00000,-432.24973 C 267.00000,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294.00000,-429.90368 294.00000,-432.24973 C 294.00000,-433.84210 292.88760,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.05100 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.60820,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445.00000 280.50000,-445.00000 z "
+ id="path7798"
+ sodipodi:nodetypes="ccsscsssscsscc" />
+ <g
+ id="g7800">
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path7802"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path7804"
+ style="opacity:1.0000000;fill:url(#linearGradient10646);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ <rect
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="rect7806"
+ width="20.000000"
+ height="9.0000000"
+ x="271.00000"
+ y="-438.00000" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path7808"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830195,-35.68869)" />
+ <g
+ id="g7810">
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19811,24.86321)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path7812"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19818,24.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path7814"
+ style="opacity:1.0000000;fill:url(#linearGradient10648);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g7816">
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path7818"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path7820"
+ style="opacity:1.0000000;fill:url(#linearGradient10650);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g7822"
+ transform="translate(-1.000000,0.000000)">
+ <path
+ id="path7824"
+ d="M 280.46875,-440.96875 C 276.88937,-440.96875 274.00000,-438.04812 274.00000,-434.46875 C 274.00000,-432.09807 275.34943,-430.13096 277.25000,-429.00000 L 283.71875,-429.00000 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.50000 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z "
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ id="path7826"
+ d="M 280.50000,-441.00000 C 276.91200,-441.00000 274.00000,-438.08799 274.00000,-434.50000 C 274.00000,-432.12360 275.34485,-430.13368 277.25000,-429.00000 L 283.75000,-429.00000 C 285.65515,-430.13368 287.00000,-432.12360 287.00000,-434.50000 C 287.00000,-438.08800 284.08800,-440.99999 280.50000,-441.00000 z "
+ style="opacity:1.0000000;fill:url(#linearGradient10652);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ </g>
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient10654);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path7828"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830296,-35.68884)" />
+ <path
+ style="fill:#888a85;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+ d="M 292.95640,-437.33396 C 292.95487,-434.64940 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.95640,-437.33396 292.95640,-437.33396 z "
+ id="path7830"
+ sodipodi:nodetypes="ccss" />
+ <g
+ id="g7832"
+ transform="matrix(1.142857,0.000000,0.000000,1.142857,-28.57139,67.00008)">
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path7834"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path7836"
+ style="opacity:1.0000000;fill:url(#linearGradient10656);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ </g>
+ <g
+ transform="translate(23.00000,158.0000)"
+ id="g7852">
+ <path
+ style="fill:#c4c5c2;fill-opacity:1.0000000;stroke:#888a85;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 280.50000,-445.50000 C 278.22917,-445.50000 276.39009,-443.94972 275.78125,-441.87500 C 275.08802,-442.23883 274.33674,-442.50000 273.50000,-442.50000 C 270.74000,-442.50000 268.49999,-440.26001 268.50000,-437.50000 C 268.50000,-436.92107 268.66252,-436.39230 268.84375,-435.87500 C 267.47028,-435.10426 266.50000,-433.68600 266.50000,-432.00000 C 266.50000,-429.51600 268.51600,-427.49999 271.00000,-427.50000 C 271.17713,-427.50000 289.82287,-427.50000 290.00000,-427.50000 C 292.48399,-427.50000 294.50000,-429.51600 294.50000,-432.00000 C 294.50000,-433.68600 293.52972,-435.10426 292.15625,-435.87500 C 292.33749,-436.39229 292.50000,-436.92108 292.50000,-437.50000 C 292.50000,-440.26000 290.26000,-442.49999 287.50000,-442.50000 C 286.66326,-442.50000 285.91198,-442.23883 285.21875,-441.87500 C 284.60991,-443.94972 282.77083,-445.50000 280.50000,-445.50000 z "
+ id="path7854"
+ sodipodi:nodetypes="ccsscsssscsscc" />
+ <path
+ style="opacity:1.0000000;fill:url(#linearGradient10658);fill-opacity:1.0000000;stroke:none;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 280.50000,-445.00000 C 278.31028,-445.00000 276.77640,-443.66423 276.10445,-441.15648 C 275.43599,-441.50010 274.55686,-441.98983 273.75000,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.11240,-434.89433 267.00000,-433.73178 267.00000,-432.24973 C 267.00000,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294.00000,-429.90368 294.00000,-432.24973 C 294.00000,-433.84210 292.88760,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.05100 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.60820,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445.00000 280.50000,-445.00000 z "
+ id="path7856"
+ sodipodi:nodetypes="ccsscsssscsscc" />
+ <g
+ id="g7858">
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path7860"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path7862"
+ style="opacity:1.0000000;fill:url(#linearGradient10660);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ <rect
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="rect7864"
+ width="20.000000"
+ height="9.0000000"
+ x="271.00000"
+ y="-438.00000" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path7866"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830195,-35.68869)" />
+ <g
+ id="g7868">
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19811,24.86321)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path7870"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19818,24.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path7872"
+ style="opacity:1.0000000;fill:url(#linearGradient10662);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g7874">
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path7876"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path7878"
+ style="opacity:1.0000000;fill:url(#linearGradient10664);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g7880"
+ transform="translate(-1.000000,0.000000)">
+ <path
+ id="path7882"
+ d="M 280.46875,-440.96875 C 276.88937,-440.96875 274.00000,-438.04812 274.00000,-434.46875 C 274.00000,-432.09807 275.34943,-430.13096 277.25000,-429.00000 L 283.71875,-429.00000 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.50000 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z "
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ id="path7884"
+ d="M 280.50000,-441.00000 C 276.91200,-441.00000 274.00000,-438.08799 274.00000,-434.50000 C 274.00000,-432.12360 275.34485,-430.13368 277.25000,-429.00000 L 283.75000,-429.00000 C 285.65515,-430.13368 287.00000,-432.12360 287.00000,-434.50000 C 287.00000,-438.08800 284.08800,-440.99999 280.50000,-441.00000 z "
+ style="opacity:1.0000000;fill:url(#linearGradient10666);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ </g>
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient10668);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path7886"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830296,-35.68884)" />
+ <path
+ style="fill:#888a85;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+ d="M 292.95640,-437.33396 C 292.95487,-434.64940 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.95640,-437.33396 292.95640,-437.33396 z "
+ id="path7888"
+ sodipodi:nodetypes="ccss" />
+ <g
+ id="g7890"
+ transform="matrix(1.142857,0.000000,0.000000,1.142857,-28.57139,67.00008)">
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path7892"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path7896"
+ style="opacity:1.0000000;fill:url(#linearGradient10670);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/icons/weather-showers.svg b/demos/embedded/weatherinfo/icons/weather-showers.svg
new file mode 100644
index 0000000..c814571
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-showers.svg
@@ -0,0 +1,4753 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg1306"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docbase="/home/rcollier/Work/Novell/Tango/weather"
+ sodipodi:docname="weather-showers.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs1308">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 24 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="48 : 24 : 1"
+ inkscape:persp3d-origin="24 : 16 : 1"
+ id="perspective530" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient11348"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.070878,0.000000,-0.535439,0.674858,287.5142,77.50802)"
+ x1="-137.49608"
+ y1="-425.28664"
+ x2="-130.60854"
+ y2="-425.28665" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient11346"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.070879,0.000000,-0.535439,0.674857,277.5140,77.50780)"
+ x1="-137.49608"
+ y1="-425.28664"
+ x2="-130.60854"
+ y2="-425.28665" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient11344"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.088439,0.000000,-0.544220,0.674842,265.9811,77.50139)"
+ x1="-137.49608"
+ y1="-425.28664"
+ x2="-130.60854"
+ y2="-425.28665" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient13352"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient13350"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient13347"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-35.00007,207.0001)"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient13345"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient13343"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient13341"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient13339"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-34.00007,207.0001)"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient13337"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6549">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6551" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6553" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient13335"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6527">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6530" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6532" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient13333"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-35.00007,207.0001)"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6538">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6540" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6542" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient13331"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6513">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6515" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6517" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient13329"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6497">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6499" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6501" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient13327"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6470">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6472" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6474" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient13325"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-34.00007,207.0001)"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8397">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8400" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8402" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8397"
+ id="linearGradient13323"
+ gradientUnits="userSpaceOnUse"
+ x1="238.00478"
+ y1="-388.47476"
+ x2="245.65462"
+ y2="-382.64539" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8315">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8317" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8319" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8315"
+ id="linearGradient13321"
+ gradientUnits="userSpaceOnUse"
+ x1="230.87598"
+ y1="-390.43951"
+ x2="235.25652"
+ y2="-386.95901" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8381">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8383" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8385" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8381"
+ id="linearGradient13319"
+ gradientUnits="userSpaceOnUse"
+ x1="246.74042"
+ y1="-391.31381"
+ x2="252.69785"
+ y2="-385.35165" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8331">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8333" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8335" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8331"
+ id="linearGradient13317"
+ gradientUnits="userSpaceOnUse"
+ x1="240.07379"
+ y1="-393.40720"
+ x2="245.82706"
+ y2="-388.55029" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8302">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8304" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8306" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8302"
+ id="linearGradient13315"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(69.00000,155.0000)"
+ x1="228.50261"
+ y1="-392.30591"
+ x2="266.36395"
+ y2="-379.26862" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4442">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop4444" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop4446" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4442"
+ id="linearGradient4467"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-59.00000,27.72122)"
+ x1="4.3602662"
+ y1="-21.904713"
+ x2="40.139732"
+ y2="-1.8452871" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4430"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.813402,0.000000,0.000000,0.813402,7.747730,-6.786242)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4426"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.813402,0.000000,0.000000,0.813402,12.43523,-5.473742)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4404"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.333333,0.000000,0.000000,1.000000,-14.02052,-13.29853)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4407"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.813402,0.000000,0.000000,0.813402,-9.728831,-6.856090)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4410"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-4.033948,-17.90479)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4413"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.613903,0.000000,0.000000,0.613903,-1.200260,0.631990)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4419"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,4.534070,-12.70656)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4422"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-9.992899,-16.32980)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4488"
+ id="linearGradient4479"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.926905,0.000000,0.000000,0.881886,-60.91820,-2.915960)"
+ x1="17.181321"
+ y1="32.443652"
+ x2="47.342173"
+ y2="32.443652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4359"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.333333,0.000000,0.000000,1.000000,-7.329241,-50.85192)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4357"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.813402,0.000000,0.000000,0.813402,-0.912551,-43.37823)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4355"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.365819,-55.70818)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4353"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.613903,0.000000,0.000000,0.613903,17.14727,-36.85890)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4351"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,15.17579,-44.92562)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4349"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,12.81910,-50.04120)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4347"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-3.681521,-53.82781)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4488">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop4490" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop4492" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4488"
+ id="linearGradient4370"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.926905,0.000000,0.000000,0.881886,-74.92090,-6.914630)"
+ x1="17.175579"
+ y1="23.374163"
+ x2="38.037014"
+ y2="38.680286" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4255"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.333333,0.000000,0.000000,1.000000,-7.329241,-50.85192)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4253"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.813402,0.000000,0.000000,0.813402,-0.912551,-43.37823)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4251"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.365819,-55.70818)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4249"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.613903,0.000000,0.000000,0.613903,17.14727,-36.85890)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4247"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,15.17579,-44.92562)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4245"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,12.81910,-50.04120)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3019">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3021" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3023" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4243"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-3.681521,-53.82781)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ id="linearGradient6525"
+ gradientUnits="userSpaceOnUse"
+ x1="4.1914001"
+ y1="11.113300"
+ x2="47.319698"
+ y2="56.052299">
+ <stop
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;"
+ id="stop6529" />
+ <stop
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0.34020618;"
+ id="stop6531" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6525"
+ id="linearGradient5250"
+ x1="8.5469341"
+ y1="30.281681"
+ x2="30.85088"
+ y2="48.301884"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.874977,0.000000,0.000000,0.921480,-56.65990,-1.553540)" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6537">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6539" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6541" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2298">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2300" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop2302" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3347">
+ <stop
+ style="stop-color:#edd400;stop-opacity:1;"
+ offset="0"
+ id="stop3349" />
+ <stop
+ style="stop-color:#edd400;stop-opacity:0;"
+ offset="1"
+ id="stop3351" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2527">
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:1;"
+ offset="0"
+ id="stop2529" />
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:0;"
+ offset="1"
+ id="stop2531" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2500">
+ <stop
+ style="stop-color:#fce94f;stop-opacity:1;"
+ offset="0"
+ id="stop2502" />
+ <stop
+ style="stop-color:#fce94f;stop-opacity:0;"
+ offset="1"
+ id="stop2504" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2392">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop2394" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop2396" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2254">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2256" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop2258" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2263"
+ gradientUnits="userSpaceOnUse"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581"
+ gradientTransform="translate(-1.608757,3.097272)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2267"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.555020,0.968578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2271"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(9.263651,3.495228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2275"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8.497184,-2.330824)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2279"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(14.46340,2.014073)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2283"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2287"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2291"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2295"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2299"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2303"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1.707748,-5.784024)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2311"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2350"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(16.14002,24.66420)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2352"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.932144,25.87240)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2354"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.356636,23.86870)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2356"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(11.19027,26.52035)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2358"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(10.30638,19.27251)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2360"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,0.229156,30.76299)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2362"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,16.67145,27.22746)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2364"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,17.05272,31.47010)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2366"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-4.010744,24.96040)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2368"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,8.185476,29.52556)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2370"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(4.207586,21.30544)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2372"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.12415,32.08882)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2392"
+ id="linearGradient2398"
+ x1="6.6651416"
+ y1="13.802798"
+ x2="41.403877"
+ y2="13.802798"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2426"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(14.46340,2.014073)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2428"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8.497184,-2.330824)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2430"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-1.608757,3.097272)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2432"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.555020,0.968578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2434"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(9.263651,3.495228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2436"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2438"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2440"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2442"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2444"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2446"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2392"
+ id="linearGradient2448"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ x1="6.6651416"
+ y1="13.802798"
+ x2="41.403877"
+ y2="13.802798" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2392"
+ id="linearGradient2451"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,4.378541,10.65407)"
+ x1="6.6651416"
+ y1="13.802798"
+ x2="41.403877"
+ y2="13.802798" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2457"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2460"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2463"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2469"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2472"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(12.51365,8.745228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2475"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(6.805020,6.218578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2478"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1.641243,8.347272)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2483"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0.842481,-3.998086)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2506"
+ x1="37.000000"
+ y1="-21.750000"
+ x2="53.750000"
+ y2="9.0000000"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2509"
+ gradientUnits="userSpaceOnUse"
+ x1="37.000000"
+ y1="-21.750000"
+ x2="53.750000"
+ y2="9.0000000"
+ gradientTransform="matrix(0.889091,0.000000,0.000000,0.617886,-4.771368,39.81402)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2513"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.605509,0.000000,0.000000,0.710542,-0.224971,42.19500)"
+ x1="38.857941"
+ y1="-18.407482"
+ x2="53.750000"
+ y2="9.0000000" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2517"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.414169,0.000000,0.000000,0.778853,-1.910724,36.87850)"
+ x1="37.000000"
+ y1="-21.750000"
+ x2="53.750000"
+ y2="9.0000000" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2527"
+ id="linearGradient2533"
+ x1="-25.137094"
+ y1="-1.2491118"
+ x2="-35.652866"
+ y2="-24.884460"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2537"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(17.33814,3.415985)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2541"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.40064,1.353485)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2555"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-7.499805,1.708617)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2563"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.726830,2.481141)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3347"
+ id="linearGradient3353"
+ x1="23.303862"
+ y1="29.115711"
+ x2="29.750000"
+ y2="46.092930"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3366"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.40064,1.353485)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3368"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1.641243,8.347272)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3370"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(6.805020,6.218578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3372"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(12.51365,8.745228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3374"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3376"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3378"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3380"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3383"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3386"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3389"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3392"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3395"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.674812,3.088370)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3398"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-2.033818,0.561720)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3401"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-7.197595,2.690414)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3405"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(4.561802,-4.303373)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="-4.4493785"
+ x2="-34.700153"
+ y1="-37.550461"
+ x1="-27.006643"
+ id="linearGradient2916"
+ xlink:href="#linearGradient2298"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2914"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(57.97693,-10.56876)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2912"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,123.1162,-5.446357)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2910"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2908"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2906"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2904"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2902"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.674812,3.088370)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2900"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-2.033818,0.561720)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2898"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.197595,2.690414)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2896"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2894"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,79.36909,-3.193747)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2892"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,56.25514,-12.39388)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2890"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(88.49344,-9.697877)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2888"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(4.561802,-4.303373)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2886"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.197595,2.690414)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2884"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-2.033818,0.561720)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2882"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.674812,3.088370)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2880"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2878"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2876"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2874"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2872"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2870"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2868"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2866"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2864"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(12.51365,8.745228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2862"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(6.805020,6.218578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2860"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.641243,8.347272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2858"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(13.40064,1.353485)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2856"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="46.092930"
+ x2="29.750000"
+ y1="29.115711"
+ x1="23.303862"
+ id="linearGradient2854"
+ xlink:href="#linearGradient3347"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-0.726830,2.481141)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2852"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.499805,1.708617)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2850"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(13.40064,1.353485)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2848"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(17.33814,3.415985)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2846"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ id="linearGradient2844"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ gradientTransform="matrix(0.414169,0.000000,0.000000,0.778853,-1.910724,36.87850)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2842"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-18.407482"
+ x1="38.857941"
+ gradientTransform="matrix(0.605509,0.000000,0.000000,0.710542,-0.224971,42.19500)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2840"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="matrix(0.889091,0.000000,0.000000,0.617886,-4.771368,39.81402)"
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2838"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ id="linearGradient2836"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(0.842481,-3.998086)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2834"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.641243,8.347272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2832"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(6.805020,6.218578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2830"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(12.51365,8.745228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2828"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2826"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2824"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2822"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2820"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,4.378541,10.65407)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2818"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2816"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2814"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2812"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2810"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2808"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2806"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2804"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(9.263651,3.495228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2802"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.555020,0.968578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2800"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-1.608757,3.097272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2798"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(8.497184,-2.330824)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2796"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(14.46340,2.014073)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2794"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ gradientUnits="userSpaceOnUse"
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ id="linearGradient2792"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.12415,32.08882)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2790"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(4.207586,21.30544)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2788"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,8.185476,29.52556)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2786"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-4.010744,24.96040)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2784"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,17.05272,31.47010)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2782"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,16.67145,27.22746)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2780"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,0.229156,30.76299)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2778"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(10.30638,19.27251)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2776"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(11.19027,26.52035)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2774"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(5.356636,23.86870)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2772"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-0.932144,25.87240)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2770"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(16.14002,24.66420)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2768"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2766"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.707748,-5.784024)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2764"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2762"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2760"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2758"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2756"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2754"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(14.46340,2.014073)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2752"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(8.497184,-2.330824)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2750"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(9.263651,3.495228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2748"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.555020,0.968578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2746"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="translate(-1.608757,3.097272)"
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2744"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="-4.4493785"
+ x2="-34.700153"
+ y1="-37.550461"
+ x1="-27.006643"
+ id="linearGradient2304"
+ xlink:href="#linearGradient2298"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1557"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(57.97693,-10.56876)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1538"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,123.1162,-5.446357)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1536"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1534"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1532"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1530"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1528"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.674812,3.088370)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1526"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-2.033818,0.561720)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1524"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.197595,2.690414)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1522"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1520"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,79.36909,-3.193747)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1518"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,56.25514,-12.39388)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1516"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(88.49344,-9.697877)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1514"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(4.561802,-4.303373)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5957"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.197595,2.690414)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5955"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-2.033818,0.561720)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5953"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.674812,3.088370)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5951"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5949"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5947"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5945"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5943"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5941"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5939"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5937"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5935"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(12.51365,8.745228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5933"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(6.805020,6.218578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5931"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.641243,8.347272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5929"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(13.40064,1.353485)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5927"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="46.092930"
+ x2="29.750000"
+ y1="29.115711"
+ x1="23.303862"
+ id="linearGradient5925"
+ xlink:href="#linearGradient3347"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-0.726830,2.481141)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5923"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.499805,1.708617)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5921"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(13.40064,1.353485)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5919"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(17.33814,3.415985)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5917"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ id="linearGradient5915"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ gradientTransform="matrix(0.414169,0.000000,0.000000,0.778853,-1.910724,36.87850)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5913"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-18.407482"
+ x1="38.857941"
+ gradientTransform="matrix(0.605509,0.000000,0.000000,0.710542,-0.224971,42.19500)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5911"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="matrix(0.889091,0.000000,0.000000,0.617886,-4.771368,39.81402)"
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5909"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ id="linearGradient5907"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(0.842481,-3.998086)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5905"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.641243,8.347272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5903"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(6.805020,6.218578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5901"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(12.51365,8.745228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5899"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5897"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5895"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5893"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5891"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,4.378541,10.65407)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5889"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5887"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5885"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5883"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5881"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5879"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5877"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5875"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(9.263651,3.495228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5873"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.555020,0.968578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5871"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-1.608757,3.097272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5869"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(8.497184,-2.330824)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5867"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(14.46340,2.014073)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5865"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ gradientUnits="userSpaceOnUse"
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ id="linearGradient5863"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.12415,32.08882)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5861"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(4.207586,21.30544)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5859"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,8.185476,29.52556)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5857"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-4.010744,24.96040)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5855"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,17.05272,31.47010)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5853"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,16.67145,27.22746)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5851"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,0.229156,30.76299)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5849"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(10.30638,19.27251)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5847"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(11.19027,26.52035)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5845"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(5.356636,23.86870)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5843"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-0.932144,25.87240)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5841"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(16.14002,24.66420)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5839"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5837"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.707748,-5.784024)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5835"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5833"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5831"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5829"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5827"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5825"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(14.46340,2.014073)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5823"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(8.497184,-2.330824)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5821"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(9.263651,3.495228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5819"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.555020,0.968578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5817"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="translate(-1.608757,3.097272)"
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5815"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6101"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.13675,17.05613)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6118"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,12.38965,19.30874)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6121"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-10.72430,10.10861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6124"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(21.51400,12.80461)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6179"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-7.197595,2.690414)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6181"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-2.033818,0.561720)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6183"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.674812,3.088370)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6185"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6187"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6189"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6191"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2527"
+ id="linearGradient6193"
+ gradientUnits="userSpaceOnUse"
+ x1="-25.137094"
+ y1="-1.2491118"
+ x2="-35.652866"
+ y2="-24.884460" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6196"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,2.209129,10.83861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6199"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-9.862093,6.148450)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6202"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,10.70137,12.90816)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6205"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-4.372193,11.95105)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6208"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.088919,7.833409)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6211"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.619711,5.306759)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6214"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-5.783488,7.435453)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6242"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-5.783488,7.435453)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6244"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.619711,5.306759)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6246"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.088919,7.833409)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6248"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,10.70137,12.90816)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6250"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-9.862093,6.148450)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6252"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,2.209129,10.83861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6254"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-9.002513,11.93373)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6257"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.297112,4.275205)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6260"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,10.91453,3.180085)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6263"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-1.156692,-1.510075)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6266"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,19.40677,5.249635)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6269"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.79432,0.174884)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6272"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8.085690,-2.351766)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6275"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(2.921913,-0.223072)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6311"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(21.51400,12.80461)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6313"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-10.72430,10.10861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6315"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,12.38965,19.30874)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6317"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-1.156692,-1.510075)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6319"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.13675,17.05613)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6321"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-5.783488,7.435453)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6323"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.619711,5.306759)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6325"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.088919,7.833409)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6327"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,10.70137,12.90816)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6329"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-9.862093,6.148450)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6331"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,2.209129,10.83861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6333"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-9.002513,11.93373)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6335"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(2.921913,-0.223072)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6337"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8.085690,-2.351766)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6339"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.79432,0.174884)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6341"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,19.40677,5.249635)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6343"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,10.91453,3.180085)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6543"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-2.763717e-17,0.972572,16.13182,0.843286)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6547"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-4.388782e-16,0.972572,25.91493,0.633642)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6551"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-4.388782e-16,0.972572,36.25638,0.633643)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="45.115814"
+ y2="44.228455" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6559"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-2.332577e-16,0.972572,16.13182,0.843286)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6561"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-6.444987e-16,0.972572,25.91493,0.633642)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6563"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-6.444987e-16,0.972572,36.25638,0.633643)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="45.115814"
+ y2="44.228455" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6566"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.577744,0.000000,-5.984325e-16,1.025105,38.38995,-1.768804)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="45.115814"
+ y2="44.228455" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6569"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.577744,0.000000,-5.984325e-16,1.025105,27.05193,-1.768805)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6572"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.589347,0.000000,-1.531909e-16,1.025217,16.34910,-1.110328)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6576"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.132431,0.000000,0.000000,1.016132,11.79178,-1.090051)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6579"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.853605,0.000000,0.000000,1.016132,20.48211,1.012885)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6582"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,14.73875,-4.143732)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6585"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,8.896962,-6.711142)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6588"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,3.612740,-4.548108)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6599"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.999079,0.000000,0.000000,1.016132,58.06881,13.00984)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6603"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.496116,0.000000,0.000000,1.282841,-0.560999,-5.855873)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6606"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.314274,0.000000,0.000000,1.016132,13.30131,15.29879)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6609"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.496116,0.000000,0.000000,1.282841,-10.35177,5.950245)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6612"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,22.63849,8.689740)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6618"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,17.34164,6.586930)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6622"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,12.56867,12.68572)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6624"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-5.783488,7.435453)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6626"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.619711,5.306759)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6628"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.088919,7.833409)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6630"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,10.70137,12.90816)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6632"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-9.862093,6.148450)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6634"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,2.209129,10.83861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6636"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-9.002513,11.93373)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4442"
+ id="linearGradient2736"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-59.00000,27.72122)"
+ x1="4.3602662"
+ y1="-21.904713"
+ x2="40.139732"
+ y2="-1.8452871" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2738"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-9.992899,-16.32980)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2740"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,4.534070,-12.70656)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2742"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.613903,0.000000,0.000000,0.613903,-1.200260,0.631990)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2745"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-4.033948,-17.90479)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2747"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.813402,0.000000,0.000000,0.813402,-9.728831,-6.856090)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2749"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.333333,0.000000,0.000000,1.000000,-14.02052,-13.29853)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2751"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.813402,0.000000,0.000000,0.813402,12.43523,-5.473742)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2753"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.813402,0.000000,0.000000,0.813402,7.747730,-6.786242)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4488"
+ id="linearGradient2755"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.926905,0.000000,0.000000,0.881886,-60.91820,-2.915960)"
+ x1="17.181321"
+ y1="32.443652"
+ x2="47.342173"
+ y2="32.443652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2757"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-3.681521,-53.82781)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2759"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,12.81910,-50.04120)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2761"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,15.17579,-44.92562)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2763"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.613903,0.000000,0.000000,0.613903,17.14727,-36.85890)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2765"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.365819,-55.70818)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2767"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.813402,0.000000,0.000000,0.813402,-0.912551,-43.37823)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2769"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.333333,0.000000,0.000000,1.000000,-7.329241,-50.85192)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4488"
+ id="linearGradient2771"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.926905,0.000000,0.000000,0.881886,-74.92090,-6.914630)"
+ x1="17.175579"
+ y1="23.374163"
+ x2="38.037014"
+ y2="38.680286" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2773"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-3.681521,-53.82781)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2775"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,12.81910,-50.04120)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2777"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,15.17579,-44.92562)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2779"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.613903,0.000000,0.000000,0.613903,17.14727,-36.85890)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2781"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.365819,-55.70818)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2783"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.813402,0.000000,0.000000,0.813402,-0.912551,-43.37823)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2785"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.333333,0.000000,0.000000,1.000000,-7.329241,-50.85192)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4488"
+ id="linearGradient2799"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.926905,0.000000,0.000000,0.881886,-11.91814,-7.649759)"
+ x1="17.175579"
+ y1="23.374163"
+ x2="38.037014"
+ y2="38.680286" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4488"
+ id="linearGradient2813"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.926905,0.000000,0.000000,0.881886,2.084560,-3.651089)"
+ x1="18.664751"
+ y1="23.374166"
+ x2="31.294144"
+ y2="35.845455" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4442"
+ id="linearGradient2827"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(4.002760,26.98609)"
+ x1="4.3602662"
+ y1="-21.904713"
+ x2="40.139732"
+ y2="-1.8452871" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="16"
+ inkscape:cx="11.996306"
+ inkscape:cy="38.014291"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1200"
+ inkscape:window-height="704"
+ inkscape:window-x="134"
+ inkscape:window-y="133"
+ inkscape:showpageshadow="false" />
+ <metadata
+ id="metadata1311">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>weather-showers</dc:title>
+ <dc:date>January 2006</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Ryan collier (pseudo)</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:publisher>
+ <cc:Agent>
+ <dc:title>http://www.tango-project.org</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:source>http://www.pseudocode.org</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>weather</rdf:li>
+ <rdf:li>appplet</rdf:li>
+ <rdf:li>notify</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/publicdomain/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <g
+ id="g11337"
+ transform="translate(-339.9823,245.0132)">
+ <rect
+ transform="matrix(1.000000,0.000000,-0.600523,0.799607,0.000000,0.000000)"
+ ry="1.5179254"
+ rx="2.3596079"
+ y="-270.75461"
+ x="189.68199"
+ height="17.509083"
+ width="32.962067"
+ id="rect6086"
+ style="opacity:1.0000000;fill:#729fcf;fill-opacity:1.0000000;stroke:#3465a4;stroke-width:1.0817814;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <g
+ style="opacity:0.80000001"
+ transform="matrix(1.000000,0.000000,0.000000,0.999611,0.000000,-7.862650e-2)"
+ id="g10414">
+ <path
+ style="fill:url(#linearGradient11344);fill-opacity:1.0000000;stroke:none;stroke-width:1.1547011;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 352.47790,-216.00000 L 359.39580,-216.00000 C 360.69054,-216.00000 361.33008,-215.50056 360.82979,-214.88017 L 352.15249,-204.12015 C 351.65217,-203.49974 350.20707,-203.00030 348.91233,-203.00030 L 344.86943,-203.00030 C 343.57469,-203.00030 342.30979,-202.95120 343.43545,-204.12015 C 343.43545,-204.12015 352.47790,-216.00000 352.47790,-216.00000 z "
+ id="rect6088"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="fill:url(#linearGradient11346);fill-opacity:1.0000000;stroke:none;stroke-width:1.1547011;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 362.74641,-216.00000 L 369.42169,-216.00000 C 370.69552,-216.00000 371.32477,-215.50054 370.83253,-214.88014 L 362.29523,-204.11987 C 361.80299,-203.49946 360.38121,-203.00000 359.10738,-203.00000 L 353.00000,-203.00000 C 353.00000,-203.00000 362.74641,-216.00000 362.74641,-216.00000 z "
+ id="path6115"
+ sodipodi:nodetypes="ccccccc" />
+ <path
+ style="fill:url(#linearGradient11348);fill-opacity:1.0000000;stroke:none;stroke-width:1.1547011;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 372.74640,-216.00000 L 379.42169,-216.00000 C 380.69553,-216.00000 381.32477,-215.50053 380.83253,-214.88014 L 372.29523,-204.11986 C 371.80299,-203.49945 370.38122,-203.00000 369.10738,-203.00000 L 363.00000,-203.00000 C 363.00000,-203.00000 372.74640,-216.00000 372.74640,-216.00000 z "
+ id="path6125"
+ sodipodi:nodetypes="ccccccc" />
+ </g>
+ </g>
+ <g
+ id="g13213"
+ transform="matrix(0.999675,0.000000,0.000000,1.000000,-286.8562,245.0000)">
+ <g
+ id="g13215">
+ <path
+ style="opacity:1.0000000;fill:#555753;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 311.50000,-242.99998 C 308.72758,-242.99998 306.39177,-241.42627 305.09375,-239.18748 C 304.14939,-239.66252 303.12856,-239.99998 302.00000,-239.99998 C 298.13600,-239.99998 295.00000,-236.86398 295.00000,-232.99998 C 295.00000,-229.13598 298.13600,-225.99998 302.00000,-225.99998 C 304.41967,-225.99998 306.43009,-227.31930 307.68750,-229.18748 C 308.82170,-228.49786 310.07648,-227.99998 311.50000,-227.99998 C 312.41312,-227.99998 313.25295,-228.23200 314.06250,-228.53123 C 314.57244,-227.66350 315.24162,-226.95151 316.06250,-226.37498 C 316.05526,-226.24460 316.00000,-226.13216 316.00000,-225.99998 C 316.00000,-222.13598 319.13599,-218.99998 323.00000,-218.99998 C 326.86400,-218.99998 330.00000,-222.13598 330.00000,-225.99998 C 330.00000,-228.36967 328.74102,-230.35832 326.93750,-231.62498 C 326.94474,-231.75536 327.00000,-231.86780 327.00000,-231.99998 C 327.00000,-235.86398 323.86401,-238.99998 320.00000,-238.99998 C 319.37730,-238.99998 318.82481,-238.77779 318.25000,-238.62498 C 317.05547,-241.18382 314.50866,-242.99998 311.50000,-242.99998 z "
+ id="path13217" />
+ <path
+ style="opacity:1.0000000;fill:url(#linearGradient13315);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 311.50000,-241.99998 C 308.71952,-241.99998 306.36549,-240.23813 305.43750,-237.78123 C 304.45208,-238.49067 303.30607,-238.99998 302.00000,-238.99998 C 298.68800,-238.99998 296.00000,-236.31198 296.00000,-232.99998 C 296.00000,-229.68798 298.68800,-226.99998 302.00000,-226.99998 C 304.42775,-226.99998 306.49324,-228.45556 307.43750,-230.53123 C 308.55826,-229.61367 309.93964,-228.99998 311.50000,-228.99998 C 312.57454,-228.99998 313.54428,-229.31894 314.43750,-229.78123 C 314.83590,-228.78147 315.53864,-227.99491 316.37500,-227.34373 C 316.19499,-226.74811 316.00000,-226.15408 316.00000,-225.49998 C 316.00000,-221.91198 318.91200,-218.99998 322.50000,-218.99998 C 326.08800,-218.99998 329.00000,-221.91198 329.00000,-225.49998 C 329.00000,-227.86077 327.66567,-229.83017 325.78125,-230.96873 C 325.84384,-231.31596 326.00000,-231.63481 326.00000,-231.99998 C 326.00000,-235.31198 323.31200,-237.99998 320.00000,-237.99998 C 319.14702,-237.99998 318.32870,-237.82130 317.59375,-237.49998 C 316.73998,-240.09386 314.37851,-241.99997 311.50000,-241.99998 z "
+ id="path13219" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13221"
+ sodipodi:cx="241.80843"
+ sodipodi:cy="-383.66660"
+ sodipodi:rx="6.7396116"
+ sodipodi:ry="6.7396116"
+ d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z"
+ transform="matrix(0.964447,0.000000,0.000000,0.964447,89.28852,144.5262)" />
+ <g
+ id="g13223">
+ <path
+ transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)"
+ d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z"
+ sodipodi:ry="6.2313786"
+ sodipodi:rx="6.2313786"
+ sodipodi:cy="-389.30136"
+ sodipodi:cx="243.95184"
+ id="path13225"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)"
+ d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z"
+ sodipodi:ry="6.2313786"
+ sodipodi:rx="6.2313786"
+ sodipodi:cy="-389.30136"
+ sodipodi:cx="243.95184"
+ id="path13227"
+ style="opacity:0.49444440;fill:url(#linearGradient13317);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g13229">
+ <path
+ transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)"
+ d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z"
+ sodipodi:ry="6.0325046"
+ sodipodi:rx="6.0325046"
+ sodipodi:cy="-385.78790"
+ sodipodi:cx="251.22179"
+ id="path13231"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)"
+ d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z"
+ sodipodi:ry="6.0325046"
+ sodipodi:rx="6.0325046"
+ sodipodi:cy="-385.78790"
+ sodipodi:cx="251.22179"
+ id="path13233"
+ style="opacity:0.49444440;fill:url(#linearGradient13319);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g13235">
+ <path
+ transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)"
+ d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z"
+ sodipodi:ry="4.3752232"
+ sodipodi:rx="4.3752232"
+ sodipodi:cy="-387.88715"
+ sodipodi:cx="233.43362"
+ id="path13237"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)"
+ d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z"
+ sodipodi:ry="4.3752232"
+ sodipodi:rx="4.3752232"
+ sodipodi:cy="-387.88715"
+ sodipodi:cx="233.43362"
+ id="path13239"
+ style="opacity:0.49444440;fill:url(#linearGradient13321);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g13241">
+ <path
+ transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84906,169.4899)"
+ d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z"
+ sodipodi:ry="6.7396116"
+ sodipodi:rx="6.7396116"
+ sodipodi:cy="-383.66660"
+ sodipodi:cx="241.80843"
+ id="path13243"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84907,169.4899)"
+ d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z"
+ sodipodi:ry="6.7396116"
+ sodipodi:rx="6.7396116"
+ sodipodi:cy="-383.66660"
+ sodipodi:cx="241.80843"
+ id="path13245"
+ style="opacity:0.49444440;fill:url(#linearGradient13323);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ </g>
+ <g
+ transform="translate(72.00007,7.999930)"
+ id="g13247">
+ <path
+ style="fill:#888a85;fill-opacity:1.0000000;stroke:#555753;stroke-width:1.0001625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z "
+ id="path13249"
+ sodipodi:nodetypes="ccsscsssscsscc" />
+ <path
+ style="opacity:1.0000000;fill:url(#linearGradient13325);fill-opacity:1.0000000;stroke:none;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z "
+ id="path13251"
+ sodipodi:nodetypes="ccsscsssscsscc" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13253"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47777775;fill:url(#linearGradient13327);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13255"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" />
+ <rect
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="rect13257"
+ width="20.000000"
+ height="9.0000000"
+ x="236.99994"
+ y="-230.99992" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13259"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13261"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47777775;fill:url(#linearGradient13329);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13263"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13265"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47777775;fill:url(#linearGradient13331);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13267"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" />
+ <path
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z "
+ id="path13269" />
+ <path
+ style="opacity:0.47777775;fill:url(#linearGradient13333);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z "
+ id="path13271" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47777775;fill:url(#linearGradient13335);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13273"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)" />
+ <path
+ style="fill:#555753;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+ d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z "
+ id="path13275"
+ sodipodi:nodetypes="ccss" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13277"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47777775;fill:url(#linearGradient13337);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13279"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" />
+ </g>
+ <g
+ transform="translate(56.98577,3.983930)"
+ id="g13281">
+ <path
+ style="fill:#888a85;fill-opacity:1.0000000;stroke:#555753;stroke-width:1.0001625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z "
+ id="path13283"
+ sodipodi:nodetypes="ccsscsssscsscc" />
+ <path
+ style="opacity:1.0000000;fill:url(#linearGradient13339);fill-opacity:1.0000000;stroke:none;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z "
+ id="path13285"
+ sodipodi:nodetypes="ccsscsssscsscc" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13287"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47777775;fill:url(#linearGradient13341);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13289"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" />
+ <rect
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="rect13291"
+ width="20.000000"
+ height="9.0000000"
+ x="236.99994"
+ y="-230.99992" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13293"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13295"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47777775;fill:url(#linearGradient13343);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13297"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13299"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47777775;fill:url(#linearGradient13345);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13301"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" />
+ <path
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z "
+ id="path13303" />
+ <path
+ style="opacity:0.47777775;fill:url(#linearGradient13347);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z "
+ id="path13305" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47777775;fill:url(#linearGradient13350);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13307"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)" />
+ <path
+ style="fill:#555753;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+ d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z "
+ id="path13309"
+ sodipodi:nodetypes="ccss" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13311"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47777775;fill:url(#linearGradient13352);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13313"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/icons/weather-sleet.svg b/demos/embedded/weatherinfo/icons/weather-sleet.svg
new file mode 100644
index 0000000..f1cb9eb
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-sleet.svg
@@ -0,0 +1,5196 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg1306"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docbase="/home/rcollier/Work/Novell/Tango/weather"
+ sodipodi:docname="weather-sleet.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs1308">
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5358"
+ id="linearGradient12213"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)"
+ x1="6.8942904"
+ y1="-359.82382"
+ x2="27.400387"
+ y2="-381.30222" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5346"
+ id="radialGradient12211"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)"
+ cx="21.920311"
+ cy="-382.96454"
+ fx="21.920311"
+ fy="-382.96454"
+ r="21.743534" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5358"
+ id="linearGradient12201"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)"
+ x1="6.8942904"
+ y1="-359.82382"
+ x2="27.400387"
+ y2="-381.30222" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5346"
+ id="radialGradient12199"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)"
+ cx="21.920311"
+ cy="-382.96454"
+ fx="21.920311"
+ fy="-382.96454"
+ r="21.743534" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5358"
+ id="linearGradient12253"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)"
+ x1="6.8942904"
+ y1="-359.82382"
+ x2="27.400387"
+ y2="-381.30222" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5346"
+ id="radialGradient12251"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)"
+ cx="21.920311"
+ cy="-382.96454"
+ fx="21.920311"
+ fy="-382.96454"
+ r="21.743534" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5358"
+ id="linearGradient12237"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)"
+ x1="6.8942904"
+ y1="-359.82382"
+ x2="27.400387"
+ y2="-381.30222" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5346"
+ id="radialGradient12235"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)"
+ cx="21.920311"
+ cy="-382.96454"
+ fx="21.920311"
+ fy="-382.96454"
+ r="21.743534" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5358"
+ id="linearGradient12225"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)"
+ x1="6.8942904"
+ y1="-359.82382"
+ x2="27.400387"
+ y2="-381.30222" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5346"
+ id="radialGradient12223"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)"
+ cx="21.920311"
+ cy="-382.96454"
+ fx="21.920311"
+ fy="-382.96454"
+ r="21.743534" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5358">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop5360" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop5362" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5358"
+ id="linearGradient12249"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)"
+ x1="6.8942904"
+ y1="-359.82382"
+ x2="27.400387"
+ y2="-381.30222" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5346">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop5348" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop5350" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5346"
+ id="radialGradient12247"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)"
+ cx="21.920311"
+ cy="-382.96454"
+ fx="21.920311"
+ fy="-382.96454"
+ r="21.743534" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 24 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="48 : 24 : 1"
+ inkscape:persp3d-origin="24 : 16 : 1"
+ id="perspective6329" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient11348"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.070878,0.000000,-0.535439,0.674858,287.5142,77.50802)"
+ x1="-137.49608"
+ y1="-425.28664"
+ x2="-130.60854"
+ y2="-425.28665" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient11346"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.070879,0.000000,-0.535439,0.674857,277.5140,77.50780)"
+ x1="-137.49608"
+ y1="-425.28664"
+ x2="-130.60854"
+ y2="-425.28665" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient11344"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.088439,0.000000,-0.544220,0.674842,265.9811,77.50139)"
+ x1="-137.49608"
+ y1="-425.28664"
+ x2="-130.60854"
+ y2="-425.28665" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient13352"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient13350"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient13347"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-35.00007,207.0001)"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient13345"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient13343"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient13341"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient13339"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-34.00007,207.0001)"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient13337"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6549">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6551" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6553" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient13335"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6527">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6530" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6532" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient13333"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-35.00007,207.0001)"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6538">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6540" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6542" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient13331"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6513">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6515" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6517" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient13329"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6497">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6499" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6501" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient13327"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6470">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6472" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6474" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient13325"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-34.00007,207.0001)"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8397">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8400" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8402" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8397"
+ id="linearGradient13323"
+ gradientUnits="userSpaceOnUse"
+ x1="238.00478"
+ y1="-388.47476"
+ x2="245.65462"
+ y2="-382.64539" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8315">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8317" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8319" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8315"
+ id="linearGradient13321"
+ gradientUnits="userSpaceOnUse"
+ x1="230.87598"
+ y1="-390.43951"
+ x2="235.25652"
+ y2="-386.95901" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8381">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8383" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8385" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8381"
+ id="linearGradient13319"
+ gradientUnits="userSpaceOnUse"
+ x1="246.74042"
+ y1="-391.31381"
+ x2="252.69785"
+ y2="-385.35165" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8331">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8333" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8335" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8331"
+ id="linearGradient13317"
+ gradientUnits="userSpaceOnUse"
+ x1="240.07379"
+ y1="-393.40720"
+ x2="245.82706"
+ y2="-388.55029" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8302">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8304" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8306" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8302"
+ id="linearGradient13315"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(69.00000,155.0000)"
+ x1="228.50261"
+ y1="-392.30591"
+ x2="266.36395"
+ y2="-379.26862" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4442">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop4444" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop4446" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4442"
+ id="linearGradient4467"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-59.00000,27.72122)"
+ x1="4.3602662"
+ y1="-21.904713"
+ x2="40.139732"
+ y2="-1.8452871" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4430"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.813402,0.000000,0.000000,0.813402,7.747730,-6.786242)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4426"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.813402,0.000000,0.000000,0.813402,12.43523,-5.473742)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4404"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.333333,0.000000,0.000000,1.000000,-14.02052,-13.29853)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4407"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.813402,0.000000,0.000000,0.813402,-9.728831,-6.856090)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4410"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-4.033948,-17.90479)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4413"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.613903,0.000000,0.000000,0.613903,-1.200260,0.631990)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4419"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,4.534070,-12.70656)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4422"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-9.992899,-16.32980)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4488"
+ id="linearGradient4479"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.926905,0.000000,0.000000,0.881886,-60.91820,-2.915960)"
+ x1="17.181321"
+ y1="32.443652"
+ x2="47.342173"
+ y2="32.443652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4359"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.333333,0.000000,0.000000,1.000000,-7.329241,-50.85192)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4357"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.813402,0.000000,0.000000,0.813402,-0.912551,-43.37823)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4355"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.365819,-55.70818)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4353"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.613903,0.000000,0.000000,0.613903,17.14727,-36.85890)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4351"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,15.17579,-44.92562)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4349"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,12.81910,-50.04120)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4347"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-3.681521,-53.82781)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4488">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop4490" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop4492" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4488"
+ id="linearGradient4370"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.926905,0.000000,0.000000,0.881886,-74.92090,-6.914630)"
+ x1="17.175579"
+ y1="23.374163"
+ x2="38.037014"
+ y2="38.680286" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4255"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.333333,0.000000,0.000000,1.000000,-7.329241,-50.85192)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4253"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.813402,0.000000,0.000000,0.813402,-0.912551,-43.37823)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4251"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.365819,-55.70818)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4249"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.613903,0.000000,0.000000,0.613903,17.14727,-36.85890)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4247"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,15.17579,-44.92562)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4245"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,12.81910,-50.04120)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3019">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3021" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3023" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient4243"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-3.681521,-53.82781)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ id="linearGradient6525"
+ gradientUnits="userSpaceOnUse"
+ x1="4.1914001"
+ y1="11.113300"
+ x2="47.319698"
+ y2="56.052299">
+ <stop
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;"
+ id="stop6529" />
+ <stop
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0.34020618;"
+ id="stop6531" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6525"
+ id="linearGradient5250"
+ x1="8.5469341"
+ y1="30.281681"
+ x2="30.85088"
+ y2="48.301884"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.874977,0.000000,0.000000,0.921480,-56.65990,-1.553540)" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6537">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6539" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6541" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2298">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2300" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop2302" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3347">
+ <stop
+ style="stop-color:#edd400;stop-opacity:1;"
+ offset="0"
+ id="stop3349" />
+ <stop
+ style="stop-color:#edd400;stop-opacity:0;"
+ offset="1"
+ id="stop3351" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2527">
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:1;"
+ offset="0"
+ id="stop2529" />
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:0;"
+ offset="1"
+ id="stop2531" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2500">
+ <stop
+ style="stop-color:#fce94f;stop-opacity:1;"
+ offset="0"
+ id="stop2502" />
+ <stop
+ style="stop-color:#fce94f;stop-opacity:0;"
+ offset="1"
+ id="stop2504" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2392">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop2394" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop2396" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2254">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2256" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop2258" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2263"
+ gradientUnits="userSpaceOnUse"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581"
+ gradientTransform="translate(-1.608757,3.097272)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2267"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.555020,0.968578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2271"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(9.263651,3.495228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2275"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8.497184,-2.330824)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2279"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(14.46340,2.014073)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2283"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2287"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2291"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2295"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2299"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2303"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1.707748,-5.784024)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2311"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2350"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(16.14002,24.66420)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2352"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.932144,25.87240)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2354"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.356636,23.86870)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2356"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(11.19027,26.52035)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2358"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(10.30638,19.27251)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2360"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,0.229156,30.76299)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2362"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,16.67145,27.22746)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2364"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,17.05272,31.47010)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2366"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-4.010744,24.96040)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2368"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,8.185476,29.52556)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2370"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(4.207586,21.30544)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2372"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.12415,32.08882)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2392"
+ id="linearGradient2398"
+ x1="6.6651416"
+ y1="13.802798"
+ x2="41.403877"
+ y2="13.802798"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2426"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(14.46340,2.014073)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2428"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8.497184,-2.330824)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2430"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-1.608757,3.097272)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2432"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.555020,0.968578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2434"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(9.263651,3.495228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2436"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2438"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2440"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2442"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2444"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2446"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2392"
+ id="linearGradient2448"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ x1="6.6651416"
+ y1="13.802798"
+ x2="41.403877"
+ y2="13.802798" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2392"
+ id="linearGradient2451"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,4.378541,10.65407)"
+ x1="6.6651416"
+ y1="13.802798"
+ x2="41.403877"
+ y2="13.802798" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2457"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2460"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2463"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2469"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2472"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(12.51365,8.745228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2475"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(6.805020,6.218578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2478"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1.641243,8.347272)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2483"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0.842481,-3.998086)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2506"
+ x1="37.000000"
+ y1="-21.750000"
+ x2="53.750000"
+ y2="9.0000000"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2509"
+ gradientUnits="userSpaceOnUse"
+ x1="37.000000"
+ y1="-21.750000"
+ x2="53.750000"
+ y2="9.0000000"
+ gradientTransform="matrix(0.889091,0.000000,0.000000,0.617886,-4.771368,39.81402)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2513"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.605509,0.000000,0.000000,0.710542,-0.224971,42.19500)"
+ x1="38.857941"
+ y1="-18.407482"
+ x2="53.750000"
+ y2="9.0000000" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2517"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.414169,0.000000,0.000000,0.778853,-1.910724,36.87850)"
+ x1="37.000000"
+ y1="-21.750000"
+ x2="53.750000"
+ y2="9.0000000" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2527"
+ id="linearGradient2533"
+ x1="-25.137094"
+ y1="-1.2491118"
+ x2="-35.652866"
+ y2="-24.884460"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2537"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(17.33814,3.415985)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2541"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.40064,1.353485)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2555"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-7.499805,1.708617)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2563"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.726830,2.481141)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3347"
+ id="linearGradient3353"
+ x1="23.303862"
+ y1="29.115711"
+ x2="29.750000"
+ y2="46.092930"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3366"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.40064,1.353485)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3368"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1.641243,8.347272)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3370"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(6.805020,6.218578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3372"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(12.51365,8.745228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3374"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3376"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3378"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3380"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3383"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3386"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3389"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3392"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3395"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.674812,3.088370)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3398"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-2.033818,0.561720)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3401"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-7.197595,2.690414)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3405"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(4.561802,-4.303373)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="-4.4493785"
+ x2="-34.700153"
+ y1="-37.550461"
+ x1="-27.006643"
+ id="linearGradient2916"
+ xlink:href="#linearGradient2298"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2914"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(57.97693,-10.56876)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2912"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,123.1162,-5.446357)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2910"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2908"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2906"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2904"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2902"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.674812,3.088370)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2900"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-2.033818,0.561720)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2898"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.197595,2.690414)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2896"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2894"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,79.36909,-3.193747)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2892"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,56.25514,-12.39388)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2890"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(88.49344,-9.697877)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2888"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(4.561802,-4.303373)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2886"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.197595,2.690414)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2884"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-2.033818,0.561720)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2882"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.674812,3.088370)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2880"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2878"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2876"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2874"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2872"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2870"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2868"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2866"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2864"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(12.51365,8.745228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2862"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(6.805020,6.218578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2860"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.641243,8.347272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2858"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(13.40064,1.353485)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2856"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="46.092930"
+ x2="29.750000"
+ y1="29.115711"
+ x1="23.303862"
+ id="linearGradient2854"
+ xlink:href="#linearGradient3347"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-0.726830,2.481141)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2852"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.499805,1.708617)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2850"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(13.40064,1.353485)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2848"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(17.33814,3.415985)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2846"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ id="linearGradient2844"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ gradientTransform="matrix(0.414169,0.000000,0.000000,0.778853,-1.910724,36.87850)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2842"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-18.407482"
+ x1="38.857941"
+ gradientTransform="matrix(0.605509,0.000000,0.000000,0.710542,-0.224971,42.19500)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2840"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="matrix(0.889091,0.000000,0.000000,0.617886,-4.771368,39.81402)"
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2838"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ id="linearGradient2836"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(0.842481,-3.998086)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2834"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.641243,8.347272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2832"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(6.805020,6.218578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2830"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(12.51365,8.745228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2828"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2826"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2824"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2822"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2820"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,4.378541,10.65407)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2818"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2816"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2814"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2812"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2810"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2808"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2806"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2804"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(9.263651,3.495228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2802"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.555020,0.968578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2800"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-1.608757,3.097272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2798"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(8.497184,-2.330824)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2796"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(14.46340,2.014073)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2794"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ gradientUnits="userSpaceOnUse"
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ id="linearGradient2792"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.12415,32.08882)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2790"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(4.207586,21.30544)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2788"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,8.185476,29.52556)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2786"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-4.010744,24.96040)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2784"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,17.05272,31.47010)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2782"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,16.67145,27.22746)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2780"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,0.229156,30.76299)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2778"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(10.30638,19.27251)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2776"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(11.19027,26.52035)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2774"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(5.356636,23.86870)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2772"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-0.932144,25.87240)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2770"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(16.14002,24.66420)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2768"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2766"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.707748,-5.784024)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2764"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2762"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2760"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2758"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2756"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2754"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(14.46340,2.014073)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2752"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(8.497184,-2.330824)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2750"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(9.263651,3.495228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2748"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.555020,0.968578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2746"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="translate(-1.608757,3.097272)"
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2744"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="-4.4493785"
+ x2="-34.700153"
+ y1="-37.550461"
+ x1="-27.006643"
+ id="linearGradient2304"
+ xlink:href="#linearGradient2298"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1557"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(57.97693,-10.56876)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1538"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,123.1162,-5.446357)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1536"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1534"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1532"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1530"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1528"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.674812,3.088370)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1526"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-2.033818,0.561720)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1524"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.197595,2.690414)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1522"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1520"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,79.36909,-3.193747)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1518"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,56.25514,-12.39388)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1516"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(88.49344,-9.697877)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1514"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(4.561802,-4.303373)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5957"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.197595,2.690414)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5955"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-2.033818,0.561720)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5953"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.674812,3.088370)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5951"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5949"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5947"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5945"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5943"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5941"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5939"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5937"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5935"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(12.51365,8.745228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5933"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(6.805020,6.218578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5931"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.641243,8.347272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5929"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(13.40064,1.353485)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5927"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="46.092930"
+ x2="29.750000"
+ y1="29.115711"
+ x1="23.303862"
+ id="linearGradient5925"
+ xlink:href="#linearGradient3347"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-0.726830,2.481141)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5923"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.499805,1.708617)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5921"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(13.40064,1.353485)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5919"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(17.33814,3.415985)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5917"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ id="linearGradient5915"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ gradientTransform="matrix(0.414169,0.000000,0.000000,0.778853,-1.910724,36.87850)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5913"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-18.407482"
+ x1="38.857941"
+ gradientTransform="matrix(0.605509,0.000000,0.000000,0.710542,-0.224971,42.19500)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5911"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="matrix(0.889091,0.000000,0.000000,0.617886,-4.771368,39.81402)"
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5909"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ id="linearGradient5907"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(0.842481,-3.998086)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5905"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.641243,8.347272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5903"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(6.805020,6.218578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5901"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(12.51365,8.745228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5899"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5897"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5895"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5893"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5891"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,4.378541,10.65407)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5889"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5887"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5885"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5883"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5881"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5879"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5877"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5875"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(9.263651,3.495228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5873"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.555020,0.968578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5871"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-1.608757,3.097272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5869"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(8.497184,-2.330824)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5867"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(14.46340,2.014073)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5865"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ gradientUnits="userSpaceOnUse"
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ id="linearGradient5863"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.12415,32.08882)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5861"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(4.207586,21.30544)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5859"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,8.185476,29.52556)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5857"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-4.010744,24.96040)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5855"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,17.05272,31.47010)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5853"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,16.67145,27.22746)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5851"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,0.229156,30.76299)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5849"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(10.30638,19.27251)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5847"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(11.19027,26.52035)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5845"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(5.356636,23.86870)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5843"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-0.932144,25.87240)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5841"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(16.14002,24.66420)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5839"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5837"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.707748,-5.784024)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5835"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5833"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5831"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5829"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5827"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5825"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(14.46340,2.014073)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5823"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(8.497184,-2.330824)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5821"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(9.263651,3.495228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5819"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.555020,0.968578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5817"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="translate(-1.608757,3.097272)"
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5815"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6101"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.13675,17.05613)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6118"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,12.38965,19.30874)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6121"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-10.72430,10.10861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6124"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(21.51400,12.80461)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6179"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-7.197595,2.690414)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6181"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-2.033818,0.561720)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6183"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.674812,3.088370)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6185"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6187"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6189"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6191"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2527"
+ id="linearGradient6193"
+ gradientUnits="userSpaceOnUse"
+ x1="-25.137094"
+ y1="-1.2491118"
+ x2="-35.652866"
+ y2="-24.884460" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6196"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,2.209129,10.83861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6199"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-9.862093,6.148450)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6202"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,10.70137,12.90816)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6205"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-4.372193,11.95105)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6208"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.088919,7.833409)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6211"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.619711,5.306759)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6214"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-5.783488,7.435453)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6242"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-5.783488,7.435453)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6244"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.619711,5.306759)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6246"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.088919,7.833409)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6248"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,10.70137,12.90816)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6250"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-9.862093,6.148450)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6252"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,2.209129,10.83861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6254"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-9.002513,11.93373)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6257"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.297112,4.275205)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6260"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,10.91453,3.180085)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6263"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-1.156692,-1.510075)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6266"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,19.40677,5.249635)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6269"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.79432,0.174884)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6272"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8.085690,-2.351766)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6275"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(2.921913,-0.223072)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6311"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(21.51400,12.80461)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6313"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-10.72430,10.10861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6315"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,12.38965,19.30874)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6317"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-1.156692,-1.510075)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6319"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.13675,17.05613)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6321"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-5.783488,7.435453)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6323"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.619711,5.306759)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6325"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.088919,7.833409)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6327"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,10.70137,12.90816)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6329"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-9.862093,6.148450)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6331"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,2.209129,10.83861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6333"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-9.002513,11.93373)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6335"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(2.921913,-0.223072)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6337"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8.085690,-2.351766)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6339"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.79432,0.174884)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6341"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,19.40677,5.249635)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6343"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,10.91453,3.180085)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6543"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-2.763717e-17,0.972572,16.13182,0.843286)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6547"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-4.388782e-16,0.972572,25.91493,0.633642)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6551"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-4.388782e-16,0.972572,36.25638,0.633643)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="45.115814"
+ y2="44.228455" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6559"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-2.332577e-16,0.972572,16.13182,0.843286)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6561"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-6.444987e-16,0.972572,25.91493,0.633642)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6563"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-6.444987e-16,0.972572,36.25638,0.633643)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="45.115814"
+ y2="44.228455" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6566"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.577744,0.000000,-5.984325e-16,1.025105,38.38995,-1.768804)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="45.115814"
+ y2="44.228455" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6569"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.577744,0.000000,-5.984325e-16,1.025105,27.05193,-1.768805)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6572"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.589347,0.000000,-1.531909e-16,1.025217,16.34910,-1.110328)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6576"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.132431,0.000000,0.000000,1.016132,11.79178,-1.090051)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6579"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.853605,0.000000,0.000000,1.016132,20.48211,1.012885)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6582"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,14.73875,-4.143732)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6585"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,8.896962,-6.711142)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6588"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,3.612740,-4.548108)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6599"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.999079,0.000000,0.000000,1.016132,58.06881,13.00984)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6603"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.496116,0.000000,0.000000,1.282841,-0.560999,-5.855873)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6606"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.314274,0.000000,0.000000,1.016132,13.30131,15.29879)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6609"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.496116,0.000000,0.000000,1.282841,-10.35177,5.950245)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6612"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,22.63849,8.689740)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6618"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,17.34164,6.586930)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6622"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,12.56867,12.68572)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6624"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-5.783488,7.435453)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6626"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.619711,5.306759)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6628"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.088919,7.833409)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6630"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,10.70137,12.90816)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6632"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-9.862093,6.148450)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6634"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,2.209129,10.83861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6636"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-9.002513,11.93373)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4442"
+ id="linearGradient2736"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-59.00000,27.72122)"
+ x1="4.3602662"
+ y1="-21.904713"
+ x2="40.139732"
+ y2="-1.8452871" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2738"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-9.992899,-16.32980)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2740"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,4.534070,-12.70656)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2742"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.613903,0.000000,0.000000,0.613903,-1.200260,0.631990)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2745"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-4.033948,-17.90479)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2747"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.813402,0.000000,0.000000,0.813402,-9.728831,-6.856090)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2749"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.333333,0.000000,0.000000,1.000000,-14.02052,-13.29853)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2751"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.813402,0.000000,0.000000,0.813402,12.43523,-5.473742)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2753"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.813402,0.000000,0.000000,0.813402,7.747730,-6.786242)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4488"
+ id="linearGradient2755"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.926905,0.000000,0.000000,0.881886,-60.91820,-2.915960)"
+ x1="17.181321"
+ y1="32.443652"
+ x2="47.342173"
+ y2="32.443652" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2757"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-3.681521,-53.82781)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2759"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,12.81910,-50.04120)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2761"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,15.17579,-44.92562)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2763"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.613903,0.000000,0.000000,0.613903,17.14727,-36.85890)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2765"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.365819,-55.70818)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2767"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.813402,0.000000,0.000000,0.813402,-0.912551,-43.37823)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2769"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.333333,0.000000,0.000000,1.000000,-7.329241,-50.85192)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4488"
+ id="linearGradient2771"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.926905,0.000000,0.000000,0.881886,-74.92090,-6.914630)"
+ x1="17.175579"
+ y1="23.374163"
+ x2="38.037014"
+ y2="38.680286" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2773"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-3.681521,-53.82781)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2775"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,12.81910,-50.04120)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2777"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.888889,0.000000,0.000000,0.888889,15.17579,-44.92562)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2779"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.613903,0.000000,0.000000,0.613903,17.14727,-36.85890)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2781"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.365819,-55.70818)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2783"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.813402,0.000000,0.000000,0.813402,-0.912551,-43.37823)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3019"
+ id="linearGradient2785"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.333333,0.000000,0.000000,1.000000,-7.329241,-50.85192)"
+ x1="23.688078"
+ y1="28.201012"
+ x2="29.521708"
+ y2="34.034641" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4488"
+ id="linearGradient2799"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.926905,0.000000,0.000000,0.881886,-11.91814,-7.649759)"
+ x1="17.175579"
+ y1="23.374163"
+ x2="38.037014"
+ y2="38.680286" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4488"
+ id="linearGradient2813"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.926905,0.000000,0.000000,0.881886,2.084560,-3.651089)"
+ x1="18.664751"
+ y1="23.374166"
+ x2="31.294144"
+ y2="35.845455" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4442"
+ id="linearGradient2827"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(4.002760,26.98609)"
+ x1="4.3602662"
+ y1="-21.904713"
+ x2="40.139732"
+ y2="-1.8452871" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5346"
+ id="radialGradient8290"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)"
+ cx="21.920311"
+ cy="-382.96454"
+ fx="21.920311"
+ fy="-382.96454"
+ r="21.743534" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5358"
+ id="linearGradient8292"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)"
+ x1="6.8942904"
+ y1="-359.82382"
+ x2="27.400387"
+ y2="-381.30222" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5346"
+ id="radialGradient8294"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)"
+ cx="21.920311"
+ cy="-382.96454"
+ fx="21.920311"
+ fy="-382.96454"
+ r="21.743534" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5358"
+ id="linearGradient8296"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)"
+ x1="6.8942904"
+ y1="-359.82382"
+ x2="27.400387"
+ y2="-381.30222" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5346"
+ id="radialGradient8298"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)"
+ cx="21.920311"
+ cy="-382.96454"
+ fx="21.920311"
+ fy="-382.96454"
+ r="21.743534" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5358"
+ id="linearGradient8300"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)"
+ x1="6.8942904"
+ y1="-359.82382"
+ x2="27.400387"
+ y2="-381.30222" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5346"
+ id="radialGradient8302"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)"
+ cx="21.920311"
+ cy="-382.96454"
+ fx="21.920311"
+ fy="-382.96454"
+ r="21.743534" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5358"
+ id="linearGradient8304"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)"
+ x1="6.8942904"
+ y1="-359.82382"
+ x2="27.400387"
+ y2="-381.30222" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5346"
+ id="radialGradient8306"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)"
+ cx="21.920311"
+ cy="-382.96454"
+ fx="21.920311"
+ fy="-382.96454"
+ r="21.743534" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5358"
+ id="linearGradient8308"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)"
+ x1="6.8942904"
+ y1="-359.82382"
+ x2="27.400387"
+ y2="-381.30222" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5346"
+ id="radialGradient8310"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)"
+ cx="21.920311"
+ cy="-382.96454"
+ fx="21.920311"
+ fy="-382.96454"
+ r="21.743534" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5358"
+ id="linearGradient8312"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)"
+ x1="6.8942904"
+ y1="-359.82382"
+ x2="27.400387"
+ y2="-381.30222" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="24"
+ inkscape:cy="24"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="982"
+ inkscape:window-height="965"
+ inkscape:window-x="1280"
+ inkscape:window-y="28"
+ inkscape:showpageshadow="false" />
+ <metadata
+ id="metadata1311">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>weather-showers</dc:title>
+ <dc:date>January 2006</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Ryan collier (pseudo)</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:publisher>
+ <cc:Agent>
+ <dc:title>http://www.tango-project.org</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:source>http://www.pseudocode.org</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>weather</rdf:li>
+ <rdf:li>appplet</rdf:li>
+ <rdf:li>notify</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <g
+ id="g10087">
+ <g
+ transform="matrix(0.999675,0.000000,0.000000,1.000000,-286.8562,245.0000)"
+ id="g13213">
+ <g
+ id="g13215">
+ <path
+ id="path13217"
+ d="M 311.50000,-242.99998 C 308.72758,-242.99998 306.39177,-241.42627 305.09375,-239.18748 C 304.14939,-239.66252 303.12856,-239.99998 302.00000,-239.99998 C 298.13600,-239.99998 295.00000,-236.86398 295.00000,-232.99998 C 295.00000,-229.13598 298.13600,-225.99998 302.00000,-225.99998 C 304.41967,-225.99998 306.43009,-227.31930 307.68750,-229.18748 C 308.82170,-228.49786 310.07648,-227.99998 311.50000,-227.99998 C 312.41312,-227.99998 313.25295,-228.23200 314.06250,-228.53123 C 314.57244,-227.66350 315.24162,-226.95151 316.06250,-226.37498 C 316.05526,-226.24460 316.00000,-226.13216 316.00000,-225.99998 C 316.00000,-222.13598 319.13599,-218.99998 323.00000,-218.99998 C 326.86400,-218.99998 330.00000,-222.13598 330.00000,-225.99998 C 330.00000,-228.36967 328.74102,-230.35832 326.93750,-231.62498 C 326.94474,-231.75536 327.00000,-231.86780 327.00000,-231.99998 C 327.00000,-235.86398 323.86401,-238.99998 320.00000,-238.99998 C 319.37730,-238.99998 318.82481,-238.77779 318.25000,-238.62498 C 317.05547,-241.18382 314.50866,-242.99998 311.50000,-242.99998 z "
+ style="opacity:1.0000000;fill:#555753;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ id="path13219"
+ d="M 311.50000,-241.99998 C 308.71952,-241.99998 306.36549,-240.23813 305.43750,-237.78123 C 304.45208,-238.49067 303.30607,-238.99998 302.00000,-238.99998 C 298.68800,-238.99998 296.00000,-236.31198 296.00000,-232.99998 C 296.00000,-229.68798 298.68800,-226.99998 302.00000,-226.99998 C 304.42775,-226.99998 306.49324,-228.45556 307.43750,-230.53123 C 308.55826,-229.61367 309.93964,-228.99998 311.50000,-228.99998 C 312.57454,-228.99998 313.54428,-229.31894 314.43750,-229.78123 C 314.83590,-228.78147 315.53864,-227.99491 316.37500,-227.34373 C 316.19499,-226.74811 316.00000,-226.15408 316.00000,-225.49998 C 316.00000,-221.91198 318.91200,-218.99998 322.50000,-218.99998 C 326.08800,-218.99998 329.00000,-221.91198 329.00000,-225.49998 C 329.00000,-227.86077 327.66567,-229.83017 325.78125,-230.96873 C 325.84384,-231.31596 326.00000,-231.63481 326.00000,-231.99998 C 326.00000,-235.31198 323.31200,-237.99998 320.00000,-237.99998 C 319.14702,-237.99998 318.32870,-237.82130 317.59375,-237.49998 C 316.73998,-240.09386 314.37851,-241.99997 311.50000,-241.99998 z "
+ style="opacity:1.0000000;fill:url(#linearGradient13315);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(0.964447,0.000000,0.000000,0.964447,89.28852,144.5262)"
+ d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z"
+ sodipodi:ry="6.7396116"
+ sodipodi:rx="6.7396116"
+ sodipodi:cy="-383.66660"
+ sodipodi:cx="241.80843"
+ id="path13221"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <g
+ id="g13223">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13225"
+ sodipodi:cx="243.95184"
+ sodipodi:cy="-389.30136"
+ sodipodi:rx="6.2313786"
+ sodipodi:ry="6.2313786"
+ d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z"
+ transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.49444440;fill:url(#linearGradient13317);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13227"
+ sodipodi:cx="243.95184"
+ sodipodi:cy="-389.30136"
+ sodipodi:rx="6.2313786"
+ sodipodi:ry="6.2313786"
+ d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z"
+ transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)" />
+ </g>
+ <g
+ id="g13229">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13231"
+ sodipodi:cx="251.22179"
+ sodipodi:cy="-385.78790"
+ sodipodi:rx="6.0325046"
+ sodipodi:ry="6.0325046"
+ d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z"
+ transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.49444440;fill:url(#linearGradient13319);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13233"
+ sodipodi:cx="251.22179"
+ sodipodi:cy="-385.78790"
+ sodipodi:rx="6.0325046"
+ sodipodi:ry="6.0325046"
+ d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z"
+ transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)" />
+ </g>
+ <g
+ id="g13235">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13237"
+ sodipodi:cx="233.43362"
+ sodipodi:cy="-387.88715"
+ sodipodi:rx="4.3752232"
+ sodipodi:ry="4.3752232"
+ d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z"
+ transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.49444440;fill:url(#linearGradient13321);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13239"
+ sodipodi:cx="233.43362"
+ sodipodi:cy="-387.88715"
+ sodipodi:rx="4.3752232"
+ sodipodi:ry="4.3752232"
+ d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z"
+ transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)" />
+ </g>
+ <g
+ id="g13241">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13243"
+ sodipodi:cx="241.80843"
+ sodipodi:cy="-383.66660"
+ sodipodi:rx="6.7396116"
+ sodipodi:ry="6.7396116"
+ d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z"
+ transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84906,169.4899)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.49444440;fill:url(#linearGradient13323);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path13245"
+ sodipodi:cx="241.80843"
+ sodipodi:cy="-383.66660"
+ sodipodi:rx="6.7396116"
+ sodipodi:ry="6.7396116"
+ d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z"
+ transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84907,169.4899)" />
+ </g>
+ </g>
+ <g
+ id="g13247"
+ transform="translate(72.00007,7.999930)">
+ <path
+ sodipodi:nodetypes="ccsscsssscsscc"
+ id="path13249"
+ d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z "
+ style="fill:#888a85;fill-opacity:1.0000000;stroke:#555753;stroke-width:1.0001625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="ccsscsssscsscc"
+ id="path13251"
+ d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z "
+ style="opacity:1.0000000;fill:url(#linearGradient13325);fill-opacity:1.0000000;stroke:none;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path13253"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path13255"
+ style="opacity:0.47777775;fill:url(#linearGradient13327);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <rect
+ y="-230.99992"
+ x="236.99994"
+ height="9.0000000"
+ width="20.000000"
+ id="rect13257"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path13259"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path13261"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path13263"
+ style="opacity:0.47777775;fill:url(#linearGradient13329);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path13265"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path13267"
+ style="opacity:0.47777775;fill:url(#linearGradient13331);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ id="path13269"
+ d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z "
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ id="path13271"
+ d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z "
+ style="opacity:0.47777775;fill:url(#linearGradient13333);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path13273"
+ style="opacity:0.47777775;fill:url(#linearGradient13335);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:nodetypes="ccss"
+ id="path13275"
+ d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z "
+ style="fill:#555753;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path13277"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path13279"
+ style="opacity:0.47777775;fill:url(#linearGradient13337);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g13281"
+ transform="translate(56.98577,3.983930)">
+ <path
+ sodipodi:nodetypes="ccsscsssscsscc"
+ id="path13283"
+ d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z "
+ style="fill:#888a85;fill-opacity:1.0000000;stroke:#555753;stroke-width:1.0001625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="ccsscsssscsscc"
+ id="path13285"
+ d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z "
+ style="opacity:1.0000000;fill:url(#linearGradient13339);fill-opacity:1.0000000;stroke:none;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path13287"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path13289"
+ style="opacity:0.47777775;fill:url(#linearGradient13341);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <rect
+ y="-230.99992"
+ x="236.99994"
+ height="9.0000000"
+ width="20.000000"
+ id="rect13291"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path13293"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path13295"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path13297"
+ style="opacity:0.47777775;fill:url(#linearGradient13343);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path13299"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path13301"
+ style="opacity:0.47777775;fill:url(#linearGradient13345);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ id="path13303"
+ d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z "
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ id="path13305"
+ d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z "
+ style="opacity:0.47777775;fill:url(#linearGradient13347);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path13307"
+ style="opacity:0.47777775;fill:url(#linearGradient13350);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:nodetypes="ccss"
+ id="path13309"
+ d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z "
+ style="fill:#555753;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path13311"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path13313"
+ style="opacity:0.47777775;fill:url(#linearGradient13352);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ </g>
+ <g
+ transform="translate(17.177973,-2)"
+ id="g8264">
+ <g
+ id="g12227"
+ transform="translate(-219.67784,275.47179)">
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path12229"
+ d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z"
+ style="fill:#729fcf;fill-opacity:1;stroke:#204a87;stroke-width:1.07456863;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="csscc"
+ id="path12231"
+ d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z"
+ style="opacity:0.46111109;fill:url(#radialGradient8290);fill-opacity:1;stroke:none;stroke-width:1.07457018;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path12233"
+ d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z"
+ style="opacity:1;fill:url(#linearGradient8292);fill-opacity:1;stroke:none;stroke-width:1.07457018;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1" />
+ </g>
+ <g
+ id="g12191"
+ transform="translate(-239.67784,265.47959)">
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path12193"
+ d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z"
+ style="fill:#729fcf;fill-opacity:1;stroke:#204a87;stroke-width:1.07456863;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="csscc"
+ id="path12195"
+ d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z"
+ style="opacity:0.46111109;fill:url(#radialGradient8294);fill-opacity:1;stroke:none;stroke-width:1.07457018;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path12197"
+ d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z"
+ style="opacity:1;fill:url(#linearGradient8296);fill-opacity:1;stroke:none;stroke-width:1.07457018;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1" />
+ </g>
+ <g
+ id="g12239"
+ transform="translate(-210.67944,272.47179)">
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path12241"
+ d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z"
+ style="fill:#729fcf;fill-opacity:1;stroke:#204a87;stroke-width:1.07456863;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="csscc"
+ id="path12243"
+ d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z"
+ style="opacity:0.46111109;fill:url(#radialGradient8298);fill-opacity:1;stroke:none;stroke-width:1.07457018;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path12245"
+ d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z"
+ style="opacity:1;fill:url(#linearGradient8300);fill-opacity:1;stroke:none;stroke-width:1.07457018;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1" />
+ </g>
+ <g
+ id="g12186"
+ transform="translate(-241.67794,275.47309)">
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path6059"
+ d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z"
+ style="fill:#729fcf;fill-opacity:1;stroke:#204a87;stroke-width:1.07456863;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="csscc"
+ id="path6061"
+ d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z"
+ style="opacity:0.46111109;fill:url(#radialGradient8302);fill-opacity:1;stroke:none;stroke-width:1.07457018;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path6063"
+ d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z"
+ style="opacity:1;fill:url(#linearGradient8304);fill-opacity:1;stroke:none;stroke-width:1.07457018;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1" />
+ </g>
+ <g
+ id="g12203"
+ transform="translate(-231.67944,270.47179)">
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path12205"
+ d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z"
+ style="fill:#729fcf;fill-opacity:1;stroke:#204a87;stroke-width:1.07456863;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="csscc"
+ id="path12207"
+ d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z"
+ style="opacity:0.46111109;fill:url(#radialGradient8306);fill-opacity:1;stroke:none;stroke-width:1.07457018;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path12209"
+ d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z"
+ style="opacity:1;fill:url(#linearGradient8308);fill-opacity:1;stroke:none;stroke-width:1.07457018;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1" />
+ </g>
+ <g
+ id="g12215"
+ transform="translate(-217.67944,265.47959)">
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path12217"
+ d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z"
+ style="fill:#729fcf;fill-opacity:1;stroke:#204a87;stroke-width:1.07456863;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="csscc"
+ id="path12219"
+ d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z"
+ style="opacity:0.46111109;fill:url(#radialGradient8310);fill-opacity:1;stroke:none;stroke-width:1.07457018;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path12221"
+ d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z"
+ style="opacity:1;fill:url(#linearGradient8312);fill-opacity:1;stroke:none;stroke-width:1.07457018;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1" />
+ </g>
+ </g>
+ <g
+ transform="translate(-162.99643,221.88968)"
+ id="g12157">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#729fcf;stroke-width:1.45874679;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path12159"
+ sodipodi:cx="29.610096"
+ sodipodi:cy="-316.77872"
+ sodipodi:rx="2.2097087"
+ sodipodi:ry="2.2097087"
+ d="M 31.819805,-316.77872 A 2.2097087,2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087,2.2097087 0 1 1 31.819805,-316.77872 z"
+ transform="matrix(0.68552,0,0,0.68552,151.7017,27.15827)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#729fcf;stroke-width:1.09220433;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path12161"
+ sodipodi:cx="29.610096"
+ sodipodi:cy="-316.77872"
+ sodipodi:rx="2.2097087"
+ sodipodi:ry="2.2097087"
+ d="M 31.819805,-316.77872 A 2.2097087,2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087,2.2097087 0 1 1 31.819805,-316.77872 z"
+ transform="matrix(0.915572,0,0,0.915587,152.4091,103.5577)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#729fcf;stroke-width:1.47481608;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path12163"
+ sodipodi:cx="29.610096"
+ sodipodi:cy="-316.77872"
+ sodipodi:rx="2.2097087"
+ sodipodi:ry="2.2097087"
+ d="M 31.819805,-316.77872 A 2.2097087,2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087,2.2097087 0 1 1 31.819805,-316.77872 z"
+ transform="matrix(0.672406,0,0,0.683742,153.0708,34.62149)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#729fcf;stroke-width:1.4678179;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path12165"
+ sodipodi:cx="29.610096"
+ sodipodi:cy="-316.77872"
+ sodipodi:rx="2.2097087"
+ sodipodi:ry="2.2097087"
+ d="M 31.819805,-316.77872 A 2.2097087,2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087,2.2097087 0 1 1 31.819805,-316.77872 z"
+ transform="matrix(0.6823,0,0,0.680269,181.797,30.49471)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#729fcf;stroke-width:0.89916825;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path12167"
+ sodipodi:cx="29.610096"
+ sodipodi:cy="-316.77872"
+ sodipodi:rx="2.2097087"
+ sodipodi:ry="2.2097087"
+ d="M 31.819805,-316.77872 A 2.2097087,2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087,2.2097087 0 1 1 31.819805,-316.77872 z"
+ transform="matrix(1.107132,0,0,1.117168,157.2177,164.9217)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#729fcf;stroke-width:0.91822928;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path12169"
+ sodipodi:cx="29.610096"
+ sodipodi:cy="-316.77872"
+ sodipodi:rx="2.2097087"
+ sodipodi:ry="2.2097087"
+ d="M 31.819805,-316.77872 A 2.2097087,2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087,2.2097087 0 1 1 31.819805,-316.77872 z"
+ transform="matrix(1.127592,0,0,1.05183,161.6119,151.3731)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#729fcf;stroke-width:1.46413279;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path12171"
+ sodipodi:cx="29.610096"
+ sodipodi:cy="-316.77872"
+ sodipodi:rx="2.2097087"
+ sodipodi:ry="2.2097087"
+ d="M 31.819805,-316.77872 A 2.2097087,2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087,2.2097087 0 1 1 31.819805,-316.77872 z"
+ transform="matrix(0.685519,0,0,0.680487,164.6869,34.56369)" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/icons/weather-snow.svg b/demos/embedded/weatherinfo/icons/weather-snow.svg
new file mode 100644
index 0000000..6c7b4ad
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-snow.svg
@@ -0,0 +1,1974 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg1306"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docbase="/home/rcollier/Work/Novell/Tango/weather"
+ sodipodi:docname="weather-snow.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs1308">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 24 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="48 : 24 : 1"
+ inkscape:persp3d-origin="24 : 16 : 1"
+ id="perspective253" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient10630"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient10628"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient10626"
+ gradientUnits="userSpaceOnUse"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient10624"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient10622"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient10620"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient10618"
+ gradientUnits="userSpaceOnUse"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient10616"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6549">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6551" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6553" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient10614"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6527">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6530" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6532" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient10612"
+ gradientUnits="userSpaceOnUse"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6538">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6540" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6542" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient10610"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6513">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6515" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6517" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient10608"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6497">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6499" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6501" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient10606"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6470">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6472" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6474" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient10604"
+ gradientUnits="userSpaceOnUse"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient7834">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop7836" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop7838" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7834"
+ id="linearGradient10602"
+ gradientUnits="userSpaceOnUse"
+ x1="-156.29044"
+ y1="-100.53421"
+ x2="-153.09810"
+ y2="-96.544556" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8397">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8400" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8402" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8397"
+ id="linearGradient10600"
+ gradientUnits="userSpaceOnUse"
+ x1="238.00478"
+ y1="-388.47476"
+ x2="245.65462"
+ y2="-382.64539" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8315">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8317" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8319" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8315"
+ id="linearGradient10598"
+ gradientUnits="userSpaceOnUse"
+ x1="230.87598"
+ y1="-390.43951"
+ x2="235.25652"
+ y2="-386.95901" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8381">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8383" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8385" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8381"
+ id="linearGradient10596"
+ gradientUnits="userSpaceOnUse"
+ x1="246.74042"
+ y1="-391.31381"
+ x2="252.69785"
+ y2="-385.35165" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8331">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8333" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8335" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8331"
+ id="linearGradient10594"
+ gradientUnits="userSpaceOnUse"
+ x1="240.07379"
+ y1="-393.40720"
+ x2="245.82706"
+ y2="-388.55029" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8302">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8304" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8306" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8302"
+ id="linearGradient10592"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(122.0230,102.0000)"
+ x1="228.50261"
+ y1="-392.30591"
+ x2="278.91510"
+ y2="-375.37952" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2298"
+ id="linearGradient7748"
+ gradientUnits="userSpaceOnUse"
+ x1="-27.006643"
+ y1="-37.550461"
+ x2="-34.700153"
+ y2="-4.4493785" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2527"
+ id="linearGradient7746"
+ gradientUnits="userSpaceOnUse"
+ x1="-25.137094"
+ y1="-1.2491118"
+ x2="-35.652866"
+ y2="-24.884460" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3478"
+ id="linearGradient7744"
+ gradientUnits="userSpaceOnUse"
+ x1="11.149398"
+ y1="-43.997444"
+ x2="4.9625983"
+ y2="-8.3080902" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4829">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop4831" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop4833" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3478">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3480" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3482" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2298">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2300" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop2302" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3347">
+ <stop
+ style="stop-color:#edd400;stop-opacity:1;"
+ offset="0"
+ id="stop3349" />
+ <stop
+ style="stop-color:#edd400;stop-opacity:0;"
+ offset="1"
+ id="stop3351" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2527">
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:1;"
+ offset="0"
+ id="stop2529" />
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:0;"
+ offset="1"
+ id="stop2531" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2500">
+ <stop
+ style="stop-color:#fce94f;stop-opacity:1;"
+ offset="0"
+ id="stop2502" />
+ <stop
+ style="stop-color:#fce94f;stop-opacity:0;"
+ offset="1"
+ id="stop2504" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2392">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop2394" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop2396" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2254">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2256" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop2258" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2263"
+ gradientUnits="userSpaceOnUse"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581"
+ gradientTransform="translate(-1.608757,3.097272)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2267"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.555020,0.968578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2271"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(9.263651,3.495228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2275"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8.497184,-2.330824)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2279"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(14.46340,2.014073)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2283"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2287"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2291"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2295"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2299"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2303"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1.707748,-5.784024)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2311"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2350"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(16.14002,24.66420)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2352"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.932144,25.87240)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2354"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.356636,23.86870)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2356"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(11.19027,26.52035)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2358"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(10.30638,19.27251)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2360"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,0.229156,30.76299)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2362"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,16.67145,27.22746)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2364"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,17.05272,31.47010)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2366"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-4.010744,24.96040)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2368"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,8.185476,29.52556)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2370"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(4.207586,21.30544)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2372"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.12415,32.08882)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2392"
+ id="linearGradient2398"
+ x1="6.6651416"
+ y1="13.802798"
+ x2="41.403877"
+ y2="13.802798"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2426"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(14.46340,2.014073)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2428"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8.497184,-2.330824)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2430"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-1.608757,3.097272)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2432"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.555020,0.968578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2434"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(9.263651,3.495228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2436"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2438"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2440"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2442"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2444"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2446"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2392"
+ id="linearGradient2448"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ x1="6.6651416"
+ y1="13.802798"
+ x2="41.403877"
+ y2="13.802798" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2392"
+ id="linearGradient2451"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,4.378541,10.65407)"
+ x1="6.6651416"
+ y1="13.802798"
+ x2="41.403877"
+ y2="13.802798" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2457"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2460"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2463"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2469"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2472"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(12.51365,8.745228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2475"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(6.805020,6.218578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2478"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1.641243,8.347272)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2483"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0.842481,-3.998086)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2506"
+ x1="37.000000"
+ y1="-21.750000"
+ x2="53.750000"
+ y2="9.0000000"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2509"
+ gradientUnits="userSpaceOnUse"
+ x1="37.000000"
+ y1="-21.750000"
+ x2="53.750000"
+ y2="9.0000000"
+ gradientTransform="matrix(0.889091,0.000000,0.000000,0.617886,-4.771368,39.81402)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2513"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.605509,0.000000,0.000000,0.710542,-0.224971,42.19500)"
+ x1="38.857941"
+ y1="-18.407482"
+ x2="53.750000"
+ y2="9.0000000" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2517"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.414169,0.000000,0.000000,0.778853,-1.910724,36.87850)"
+ x1="37.000000"
+ y1="-21.750000"
+ x2="53.750000"
+ y2="9.0000000" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2527"
+ id="linearGradient2533"
+ x1="-25.137094"
+ y1="-1.2491118"
+ x2="-35.652866"
+ y2="-24.884460"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2537"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(17.33814,3.415985)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2541"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.40064,1.353485)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2555"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-7.499805,1.708617)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2563"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.726830,2.481141)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3347"
+ id="linearGradient3353"
+ x1="23.303862"
+ y1="29.115711"
+ x2="29.750000"
+ y2="46.092930"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3366"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.40064,1.353485)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3368"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1.641243,8.347272)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3370"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(6.805020,6.218578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3372"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(12.51365,8.745228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3374"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3376"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3378"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3380"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3383"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3386"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3389"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3392"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3395"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.674812,3.088370)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3398"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-2.033818,0.561720)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3401"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-7.197595,2.690414)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3405"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(4.561802,-4.303373)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1514"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(88.49344,-9.697877)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1516"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,56.25514,-12.39388)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1518"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,79.36909,-3.193747)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2527"
+ id="linearGradient1520"
+ gradientUnits="userSpaceOnUse"
+ x1="-25.137094"
+ y1="-1.2491118"
+ x2="-35.652866"
+ y2="-24.884460" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1522"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-7.197595,2.690414)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1524"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-2.033818,0.561720)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1526"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.674812,3.088370)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1528"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1530"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1532"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1534"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1536"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,123.1162,-5.446357)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1538"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(57.97693,-10.56876)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2527"
+ id="linearGradient1557"
+ gradientUnits="userSpaceOnUse"
+ x1="-25.137094"
+ y1="-1.2491118"
+ x2="-35.652866"
+ y2="-24.884460" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4829"
+ id="radialGradient4835"
+ cx="-35.001785"
+ cy="-1.1439217"
+ fx="-35.001785"
+ fy="-1.1439217"
+ r="17.500893"
+ gradientTransform="matrix(1.000000,0.000000,0.000000,0.565657,-5.564992e-15,-0.496855)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2298"
+ id="linearGradient1427"
+ gradientUnits="userSpaceOnUse"
+ x1="-27.006643"
+ y1="-37.550461"
+ x2="-34.700153"
+ y2="-4.4493785" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3478"
+ id="linearGradient1431"
+ gradientUnits="userSpaceOnUse"
+ x1="11.149398"
+ y1="-43.997444"
+ x2="4.9625983"
+ y2="-8.3080902" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3478"
+ id="linearGradient14128"
+ gradientUnits="userSpaceOnUse"
+ x1="11.149398"
+ y1="-43.997444"
+ x2="4.9625983"
+ y2="-8.3080902" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2527"
+ id="linearGradient14130"
+ gradientUnits="userSpaceOnUse"
+ x1="-25.137094"
+ y1="-1.2491118"
+ x2="-35.652866"
+ y2="-24.884460" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2298"
+ id="linearGradient14132"
+ gradientUnits="userSpaceOnUse"
+ x1="-27.006643"
+ y1="-37.550461"
+ x2="-34.700153"
+ y2="-4.4493785" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="8"
+ inkscape:cx="23.594384"
+ inkscape:cy="39.722629"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="859"
+ inkscape:window-height="818"
+ inkscape:window-x="0"
+ inkscape:window-y="30"
+ inkscape:showpageshadow="false" />
+ <metadata
+ id="metadata1311">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>weather-snow</dc:title>
+ <dc:date>January 2006</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Ryan Collier (pseudo)</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:publisher>
+ <cc:Agent>
+ <dc:title>http://www.tango-project.org</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:source>http://www.pseudocode.org</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>weather</rdf:li>
+ <rdf:li>applet</rdf:li>
+ <rdf:li>notification</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/publicdomain/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <g
+ id="g9947"
+ transform="translate(-340.0455,298.0001)">
+ <path
+ id="path8718"
+ d="M 364.52300,-296.00000 C 361.75058,-296.00000 359.41477,-294.42629 358.11675,-292.18750 C 357.17239,-292.66254 356.15156,-293.00000 355.02300,-293.00000 C 351.15900,-293.00000 348.02300,-289.86400 348.02300,-286.00000 C 348.02300,-282.13600 351.15900,-279.00000 355.02300,-279.00000 C 357.44267,-279.00000 359.45309,-280.31932 360.71050,-282.18750 C 361.84470,-281.49788 363.09948,-281.00000 364.52300,-281.00000 C 365.43612,-281.00000 366.27595,-281.23202 367.08550,-281.53125 C 367.59544,-280.66352 368.26462,-279.95153 369.08550,-279.37500 C 369.07826,-279.24462 369.02300,-279.13218 369.02300,-279.00000 C 369.02300,-275.13600 372.15899,-272.00000 376.02300,-272.00000 C 379.88700,-272.00000 383.02300,-275.13600 383.02300,-279.00000 C 383.02300,-281.36969 381.76402,-283.35834 379.96050,-284.62500 C 379.96774,-284.75538 380.02300,-284.86782 380.02300,-285.00000 C 380.02300,-288.86400 376.88701,-292.00000 373.02300,-292.00000 C 372.40030,-292.00000 371.84781,-291.77781 371.27300,-291.62500 C 370.07847,-294.18384 367.53166,-296.00000 364.52300,-296.00000 z "
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ id="path8720"
+ d="M 364.52300,-295.00000 C 361.74252,-295.00000 359.38849,-293.23815 358.46050,-290.78125 C 357.47508,-291.49069 356.32907,-292.00000 355.02300,-292.00000 C 351.71100,-292.00000 349.02300,-289.31200 349.02300,-286.00000 C 349.02300,-282.68800 351.71100,-280.00000 355.02300,-280.00000 C 357.45075,-280.00000 359.51624,-281.45558 360.46050,-283.53125 C 361.58126,-282.61369 362.96264,-282.00000 364.52300,-282.00000 C 365.59754,-282.00000 366.56728,-282.31896 367.46050,-282.78125 C 367.85890,-281.78149 368.56164,-280.99493 369.39800,-280.34375 C 369.21799,-279.74813 369.02300,-279.15410 369.02300,-278.50000 C 369.02300,-274.91200 371.93500,-272.00000 375.52300,-272.00000 C 379.11100,-272.00000 382.02300,-274.91200 382.02300,-278.50000 C 382.02300,-280.86079 380.68867,-282.83019 378.80425,-283.96875 C 378.86684,-284.31598 379.02300,-284.63483 379.02300,-285.00000 C 379.02300,-288.31200 376.33500,-291.00000 373.02300,-291.00000 C 372.17002,-291.00000 371.35170,-290.82132 370.61675,-290.50000 C 369.76298,-293.09388 367.40151,-294.99999 364.52300,-295.00000 z "
+ style="opacity:1.0000000;fill:url(#linearGradient10592);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(0.964447,0.000000,0.000000,0.964447,142.3115,91.52621)"
+ d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z"
+ sodipodi:ry="6.7396116"
+ sodipodi:rx="6.7396116"
+ sodipodi:cy="-383.66660"
+ sodipodi:cx="241.80843"
+ id="path8722"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <g
+ transform="translate(122.0230,102.0000)"
+ id="g8724">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path8726"
+ sodipodi:cx="243.95184"
+ sodipodi:cy="-389.30136"
+ sodipodi:rx="6.2313786"
+ sodipodi:ry="6.2313786"
+ d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z"
+ transform="matrix(0.882630,0.000000,0.000000,0.882630,27.18078,-46.89094)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient10594);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path8728"
+ sodipodi:cx="243.95184"
+ sodipodi:cy="-389.30136"
+ sodipodi:rx="6.2313786"
+ sodipodi:ry="6.2313786"
+ d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z"
+ transform="matrix(0.882630,0.000000,0.000000,0.882630,27.18078,-46.89094)" />
+ </g>
+ <g
+ transform="translate(122.0230,102.0000)"
+ id="g8730">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path8732"
+ sodipodi:cx="251.22179"
+ sodipodi:cy="-385.78790"
+ sodipodi:rx="6.0325046"
+ sodipodi:ry="6.0325046"
+ d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z"
+ transform="matrix(0.911728,0.000000,0.000000,0.911728,21.45407,-34.76637)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient10596);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path8734"
+ sodipodi:cx="251.22179"
+ sodipodi:cy="-385.78790"
+ sodipodi:rx="6.0325046"
+ sodipodi:ry="6.0325046"
+ d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z"
+ transform="matrix(0.911728,0.000000,0.000000,0.911728,21.45407,-34.76637)" />
+ </g>
+ <g
+ transform="translate(122.0230,102.0000)"
+ id="g8736">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path8738"
+ sodipodi:cx="233.43362"
+ sodipodi:cy="-387.88715"
+ sodipodi:rx="4.3752232"
+ sodipodi:ry="4.3752232"
+ d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z"
+ transform="matrix(1.142799,0.000000,0.000000,1.142799,-33.76771,55.27704)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient10598);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path8740"
+ sodipodi:cx="233.43362"
+ sodipodi:cy="-387.88715"
+ sodipodi:rx="4.3752232"
+ sodipodi:ry="4.3752232"
+ d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z"
+ transform="matrix(1.142799,0.000000,0.000000,1.142799,-33.76771,55.27704)" />
+ </g>
+ <g
+ transform="translate(122.0230,102.0000)"
+ id="g8742">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path8744"
+ sodipodi:cx="241.80843"
+ sodipodi:cy="-383.66660"
+ sodipodi:rx="6.7396116"
+ sodipodi:ry="6.7396116"
+ d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z"
+ transform="matrix(1.038636,0.000000,0.000000,1.038636,-9.150940,14.48994)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient10600);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path8746"
+ sodipodi:cx="241.80843"
+ sodipodi:cy="-383.66660"
+ sodipodi:rx="6.7396116"
+ sodipodi:ry="6.7396116"
+ d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z"
+ transform="matrix(1.038636,0.000000,0.000000,1.038636,-9.150933,14.48993)" />
+ </g>
+ <g
+ style="stroke:none"
+ transform="matrix(0.935028,0.000000,0.000000,0.935028,499.8484,-187.6162)"
+ id="g8748">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:0.33115697;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path8750"
+ sodipodi:cx="-155.06250"
+ sodipodi:cy="-96.937500"
+ sodipodi:rx="3.1250000"
+ sodipodi:ry="3.1250000"
+ d="M -151.93750 -96.937500 A 3.1250000 3.1250000 0 1 1 -158.18750,-96.937500 A 3.1250000 3.1250000 0 1 1 -151.93750 -96.937500 z"
+ transform="matrix(1.737733,0.000000,0.000000,1.737733,110.8322,70.07649)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient10602);fill-opacity:1.0000000;stroke:none;stroke-width:0.45224530;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path8752"
+ sodipodi:cx="-155.06250"
+ sodipodi:cy="-96.937500"
+ sodipodi:rx="3.1250000"
+ sodipodi:ry="3.1250000"
+ d="M -151.93750 -96.937500 A 3.1250000 3.1250000 0 1 1 -158.18750,-96.937500 A 3.1250000 3.1250000 0 1 1 -151.93750 -96.937500 z"
+ transform="matrix(1.737733,0.000000,0.000000,1.737733,110.8948,70.01402)" />
+ </g>
+ <g
+ transform="translate(91.02300,162.0000)"
+ id="g8798">
+ <path
+ style="fill:#c4c5c2;fill-opacity:1.0000000;stroke:#888a85;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 280.50000,-445.50000 C 278.22917,-445.50000 276.39009,-443.94972 275.78125,-441.87500 C 275.08802,-442.23883 274.33674,-442.50000 273.50000,-442.50000 C 270.74000,-442.50000 268.49999,-440.26001 268.50000,-437.50000 C 268.50000,-436.92107 268.66252,-436.39230 268.84375,-435.87500 C 267.47028,-435.10426 266.50000,-433.68600 266.50000,-432.00000 C 266.50000,-429.51600 268.51600,-427.49999 271.00000,-427.50000 C 271.17713,-427.50000 289.82287,-427.50000 290.00000,-427.50000 C 292.48399,-427.50000 294.50000,-429.51600 294.50000,-432.00000 C 294.50000,-433.68600 293.52972,-435.10426 292.15625,-435.87500 C 292.33749,-436.39229 292.50000,-436.92108 292.50000,-437.50000 C 292.50000,-440.26000 290.26000,-442.49999 287.50000,-442.50000 C 286.66326,-442.50000 285.91198,-442.23883 285.21875,-441.87500 C 284.60991,-443.94972 282.77083,-445.50000 280.50000,-445.50000 z "
+ id="path8800"
+ sodipodi:nodetypes="ccsscsssscsscc" />
+ <path
+ style="opacity:1.0000000;fill:url(#linearGradient10604);fill-opacity:1.0000000;stroke:none;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 280.50000,-445.00000 C 278.31028,-445.00000 276.77640,-443.66423 276.10445,-441.15648 C 275.43599,-441.50010 274.55686,-441.98983 273.75000,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.11240,-434.89433 267.00000,-433.73178 267.00000,-432.24973 C 267.00000,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294.00000,-429.90368 294.00000,-432.24973 C 294.00000,-433.84210 292.88760,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.05100 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.60820,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445.00000 280.50000,-445.00000 z "
+ id="path8802"
+ sodipodi:nodetypes="ccsscsssscsscc" />
+ <g
+ id="g8804">
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path8806"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path8808"
+ style="opacity:1.0000000;fill:url(#linearGradient10606);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ <rect
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="rect8810"
+ width="20.000000"
+ height="9.0000000"
+ x="271.00000"
+ y="-438.00000" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path8812"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830195,-35.68869)" />
+ <g
+ id="g8814">
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19811,24.86321)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path8816"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19818,24.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path8818"
+ style="opacity:1.0000000;fill:url(#linearGradient10608);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g8820">
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path8822"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path8824"
+ style="opacity:1.0000000;fill:url(#linearGradient10610);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g8826"
+ transform="translate(-1.000000,0.000000)">
+ <path
+ id="path8828"
+ d="M 280.46875,-440.96875 C 276.88937,-440.96875 274.00000,-438.04812 274.00000,-434.46875 C 274.00000,-432.09807 275.34943,-430.13096 277.25000,-429.00000 L 283.71875,-429.00000 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.50000 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z "
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ id="path8830"
+ d="M 280.50000,-441.00000 C 276.91200,-441.00000 274.00000,-438.08799 274.00000,-434.50000 C 274.00000,-432.12360 275.34485,-430.13368 277.25000,-429.00000 L 283.75000,-429.00000 C 285.65515,-430.13368 287.00000,-432.12360 287.00000,-434.50000 C 287.00000,-438.08800 284.08800,-440.99999 280.50000,-441.00000 z "
+ style="opacity:1.0000000;fill:url(#linearGradient10612);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ </g>
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient10614);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path8832"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830296,-35.68884)" />
+ <path
+ style="fill:#888a85;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+ d="M 292.95640,-437.33396 C 292.95487,-434.64940 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.95640,-437.33396 292.95640,-437.33396 z "
+ id="path8834"
+ sodipodi:nodetypes="ccss" />
+ <g
+ id="g8836"
+ transform="matrix(1.142857,0.000000,0.000000,1.142857,-28.57139,67.00008)">
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path8838"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path8840"
+ style="opacity:1.0000000;fill:url(#linearGradient10616);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ </g>
+ <g
+ transform="translate(76.02041,158.0000)"
+ id="g8754">
+ <path
+ style="fill:#c4c5c2;fill-opacity:1.0000000;stroke:#888a85;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 280.50000,-445.50000 C 278.22917,-445.50000 276.39009,-443.94972 275.78125,-441.87500 C 275.08802,-442.23883 274.33674,-442.50000 273.50000,-442.50000 C 270.74000,-442.50000 268.49999,-440.26001 268.50000,-437.50000 C 268.50000,-436.92107 268.66252,-436.39230 268.84375,-435.87500 C 267.47028,-435.10426 266.50000,-433.68600 266.50000,-432.00000 C 266.50000,-429.51600 268.51600,-427.49999 271.00000,-427.50000 C 271.17713,-427.50000 289.82287,-427.50000 290.00000,-427.50000 C 292.48399,-427.50000 294.50000,-429.51600 294.50000,-432.00000 C 294.50000,-433.68600 293.52972,-435.10426 292.15625,-435.87500 C 292.33749,-436.39229 292.50000,-436.92108 292.50000,-437.50000 C 292.50000,-440.26000 290.26000,-442.49999 287.50000,-442.50000 C 286.66326,-442.50000 285.91198,-442.23883 285.21875,-441.87500 C 284.60991,-443.94972 282.77083,-445.50000 280.50000,-445.50000 z "
+ id="path8756"
+ sodipodi:nodetypes="ccsscsssscsscc" />
+ <path
+ style="opacity:1.0000000;fill:url(#linearGradient10618);fill-opacity:1.0000000;stroke:none;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 280.50000,-445.00000 C 278.31028,-445.00000 276.77640,-443.66423 276.10445,-441.15648 C 275.43599,-441.50010 274.55686,-441.98983 273.75000,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.11240,-434.89433 267.00000,-433.73178 267.00000,-432.24973 C 267.00000,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294.00000,-429.90368 294.00000,-432.24973 C 294.00000,-433.84210 292.88760,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.05100 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.60820,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445.00000 280.50000,-445.00000 z "
+ id="path8758"
+ sodipodi:nodetypes="ccsscsssscsscc" />
+ <g
+ id="g8760">
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path8762"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path8764"
+ style="opacity:1.0000000;fill:url(#linearGradient10620);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ <rect
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="rect8766"
+ width="20.000000"
+ height="9.0000000"
+ x="271.00000"
+ y="-438.00000" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path8768"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830195,-35.68869)" />
+ <g
+ id="g8770">
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19811,24.86321)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path8772"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19818,24.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path8774"
+ style="opacity:1.0000000;fill:url(#linearGradient10622);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g8776">
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path8778"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path8780"
+ style="opacity:1.0000000;fill:url(#linearGradient10624);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g8782"
+ transform="translate(-1.000000,0.000000)">
+ <path
+ id="path8784"
+ d="M 280.46875,-440.96875 C 276.88937,-440.96875 274.00000,-438.04812 274.00000,-434.46875 C 274.00000,-432.09807 275.34943,-430.13096 277.25000,-429.00000 L 283.71875,-429.00000 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.50000 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z "
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ id="path8786"
+ d="M 280.50000,-441.00000 C 276.91200,-441.00000 274.00000,-438.08799 274.00000,-434.50000 C 274.00000,-432.12360 275.34485,-430.13368 277.25000,-429.00000 L 283.75000,-429.00000 C 285.65515,-430.13368 287.00000,-432.12360 287.00000,-434.50000 C 287.00000,-438.08800 284.08800,-440.99999 280.50000,-441.00000 z "
+ style="opacity:1.0000000;fill:url(#linearGradient10626);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ </g>
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient10628);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path8788"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830296,-35.68884)" />
+ <path
+ style="fill:#888a85;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+ d="M 292.95640,-437.33396 C 292.95487,-434.64940 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.95640,-437.33396 292.95640,-437.33396 z "
+ id="path8790"
+ sodipodi:nodetypes="ccss" />
+ <g
+ id="g8792"
+ transform="matrix(1.142857,0.000000,0.000000,1.142857,-28.57139,67.00008)">
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path8794"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path8796"
+ style="opacity:1.0000000;fill:url(#linearGradient10630);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ </g>
+ </g>
+ <g
+ id="g12157"
+ transform="translate(-163.0077,222.0147)">
+ <path
+ transform="matrix(0.685520,0.000000,0.000000,0.685520,151.7017,27.15827)"
+ d="M 31.819805 -316.77872 A 2.2097087 2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087 2.2097087 0 1 1 31.819805 -316.77872 z"
+ sodipodi:ry="2.2097087"
+ sodipodi:rx="2.2097087"
+ sodipodi:cy="-316.77872"
+ sodipodi:cx="29.610096"
+ id="path12159"
+ style="opacity:1.0000000;fill:#ffffff;fill-opacity:1.0000000;stroke:#729fcf;stroke-width:1.4587468;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(0.915572,0.000000,0.000000,0.915587,152.4091,103.5577)"
+ d="M 31.819805 -316.77872 A 2.2097087 2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087 2.2097087 0 1 1 31.819805 -316.77872 z"
+ sodipodi:ry="2.2097087"
+ sodipodi:rx="2.2097087"
+ sodipodi:cy="-316.77872"
+ sodipodi:cx="29.610096"
+ id="path12161"
+ style="opacity:1.0000000;fill:#ffffff;fill-opacity:1.0000000;stroke:#729fcf;stroke-width:1.0922043;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(0.672406,0.000000,0.000000,0.683742,153.0708,34.62149)"
+ d="M 31.819805 -316.77872 A 2.2097087 2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087 2.2097087 0 1 1 31.819805 -316.77872 z"
+ sodipodi:ry="2.2097087"
+ sodipodi:rx="2.2097087"
+ sodipodi:cy="-316.77872"
+ sodipodi:cx="29.610096"
+ id="path12163"
+ style="opacity:1.0000000;fill:#ffffff;fill-opacity:1.0000000;stroke:#729fcf;stroke-width:1.4748161;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(0.682300,0.000000,0.000000,0.680269,181.7970,30.49471)"
+ d="M 31.819805 -316.77872 A 2.2097087 2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087 2.2097087 0 1 1 31.819805 -316.77872 z"
+ sodipodi:ry="2.2097087"
+ sodipodi:rx="2.2097087"
+ sodipodi:cy="-316.77872"
+ sodipodi:cx="29.610096"
+ id="path12165"
+ style="opacity:1.0000000;fill:#ffffff;fill-opacity:1.0000000;stroke:#729fcf;stroke-width:1.4678179;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.107132,0.000000,0.000000,1.117168,157.2177,164.9217)"
+ d="M 31.819805 -316.77872 A 2.2097087 2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087 2.2097087 0 1 1 31.819805 -316.77872 z"
+ sodipodi:ry="2.2097087"
+ sodipodi:rx="2.2097087"
+ sodipodi:cy="-316.77872"
+ sodipodi:cx="29.610096"
+ id="path12167"
+ style="opacity:1.0000000;fill:#ffffff;fill-opacity:1.0000000;stroke:#729fcf;stroke-width:0.89916825;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.127592,0.000000,0.000000,1.051830,161.6119,151.3731)"
+ d="M 31.819805 -316.77872 A 2.2097087 2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087 2.2097087 0 1 1 31.819805 -316.77872 z"
+ sodipodi:ry="2.2097087"
+ sodipodi:rx="2.2097087"
+ sodipodi:cy="-316.77872"
+ sodipodi:cx="29.610096"
+ id="path12169"
+ style="opacity:1.0000000;fill:#ffffff;fill-opacity:1.0000000;stroke:#729fcf;stroke-width:0.91822928;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(0.685519,0.000000,0.000000,0.680487,164.6869,34.56369)"
+ d="M 31.819805 -316.77872 A 2.2097087 2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087 2.2097087 0 1 1 31.819805 -316.77872 z"
+ sodipodi:ry="2.2097087"
+ sodipodi:rx="2.2097087"
+ sodipodi:cy="-316.77872"
+ sodipodi:cx="29.610096"
+ id="path12171"
+ style="opacity:1.0000000;fill:#ffffff;fill-opacity:1.0000000;stroke:#729fcf;stroke-width:1.4641328;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/icons/weather-storm.svg b/demos/embedded/weatherinfo/icons/weather-storm.svg
new file mode 100644
index 0000000..4d8bfec
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-storm.svg
@@ -0,0 +1,4308 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg1306"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docbase="/home/rcollier/Work/Novell/Tango/weather"
+ sodipodi:docname="weather-storm.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs1308">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 24 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="48 : 24 : 1"
+ inkscape:persp3d-origin="24 : 16 : 1"
+ id="perspective488" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8397">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8400" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8402" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8397"
+ id="linearGradient13503"
+ gradientUnits="userSpaceOnUse"
+ x1="238.00478"
+ y1="-388.47476"
+ x2="245.65462"
+ y2="-382.64539" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8315">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8317" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8319" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8315"
+ id="linearGradient13501"
+ gradientUnits="userSpaceOnUse"
+ x1="230.87598"
+ y1="-390.43951"
+ x2="235.25652"
+ y2="-386.95901" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8381">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8383" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8385" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8381"
+ id="linearGradient13499"
+ gradientUnits="userSpaceOnUse"
+ x1="246.74042"
+ y1="-391.31381"
+ x2="252.69785"
+ y2="-385.35165" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8331">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8333" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8335" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8331"
+ id="linearGradient13497"
+ gradientUnits="userSpaceOnUse"
+ x1="240.07379"
+ y1="-393.40720"
+ x2="245.82706"
+ y2="-388.55029" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8302">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8304" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8306" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8302"
+ id="linearGradient13495"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(69.00000,155.0000)"
+ x1="228.50261"
+ y1="-392.30591"
+ x2="266.36395"
+ y2="-379.26862" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient13143"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient13141"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient13139"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-35.00007,207.0001)"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient13137"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient13135"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient13133"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient13131"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-34.00007,207.0001)"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8874"
+ id="linearGradient11195"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(14.15871,7.082841)"
+ x1="-190.47688"
+ y1="-332.51181"
+ x2="-196.19046"
+ y2="-328.53433" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8904"
+ id="linearGradient11193"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.80516,2.840199)"
+ x1="-191.28896"
+ y1="-328.07861"
+ x2="-192.41396"
+ y2="-315.32861" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8874">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8876" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8878" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8874"
+ id="linearGradient11191"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(14.15871,7.082841)"
+ x1="-190.47688"
+ y1="-332.51181"
+ x2="-196.19046"
+ y2="-328.53433" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8904">
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:1;"
+ offset="0"
+ id="stop8906" />
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:0;"
+ offset="1"
+ id="stop8908" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8904"
+ id="linearGradient11189"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.80516,2.840199)"
+ x1="-191.28896"
+ y1="-328.07861"
+ x2="-192.41396"
+ y2="-315.32861" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5123"
+ id="radialGradient13211"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.930946,6.185702e-16,-2.842711e-16,0.448244,245.3644,184.9256)"
+ cx="-229.75000"
+ cy="-343.95554"
+ fx="-229.75000"
+ fy="-343.95554"
+ r="14.501380" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient13157"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6549">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6551" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6553" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient13155"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6527">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6530" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6532" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient13153"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-35.00007,207.0001)"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6538">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6540" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6542" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient13151"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6513">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6515" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6517" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient13149"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6497">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6499" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6501" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient13147"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6470">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6472" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6474" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient13145"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-34.00007,207.0001)"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5123">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop5125" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop5127" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5123"
+ id="radialGradient13068"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.930946,6.185702e-16,-2.842711e-16,0.448244,229.9269,180.9261)"
+ cx="-229.75000"
+ cy="-343.95554"
+ fx="-229.75000"
+ fy="-343.95554"
+ r="14.501380" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6840">
+ <stop
+ style="stop-color:#ad7fa8;stop-opacity:1;"
+ offset="0"
+ id="stop6842" />
+ <stop
+ style="stop-color:#ad7fa8;stop-opacity:0;"
+ offset="1"
+ id="stop6844" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6828">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6830" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6832" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6537">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6539" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6541" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2298">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2300" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop2302" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3347">
+ <stop
+ style="stop-color:#edd400;stop-opacity:1;"
+ offset="0"
+ id="stop3349" />
+ <stop
+ style="stop-color:#edd400;stop-opacity:0;"
+ offset="1"
+ id="stop3351" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2527">
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:1;"
+ offset="0"
+ id="stop2529" />
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:0;"
+ offset="1"
+ id="stop2531" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2500">
+ <stop
+ style="stop-color:#fce94f;stop-opacity:1;"
+ offset="0"
+ id="stop2502" />
+ <stop
+ style="stop-color:#fce94f;stop-opacity:0;"
+ offset="1"
+ id="stop2504" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2392">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop2394" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop2396" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2254">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2256" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop2258" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2263"
+ gradientUnits="userSpaceOnUse"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581"
+ gradientTransform="translate(-1.608757,3.097272)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2267"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.555020,0.968578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2271"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(9.263651,3.495228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2275"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8.497184,-2.330824)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2279"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(14.46340,2.014073)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2283"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2287"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2291"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2295"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2299"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2303"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1.707748,-5.784024)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2311"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2350"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(16.14002,24.66420)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2352"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.932144,25.87240)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2354"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.356636,23.86870)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2356"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(11.19027,26.52035)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2358"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(10.30638,19.27251)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2360"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,0.229156,30.76299)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2362"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,16.67145,27.22746)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2364"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,17.05272,31.47010)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2366"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-4.010744,24.96040)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2368"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,8.185476,29.52556)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2370"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(4.207586,21.30544)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2372"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.12415,32.08882)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2392"
+ id="linearGradient2398"
+ x1="6.6651416"
+ y1="13.802798"
+ x2="41.403877"
+ y2="13.802798"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2426"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(14.46340,2.014073)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2428"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8.497184,-2.330824)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2430"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-1.608757,3.097272)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2432"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.555020,0.968578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2434"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(9.263651,3.495228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2436"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2438"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2440"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2442"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2444"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2446"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2392"
+ id="linearGradient2448"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ x1="6.6651416"
+ y1="13.802798"
+ x2="41.403877"
+ y2="13.802798" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2392"
+ id="linearGradient2451"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,4.378541,10.65407)"
+ x1="6.6651416"
+ y1="13.802798"
+ x2="41.403877"
+ y2="13.802798" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2457"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2460"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2463"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2469"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2472"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(12.51365,8.745228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2475"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(6.805020,6.218578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2478"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1.641243,8.347272)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2483"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0.842481,-3.998086)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2506"
+ x1="37.000000"
+ y1="-21.750000"
+ x2="53.750000"
+ y2="9.0000000"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2509"
+ gradientUnits="userSpaceOnUse"
+ x1="37.000000"
+ y1="-21.750000"
+ x2="53.750000"
+ y2="9.0000000"
+ gradientTransform="matrix(0.889091,0.000000,0.000000,0.617886,-4.771368,39.81402)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2513"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.605509,0.000000,0.000000,0.710542,-0.224971,42.19500)"
+ x1="38.857941"
+ y1="-18.407482"
+ x2="53.750000"
+ y2="9.0000000" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2517"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.414169,0.000000,0.000000,0.778853,-1.910724,36.87850)"
+ x1="37.000000"
+ y1="-21.750000"
+ x2="53.750000"
+ y2="9.0000000" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2527"
+ id="linearGradient2533"
+ x1="-25.137094"
+ y1="-1.2491118"
+ x2="-35.652866"
+ y2="-24.884460"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2537"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(17.33814,3.415985)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2541"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.40064,1.353485)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2555"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-7.499805,1.708617)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2563"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.726830,2.481141)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3347"
+ id="linearGradient3353"
+ x1="23.303862"
+ y1="29.115711"
+ x2="29.750000"
+ y2="46.092930"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3366"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.40064,1.353485)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3368"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1.641243,8.347272)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3370"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(6.805020,6.218578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3372"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(12.51365,8.745228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3374"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3376"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3378"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3380"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3383"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3386"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3389"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3392"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3395"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.674812,3.088370)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3398"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-2.033818,0.561720)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3401"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-7.197595,2.690414)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3405"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(4.561802,-4.303373)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="-4.4493785"
+ x2="-34.700153"
+ y1="-37.550461"
+ x1="-27.006643"
+ id="linearGradient2916"
+ xlink:href="#linearGradient2298"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2914"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(57.97693,-10.56876)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2912"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,123.1162,-5.446357)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2910"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2908"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2906"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2904"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2902"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.674812,3.088370)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2900"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-2.033818,0.561720)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2898"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.197595,2.690414)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2896"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2894"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,79.36909,-3.193747)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2892"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,56.25514,-12.39388)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2890"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(88.49344,-9.697877)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2888"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(4.561802,-4.303373)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2886"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.197595,2.690414)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2884"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-2.033818,0.561720)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2882"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.674812,3.088370)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2880"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2878"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2876"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2874"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2872"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2870"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2868"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2866"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2864"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(12.51365,8.745228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2862"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(6.805020,6.218578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2860"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.641243,8.347272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2858"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(13.40064,1.353485)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2856"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="46.092930"
+ x2="29.750000"
+ y1="29.115711"
+ x1="23.303862"
+ id="linearGradient2854"
+ xlink:href="#linearGradient3347"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-0.726830,2.481141)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2852"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.499805,1.708617)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2850"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(13.40064,1.353485)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2848"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(17.33814,3.415985)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2846"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ id="linearGradient2844"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ gradientTransform="matrix(0.414169,0.000000,0.000000,0.778853,-1.910724,36.87850)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2842"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-18.407482"
+ x1="38.857941"
+ gradientTransform="matrix(0.605509,0.000000,0.000000,0.710542,-0.224971,42.19500)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2840"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="matrix(0.889091,0.000000,0.000000,0.617886,-4.771368,39.81402)"
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2838"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ id="linearGradient2836"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(0.842481,-3.998086)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2834"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.641243,8.347272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2832"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(6.805020,6.218578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2830"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(12.51365,8.745228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2828"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2826"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2824"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2822"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2820"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,4.378541,10.65407)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2818"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2816"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2814"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2812"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2810"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2808"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2806"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2804"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(9.263651,3.495228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2802"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.555020,0.968578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2800"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-1.608757,3.097272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2798"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(8.497184,-2.330824)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2796"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(14.46340,2.014073)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2794"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ gradientUnits="userSpaceOnUse"
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ id="linearGradient2792"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.12415,32.08882)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2790"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(4.207586,21.30544)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2788"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,8.185476,29.52556)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2786"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-4.010744,24.96040)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2784"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,17.05272,31.47010)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2782"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,16.67145,27.22746)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2780"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,0.229156,30.76299)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2778"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(10.30638,19.27251)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2776"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(11.19027,26.52035)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2774"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(5.356636,23.86870)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2772"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-0.932144,25.87240)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2770"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(16.14002,24.66420)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2768"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2766"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.707748,-5.784024)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2764"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2762"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2760"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2758"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2756"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2754"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(14.46340,2.014073)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2752"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(8.497184,-2.330824)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2750"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(9.263651,3.495228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2748"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.555020,0.968578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2746"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="translate(-1.608757,3.097272)"
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2744"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="-4.4493785"
+ x2="-34.700153"
+ y1="-37.550461"
+ x1="-27.006643"
+ id="linearGradient2304"
+ xlink:href="#linearGradient2298"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1557"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(57.97693,-10.56876)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1538"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,123.1162,-5.446357)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1536"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1534"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1532"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1530"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1528"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.674812,3.088370)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1526"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-2.033818,0.561720)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1524"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.197595,2.690414)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1522"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1520"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,79.36909,-3.193747)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1518"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,56.25514,-12.39388)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1516"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(88.49344,-9.697877)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1514"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(4.561802,-4.303373)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5957"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.197595,2.690414)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5955"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-2.033818,0.561720)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5953"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.674812,3.088370)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5951"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5949"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5947"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5945"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5943"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5941"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5939"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5937"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5935"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(12.51365,8.745228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5933"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(6.805020,6.218578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5931"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.641243,8.347272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5929"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(13.40064,1.353485)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5927"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="46.092930"
+ x2="29.750000"
+ y1="29.115711"
+ x1="23.303862"
+ id="linearGradient5925"
+ xlink:href="#linearGradient3347"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-0.726830,2.481141)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5923"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.499805,1.708617)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5921"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(13.40064,1.353485)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5919"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(17.33814,3.415985)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5917"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ id="linearGradient5915"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ gradientTransform="matrix(0.414169,0.000000,0.000000,0.778853,-1.910724,36.87850)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5913"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-18.407482"
+ x1="38.857941"
+ gradientTransform="matrix(0.605509,0.000000,0.000000,0.710542,-0.224971,42.19500)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5911"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="matrix(0.889091,0.000000,0.000000,0.617886,-4.771368,39.81402)"
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5909"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ id="linearGradient5907"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(0.842481,-3.998086)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5905"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.641243,8.347272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5903"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(6.805020,6.218578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5901"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(12.51365,8.745228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5899"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5897"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5895"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5893"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5891"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,4.378541,10.65407)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5889"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5887"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5885"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5883"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5881"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5879"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5877"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5875"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(9.263651,3.495228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5873"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.555020,0.968578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5871"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-1.608757,3.097272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5869"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(8.497184,-2.330824)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5867"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(14.46340,2.014073)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5865"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ gradientUnits="userSpaceOnUse"
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ id="linearGradient5863"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.12415,32.08882)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5861"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(4.207586,21.30544)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5859"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,8.185476,29.52556)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5857"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-4.010744,24.96040)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5855"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,17.05272,31.47010)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5853"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,16.67145,27.22746)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5851"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,0.229156,30.76299)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5849"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(10.30638,19.27251)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5847"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(11.19027,26.52035)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5845"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(5.356636,23.86870)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5843"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-0.932144,25.87240)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5841"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(16.14002,24.66420)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5839"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5837"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.707748,-5.784024)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5835"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5833"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5831"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5829"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5827"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5825"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(14.46340,2.014073)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5823"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(8.497184,-2.330824)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5821"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(9.263651,3.495228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5819"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.555020,0.968578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5817"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="translate(-1.608757,3.097272)"
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5815"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6098"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-9.002513,11.93373)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6101"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.13675,17.05613)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6118"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,12.38965,19.30874)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6121"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-10.72430,10.10861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6124"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(21.51400,12.80461)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6179"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-7.197595,2.690414)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6181"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-2.033818,0.561720)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6183"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.674812,3.088370)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6185"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6187"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6189"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6191"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2527"
+ id="linearGradient6193"
+ gradientUnits="userSpaceOnUse"
+ x1="-25.137094"
+ y1="-1.2491118"
+ x2="-35.652866"
+ y2="-24.884460" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6196"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,2.209129,10.83861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6199"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-9.862093,6.148450)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6202"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,10.70137,12.90816)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6205"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-4.372193,11.95105)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6208"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.088919,7.833409)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6211"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.619711,5.306759)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6214"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-5.783488,7.435453)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6242"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-5.783488,7.435453)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6244"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.619711,5.306759)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6246"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.088919,7.833409)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6248"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,10.70137,12.90816)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6250"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-9.862093,6.148450)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6252"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,2.209129,10.83861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6254"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-9.002513,11.93373)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6257"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.297112,4.275205)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6260"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,10.91453,3.180085)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6263"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-1.156692,-1.510075)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6266"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,19.40677,5.249635)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6269"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.79432,0.174884)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6272"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8.085690,-2.351766)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6275"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(2.921913,-0.223072)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6311"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(21.51400,12.80461)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6313"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-10.72430,10.10861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6315"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,12.38965,19.30874)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6317"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-1.156692,-1.510075)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6319"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.13675,17.05613)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6321"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-5.783488,7.435453)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6323"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.619711,5.306759)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6325"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.088919,7.833409)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6327"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,10.70137,12.90816)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6329"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-9.862093,6.148450)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6331"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,2.209129,10.83861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6333"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-9.002513,11.93373)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6335"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(2.921913,-0.223072)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6337"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8.085690,-2.351766)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6339"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.79432,0.174884)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6341"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,19.40677,5.249635)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6343"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,10.91453,3.180085)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6543"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-2.763717e-17,0.972572,16.13182,0.843286)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6547"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-4.388782e-16,0.972572,25.91493,0.633642)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6551"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-4.388782e-16,0.972572,36.25638,0.633643)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="45.115814"
+ y2="44.228455" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6559"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-2.332577e-16,0.972572,16.13182,0.843286)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6561"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-6.444987e-16,0.972572,25.91493,0.633642)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6563"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-6.444987e-16,0.972572,36.25638,0.633643)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="45.115814"
+ y2="44.228455" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6566"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.577744,0.000000,-6.388715e-16,1.006703,39.04124,-0.702889)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="45.115814"
+ y2="44.228455" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6569"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.577744,0.000000,-6.388715e-16,1.006703,27.70322,-0.702890)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6572"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.577744,0.000000,-1.880005e-16,1.006703,16.97734,-0.485889)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6576"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.132431,0.000000,0.000000,1.016132,10.54485,-4.728138)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6579"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.853605,0.000000,0.000000,1.016132,19.23518,-2.625202)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6582"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,13.49182,-7.781819)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6585"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,7.650036,-10.34923)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6588"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,2.365814,-8.186195)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6599"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.999079,0.000000,0.000000,1.016132,56.82188,9.371753)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6603"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.496116,0.000000,0.000000,1.282841,-1.807925,-9.493960)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6606"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.314274,0.000000,0.000000,1.016132,12.05438,11.66070)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6609"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.496116,0.000000,0.000000,1.282841,-11.59870,2.312158)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6612"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,21.39156,5.051653)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6618"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,16.09471,2.948843)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6622"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,11.32174,9.047633)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6624"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-5.783488,7.435453)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6626"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.619711,5.306759)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6628"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.088919,7.833409)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6630"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,10.70137,12.90816)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6632"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-9.862093,6.148450)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6634"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,2.209129,10.83861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6636"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-9.002513,11.93373)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6828"
+ id="radialGradient6834"
+ cx="15.147860"
+ cy="23.822156"
+ fx="15.147860"
+ fy="23.822156"
+ r="12.852140"
+ gradientTransform="matrix(0.654874,0.000000,0.000000,0.398574,2.663540,12.14676)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6840"
+ id="radialGradient6846"
+ cx="32.583473"
+ cy="25.240442"
+ fx="32.583473"
+ fy="25.240442"
+ r="8.4165270"
+ gradientTransform="matrix(1.000000,0.000000,0.000000,0.503823,-15.00000,6.042836)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6828"
+ id="radialGradient6852"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.654874,0.000000,0.000000,0.398574,44.33646,16.14676)"
+ cx="15.147860"
+ cy="23.822156"
+ fx="15.147860"
+ fy="23.822156"
+ r="12.852140" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6840"
+ id="radialGradient6854"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1.000000,0.000000,0.000000,0.503823,62.00000,10.04284)"
+ cx="32.583473"
+ cy="25.240442"
+ fx="32.583473"
+ fy="25.240442"
+ r="8.4165270" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="11.313708"
+ inkscape:cx="19.667589"
+ inkscape:cy="18.541776"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1200"
+ inkscape:window-height="704"
+ inkscape:window-x="186"
+ inkscape:window-y="144"
+ inkscape:showpageshadow="false" />
+ <metadata
+ id="metadata1311">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>weather-storm</dc:title>
+ <dc:date>January 2006</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Ryan Collier</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:publisher>
+ <cc:Agent>
+ <dc:title>http://www.tango-project.org</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:source>http://www.pseudocode.org</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>weather</rdf:li>
+ <rdf:li>applet</rdf:li>
+ <rdf:li>notify</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/publicdomain/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <g
+ id="g12825"
+ transform="translate(-287.0204,244.9995)">
+ <path
+ id="path12827"
+ d="M 311.50000,-242.99998 C 308.72758,-242.99998 306.39177,-241.42627 305.09375,-239.18748 C 304.14939,-239.66252 303.12856,-239.99998 302.00000,-239.99998 C 298.13600,-239.99998 295.00000,-236.86398 295.00000,-232.99998 C 295.00000,-229.13598 298.13600,-225.99998 302.00000,-225.99998 C 304.41967,-225.99998 306.43009,-227.31930 307.68750,-229.18748 C 308.82170,-228.49786 310.07648,-227.99998 311.50000,-227.99998 C 312.41312,-227.99998 313.25295,-228.23200 314.06250,-228.53123 C 314.57244,-227.66350 315.24162,-226.95151 316.06250,-226.37498 C 316.05526,-226.24460 316.00000,-226.13216 316.00000,-225.99998 C 316.00000,-222.13598 319.13599,-218.99998 323.00000,-218.99998 C 326.86400,-218.99998 330.00000,-222.13598 330.00000,-225.99998 C 330.00000,-228.36967 328.74102,-230.35832 326.93750,-231.62498 C 326.94474,-231.75536 327.00000,-231.86780 327.00000,-231.99998 C 327.00000,-235.86398 323.86401,-238.99998 320.00000,-238.99998 C 319.37730,-238.99998 318.82481,-238.77779 318.25000,-238.62498 C 317.05547,-241.18382 314.50866,-242.99998 311.50000,-242.99998 z "
+ style="opacity:1.0000000;fill:#555753;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ id="path12829"
+ d="M 311.50000,-241.99998 C 308.71952,-241.99998 306.36549,-240.23813 305.43750,-237.78123 C 304.45208,-238.49067 303.30607,-238.99998 302.00000,-238.99998 C 298.68800,-238.99998 296.00000,-236.31198 296.00000,-232.99998 C 296.00000,-229.68798 298.68800,-226.99998 302.00000,-226.99998 C 304.42775,-226.99998 306.49324,-228.45556 307.43750,-230.53123 C 308.55826,-229.61367 309.93964,-228.99998 311.50000,-228.99998 C 312.57454,-228.99998 313.54428,-229.31894 314.43750,-229.78123 C 314.83590,-228.78147 315.53864,-227.99491 316.37500,-227.34373 C 316.19499,-226.74811 316.00000,-226.15408 316.00000,-225.49998 C 316.00000,-221.91198 318.91200,-218.99998 322.50000,-218.99998 C 326.08800,-218.99998 329.00000,-221.91198 329.00000,-225.49998 C 329.00000,-227.86077 327.66567,-229.83017 325.78125,-230.96873 C 325.84384,-231.31596 326.00000,-231.63481 326.00000,-231.99998 C 326.00000,-235.31198 323.31200,-237.99998 320.00000,-237.99998 C 319.14702,-237.99998 318.32870,-237.82130 317.59375,-237.49998 C 316.73998,-240.09386 314.37851,-241.99997 311.50000,-241.99998 z "
+ style="opacity:1.0000000;fill:url(#linearGradient13495);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(0.964447,0.000000,0.000000,0.964447,89.28852,144.5262)"
+ d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z"
+ sodipodi:ry="6.7396116"
+ sodipodi:rx="6.7396116"
+ sodipodi:cy="-383.66660"
+ sodipodi:cx="241.80843"
+ id="path12831"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <g
+ id="g12833">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12835"
+ sodipodi:cx="243.95184"
+ sodipodi:cy="-389.30136"
+ sodipodi:rx="6.2313786"
+ sodipodi:ry="6.2313786"
+ d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z"
+ transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.49444440;fill:url(#linearGradient13497);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12837"
+ sodipodi:cx="243.95184"
+ sodipodi:cy="-389.30136"
+ sodipodi:rx="6.2313786"
+ sodipodi:ry="6.2313786"
+ d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z"
+ transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)" />
+ </g>
+ <g
+ id="g12839">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12841"
+ sodipodi:cx="251.22179"
+ sodipodi:cy="-385.78790"
+ sodipodi:rx="6.0325046"
+ sodipodi:ry="6.0325046"
+ d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z"
+ transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.49444440;fill:url(#linearGradient13499);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12843"
+ sodipodi:cx="251.22179"
+ sodipodi:cy="-385.78790"
+ sodipodi:rx="6.0325046"
+ sodipodi:ry="6.0325046"
+ d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z"
+ transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)" />
+ </g>
+ <g
+ id="g12845">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12847"
+ sodipodi:cx="233.43362"
+ sodipodi:cy="-387.88715"
+ sodipodi:rx="4.3752232"
+ sodipodi:ry="4.3752232"
+ d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z"
+ transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.49444440;fill:url(#linearGradient13501);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12849"
+ sodipodi:cx="233.43362"
+ sodipodi:cy="-387.88715"
+ sodipodi:rx="4.3752232"
+ sodipodi:ry="4.3752232"
+ d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z"
+ transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)" />
+ </g>
+ <g
+ id="g12851">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12853"
+ sodipodi:cx="241.80843"
+ sodipodi:cy="-383.66660"
+ sodipodi:rx="6.7396116"
+ sodipodi:ry="6.7396116"
+ d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z"
+ transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84906,169.4899)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.49444440;fill:url(#linearGradient13503);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12855"
+ sodipodi:cx="241.80843"
+ sodipodi:cy="-383.66660"
+ sodipodi:rx="6.7396116"
+ sodipodi:ry="6.7396116"
+ d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z"
+ transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84907,169.4899)" />
+ </g>
+ </g>
+ <g
+ id="g11177"
+ transform="translate(208.8564,357.8851)">
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path11179"
+ d="M -173.24571,-327.59122 L -176.37021,-323.31202 L -172.59078,-323.31202 C -172.59078,-323.31202 -175.29396,-318.78622 -180.16632,-310.38562 C -178.07014,-318.33294 -177.21353,-321.35581 -177.21353,-321.35581 L -182.37682,-321.35581 L -178.33401,-327.59122 L -173.24571,-327.59122 z "
+ style="fill:#edd400;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient11189);stroke-width:1.0000006px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path11181"
+ d="M -173.75946,-327.84461 L -177.50268,-322.68152 L -173.54648,-322.85830 C -173.54648,-322.85830 -173.68639,-322.39837 -178.55875,-313.99777 C -176.46257,-321.94509 -176.48985,-321.96275 -176.48985,-321.96275 L -181.38797,-321.87436 L -177.69871,-327.57944 L -173.75946,-327.84461 z "
+ style="opacity:1.0000000;fill:url(#linearGradient11191);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000006px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
+ </g>
+ <g
+ id="g12857"
+ transform="translate(-215.0060,252.9994)">
+ <path
+ sodipodi:nodetypes="ccsscsssscsscc"
+ id="path12859"
+ d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z "
+ style="fill:#888a85;fill-opacity:1.0000000;stroke:#555753;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="ccsscsssscsscc"
+ id="path12861"
+ d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z "
+ style="opacity:1.0000000;fill:url(#linearGradient13131);fill-opacity:1.0000000;stroke:none;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path12863"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path12865"
+ style="opacity:0.47777775;fill:url(#linearGradient13133);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <rect
+ y="-230.99992"
+ x="236.99994"
+ height="9.0000000"
+ width="20.000000"
+ id="rect12867"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path12869"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path12871"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path12873"
+ style="opacity:0.47777775;fill:url(#linearGradient13135);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path12875"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path12877"
+ style="opacity:0.47777775;fill:url(#linearGradient13137);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ id="path12879"
+ d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z "
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ id="path12881"
+ d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z "
+ style="opacity:0.47777775;fill:url(#linearGradient13139);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path12883"
+ style="opacity:0.47777775;fill:url(#linearGradient13141);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:nodetypes="ccss"
+ id="path12885"
+ d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z "
+ style="fill:#555753;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path12887"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path12889"
+ style="opacity:0.47777775;fill:url(#linearGradient13143);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g11183"
+ transform="translate(192.8564,354.8851)">
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path11185"
+ d="M -173.24571,-327.59122 L -176.37021,-323.31202 L -172.59078,-323.31202 C -172.59078,-323.31202 -175.29396,-318.78622 -180.16632,-310.38562 C -178.07014,-318.33294 -177.21353,-321.35581 -177.21353,-321.35581 L -182.37682,-321.35581 L -178.33401,-327.59122 L -173.24571,-327.59122 z "
+ style="fill:#edd400;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient11193);stroke-width:1.0000006px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path11187"
+ d="M -173.75946,-327.84461 L -177.50268,-322.68152 L -173.54648,-322.85830 C -173.54648,-322.85830 -173.68639,-322.39837 -178.55875,-313.99777 C -176.46257,-321.94509 -176.48985,-321.96275 -176.48985,-321.96275 L -181.38797,-321.87436 L -177.69871,-327.57944 L -173.75946,-327.84461 z "
+ style="opacity:1.0000000;fill:url(#linearGradient11195);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000006px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
+ </g>
+ <path
+ style="opacity:1.0000000;fill:url(#radialGradient13211);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000004;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
+ d="M 31.626355,14.999520 C 29.626255,14.999520 27.940775,16.079020 27.095785,17.614460 C 26.500875,17.392550 25.851145,17.261090 25.169835,17.261090 C 22.339625,17.261090 20.052305,19.379260 20.052305,21.978590 C 20.052305,22.432340 20.196835,22.835420 20.327445,23.250720 C 18.945125,24.115990 17.979615,25.504290 17.979615,27.155450 C 17.979615,29.808280 18.631235,32.148800 23.207195,31.961300 C 23.252315,31.959450 40.658675,32.058280 40.907605,31.943270 C 43.992815,32.169220 44.979615,29.497540 44.979615,27.243810 C 44.979615,25.543300 44.142675,24.193960 42.670345,23.366220 C 42.718305,23.107660 42.631785,22.815030 42.631785,22.543970 C 42.631785,19.944650 40.326135,17.826480 37.495915,17.826480 C 37.102425,17.826480 36.763515,17.961300 36.395375,18.038500 C 35.656915,16.270380 33.810365,14.999520 31.626355,14.999520 z "
+ id="path13209"
+ sodipodi:nodetypes="ccsscsscscsscc" />
+ <g
+ id="g12891"
+ transform="translate(-230.0203,248.9834)">
+ <path
+ sodipodi:nodetypes="ccsscsssscsscc"
+ id="path12893"
+ d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z "
+ style="fill:#888a85;fill-opacity:1.0000000;stroke:#555753;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="ccsscsssscsscc"
+ id="path12895"
+ d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z "
+ style="opacity:1.0000000;fill:url(#linearGradient13145);fill-opacity:1.0000000;stroke:none;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path12897"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path12899"
+ style="opacity:0.47777775;fill:url(#linearGradient13147);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <rect
+ y="-230.99992"
+ x="236.99994"
+ height="9.0000000"
+ width="20.000000"
+ id="rect12901"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path12903"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path12905"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path12907"
+ style="opacity:0.47777775;fill:url(#linearGradient13149);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path12909"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path12911"
+ style="opacity:0.47777775;fill:url(#linearGradient13151);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ id="path12913"
+ d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z "
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ id="path12915"
+ d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z "
+ style="opacity:0.47777775;fill:url(#linearGradient13153);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path12917"
+ style="opacity:0.47777775;fill:url(#linearGradient13155);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:nodetypes="ccss"
+ id="path12919"
+ d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z "
+ style="fill:#555753;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path12921"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path12923"
+ style="opacity:0.47777775;fill:url(#linearGradient13157);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ <path
+ style="opacity:1.0000000;fill:url(#radialGradient13068);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000004;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
+ d="M 16.188855,11.000000 C 14.188755,11.000000 12.503275,12.079500 11.658285,13.614940 C 11.063375,13.393030 10.413645,13.261570 9.7323346,13.261570 C 6.9021246,13.261570 4.6148046,15.379740 4.6148046,17.979070 C 4.6148046,18.432820 4.7593346,18.835900 4.8899446,19.251200 C 3.5076246,20.116470 2.5421146,21.504770 2.5421146,23.155930 C 2.5421146,25.808760 3.1937346,28.149280 7.7696946,27.961780 C 7.8148146,27.959930 25.221175,28.058760 25.470105,27.943750 C 28.555315,28.169700 29.542115,25.498020 29.542115,23.244290 C 29.542115,21.543780 28.705175,20.194440 27.232845,19.366700 C 27.280805,19.108140 27.194285,18.815510 27.194285,18.544450 C 27.194285,15.945130 24.888635,13.826960 22.058415,13.826960 C 21.664925,13.826960 21.326015,13.961780 20.957875,14.038980 C 20.219415,12.270860 18.372865,11.000000 16.188855,11.000000 z "
+ id="path11418"
+ sodipodi:nodetypes="ccsscsscscsscc" />
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/icons/weather-sunny-very-few-clouds.svg b/demos/embedded/weatherinfo/icons/weather-sunny-very-few-clouds.svg
new file mode 100644
index 0000000..93b0009
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-sunny-very-few-clouds.svg
@@ -0,0 +1,593 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg1306"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docbase="/home/garrett/Source/tango-icon-theme/scalable/status"
+ sodipodi:docname="weather-sunny-very-few-clouds.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs1308">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 24 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="48 : 24 : 1"
+ inkscape:persp3d-origin="24 : 16 : 1"
+ id="perspective27908" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient6724"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient6722"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient6720"
+ gradientUnits="userSpaceOnUse"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient6718"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient6716"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient6714"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient6712"
+ gradientUnits="userSpaceOnUse"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient6839"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6549">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6551" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6553" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient6837"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6527">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6530" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6532" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient6835"
+ gradientUnits="userSpaceOnUse"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6538">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6540" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6542" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient6833"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6513">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6515" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6517" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient6831"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6497">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6499" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6501" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient6829"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6470">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6472" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6474" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient6827"
+ gradientUnits="userSpaceOnUse"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ id="linearGradient4083">
+ <stop
+ id="stop4085"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="0.75"
+ id="stop4089" />
+ <stop
+ id="stop4087"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4032">
+ <stop
+ id="stop4034"
+ offset="0"
+ style="stop-color:#fff7c2;stop-opacity:0.63829786" />
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:0.18348624;"
+ offset="0.59394139"
+ id="stop4036" />
+ <stop
+ id="stop4038"
+ offset="0.83850551"
+ style="stop-color:#fcaf3e;stop-opacity:0.50458717;" />
+ <stop
+ id="stop4040"
+ offset="1"
+ style="stop-color:#fcaf3e;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4026">
+ <stop
+ id="stop4028"
+ offset="0"
+ style="stop-color:#fff9c6;stop-opacity:1" />
+ <stop
+ style="stop-color:#fff28c;stop-opacity:1;"
+ offset="0.54166669"
+ id="stop4042" />
+ <stop
+ id="stop4030"
+ offset="1"
+ style="stop-color:#ffea85;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4026"
+ id="linearGradient3168"
+ gradientUnits="userSpaceOnUse"
+ x1="-28.968945"
+ y1="-25.326815"
+ x2="-37.19698"
+ y2="-9.5590506" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4032"
+ id="radialGradient4020"
+ cx="-33.519073"
+ cy="-22.113297"
+ fx="-33.519073"
+ fy="-22.113297"
+ r="9.5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.487739,1.292402,-1.10267,0.497242,-41.77393,32.41492)" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4083"
+ id="radialGradient4081"
+ cx="23.99999"
+ cy="23.381506"
+ fx="23.99999"
+ fy="23.381506"
+ r="19.141981"
+ gradientTransform="matrix(1.006701,2.235326e-16,-2.23715e-16,1.007522,-0.160816,0.426981)"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="16.270833"
+ inkscape:cx="24"
+ inkscape:cy="24"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="982"
+ inkscape:window-height="965"
+ inkscape:window-x="1280"
+ inkscape:window-y="28"
+ inkscape:showpageshadow="false" />
+ <metadata
+ id="metadata1311">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>weather-clear</dc:title>
+ <dc:date>January 2006</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Ryan Collier (pseudo)</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:publisher>
+ <cc:Agent>
+ <dc:title>http://www.tango-project.org</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:source>http://www.pseudocode.org</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>weather</rdf:li>
+ <rdf:li>applet</rdf:li>
+ <rdf:li>notification</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Garrett LeSage</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <g
+ id="g3936">
+ <g
+ style="opacity:0.7"
+ id="g4091">
+ <path
+ style="fill:#fce94f;fill-opacity:1;stroke:#fcaf3e;stroke-width:0.73732895;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 24 2.5 L 21.625 9.1875 C 22.399034 9.0641318 23.191406 9 24 9 C 24.808594 9 25.600966 9.0641317 26.375 9.1875 L 24 2.5 z M 8.8125 8.78125 L 11.84375 15.21875 C 12.779034 13.928569 13.928569 12.779034 15.21875 11.84375 L 8.8125 8.78125 z M 39.21875 8.78125 L 32.78125 11.84375 C 34.071431 12.779034 35.220966 13.928569 36.15625 15.21875 L 39.21875 8.78125 z M 9.1875 21.59375 L 2.5 23.96875 L 9.1875 26.34375 C 9.0673373 25.57952 9 24.797813 9 24 C 9 23.180625 9.0608858 22.377571 9.1875 21.59375 z M 38.8125 21.625 C 38.935868 22.399034 39 23.191406 39 24 C 39 24.808594 38.935868 25.600966 38.8125 26.375 L 45.5 24 L 38.8125 21.625 z M 11.84375 32.78125 L 8.8125 39.1875 L 15.21875 36.15625 C 13.928569 35.220966 12.779034 34.071431 11.84375 32.78125 z M 36.15625 32.78125 C 35.229789 34.05926 34.087617 35.194799 32.8125 36.125 L 39.21875 39.1875 L 36.15625 32.78125 z M 21.625 38.8125 L 24 45.5 L 26.375 38.8125 C 25.600966 38.935868 24.808594 39 24 39 C 23.191406 39 22.399034 38.935868 21.625 38.8125 z "
+ id="path7492" />
+ <path
+ style="fill:none;fill-opacity:1;stroke:url(#radialGradient4081);stroke-width:0.84646249;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 24 5.25 L 22.65625 9.0625 C 23.098888 9.0231486 23.547187 9 24 9 C 24.452813 9 24.901112 9.0231486 25.34375 9.0625 L 24 5.25 z M 10.78125 10.75 L 12.5 14.375 C 13.071538 13.694089 13.724004 13.038745 14.40625 12.46875 L 10.78125 10.75 z M 37.25 10.75 L 33.625 12.46875 C 34.304675 13.038189 34.961811 13.695325 35.53125 14.375 L 37.25 10.75 z M 9.0625 22.625 L 5.28125 23.96875 L 9.0625 25.3125 C 9.024981 24.880146 9 24.442031 9 24 C 9 23.536406 9.0212735 23.077908 9.0625 22.625 z M 38.9375 22.65625 C 38.976851 23.098888 39 23.547187 39 24 C 39 24.452813 38.976851 24.901112 38.9375 25.34375 L 42.71875 24 L 38.9375 22.65625 z M 35.53125 33.59375 C 34.958293 34.27954 34.309985 34.957363 33.625 35.53125 L 37.25 37.25 L 35.53125 33.59375 z M 12.5 33.625 L 10.78125 37.21875 L 14.375 35.5 C 13.702932 34.935884 13.064116 34.297068 12.5 33.625 z M 22.65625 38.9375 L 24 42.71875 L 25.34375 38.9375 C 24.901112 38.976851 24.452813 39 24 39 C 23.547187 39 23.098888 38.976851 22.65625 38.9375 z "
+ id="path7494" />
+ </g>
+ <g
+ id="g4046">
+ <g
+ id="g3931">
+ <path
+ inkscape:r_cy="true"
+ inkscape:r_cx="true"
+ transform="matrix(0.778062,-1.061285,1.061287,0.778062,67.47952,3.641324)"
+ d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z"
+ sodipodi:ry="9.5"
+ sodipodi:rx="9.5"
+ sodipodi:cy="-17.5"
+ sodipodi:cx="-32"
+ id="path7498"
+ style="fill:#ffee54;fill-opacity:1;stroke:#fcaf3e;stroke-width:0.75991178;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ inkscape:r_cy="true"
+ inkscape:r_cx="true"
+ transform="matrix(1.244257,-0.167707,0.216642,1.251844,67.61648,40.527)"
+ d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z"
+ sodipodi:ry="9.5"
+ sodipodi:rx="9.5"
+ sodipodi:cy="-17.5"
+ sodipodi:cx="-32"
+ id="path7500"
+ style="fill:url(#radialGradient4020);fill-opacity:1;stroke:none;stroke-width:1.01737845;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ inkscape:r_cy="true"
+ inkscape:r_cx="true"
+ transform="matrix(0.715791,-0.976349,0.97635,0.715792,64.00044,5.269544)"
+ d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z"
+ sodipodi:ry="9.5"
+ sodipodi:rx="9.5"
+ sodipodi:cy="-17.5"
+ sodipodi:cx="-32"
+ id="path7502"
+ style="fill:none;fill-opacity:1;stroke:url(#linearGradient3168);stroke-width:0.82601947;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:type="arc" />
+ </g>
+ </g>
+ </g>
+ <g
+ id="g6783"
+ transform="translate(-263.99,459.9855)">
+ <path
+ sodipodi:nodetypes="ccsscsssscsscc"
+ id="path6785"
+ d="M 280.50000,-445.50000 C 278.22917,-445.50000 276.39009,-443.94972 275.78125,-441.87500 C 275.08802,-442.23883 274.33674,-442.50000 273.50000,-442.50000 C 270.74000,-442.50000 268.49999,-440.26001 268.50000,-437.50000 C 268.50000,-436.92107 268.66252,-436.39230 268.84375,-435.87500 C 267.47028,-435.10426 266.50000,-433.68600 266.50000,-432.00000 C 266.50000,-429.51600 268.51600,-427.49999 271.00000,-427.50000 C 271.17713,-427.50000 289.82287,-427.50000 290.00000,-427.50000 C 292.48399,-427.50000 294.50000,-429.51600 294.50000,-432.00000 C 294.50000,-433.68600 293.52972,-435.10426 292.15625,-435.87500 C 292.33749,-436.39229 292.50000,-436.92108 292.50000,-437.50000 C 292.50000,-440.26000 290.26000,-442.49999 287.50000,-442.50000 C 286.66326,-442.50000 285.91198,-442.23883 285.21875,-441.87500 C 284.60991,-443.94972 282.77083,-445.50000 280.50000,-445.50000 z "
+ style="fill:#c4c5c2;fill-opacity:1.0000000;stroke:#888a85;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="ccsscsssscsscc"
+ id="path6787"
+ d="M 280.50000,-445.00000 C 278.31028,-445.00000 276.77640,-443.66423 276.10445,-441.15648 C 275.43599,-441.50010 274.55686,-441.98983 273.75000,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.11240,-434.89433 267.00000,-433.73178 267.00000,-432.24973 C 267.00000,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294.00000,-429.90368 294.00000,-432.24973 C 294.00000,-433.84210 292.88760,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.05100 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.60820,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445.00000 280.50000,-445.00000 z "
+ style="opacity:1.0000000;fill:url(#linearGradient6827);fill-opacity:1.0000000;stroke:none;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <g
+ id="g6789">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6791"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient6829);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6793"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" />
+ </g>
+ <rect
+ y="-438.00000"
+ x="271.00000"
+ height="9.0000000"
+ width="20.000000"
+ id="rect6795"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+ <path
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830195,-35.68869)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path6797"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <g
+ id="g6799">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6801"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19811,24.86321)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient6831);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6803"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19818,24.86331)" />
+ </g>
+ <g
+ id="g6805">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6807"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient6833);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6809"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" />
+ </g>
+ <g
+ transform="translate(-1.000000,0.000000)"
+ id="g6811">
+ <path
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 280.46875,-440.96875 C 276.88937,-440.96875 274.00000,-438.04812 274.00000,-434.46875 C 274.00000,-432.09807 275.34943,-430.13096 277.25000,-429.00000 L 283.71875,-429.00000 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.50000 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z "
+ id="path6813" />
+ <path
+ style="opacity:1.0000000;fill:url(#linearGradient6835);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 280.50000,-441.00000 C 276.91200,-441.00000 274.00000,-438.08799 274.00000,-434.50000 C 274.00000,-432.12360 275.34485,-430.13368 277.25000,-429.00000 L 283.75000,-429.00000 C 285.65515,-430.13368 287.00000,-432.12360 287.00000,-434.50000 C 287.00000,-438.08800 284.08800,-440.99999 280.50000,-441.00000 z "
+ id="path6815" />
+ </g>
+ <path
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830296,-35.68884)"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ sodipodi:ry="3.3125000"
+ sodipodi:rx="3.3125000"
+ sodipodi:cy="-437.59375"
+ sodipodi:cx="288.37500"
+ id="path6817"
+ style="opacity:1.0000000;fill:url(#linearGradient6837);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:nodetypes="ccss"
+ id="path6819"
+ d="M 292.95640,-437.33396 C 292.95487,-434.64940 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.95640,-437.33396 292.95640,-437.33396 z "
+ style="fill:#888a85;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
+ <g
+ transform="matrix(1.142857,0.000000,0.000000,1.142857,-28.57139,67.00008)"
+ id="g6821">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#c4c5c2;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6823"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:url(#linearGradient6839);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path6825"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/icons/weather-sunny.svg b/demos/embedded/weatherinfo/icons/weather-sunny.svg
new file mode 100644
index 0000000..0360ac7
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-sunny.svg
@@ -0,0 +1,1330 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg1306"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docbase="/home/garrett/Source/tango-icon-theme/scalable/status"
+ sodipodi:docname="weather-sunny.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs1308">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 24 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="48 : 24 : 1"
+ inkscape:persp3d-origin="24 : 16 : 1"
+ id="perspective37214" />
+ <linearGradient
+ id="linearGradient4083">
+ <stop
+ id="stop4085"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="0.75"
+ id="stop4089" />
+ <stop
+ id="stop4087"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4032">
+ <stop
+ id="stop4034"
+ offset="0"
+ style="stop-color:#fff7c2;stop-opacity:0.63829786" />
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:0.18348624;"
+ offset="0.59394139"
+ id="stop4036" />
+ <stop
+ id="stop4038"
+ offset="0.83850551"
+ style="stop-color:#fcaf3e;stop-opacity:0.50458717;" />
+ <stop
+ id="stop4040"
+ offset="1"
+ style="stop-color:#fcaf3e;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4026">
+ <stop
+ id="stop4028"
+ offset="0"
+ style="stop-color:#fff9c6;stop-opacity:1" />
+ <stop
+ style="stop-color:#fff28c;stop-opacity:1;"
+ offset="0.54166669"
+ id="stop4042" />
+ <stop
+ id="stop4030"
+ offset="1"
+ style="stop-color:#ffea85;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2298"
+ id="linearGradient7748"
+ gradientUnits="userSpaceOnUse"
+ x1="-27.006643"
+ y1="-37.550461"
+ x2="-34.700153"
+ y2="-4.4493785" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2527"
+ id="linearGradient7746"
+ gradientUnits="userSpaceOnUse"
+ x1="-25.137094"
+ y1="-1.2491118"
+ x2="-35.652866"
+ y2="-24.884460" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3478"
+ id="linearGradient7744"
+ gradientUnits="userSpaceOnUse"
+ x1="11.149398"
+ y1="-43.997444"
+ x2="4.9625983"
+ y2="-8.3080902" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4829">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop4831" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop4833" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3478">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3480" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3482" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2298">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2300" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop2302" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3347">
+ <stop
+ style="stop-color:#edd400;stop-opacity:1;"
+ offset="0"
+ id="stop3349" />
+ <stop
+ style="stop-color:#edd400;stop-opacity:0;"
+ offset="1"
+ id="stop3351" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2527">
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:0;"
+ offset="0"
+ id="stop2529" />
+ <stop
+ id="stop4022"
+ offset="0.66644967"
+ style="stop-color:#fcaf3e;stop-opacity:0.17431192;" />
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:0.55963302;"
+ offset="0.86458337"
+ id="stop4024" />
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:1;"
+ offset="1"
+ id="stop2531" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2500">
+ <stop
+ style="stop-color:#fce94f;stop-opacity:1;"
+ offset="0"
+ id="stop2502" />
+ <stop
+ style="stop-color:#fce94f;stop-opacity:0;"
+ offset="1"
+ id="stop2504" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2392">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop2394" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop2396" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2254">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2256" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop2258" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2263"
+ gradientUnits="userSpaceOnUse"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581"
+ gradientTransform="translate(-1.608757,3.097272)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2267"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.555020,0.968578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2271"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(9.263651,3.495228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2275"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8.497184,-2.330824)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2279"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(14.46340,2.014073)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2283"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2287"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2291"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2295"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2299"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2303"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1.707748,-5.784024)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2311"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2350"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(16.14002,24.66420)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2352"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.932144,25.87240)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2354"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.356636,23.86870)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2356"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(11.19027,26.52035)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2358"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(10.30638,19.27251)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2360"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,0.229156,30.76299)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2362"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,16.67145,27.22746)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2364"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,17.05272,31.47010)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2366"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-4.010744,24.96040)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2368"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,8.185476,29.52556)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2370"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(4.207586,21.30544)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2372"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.12415,32.08882)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2392"
+ id="linearGradient2398"
+ x1="6.6651416"
+ y1="13.802798"
+ x2="41.403877"
+ y2="13.802798"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2426"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(14.46340,2.014073)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2428"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8.497184,-2.330824)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2430"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-1.608757,3.097272)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2432"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.555020,0.968578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2434"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(9.263651,3.495228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2436"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2438"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2440"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2442"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2444"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2446"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2392"
+ id="linearGradient2448"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ x1="6.6651416"
+ y1="13.802798"
+ x2="41.403877"
+ y2="13.802798" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2392"
+ id="linearGradient2451"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,4.378541,10.65407)"
+ x1="6.6651416"
+ y1="13.802798"
+ x2="41.403877"
+ y2="13.802798" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2457"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2460"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2463"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2469"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2472"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(12.51365,8.745228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2475"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(6.805020,6.218578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2478"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1.641243,8.347272)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2483"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0.842481,-3.998086)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2506"
+ x1="37.000000"
+ y1="-21.750000"
+ x2="53.750000"
+ y2="9.0000000"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2509"
+ gradientUnits="userSpaceOnUse"
+ x1="37.000000"
+ y1="-21.750000"
+ x2="53.750000"
+ y2="9.0000000"
+ gradientTransform="matrix(0.889091,0.000000,0.000000,0.617886,-4.771368,39.81402)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2513"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.605509,0.000000,0.000000,0.710542,-0.224971,42.19500)"
+ x1="38.857941"
+ y1="-18.407482"
+ x2="53.750000"
+ y2="9.0000000" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2517"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.414169,0.000000,0.000000,0.778853,-1.910724,36.87850)"
+ x1="37.000000"
+ y1="-21.750000"
+ x2="53.750000"
+ y2="9.0000000" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2527"
+ id="linearGradient2533"
+ x1="-25.137094"
+ y1="-1.2491118"
+ x2="-35.652866"
+ y2="-24.884460"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2537"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(17.33814,3.415985)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2541"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.40064,1.353485)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2555"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-7.499805,1.708617)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2563"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.726830,2.481141)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3347"
+ id="linearGradient3353"
+ x1="23.303862"
+ y1="29.115711"
+ x2="29.750000"
+ y2="46.092930"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3366"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.40064,1.353485)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3368"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1.641243,8.347272)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3370"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(6.805020,6.218578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3372"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(12.51365,8.745228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3374"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3376"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3378"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3380"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3383"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3386"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3389"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3392"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3395"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.674812,3.088370)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3398"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-2.033818,0.561720)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3401"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-7.197595,2.690414)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3405"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(4.561802,-4.303373)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1514"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(88.49344,-9.697877)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1516"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,56.25514,-12.39388)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1518"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,79.36909,-3.193747)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2527"
+ id="linearGradient1520"
+ gradientUnits="userSpaceOnUse"
+ x1="-25.137094"
+ y1="-1.2491118"
+ x2="-35.652866"
+ y2="-24.884460" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1522"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-7.197595,2.690414)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1524"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-2.033818,0.561720)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1526"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.674812,3.088370)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1528"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1530"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1532"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1534"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1536"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,123.1162,-5.446357)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient1538"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(57.97693,-10.56876)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2527"
+ id="linearGradient1557"
+ gradientUnits="userSpaceOnUse"
+ x1="-25.137094"
+ y1="-1.2491118"
+ x2="-35.652866"
+ y2="-24.884460" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4829"
+ id="radialGradient4835"
+ cx="-35.001785"
+ cy="-1.1439217"
+ fx="-35.001785"
+ fy="-1.1439217"
+ r="17.500893"
+ gradientTransform="matrix(1.000000,0.000000,0.000000,0.565657,-5.564992e-15,-0.496855)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2298"
+ id="linearGradient1427"
+ gradientUnits="userSpaceOnUse"
+ x1="-27.006643"
+ y1="-37.550461"
+ x2="-34.700153"
+ y2="-4.4493785" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3478"
+ id="linearGradient1431"
+ gradientUnits="userSpaceOnUse"
+ x1="11.149398"
+ y1="-43.997444"
+ x2="4.9625983"
+ y2="-8.3080902" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3478"
+ id="linearGradient14128"
+ gradientUnits="userSpaceOnUse"
+ x1="11.149398"
+ y1="-43.997444"
+ x2="4.9625983"
+ y2="-8.3080902" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2527"
+ id="linearGradient14130"
+ gradientUnits="userSpaceOnUse"
+ x1="-25.137094"
+ y1="-1.2491118"
+ x2="-35.652866"
+ y2="-24.884460" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2298"
+ id="linearGradient14132"
+ gradientUnits="userSpaceOnUse"
+ x1="-27.006643"
+ y1="-37.550461"
+ x2="-34.700153"
+ y2="-4.4493785" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2527"
+ id="linearGradient3151"
+ gradientUnits="userSpaceOnUse"
+ x1="-25.137094"
+ y1="-1.2491118"
+ x2="-35.652866"
+ y2="-24.884460" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2298"
+ id="linearGradient3153"
+ gradientUnits="userSpaceOnUse"
+ x1="-27.006643"
+ y1="-37.550461"
+ x2="-34.700153"
+ y2="-4.4493785" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3478"
+ id="linearGradient3155"
+ gradientUnits="userSpaceOnUse"
+ x1="11.149398"
+ y1="-43.997444"
+ x2="4.9625983"
+ y2="-8.3080902" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3478"
+ id="linearGradient3161"
+ gradientUnits="userSpaceOnUse"
+ x1="11.149398"
+ y1="-43.997444"
+ x2="4.9625983"
+ y2="-8.3080902" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4026"
+ id="linearGradient3168"
+ gradientUnits="userSpaceOnUse"
+ x1="-28.968945"
+ y1="-25.326815"
+ x2="-37.19698"
+ y2="-9.5590506" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4032"
+ id="radialGradient4020"
+ cx="-33.519073"
+ cy="-22.113297"
+ fx="-33.519073"
+ fy="-22.113297"
+ r="9.5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.487739,1.292402,-1.10267,0.497242,-41.77393,32.41492)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3478"
+ id="linearGradient4057"
+ gradientUnits="userSpaceOnUse"
+ x1="11.149398"
+ y1="-43.997444"
+ x2="4.9625983"
+ y2="-8.3080902" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4083"
+ id="radialGradient4081"
+ cx="23.99999"
+ cy="23.381506"
+ fx="23.99999"
+ fy="23.381506"
+ r="19.141981"
+ gradientTransform="matrix(1.006701,2.235326e-16,-2.23715e-16,1.007522,-0.160816,0.426981)"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="10.54135"
+ inkscape:cx="23.386176"
+ inkscape:cy="24.950603"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1013"
+ inkscape:window-height="965"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:showpageshadow="false" />
+ <metadata
+ id="metadata1311">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>weather-clear</dc:title>
+ <dc:date>January 2006</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Ryan Collier (pseudo)</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:publisher>
+ <cc:Agent>
+ <dc:title>http://www.tango-project.org</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:source>http://www.pseudocode.org</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>weather</rdf:li>
+ <rdf:li>applet</rdf:li>
+ <rdf:li>notification</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Garrett LeSage</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <g
+ id="g3936">
+ <g
+ style="opacity:0.7"
+ id="g4091">
+ <path
+ style="fill:#fce94f;fill-opacity:1;stroke:#fcaf3e;stroke-width:0.73732895;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 24 2.5 L 21.625 9.1875 C 22.399034 9.0641318 23.191406 9 24 9 C 24.808594 9 25.600966 9.0641317 26.375 9.1875 L 24 2.5 z M 8.8125 8.78125 L 11.84375 15.21875 C 12.779034 13.928569 13.928569 12.779034 15.21875 11.84375 L 8.8125 8.78125 z M 39.21875 8.78125 L 32.78125 11.84375 C 34.071431 12.779034 35.220966 13.928569 36.15625 15.21875 L 39.21875 8.78125 z M 9.1875 21.59375 L 2.5 23.96875 L 9.1875 26.34375 C 9.0673373 25.57952 9 24.797813 9 24 C 9 23.180625 9.0608858 22.377571 9.1875 21.59375 z M 38.8125 21.625 C 38.935868 22.399034 39 23.191406 39 24 C 39 24.808594 38.935868 25.600966 38.8125 26.375 L 45.5 24 L 38.8125 21.625 z M 11.84375 32.78125 L 8.8125 39.1875 L 15.21875 36.15625 C 13.928569 35.220966 12.779034 34.071431 11.84375 32.78125 z M 36.15625 32.78125 C 35.229789 34.05926 34.087617 35.194799 32.8125 36.125 L 39.21875 39.1875 L 36.15625 32.78125 z M 21.625 38.8125 L 24 45.5 L 26.375 38.8125 C 25.600966 38.935868 24.808594 39 24 39 C 23.191406 39 22.399034 38.935868 21.625 38.8125 z "
+ id="path7492" />
+ <path
+ style="fill:none;fill-opacity:1;stroke:url(#radialGradient4081);stroke-width:0.84646249;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 24 5.25 L 22.65625 9.0625 C 23.098888 9.0231486 23.547187 9 24 9 C 24.452813 9 24.901112 9.0231486 25.34375 9.0625 L 24 5.25 z M 10.78125 10.75 L 12.5 14.375 C 13.071538 13.694089 13.724004 13.038745 14.40625 12.46875 L 10.78125 10.75 z M 37.25 10.75 L 33.625 12.46875 C 34.304675 13.038189 34.961811 13.695325 35.53125 14.375 L 37.25 10.75 z M 9.0625 22.625 L 5.28125 23.96875 L 9.0625 25.3125 C 9.024981 24.880146 9 24.442031 9 24 C 9 23.536406 9.0212735 23.077908 9.0625 22.625 z M 38.9375 22.65625 C 38.976851 23.098888 39 23.547187 39 24 C 39 24.452813 38.976851 24.901112 38.9375 25.34375 L 42.71875 24 L 38.9375 22.65625 z M 35.53125 33.59375 C 34.958293 34.27954 34.309985 34.957363 33.625 35.53125 L 37.25 37.25 L 35.53125 33.59375 z M 12.5 33.625 L 10.78125 37.21875 L 14.375 35.5 C 13.702932 34.935884 13.064116 34.297068 12.5 33.625 z M 22.65625 38.9375 L 24 42.71875 L 25.34375 38.9375 C 24.901112 38.976851 24.452813 39 24 39 C 23.547187 39 23.098888 38.976851 22.65625 38.9375 z "
+ id="path7494" />
+ </g>
+ <g
+ id="g4046">
+ <g
+ id="g3931">
+ <path
+ inkscape:r_cy="true"
+ inkscape:r_cx="true"
+ transform="matrix(0.778062,-1.061285,1.061287,0.778062,67.47952,3.641324)"
+ d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z"
+ sodipodi:ry="9.5"
+ sodipodi:rx="9.5"
+ sodipodi:cy="-17.5"
+ sodipodi:cx="-32"
+ id="path7498"
+ style="fill:#ffee54;fill-opacity:1;stroke:#fcaf3e;stroke-width:0.75991178;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ inkscape:r_cy="true"
+ inkscape:r_cx="true"
+ transform="matrix(1.244257,-0.167707,0.216642,1.251844,67.61648,40.527)"
+ d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z"
+ sodipodi:ry="9.5"
+ sodipodi:rx="9.5"
+ sodipodi:cy="-17.5"
+ sodipodi:cx="-32"
+ id="path7500"
+ style="fill:url(#radialGradient4020);fill-opacity:1;stroke:none;stroke-width:1.01737845;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ inkscape:r_cy="true"
+ inkscape:r_cx="true"
+ transform="matrix(0.715791,-0.976349,0.97635,0.715792,64.00044,5.269544)"
+ d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z"
+ sodipodi:ry="9.5"
+ sodipodi:rx="9.5"
+ sodipodi:cy="-17.5"
+ sodipodi:cx="-32"
+ id="path7502"
+ style="fill:none;fill-opacity:1;stroke:url(#linearGradient3168);stroke-width:0.82601947;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:type="arc" />
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/icons/weather-thundershower.svg b/demos/embedded/weatherinfo/icons/weather-thundershower.svg
new file mode 100644
index 0000000..406abfa
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-thundershower.svg
@@ -0,0 +1,4587 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg1306"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docbase="/home/rcollier/Work/Novell/Tango/weather"
+ sodipodi:docname="weather-thundershower.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs1308">
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5358"
+ id="linearGradient12225"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)"
+ x1="6.8942904"
+ y1="-359.82382"
+ x2="27.400387"
+ y2="-381.30222" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5346"
+ id="radialGradient12223"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)"
+ cx="21.920311"
+ cy="-382.96454"
+ fx="21.920311"
+ fy="-382.96454"
+ r="21.743534" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5358"
+ id="linearGradient12213"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)"
+ x1="6.8942904"
+ y1="-359.82382"
+ x2="27.400387"
+ y2="-381.30222" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5346"
+ id="radialGradient12211"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)"
+ cx="21.920311"
+ cy="-382.96454"
+ fx="21.920311"
+ fy="-382.96454"
+ r="21.743534" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5358"
+ id="linearGradient12253"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)"
+ x1="6.8942904"
+ y1="-359.82382"
+ x2="27.400387"
+ y2="-381.30222" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5346"
+ id="radialGradient12251"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)"
+ cx="21.920311"
+ cy="-382.96454"
+ fx="21.920311"
+ fy="-382.96454"
+ r="21.743534" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5358"
+ id="linearGradient12249"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)"
+ x1="6.8942904"
+ y1="-359.82382"
+ x2="27.400387"
+ y2="-381.30222" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5346"
+ id="radialGradient12247"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)"
+ cx="21.920311"
+ cy="-382.96454"
+ fx="21.920311"
+ fy="-382.96454"
+ r="21.743534" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5358"
+ id="linearGradient12201"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)"
+ x1="6.8942904"
+ y1="-359.82382"
+ x2="27.400387"
+ y2="-381.30222" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5346"
+ id="radialGradient12199"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)"
+ cx="21.920311"
+ cy="-382.96454"
+ fx="21.920311"
+ fy="-382.96454"
+ r="21.743534" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5358">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop5360" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop5362" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5358"
+ id="linearGradient12237"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)"
+ x1="6.8942904"
+ y1="-359.82382"
+ x2="27.400387"
+ y2="-381.30222" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5346">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop5348" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop5350" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5346"
+ id="radialGradient12235"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)"
+ cx="21.920311"
+ cy="-382.96454"
+ fx="21.920311"
+ fy="-382.96454"
+ r="21.743534" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 24 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="48 : 24 : 1"
+ inkscape:persp3d-origin="24 : 16 : 1"
+ id="perspective22454" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8397">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8400" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8402" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8397"
+ id="linearGradient13503"
+ gradientUnits="userSpaceOnUse"
+ x1="238.00478"
+ y1="-388.47476"
+ x2="245.65462"
+ y2="-382.64539" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8315">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8317" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8319" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8315"
+ id="linearGradient13501"
+ gradientUnits="userSpaceOnUse"
+ x1="230.87598"
+ y1="-390.43951"
+ x2="235.25652"
+ y2="-386.95901" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8381">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8383" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8385" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8381"
+ id="linearGradient13499"
+ gradientUnits="userSpaceOnUse"
+ x1="246.74042"
+ y1="-391.31381"
+ x2="252.69785"
+ y2="-385.35165" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8331">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8333" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8335" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8331"
+ id="linearGradient13497"
+ gradientUnits="userSpaceOnUse"
+ x1="240.07379"
+ y1="-393.40720"
+ x2="245.82706"
+ y2="-388.55029" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8302">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8304" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8306" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8302"
+ id="linearGradient13495"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(69.00000,155.0000)"
+ x1="228.50261"
+ y1="-392.30591"
+ x2="266.36395"
+ y2="-379.26862" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient13143"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient13141"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient13139"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-35.00007,207.0001)"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient13137"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient13135"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient13133"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient13131"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-34.00007,207.0001)"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8874"
+ id="linearGradient11195"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(14.15871,7.082841)"
+ x1="-190.47688"
+ y1="-332.51181"
+ x2="-196.19046"
+ y2="-328.53433" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8904"
+ id="linearGradient11193"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.80516,2.840199)"
+ x1="-191.28896"
+ y1="-328.07861"
+ x2="-192.41396"
+ y2="-315.32861" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8874">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop8876" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop8878" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8874"
+ id="linearGradient11191"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(14.15871,7.082841)"
+ x1="-190.47688"
+ y1="-332.51181"
+ x2="-196.19046"
+ y2="-328.53433" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8904">
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:1;"
+ offset="0"
+ id="stop8906" />
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:0;"
+ offset="1"
+ id="stop8908" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8904"
+ id="linearGradient11189"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.80516,2.840199)"
+ x1="-191.28896"
+ y1="-328.07861"
+ x2="-192.41396"
+ y2="-315.32861" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5123"
+ id="radialGradient13211"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.930946,6.185702e-16,-2.842711e-16,0.448244,245.3644,184.9256)"
+ cx="-229.75000"
+ cy="-343.95554"
+ fx="-229.75000"
+ fy="-343.95554"
+ r="14.501380" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient13157"
+ gradientUnits="userSpaceOnUse"
+ x1="284.80219"
+ y1="-441.23294"
+ x2="288.89954"
+ y2="-436.83109" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6549">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6551" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6553" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6549"
+ id="linearGradient13155"
+ gradientUnits="userSpaceOnUse"
+ x1="286.66589"
+ y1="-439.48358"
+ x2="289.76562"
+ y2="-436.70703" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6527">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6530" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6532" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6527"
+ id="linearGradient13153"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-35.00007,207.0001)"
+ x1="275.94193"
+ y1="-437.10501"
+ x2="279.97546"
+ y2="-431.91833" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6538">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6540" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6542" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6538"
+ id="linearGradient13151"
+ gradientUnits="userSpaceOnUse"
+ x1="285.94086"
+ y1="-439.93900"
+ x2="289.39124"
+ y2="-436.44290" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6513">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6515" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6517" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6513"
+ id="linearGradient13149"
+ gradientUnits="userSpaceOnUse"
+ x1="286.51172"
+ y1="-441.29074"
+ x2="289.85379"
+ y2="-436.14453" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6497">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6499" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6501" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6497"
+ id="linearGradient13147"
+ gradientUnits="userSpaceOnUse"
+ x1="287.51730"
+ y1="-439.75281"
+ x2="289.67633"
+ y2="-436.32199" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6470">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6472" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6474" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6470"
+ id="linearGradient13145"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-34.00007,207.0001)"
+ x1="271.02170"
+ y1="-441.05182"
+ x2="285.02859"
+ y2="-431.96991" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5123">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop5125" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop5127" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5123"
+ id="radialGradient13068"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.930946,6.185702e-16,-2.842711e-16,0.448244,229.9269,180.9261)"
+ cx="-229.75000"
+ cy="-343.95554"
+ fx="-229.75000"
+ fy="-343.95554"
+ r="14.501380" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6840">
+ <stop
+ style="stop-color:#ad7fa8;stop-opacity:1;"
+ offset="0"
+ id="stop6842" />
+ <stop
+ style="stop-color:#ad7fa8;stop-opacity:0;"
+ offset="1"
+ id="stop6844" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6828">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6830" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6832" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6537">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6539" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6541" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2298">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2300" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop2302" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3347">
+ <stop
+ style="stop-color:#edd400;stop-opacity:1;"
+ offset="0"
+ id="stop3349" />
+ <stop
+ style="stop-color:#edd400;stop-opacity:0;"
+ offset="1"
+ id="stop3351" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2527">
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:1;"
+ offset="0"
+ id="stop2529" />
+ <stop
+ style="stop-color:#fcaf3e;stop-opacity:0;"
+ offset="1"
+ id="stop2531" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2500">
+ <stop
+ style="stop-color:#fce94f;stop-opacity:1;"
+ offset="0"
+ id="stop2502" />
+ <stop
+ style="stop-color:#fce94f;stop-opacity:0;"
+ offset="1"
+ id="stop2504" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2392">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop2394" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop2396" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2254">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2256" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop2258" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2263"
+ gradientUnits="userSpaceOnUse"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581"
+ gradientTransform="translate(-1.608757,3.097272)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2267"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.555020,0.968578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2271"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(9.263651,3.495228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2275"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8.497184,-2.330824)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2279"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(14.46340,2.014073)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2283"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2287"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2291"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2295"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2299"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2303"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1.707748,-5.784024)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2311"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2350"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(16.14002,24.66420)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2352"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.932144,25.87240)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2354"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.356636,23.86870)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2356"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(11.19027,26.52035)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2358"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(10.30638,19.27251)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2360"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,0.229156,30.76299)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2362"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,16.67145,27.22746)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2364"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,17.05272,31.47010)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2366"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-4.010744,24.96040)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2368"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,8.185476,29.52556)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2370"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(4.207586,21.30544)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2372"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.12415,32.08882)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2392"
+ id="linearGradient2398"
+ x1="6.6651416"
+ y1="13.802798"
+ x2="41.403877"
+ y2="13.802798"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2426"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(14.46340,2.014073)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2428"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8.497184,-2.330824)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2430"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-1.608757,3.097272)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2432"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.555020,0.968578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2434"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(9.263651,3.495228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2436"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2438"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2440"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2442"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2444"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2446"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2392"
+ id="linearGradient2448"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ x1="6.6651416"
+ y1="13.802798"
+ x2="41.403877"
+ y2="13.802798" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2392"
+ id="linearGradient2451"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,4.378541,10.65407)"
+ x1="6.6651416"
+ y1="13.802798"
+ x2="41.403877"
+ y2="13.802798" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2457"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2460"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2463"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2469"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2472"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(12.51365,8.745228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2475"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(6.805020,6.218578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2478"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1.641243,8.347272)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2483"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0.842481,-3.998086)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2506"
+ x1="37.000000"
+ y1="-21.750000"
+ x2="53.750000"
+ y2="9.0000000"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2509"
+ gradientUnits="userSpaceOnUse"
+ x1="37.000000"
+ y1="-21.750000"
+ x2="53.750000"
+ y2="9.0000000"
+ gradientTransform="matrix(0.889091,0.000000,0.000000,0.617886,-4.771368,39.81402)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2513"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.605509,0.000000,0.000000,0.710542,-0.224971,42.19500)"
+ x1="38.857941"
+ y1="-18.407482"
+ x2="53.750000"
+ y2="9.0000000" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2500"
+ id="linearGradient2517"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.414169,0.000000,0.000000,0.778853,-1.910724,36.87850)"
+ x1="37.000000"
+ y1="-21.750000"
+ x2="53.750000"
+ y2="9.0000000" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2527"
+ id="linearGradient2533"
+ x1="-25.137094"
+ y1="-1.2491118"
+ x2="-35.652866"
+ y2="-24.884460"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2537"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(17.33814,3.415985)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2541"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.40064,1.353485)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2555"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-7.499805,1.708617)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient2563"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.726830,2.481141)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3347"
+ id="linearGradient3353"
+ x1="23.303862"
+ y1="29.115711"
+ x2="29.750000"
+ y2="46.092930"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3366"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.40064,1.353485)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3368"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1.641243,8.347272)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3370"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(6.805020,6.218578)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3372"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(12.51365,8.745228)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3374"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3376"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3378"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3380"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3383"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3386"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3389"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3392"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3395"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.674812,3.088370)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3398"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-2.033818,0.561720)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3401"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-7.197595,2.690414)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient3405"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(4.561802,-4.303373)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="-4.4493785"
+ x2="-34.700153"
+ y1="-37.550461"
+ x1="-27.006643"
+ id="linearGradient2916"
+ xlink:href="#linearGradient2298"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2914"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(57.97693,-10.56876)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2912"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,123.1162,-5.446357)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2910"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2908"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2906"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2904"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2902"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.674812,3.088370)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2900"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-2.033818,0.561720)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2898"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.197595,2.690414)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2896"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2894"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,79.36909,-3.193747)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2892"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,56.25514,-12.39388)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2890"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(88.49344,-9.697877)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2888"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(4.561802,-4.303373)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2886"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.197595,2.690414)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2884"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-2.033818,0.561720)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2882"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.674812,3.088370)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2880"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2878"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2876"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2874"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2872"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2870"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2868"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2866"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2864"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(12.51365,8.745228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2862"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(6.805020,6.218578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2860"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.641243,8.347272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2858"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(13.40064,1.353485)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2856"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="46.092930"
+ x2="29.750000"
+ y1="29.115711"
+ x1="23.303862"
+ id="linearGradient2854"
+ xlink:href="#linearGradient3347"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-0.726830,2.481141)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2852"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.499805,1.708617)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2850"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(13.40064,1.353485)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2848"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(17.33814,3.415985)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2846"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ id="linearGradient2844"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ gradientTransform="matrix(0.414169,0.000000,0.000000,0.778853,-1.910724,36.87850)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2842"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-18.407482"
+ x1="38.857941"
+ gradientTransform="matrix(0.605509,0.000000,0.000000,0.710542,-0.224971,42.19500)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2840"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="matrix(0.889091,0.000000,0.000000,0.617886,-4.771368,39.81402)"
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2838"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ id="linearGradient2836"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(0.842481,-3.998086)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2834"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.641243,8.347272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2832"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(6.805020,6.218578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2830"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(12.51365,8.745228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2828"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2826"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2824"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2822"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2820"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,4.378541,10.65407)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2818"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2816"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2814"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2812"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2810"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2808"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2806"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2804"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(9.263651,3.495228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2802"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.555020,0.968578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2800"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-1.608757,3.097272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2798"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(8.497184,-2.330824)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2796"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(14.46340,2.014073)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2794"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ gradientUnits="userSpaceOnUse"
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ id="linearGradient2792"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.12415,32.08882)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2790"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(4.207586,21.30544)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2788"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,8.185476,29.52556)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2786"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-4.010744,24.96040)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2784"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,17.05272,31.47010)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2782"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,16.67145,27.22746)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2780"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,0.229156,30.76299)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2778"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(10.30638,19.27251)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2776"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(11.19027,26.52035)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2774"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(5.356636,23.86870)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2772"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-0.932144,25.87240)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2770"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(16.14002,24.66420)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2768"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2766"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.707748,-5.784024)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2764"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2762"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2760"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2758"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2756"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2754"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(14.46340,2.014073)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2752"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(8.497184,-2.330824)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2750"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(9.263651,3.495228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2748"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.555020,0.968578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2746"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="translate(-1.608757,3.097272)"
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2744"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="-4.4493785"
+ x2="-34.700153"
+ y1="-37.550461"
+ x1="-27.006643"
+ id="linearGradient2304"
+ xlink:href="#linearGradient2298"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1557"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(57.97693,-10.56876)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1538"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,123.1162,-5.446357)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1536"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1534"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1532"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1530"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1528"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.674812,3.088370)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1526"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-2.033818,0.561720)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1524"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.197595,2.690414)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1522"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1520"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,79.36909,-3.193747)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1518"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,56.25514,-12.39388)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1516"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(88.49344,-9.697877)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1514"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(4.561802,-4.303373)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5957"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.197595,2.690414)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5955"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-2.033818,0.561720)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5953"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.674812,3.088370)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5951"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5949"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5947"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5945"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5943"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5941"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5939"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5937"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5935"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(12.51365,8.745228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5933"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(6.805020,6.218578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5931"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.641243,8.347272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5929"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(13.40064,1.353485)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5927"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="46.092930"
+ x2="29.750000"
+ y1="29.115711"
+ x1="23.303862"
+ id="linearGradient5925"
+ xlink:href="#linearGradient3347"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-0.726830,2.481141)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5923"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-7.499805,1.708617)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5921"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(13.40064,1.353485)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5919"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(17.33814,3.415985)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5917"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="-24.884460"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ id="linearGradient5915"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ gradientTransform="matrix(0.414169,0.000000,0.000000,0.778853,-1.910724,36.87850)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5913"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-18.407482"
+ x1="38.857941"
+ gradientTransform="matrix(0.605509,0.000000,0.000000,0.710542,-0.224971,42.19500)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5911"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="matrix(0.889091,0.000000,0.000000,0.617886,-4.771368,39.81402)"
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5909"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="9.0000000"
+ x2="53.750000"
+ y1="-21.750000"
+ x1="37.000000"
+ id="linearGradient5907"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(0.842481,-3.998086)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5905"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.641243,8.347272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5903"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(6.805020,6.218578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5901"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(12.51365,8.745228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5899"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,3.052538,12.86287)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5897"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,18.12610,13.81998)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5895"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-2.437359,7.060269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5893"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,9.633860,11.75043)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5891"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,4.378541,10.65407)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5889"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5887"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5885"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5883"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5881"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5879"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5877"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5875"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(9.263651,3.495228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5873"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.555020,0.968578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5871"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-1.608757,3.097272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5869"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(8.497184,-2.330824)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5867"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(14.46340,2.014073)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5865"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="matrix(0.992367,0.000000,0.000000,0.990713,1.128541,5.404075)"
+ gradientUnits="userSpaceOnUse"
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ id="linearGradient5863"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.12415,32.08882)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5861"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(4.207586,21.30544)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5859"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,8.185476,29.52556)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5857"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-4.010744,24.96040)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5855"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,17.05272,31.47010)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5853"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,16.67145,27.22746)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5851"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,0.229156,30.76299)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5849"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(10.30638,19.27251)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5847"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(11.19027,26.52035)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5845"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(5.356636,23.86870)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5843"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(-0.932144,25.87240)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5841"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(16.14002,24.66420)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5839"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,53.94753,8.563694)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5837"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(1.707748,-5.784024)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5835"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,6.383860,6.500432)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5833"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-5.687359,1.810269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5831"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,14.87610,8.569976)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5829"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,14.61983,4.452335)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5827"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-0.197462,7.612867)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5825"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(14.46340,2.014073)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5823"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(8.497184,-2.330824)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5821"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(9.263651,3.495228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5819"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientTransform="translate(3.555020,0.968578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5817"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="translate(-1.608757,3.097272)"
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.2859020"
+ x1="14.260854"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5815"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6098"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-9.002513,11.93373)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6101"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.13675,17.05613)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6118"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,12.38965,19.30874)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6121"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-10.72430,10.10861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6124"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(21.51400,12.80461)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6179"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-7.197595,2.690414)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6181"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-2.033818,0.561720)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6183"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3.674812,3.088370)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6185"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-5.786300,7.206012)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6187"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,9.287262,8.163122)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6189"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-11.27620,1.403411)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6191"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,0.795022,6.093572)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2527"
+ id="linearGradient6193"
+ gradientUnits="userSpaceOnUse"
+ x1="-25.137094"
+ y1="-1.2491118"
+ x2="-35.652866"
+ y2="-24.884460" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6196"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,2.209129,10.83861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6199"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-9.862093,6.148450)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6202"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,10.70137,12.90816)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6205"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.751222,0.000000,0.000000,1.000000,-4.372193,11.95105)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6208"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.088919,7.833409)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6211"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.619711,5.306759)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6214"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-5.783488,7.435453)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6242"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-5.783488,7.435453)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6244"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.619711,5.306759)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6246"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.088919,7.833409)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6248"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,10.70137,12.90816)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6250"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-9.862093,6.148450)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6252"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,2.209129,10.83861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6254"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-9.002513,11.93373)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6257"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.297112,4.275205)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6260"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,10.91453,3.180085)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6263"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-1.156692,-1.510075)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6266"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,19.40677,5.249635)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6269"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.79432,0.174884)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6272"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8.085690,-2.351766)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6275"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(2.921913,-0.223072)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6311"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(21.51400,12.80461)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6313"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-10.72430,10.10861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6315"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.284317,0.000000,0.000000,1.000000,12.38965,19.30874)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6317"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-1.156692,-1.510075)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6319"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.976307,0.000000,0.000000,1.000000,56.13675,17.05613)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6321"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-5.783488,7.435453)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6323"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.619711,5.306759)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6325"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.088919,7.833409)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6327"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,10.70137,12.90816)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6329"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-9.862093,6.148450)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6331"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,2.209129,10.83861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6333"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-9.002513,11.93373)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6335"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(2.921913,-0.223072)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6337"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(8.085690,-2.351766)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6339"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(13.79432,0.174884)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6341"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,19.40677,5.249635)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6343"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,10.91453,3.180085)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6543"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-2.763717e-17,0.972572,16.13182,0.843286)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6547"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-4.388782e-16,0.972572,25.91493,0.633642)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6551"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-4.388782e-16,0.972572,36.25638,0.633643)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="45.115814"
+ y2="44.228455" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6559"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-2.332577e-16,0.972572,16.13182,0.843286)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6561"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-6.444987e-16,0.972572,25.91493,0.633642)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6563"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.526962,0.000000,-6.444987e-16,0.972572,36.25638,0.633643)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="45.115814"
+ y2="44.228455" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6566"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.577744,0.000000,-6.388715e-16,1.006703,39.04124,-0.702889)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="45.115814"
+ y2="44.228455" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6569"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.577744,0.000000,-6.388715e-16,1.006703,27.70322,-0.702890)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6537"
+ id="linearGradient6572"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.577744,0.000000,-1.880005e-16,1.006703,16.97734,-0.485889)"
+ x1="27.320963"
+ y1="44.228481"
+ x2="52.328316"
+ y2="44.228481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6576"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.132431,0.000000,0.000000,1.016132,10.54485,-4.728138)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6579"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.853605,0.000000,0.000000,1.016132,19.23518,-2.625202)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6582"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,13.49182,-7.781819)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6585"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,7.650036,-10.34923)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6588"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,2.365814,-8.186195)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6599"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.999079,0.000000,0.000000,1.016132,56.82188,9.371753)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6603"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.496116,0.000000,0.000000,1.282841,-1.807925,-9.493960)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6606"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.314274,0.000000,0.000000,1.016132,12.05438,11.66070)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6609"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.496116,0.000000,0.000000,1.282841,-11.59870,2.312158)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6612"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,21.39156,5.051653)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6618"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,16.09471,2.948843)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6622"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.023325,0.000000,0.000000,1.016132,11.32174,9.047633)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6624"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-5.783488,7.435453)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6626"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.619711,5.306759)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6628"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(5.088919,7.833409)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6630"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.834148,0.000000,0.000000,1.000000,10.70137,12.90816)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6632"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.462015,0.000000,0.000000,1.262475,-9.862093,6.148450)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6634"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.106619,0.000000,0.000000,1.000000,2.209129,10.83861)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2254"
+ id="linearGradient6636"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-9.002513,11.93373)"
+ x1="14.260854"
+ y1="9.2859020"
+ x2="16.851845"
+ y2="16.268581" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6828"
+ id="radialGradient6834"
+ cx="15.147860"
+ cy="23.822156"
+ fx="15.147860"
+ fy="23.822156"
+ r="12.852140"
+ gradientTransform="matrix(0.654874,0.000000,0.000000,0.398574,2.663540,12.14676)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6840"
+ id="radialGradient6846"
+ cx="32.583473"
+ cy="25.240442"
+ fx="32.583473"
+ fy="25.240442"
+ r="8.4165270"
+ gradientTransform="matrix(1.000000,0.000000,0.000000,0.503823,-15.00000,6.042836)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6828"
+ id="radialGradient6852"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.654874,0.000000,0.000000,0.398574,44.33646,16.14676)"
+ cx="15.147860"
+ cy="23.822156"
+ fx="15.147860"
+ fy="23.822156"
+ r="12.852140" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6840"
+ id="radialGradient6854"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1.000000,0.000000,0.000000,0.503823,62.00000,10.04284)"
+ cx="32.583473"
+ cy="25.240442"
+ fx="32.583473"
+ fy="25.240442"
+ r="8.4165270" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5346"
+ id="radialGradient23739"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)"
+ cx="21.920311"
+ cy="-382.96454"
+ fx="21.920311"
+ fy="-382.96454"
+ r="21.743534" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5358"
+ id="linearGradient23741"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)"
+ x1="6.8942904"
+ y1="-359.82382"
+ x2="27.400387"
+ y2="-381.30222" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5346"
+ id="radialGradient23743"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)"
+ cx="21.920311"
+ cy="-382.96454"
+ fx="21.920311"
+ fy="-382.96454"
+ r="21.743534" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5358"
+ id="linearGradient23745"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)"
+ x1="6.8942904"
+ y1="-359.82382"
+ x2="27.400387"
+ y2="-381.30222" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5346"
+ id="radialGradient23747"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)"
+ cx="21.920311"
+ cy="-382.96454"
+ fx="21.920311"
+ fy="-382.96454"
+ r="21.743534" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5358"
+ id="linearGradient23749"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)"
+ x1="6.8942904"
+ y1="-359.82382"
+ x2="27.400387"
+ y2="-381.30222" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="24"
+ inkscape:cy="24"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="982"
+ inkscape:window-height="965"
+ inkscape:window-x="1280"
+ inkscape:window-y="28"
+ inkscape:showpageshadow="false" />
+ <metadata
+ id="metadata1311">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>weather-storm</dc:title>
+ <dc:date>January 2006</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Ryan Collier</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:publisher>
+ <cc:Agent>
+ <dc:title>http://www.tango-project.org</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:source>http://www.pseudocode.org</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>weather</rdf:li>
+ <rdf:li>applet</rdf:li>
+ <rdf:li>notify</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <g
+ id="g15505">
+ <g
+ transform="translate(-287.0204,244.9995)"
+ id="g12825">
+ <path
+ style="opacity:1.0000000;fill:#555753;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 311.50000,-242.99998 C 308.72758,-242.99998 306.39177,-241.42627 305.09375,-239.18748 C 304.14939,-239.66252 303.12856,-239.99998 302.00000,-239.99998 C 298.13600,-239.99998 295.00000,-236.86398 295.00000,-232.99998 C 295.00000,-229.13598 298.13600,-225.99998 302.00000,-225.99998 C 304.41967,-225.99998 306.43009,-227.31930 307.68750,-229.18748 C 308.82170,-228.49786 310.07648,-227.99998 311.50000,-227.99998 C 312.41312,-227.99998 313.25295,-228.23200 314.06250,-228.53123 C 314.57244,-227.66350 315.24162,-226.95151 316.06250,-226.37498 C 316.05526,-226.24460 316.00000,-226.13216 316.00000,-225.99998 C 316.00000,-222.13598 319.13599,-218.99998 323.00000,-218.99998 C 326.86400,-218.99998 330.00000,-222.13598 330.00000,-225.99998 C 330.00000,-228.36967 328.74102,-230.35832 326.93750,-231.62498 C 326.94474,-231.75536 327.00000,-231.86780 327.00000,-231.99998 C 327.00000,-235.86398 323.86401,-238.99998 320.00000,-238.99998 C 319.37730,-238.99998 318.82481,-238.77779 318.25000,-238.62498 C 317.05547,-241.18382 314.50866,-242.99998 311.50000,-242.99998 z "
+ id="path12827" />
+ <path
+ style="opacity:1.0000000;fill:url(#linearGradient13495);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 311.50000,-241.99998 C 308.71952,-241.99998 306.36549,-240.23813 305.43750,-237.78123 C 304.45208,-238.49067 303.30607,-238.99998 302.00000,-238.99998 C 298.68800,-238.99998 296.00000,-236.31198 296.00000,-232.99998 C 296.00000,-229.68798 298.68800,-226.99998 302.00000,-226.99998 C 304.42775,-226.99998 306.49324,-228.45556 307.43750,-230.53123 C 308.55826,-229.61367 309.93964,-228.99998 311.50000,-228.99998 C 312.57454,-228.99998 313.54428,-229.31894 314.43750,-229.78123 C 314.83590,-228.78147 315.53864,-227.99491 316.37500,-227.34373 C 316.19499,-226.74811 316.00000,-226.15408 316.00000,-225.49998 C 316.00000,-221.91198 318.91200,-218.99998 322.50000,-218.99998 C 326.08800,-218.99998 329.00000,-221.91198 329.00000,-225.49998 C 329.00000,-227.86077 327.66567,-229.83017 325.78125,-230.96873 C 325.84384,-231.31596 326.00000,-231.63481 326.00000,-231.99998 C 326.00000,-235.31198 323.31200,-237.99998 320.00000,-237.99998 C 319.14702,-237.99998 318.32870,-237.82130 317.59375,-237.49998 C 316.73998,-240.09386 314.37851,-241.99997 311.50000,-241.99998 z "
+ id="path12829" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12831"
+ sodipodi:cx="241.80843"
+ sodipodi:cy="-383.66660"
+ sodipodi:rx="6.7396116"
+ sodipodi:ry="6.7396116"
+ d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z"
+ transform="matrix(0.964447,0.000000,0.000000,0.964447,89.28852,144.5262)" />
+ <g
+ id="g12833">
+ <path
+ transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)"
+ d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z"
+ sodipodi:ry="6.2313786"
+ sodipodi:rx="6.2313786"
+ sodipodi:cy="-389.30136"
+ sodipodi:cx="243.95184"
+ id="path12835"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)"
+ d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z"
+ sodipodi:ry="6.2313786"
+ sodipodi:rx="6.2313786"
+ sodipodi:cy="-389.30136"
+ sodipodi:cx="243.95184"
+ id="path12837"
+ style="opacity:0.49444440;fill:url(#linearGradient13497);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g12839">
+ <path
+ transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)"
+ d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z"
+ sodipodi:ry="6.0325046"
+ sodipodi:rx="6.0325046"
+ sodipodi:cy="-385.78790"
+ sodipodi:cx="251.22179"
+ id="path12841"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)"
+ d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z"
+ sodipodi:ry="6.0325046"
+ sodipodi:rx="6.0325046"
+ sodipodi:cy="-385.78790"
+ sodipodi:cx="251.22179"
+ id="path12843"
+ style="opacity:0.49444440;fill:url(#linearGradient13499);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g12845">
+ <path
+ transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)"
+ d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z"
+ sodipodi:ry="4.3752232"
+ sodipodi:rx="4.3752232"
+ sodipodi:cy="-387.88715"
+ sodipodi:cx="233.43362"
+ id="path12847"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)"
+ d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z"
+ sodipodi:ry="4.3752232"
+ sodipodi:rx="4.3752232"
+ sodipodi:cy="-387.88715"
+ sodipodi:cx="233.43362"
+ id="path12849"
+ style="opacity:0.49444440;fill:url(#linearGradient13501);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g12851">
+ <path
+ transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84906,169.4899)"
+ d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z"
+ sodipodi:ry="6.7396116"
+ sodipodi:rx="6.7396116"
+ sodipodi:cy="-383.66660"
+ sodipodi:cx="241.80843"
+ id="path12853"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84907,169.4899)"
+ d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z"
+ sodipodi:ry="6.7396116"
+ sodipodi:rx="6.7396116"
+ sodipodi:cy="-383.66660"
+ sodipodi:cx="241.80843"
+ id="path12855"
+ style="opacity:0.49444440;fill:url(#linearGradient13503);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ sodipodi:type="arc" />
+ </g>
+ </g>
+ <g
+ transform="translate(208.8564,357.8851)"
+ id="g11177">
+ <path
+ style="fill:#edd400;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient11189);stroke-width:1.0000006px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+ d="M -173.24571,-327.59122 L -176.37021,-323.31202 L -172.59078,-323.31202 C -172.59078,-323.31202 -175.29396,-318.78622 -180.16632,-310.38562 C -178.07014,-318.33294 -177.21353,-321.35581 -177.21353,-321.35581 L -182.37682,-321.35581 L -178.33401,-327.59122 L -173.24571,-327.59122 z "
+ id="path11179"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="opacity:1.0000000;fill:url(#linearGradient11191);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000006px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+ d="M -173.75946,-327.84461 L -177.50268,-322.68152 L -173.54648,-322.85830 C -173.54648,-322.85830 -173.68639,-322.39837 -178.55875,-313.99777 C -176.46257,-321.94509 -176.48985,-321.96275 -176.48985,-321.96275 L -181.38797,-321.87436 L -177.69871,-327.57944 L -173.75946,-327.84461 z "
+ id="path11181"
+ sodipodi:nodetypes="cccccccc" />
+ </g>
+ <g
+ transform="translate(-215.0060,252.9994)"
+ id="g12857">
+ <path
+ style="fill:#888a85;fill-opacity:1.0000000;stroke:#555753;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z "
+ id="path12859"
+ sodipodi:nodetypes="ccsscsssscsscc" />
+ <path
+ style="opacity:1.0000000;fill:url(#linearGradient13131);fill-opacity:1.0000000;stroke:none;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z "
+ id="path12861"
+ sodipodi:nodetypes="ccsscsssscsscc" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12863"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47777775;fill:url(#linearGradient13133);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12865"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" />
+ <rect
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="rect12867"
+ width="20.000000"
+ height="9.0000000"
+ x="236.99994"
+ y="-230.99992" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12869"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12871"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47777775;fill:url(#linearGradient13135);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12873"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12875"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47777775;fill:url(#linearGradient13137);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12877"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" />
+ <path
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z "
+ id="path12879" />
+ <path
+ style="opacity:0.47777775;fill:url(#linearGradient13139);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z "
+ id="path12881" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47777775;fill:url(#linearGradient13141);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12883"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)" />
+ <path
+ style="fill:#555753;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+ d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z "
+ id="path12885"
+ sodipodi:nodetypes="ccss" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12887"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47777775;fill:url(#linearGradient13143);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12889"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" />
+ </g>
+ <g
+ transform="translate(192.8564,354.8851)"
+ id="g11183">
+ <path
+ style="fill:#edd400;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient11193);stroke-width:1.0000006px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+ d="M -173.24571,-327.59122 L -176.37021,-323.31202 L -172.59078,-323.31202 C -172.59078,-323.31202 -175.29396,-318.78622 -180.16632,-310.38562 C -178.07014,-318.33294 -177.21353,-321.35581 -177.21353,-321.35581 L -182.37682,-321.35581 L -178.33401,-327.59122 L -173.24571,-327.59122 z "
+ id="path11185"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="opacity:1.0000000;fill:url(#linearGradient11195);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000006px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+ d="M -173.75946,-327.84461 L -177.50268,-322.68152 L -173.54648,-322.85830 C -173.54648,-322.85830 -173.68639,-322.39837 -178.55875,-313.99777 C -176.46257,-321.94509 -176.48985,-321.96275 -176.48985,-321.96275 L -181.38797,-321.87436 L -177.69871,-327.57944 L -173.75946,-327.84461 z "
+ id="path11187"
+ sodipodi:nodetypes="cccccccc" />
+ </g>
+ <path
+ sodipodi:nodetypes="ccsscsscscsscc"
+ id="path13209"
+ d="M 31.626355,14.999520 C 29.626255,14.999520 27.940775,16.079020 27.095785,17.614460 C 26.500875,17.392550 25.851145,17.261090 25.169835,17.261090 C 22.339625,17.261090 20.052305,19.379260 20.052305,21.978590 C 20.052305,22.432340 20.196835,22.835420 20.327445,23.250720 C 18.945125,24.115990 17.979615,25.504290 17.979615,27.155450 C 17.979615,29.808280 18.631235,32.148800 23.207195,31.961300 C 23.252315,31.959450 40.658675,32.058280 40.907605,31.943270 C 43.992815,32.169220 44.979615,29.497540 44.979615,27.243810 C 44.979615,25.543300 44.142675,24.193960 42.670345,23.366220 C 42.718305,23.107660 42.631785,22.815030 42.631785,22.543970 C 42.631785,19.944650 40.326135,17.826480 37.495915,17.826480 C 37.102425,17.826480 36.763515,17.961300 36.395375,18.038500 C 35.656915,16.270380 33.810365,14.999520 31.626355,14.999520 z "
+ style="opacity:1.0000000;fill:url(#radialGradient13211);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000004;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" />
+ <g
+ transform="translate(-230.0203,248.9834)"
+ id="g12891">
+ <path
+ style="fill:#888a85;fill-opacity:1.0000000;stroke:#555753;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z "
+ id="path12893"
+ sodipodi:nodetypes="ccsscsssscsscc" />
+ <path
+ style="opacity:1.0000000;fill:url(#linearGradient13145);fill-opacity:1.0000000;stroke:none;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z "
+ id="path12895"
+ sodipodi:nodetypes="ccsscsssscsscc" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12897"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47777775;fill:url(#linearGradient13147);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12899"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" />
+ <rect
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="rect12901"
+ width="20.000000"
+ height="9.0000000"
+ x="236.99994"
+ y="-230.99992" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12903"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12905"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47777775;fill:url(#linearGradient13149);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12907"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12909"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47777775;fill:url(#linearGradient13151);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12911"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" />
+ <path
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z "
+ id="path12913" />
+ <path
+ style="opacity:0.47777775;fill:url(#linearGradient13153);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z "
+ id="path12915" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47777775;fill:url(#linearGradient13155);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12917"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)" />
+ <path
+ style="fill:#555753;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+ d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z "
+ id="path12919"
+ sodipodi:nodetypes="ccss" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1.0000000;fill:#888a85;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12921"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47777775;fill:url(#linearGradient13157);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="path12923"
+ sodipodi:cx="288.37500"
+ sodipodi:cy="-437.59375"
+ sodipodi:rx="3.3125000"
+ sodipodi:ry="3.3125000"
+ d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z"
+ transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" />
+ </g>
+ <path
+ sodipodi:nodetypes="ccsscsscscsscc"
+ id="path11418"
+ d="M 16.188855,11.000000 C 14.188755,11.000000 12.503275,12.079500 11.658285,13.614940 C 11.063375,13.393030 10.413645,13.261570 9.7323346,13.261570 C 6.9021246,13.261570 4.6148046,15.379740 4.6148046,17.979070 C 4.6148046,18.432820 4.7593346,18.835900 4.8899446,19.251200 C 3.5076246,20.116470 2.5421146,21.504770 2.5421146,23.155930 C 2.5421146,25.808760 3.1937346,28.149280 7.7696946,27.961780 C 7.8148146,27.959930 25.221175,28.058760 25.470105,27.943750 C 28.555315,28.169700 29.542115,25.498020 29.542115,23.244290 C 29.542115,21.543780 28.705175,20.194440 27.232845,19.366700 C 27.280805,19.108140 27.194285,18.815510 27.194285,18.544450 C 27.194285,15.945130 24.888635,13.826960 22.058415,13.826960 C 21.664925,13.826960 21.326015,13.961780 20.957875,14.038980 C 20.219415,12.270860 18.372865,11.000000 16.188855,11.000000 z "
+ style="opacity:1.0000000;fill:url(#radialGradient13068);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000004;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" />
+ <g
+ transform="translate(-212.91035,271.43)"
+ id="g12227">
+ <path
+ style="fill:#729fcf;fill-opacity:1;stroke:#204a87;stroke-width:1.07456863;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z"
+ id="path12229"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="opacity:0.46111109;fill:url(#radialGradient23739);fill-opacity:1;stroke:none;stroke-width:1.07457018;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z"
+ id="path12231"
+ sodipodi:nodetypes="csscc" />
+ <path
+ style="opacity:1;fill:url(#linearGradient23741);fill-opacity:1;stroke:none;stroke-width:1.07457018;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z"
+ id="path12233"
+ sodipodi:nodetypes="ccc" />
+ </g>
+ <g
+ transform="translate(-193.78094,269.3383)"
+ id="g12239">
+ <path
+ style="fill:#729fcf;fill-opacity:1;stroke:#204a87;stroke-width:1.07456863;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z"
+ id="path12241"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="opacity:0.46111109;fill:url(#radialGradient23743);fill-opacity:1;stroke:none;stroke-width:1.07457018;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z"
+ id="path12243"
+ sodipodi:nodetypes="csscc" />
+ <path
+ style="opacity:1;fill:url(#linearGradient23745);fill-opacity:1;stroke:none;stroke-width:1.07457018;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z"
+ id="path12245"
+ sodipodi:nodetypes="ccc" />
+ </g>
+ <g
+ transform="translate(-225.96722,264.58414)"
+ id="g12186">
+ <path
+ style="fill:#729fcf;fill-opacity:1;stroke:#204a87;stroke-width:1.07456863;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z"
+ id="path6059"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="opacity:0.46111109;fill:url(#radialGradient23747);fill-opacity:1;stroke:none;stroke-width:1.07457018;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z"
+ id="path6061"
+ sodipodi:nodetypes="csscc" />
+ <path
+ style="opacity:1;fill:url(#linearGradient23749);fill-opacity:1;stroke:none;stroke-width:1.07457018;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z"
+ id="path6063"
+ sodipodi:nodetypes="ccc" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/weatherinfo.cpp b/demos/embedded/weatherinfo/weatherinfo.cpp
new file mode 100644
index 0000000..0762644
--- /dev/null
+++ b/demos/embedded/weatherinfo/weatherinfo.cpp
@@ -0,0 +1,511 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore>
+#include <QtGui>
+#include <QtNetwork>
+#include <QtSvg>
+
+#if defined (Q_OS_SYMBIAN)
+#include "sym_iap_util.h"
+#endif
+
+class WeatherInfo: public QMainWindow
+{
+ Q_OBJECT
+
+private:
+
+ QGraphicsView *m_view;
+ QGraphicsScene m_scene;
+ QString city;
+ QGraphicsRectItem *m_statusItem;
+ QGraphicsTextItem *m_temperatureItem;
+ QGraphicsTextItem *m_conditionItem;
+ QGraphicsSvgItem *m_iconItem;
+ QList<QGraphicsRectItem*> m_forecastItems;
+ QList<QGraphicsTextItem*> m_dayItems;
+ QList<QGraphicsSvgItem*> m_conditionItems;
+ QList<QGraphicsTextItem*> m_rangeItems;
+ QTimeLine m_timeLine;
+ QHash<QString, QString> m_icons;
+
+public:
+ WeatherInfo(QWidget *parent = 0): QMainWindow(parent) {
+
+ m_view = new QGraphicsView(this);
+ setCentralWidget(m_view);
+
+ setupScene();
+ m_view->setScene(&m_scene);
+ m_view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+ m_view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+
+ m_view->setFrameShape(QFrame::NoFrame);
+ setWindowTitle("Weather Info");
+
+ QStringList cities;
+ cities << "Oslo";
+ cities << "Berlin";
+ cities << "Brisbane";
+ cities << "Helsinki";
+ cities << "San Diego";
+ for (int i = 0; i < cities.count(); ++i) {
+ QAction *action = new QAction(cities[i], this);
+ connect(action, SIGNAL(triggered()), SLOT(chooseCity()));
+ addAction(action);
+#if defined(Q_OS_SYMBIAN)
+ menuBar()->addAction(action);
+#endif
+ }
+ setContextMenuPolicy(Qt::ActionsContextMenu);
+
+ QTimer::singleShot(0, this, SLOT(delayedInit()));
+ }
+
+private slots:
+ void delayedInit() {
+#if defined(Q_OS_SYMBIAN)
+ qt_SetDefaultIap();
+#else
+ request("Oslo");
+#endif
+ }
+
+private slots:
+
+ void chooseCity() {
+ QAction *action = qobject_cast<QAction*>(sender());
+ if (action)
+ request(action->text());
+ }
+
+ void handleNetworkData(QNetworkReply *networkReply) {
+ QUrl url = networkReply->url();
+ if (!networkReply->error())
+ digest(QString::fromUtf8(networkReply->readAll()));
+ networkReply->deleteLater();
+ networkReply->manager()->deleteLater();
+ }
+
+ void animate(int frame) {
+ qreal progress = static_cast<qreal>(frame) / 100;
+#if QT_VERSION >= 0x040500
+ m_iconItem->setOpacity(progress);
+#endif
+ qreal hw = width() / 2.0;
+ m_statusItem->setPos(-hw + hw * progress, 0);
+ for (int i = 0; i < m_forecastItems.count(); ++i) {
+ qreal ofs = i * 0.5 / m_forecastItems.count();
+ qreal alpha = qBound(qreal(0), 2 * (progress - ofs), qreal(1));
+#if QT_VERSION >= 0x040500
+ m_conditionItems[i]->setOpacity(alpha);
+#endif
+ QPointF pos = m_forecastItems[i]->pos();
+ if (width() > height()) {
+ qreal fx = width() - width() * 0.4 * alpha;
+ m_forecastItems[i]->setPos(fx, pos.y());
+ } else {
+ qreal fx = height() - height() * 0.5 * alpha;
+ m_forecastItems[i]->setPos(pos.x(), fx);
+ }
+ }
+ }
+
+private:
+
+ void setupScene() {
+
+ QColor textColor = palette().color(QPalette::WindowText);
+ QFont textFont = font();
+ textFont.setBold(true);
+ textFont.setPointSize(textFont.pointSize() * 2);
+
+ m_temperatureItem = m_scene.addText(QString(), textFont);
+ m_temperatureItem->setDefaultTextColor(textColor);
+
+ m_conditionItem = m_scene.addText(QString(), textFont);
+ m_conditionItem->setDefaultTextColor(textColor);
+
+ m_iconItem = new QGraphicsSvgItem;
+ m_scene.addItem(m_iconItem);
+
+ m_statusItem = m_scene.addRect(0, 0, 10, 10);
+ m_statusItem->setPen(Qt::NoPen);
+ m_statusItem->setBrush(Qt::NoBrush);
+ m_temperatureItem->setParentItem(m_statusItem);
+ m_conditionItem->setParentItem(m_statusItem);
+ m_iconItem->setParentItem(m_statusItem);
+
+ connect(&m_timeLine, SIGNAL(frameChanged(int)), SLOT(animate(int)));
+ m_timeLine.setDuration(1100);
+ m_timeLine.setFrameRange(0, 100);
+ m_timeLine.setCurveShape(QTimeLine::EaseInCurve);
+ }
+
+ void request(const QString &location) {
+ QUrl url("http://www.google.com/ig/api");
+ url.addEncodedQueryItem("hl", "en");
+ url.addEncodedQueryItem("weather", QUrl::toPercentEncoding(location));
+
+ QNetworkAccessManager *manager = new QNetworkAccessManager(this);
+ connect(manager, SIGNAL(finished(QNetworkReply*)),
+ this, SLOT(handleNetworkData(QNetworkReply*)));
+ manager->get(QNetworkRequest(url));
+
+ city = QString();
+ setWindowTitle("Loading...");
+ }
+
+ QString extractIcon(const QString &data) {
+ if (m_icons.isEmpty()) {
+ m_icons["mostly_cloudy"] = "weather-few-clouds";
+ m_icons["cloudy"] = "weather-overcast";
+ m_icons["mostly_sunny"] = "weather-sunny-very-few-clouds";
+ m_icons["partly_cloudy"] = "weather-sunny-very-few-clouds";
+ m_icons["sunny"] = "weather-sunny";
+ m_icons["flurries"] = "weather-snow";
+ m_icons["fog"] = "weather-fog";
+ m_icons["haze"] = "weather-haze";
+ m_icons["icy"] = "weather-icy";
+ m_icons["sleet"] = "weather-sleet";
+ m_icons["chance_of_sleet"] = "weather-sleet";
+ m_icons["snow"] = "weather-snow";
+ m_icons["chance_of_snow"] = "weather-snow";
+ m_icons["mist"] = "weather-showers";
+ m_icons["rain"] = "weather-showers";
+ m_icons["chance_of_rain"] = "weather-showers";
+ m_icons["storm"] = "weather-storm";
+ m_icons["chance_of_storm"] = "weather-storm";
+ m_icons["thunderstorm"] = "weather-thundershower";
+ m_icons["chance_of_tstorm"] = "weather-thundershower";
+ }
+ QRegExp regex("([\\w]+).gif$");
+ if (regex.indexIn(data) != -1) {
+ QString i = regex.cap();
+ i = i.left(i.length() - 4);
+ QString name = m_icons.value(i);
+ if (!name.isEmpty()) {
+ name.prepend(":/icons/");
+ name.append(".svg");
+ return name;
+ }
+ }
+ return QString();
+ }
+
+ static QString toCelcius(QString t, QString unit) {
+ bool ok = false;
+ int degree = t.toInt(&ok);
+ if (!ok)
+ return QString();
+ if (unit != "SI")
+ degree = ((degree - 32) * 5 + 8)/ 9;
+ return QString::number(degree) + QChar(176);
+ }
+
+
+#define GET_DATA_ATTR xml.attributes().value("data").toString()
+
+ void digest(const QString &data) {
+
+ QColor textColor = palette().color(QPalette::WindowText);
+ QString unitSystem;
+
+ delete m_iconItem;
+ m_iconItem = new QGraphicsSvgItem();
+ m_scene.addItem(m_iconItem);
+ m_iconItem->setParentItem(m_statusItem);
+ qDeleteAll(m_dayItems);
+ qDeleteAll(m_conditionItems);
+ qDeleteAll(m_rangeItems);
+ qDeleteAll(m_forecastItems);
+ m_dayItems.clear();
+ m_conditionItems.clear();
+ m_rangeItems.clear();
+ m_forecastItems.clear();
+
+ QXmlStreamReader xml(data);
+ while (!xml.atEnd()) {
+ xml.readNext();
+ if (xml.tokenType() == QXmlStreamReader::StartElement) {
+ if (xml.name() == "city") {
+ city = GET_DATA_ATTR;
+ setWindowTitle(city);
+ }
+ if (xml.name() == "unit_system")
+ unitSystem = xml.attributes().value("data").toString();
+ // Parse current weather conditions
+ if (xml.name() == "current_conditions") {
+ while (!xml.atEnd()) {
+ xml.readNext();
+ if (xml.name() == "current_conditions")
+ break;
+ if (xml.tokenType() == QXmlStreamReader::StartElement) {
+ if (xml.name() == "condition") {
+ m_conditionItem->setPlainText(GET_DATA_ATTR);
+ }
+ if (xml.name() == "icon") {
+ QString name = extractIcon(GET_DATA_ATTR);
+ if (!name.isEmpty()) {
+ delete m_iconItem;
+ m_iconItem = new QGraphicsSvgItem(name);
+ m_scene.addItem(m_iconItem);
+ m_iconItem->setParentItem(m_statusItem);
+ }
+ }
+ if (xml.name() == "temp_c") {
+ QString s = GET_DATA_ATTR + QChar(176);
+ m_temperatureItem->setPlainText(s);
+ }
+ }
+ }
+ }
+ // Parse and collect the forecast conditions
+ if (xml.name() == "forecast_conditions") {
+ QGraphicsTextItem *dayItem = 0;
+ QGraphicsSvgItem *statusItem = 0;
+ QString lowT, highT;
+ while (!xml.atEnd()) {
+ xml.readNext();
+ if (xml.name() == "forecast_conditions") {
+ if (dayItem && statusItem &&
+ !lowT.isEmpty() && !highT.isEmpty()) {
+ m_dayItems << dayItem;
+ m_conditionItems << statusItem;
+ QString txt = highT + '/' + lowT;
+ QGraphicsTextItem* rangeItem;
+ rangeItem = m_scene.addText(txt);
+ rangeItem->setDefaultTextColor(textColor);
+ m_rangeItems << rangeItem;
+ QGraphicsRectItem *box;
+ box = m_scene.addRect(0, 0, 10, 10);
+ box->setPen(Qt::NoPen);
+ box->setBrush(Qt::NoBrush);
+ m_forecastItems << box;
+ dayItem->setParentItem(box);
+ statusItem->setParentItem(box);
+ rangeItem->setParentItem(box);
+ } else {
+ delete dayItem;
+ delete statusItem;
+ }
+ break;
+ }
+ if (xml.tokenType() == QXmlStreamReader::StartElement) {
+ if (xml.name() == "day_of_week") {
+ QString s = GET_DATA_ATTR;
+ dayItem = m_scene.addText(s.left(3));
+ dayItem->setDefaultTextColor(textColor);
+ }
+ if (xml.name() == "icon") {
+ QString name = extractIcon(GET_DATA_ATTR);
+ if (!name.isEmpty()) {
+ statusItem = new QGraphicsSvgItem(name);
+ m_scene.addItem(statusItem);
+ }
+ }
+ if (xml.name() == "low")
+ lowT = toCelcius(GET_DATA_ATTR, unitSystem);
+ if (xml.name() == "high")
+ highT = toCelcius(GET_DATA_ATTR, unitSystem);
+ }
+ }
+ }
+
+ }
+ }
+
+ m_timeLine.stop();
+ layoutItems();
+ animate(0);
+ m_timeLine.start();
+ }
+
+ void layoutItems() {
+ m_scene.setSceneRect(0, 0, width() - 1, height() - 1);
+ m_view->centerOn(width() / 2, height() / 2);
+ if (width() > height())
+ layoutItemsLandscape();
+ else
+ layoutItemsPortrait();
+ }
+
+ void layoutItemsLandscape() {
+ m_statusItem->setRect(0, 0, width() / 2 - 1, height() - 1);
+
+ if (!m_iconItem->boundingRect().isEmpty()) {
+ qreal dim = qMin(width() * 0.6, height() * 0.8);
+ qreal pad = (height() - dim) / 2;
+ qreal sw = dim / m_iconItem->boundingRect().width();
+ qreal sh = dim / m_iconItem->boundingRect().height();
+ m_iconItem->setTransform(QTransform().scale(sw, sh));
+ m_iconItem->setPos(1, pad);
+ }
+
+ m_temperatureItem->setPos(2, 2);
+ qreal h = m_conditionItem->boundingRect().height();
+ m_conditionItem->setPos(10, height() - h);
+
+ if (m_dayItems.count()) {
+ qreal left = width() * 0.6;
+ qreal h = height() / m_dayItems.count();
+ QFont textFont = font();
+ textFont.setPixelSize(static_cast<int>(h * 0.3));
+ qreal statusWidth = 0;
+ qreal rangeWidth = 0;
+ for (int i = 0; i < m_dayItems.count(); ++i) {
+ m_dayItems[i]->setFont(textFont);
+ QRectF brect = m_dayItems[i]->boundingRect();
+ statusWidth = qMax(statusWidth, brect.width());
+ brect = m_rangeItems[i]->boundingRect();
+ rangeWidth = qMax(rangeWidth, brect.width());
+ }
+ qreal space = width() - left - statusWidth - rangeWidth;
+ qreal dim = qMin(h, space);
+ qreal pad = statusWidth + (space - dim) / 2;
+ for (int i = 0; i < m_dayItems.count(); ++i) {
+ qreal base = h * i;
+ m_forecastItems[i]->setPos(left, base);
+ m_forecastItems[i]->setRect(0, 0, width() - left, h);
+ QRectF brect = m_dayItems[i]->boundingRect();
+ qreal ofs = (h - brect.height()) / 2;
+ m_dayItems[i]->setPos(0, ofs);
+ brect = m_rangeItems[i]->boundingRect();
+ ofs = (h - brect.height()) / 2;
+ m_rangeItems[i]->setPos(width() - rangeWidth - left, ofs);
+ brect = m_conditionItems[i]->boundingRect();
+ ofs = (h - dim) / 2;
+ m_conditionItems[i]->setPos(pad, ofs);
+ if (brect.isEmpty())
+ continue;
+ qreal sw = dim / brect.width();
+ qreal sh = dim / brect.height();
+ m_conditionItems[i]->setTransform(QTransform().scale(sw, sh));
+ }
+ }
+ }
+
+ void layoutItemsPortrait() {
+
+ m_statusItem->setRect(0, 0, width() - 1, height() / 2 - 1);
+
+ if (!m_iconItem->boundingRect().isEmpty()) {
+ qreal dim = qMin(width() * 0.8, height() * 0.4);
+ qreal ofsy = (height() / 2 - dim) / 2;
+ qreal ofsx = (width() - dim) / 3;
+ qreal sw = dim / m_iconItem->boundingRect().width();
+ qreal sh = dim / m_iconItem->boundingRect().height();
+ m_iconItem->setTransform(QTransform().scale(sw, sh));
+ m_iconItem->setPos(ofsx, ofsy);
+ }
+
+ m_temperatureItem->setPos(2, 2);
+ qreal ch = m_conditionItem->boundingRect().height();
+ qreal cw = m_conditionItem->boundingRect().width();
+ m_conditionItem->setPos(width() - cw , height() / 2 - ch - 20);
+
+ if (m_dayItems.count()) {
+ qreal top = height() * 0.5;
+ qreal w = width() / m_dayItems.count();
+ qreal statusHeight = 0;
+ qreal rangeHeight = 0;
+ for (int i = 0; i < m_dayItems.count(); ++i) {
+ m_dayItems[i]->setFont(font());
+ QRectF brect = m_dayItems[i]->boundingRect();
+ statusHeight = qMax(statusHeight, brect.height());
+ brect = m_rangeItems[i]->boundingRect();
+ rangeHeight = qMax(rangeHeight, brect.height());
+ }
+ qreal space = height() - top - statusHeight - rangeHeight;
+ qreal dim = qMin(w, space);
+
+ qreal boxh = statusHeight + rangeHeight + dim;
+ qreal pad = (height() - top - boxh) / 2;
+
+ for (int i = 0; i < m_dayItems.count(); ++i) {
+ qreal base = w * i;
+ m_forecastItems[i]->setPos(base, top);
+ m_forecastItems[i]->setRect(0, 0, w, boxh);
+ QRectF brect = m_dayItems[i]->boundingRect();
+ qreal ofs = (w - brect.width()) / 2;
+ m_dayItems[i]->setPos(ofs, pad);
+
+ brect = m_rangeItems[i]->boundingRect();
+ ofs = (w - brect.width()) / 2;
+ m_rangeItems[i]->setPos(ofs, pad + statusHeight + dim);
+
+ brect = m_conditionItems[i]->boundingRect();
+ ofs = (w - dim) / 2;
+ m_conditionItems[i]->setPos(ofs, pad + statusHeight);
+ if (brect.isEmpty())
+ continue;
+ qreal sw = dim / brect.width();
+ qreal sh = dim / brect.height();
+ m_conditionItems[i]->setTransform(QTransform().scale(sw, sh));
+ }
+ }
+ }
+
+
+ void resizeEvent(QResizeEvent *event) {
+ Q_UNUSED(event);
+ layoutItems();
+ }
+
+};
+
+#include "weatherinfo.moc"
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+ WeatherInfo w;
+#if defined(Q_OS_SYMBIAN)
+ w.showMaximized();
+#else
+ w.resize(520, 288);
+ w.show();
+#endif
+
+ return app.exec();
+}
diff --git a/demos/embedded/weatherinfo/weatherinfo.pro b/demos/embedded/weatherinfo/weatherinfo.pro
new file mode 100644
index 0000000..a89acba
--- /dev/null
+++ b/demos/embedded/weatherinfo/weatherinfo.pro
@@ -0,0 +1,11 @@
+TEMPLATE = app
+TARGET = weatherinfo
+SOURCES = weatherinfo.cpp
+RESOURCES = weatherinfo.qrc
+QT += network svg
+
+symbian {
+ HEADERS += $$QT_SOURCE_TREE/examples/network/ftp/sym_iap_util.h
+ LIBS += -lesock -lconnmon
+ TARGET.CAPABILITY = NetworkServices
+}
diff --git a/demos/embedded/weatherinfo/weatherinfo.qrc b/demos/embedded/weatherinfo/weatherinfo.qrc
new file mode 100644
index 0000000..6e9d224
--- /dev/null
+++ b/demos/embedded/weatherinfo/weatherinfo.qrc
@@ -0,0 +1,16 @@
+<RCC>
+ <qresource prefix="/" >
+ <file>icons/weather-few-clouds.svg</file>
+ <file>icons/weather-fog.svg</file>
+ <file>icons/weather-haze.svg</file>
+ <file>icons/weather-icy.svg</file>
+ <file>icons/weather-overcast.svg</file>
+ <file>icons/weather-showers.svg</file>
+ <file>icons/weather-sleet.svg</file>
+ <file>icons/weather-snow.svg</file>
+ <file>icons/weather-storm.svg</file>
+ <file>icons/weather-sunny.svg</file>
+ <file>icons/weather-sunny-very-few-clouds.svg</file>
+ <file>icons/weather-thundershower.svg</file>
+ </qresource>
+</RCC>
diff --git a/demos/embeddeddialogs/embeddeddialogs.pro b/demos/embeddeddialogs/embeddeddialogs.pro
index a38e3e8..d3ef442 100644
--- a/demos/embeddeddialogs/embeddeddialogs.pro
+++ b/demos/embeddeddialogs/embeddeddialogs.pro
@@ -15,3 +15,5 @@ target.path = $$[QT_INSTALL_DEMOS]/embeddeddialogs
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.png *.jpg *.plist *.icns *.ico *.rc *.pro *.html *.doc images
sources.path = $$[QT_INSTALL_DEMOS]/embeddeddialogs
INSTALLS += target sources
+
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
diff --git a/demos/gradients/gradients.pro b/demos/gradients/gradients.pro
index 167572b..21cd57d 100644
--- a/demos/gradients/gradients.pro
+++ b/demos/gradients/gradients.pro
@@ -16,3 +16,5 @@ target.path = $$[QT_INSTALL_DEMOS]/gradients
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.html
sources.path = $$[QT_INSTALL_DEMOS]/gradients
INSTALLS += target sources
+
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
diff --git a/demos/interview/interview.pro b/demos/interview/interview.pro
index c013755..1e5f9b8 100644
--- a/demos/interview/interview.pro
+++ b/demos/interview/interview.pro
@@ -16,3 +16,4 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES README *.pro images
sources.path = $$[QT_INSTALL_DEMOS]/interview
INSTALLS += target sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
diff --git a/demos/mainwindow/mainwindow.pro b/demos/mainwindow/mainwindow.pro
index 9853a55..8e9bdc2 100644
--- a/demos/mainwindow/mainwindow.pro
+++ b/demos/mainwindow/mainwindow.pro
@@ -14,3 +14,4 @@ sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.png *.jpg *.pro
sources.path = $$[QT_INSTALL_DEMOS]/mainwindow
INSTALLS += target sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
diff --git a/demos/mediaplayer/mediaplayer.pro b/demos/mediaplayer/mediaplayer.pro
index c64abd9..49a652e 100644
--- a/demos/mediaplayer/mediaplayer.pro
+++ b/demos/mediaplayer/mediaplayer.pro
@@ -25,4 +25,7 @@ wince*{
DEPLOYMENT_PLUGIN += phonon_ds9 phonon_waveout
}
-
+symbian {
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+ TARGET.UID3 = 0xA000C613
+}
diff --git a/demos/pathstroke/pathstroke.pro b/demos/pathstroke/pathstroke.pro
index 50b4de2..ac50842 100644
--- a/demos/pathstroke/pathstroke.pro
+++ b/demos/pathstroke/pathstroke.pro
@@ -18,3 +18,7 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.html
sources.path = $$[QT_INSTALL_DEMOS]/pathstroke
INSTALLS += target sources
+symbian {
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+ TARGET.UID3 = 0xA000A63E
+}
diff --git a/demos/qtdemo/qtdemo.pro b/demos/qtdemo/qtdemo.pro
index 163ed17..011ea0c 100644
--- a/demos/qtdemo/qtdemo.pro
+++ b/demos/qtdemo/qtdemo.pro
@@ -6,6 +6,8 @@ DESTDIR = $$DEMO_DESTDIR/bin
OBJECTS_DIR = .obj
MOC_DIR = .moc
INSTALLS += target sources
+
+
QT += xml network
contains(QT_CONFIG, opengl) {
@@ -67,6 +69,8 @@ ICON = qtdemo.icns
QMAKE_INFO_PLIST = Info_mac.plist
}
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
# install
target.path = $$[QT_INSTALL_BINS]
sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES qtdemo.pro images xml *.ico *.icns *.rc *.plist
diff --git a/demos/shared/shared.pri b/demos/shared/shared.pri
index b551595..1541fa7 100644
--- a/demos/shared/shared.pri
+++ b/demos/shared/shared.pri
@@ -16,5 +16,6 @@ contains(CONFIG, debug_and_release_target) {
hpux-acc*:LIBS += $$SHARED_FOLDER/libdemo_shared.a
hpuxi-acc*:LIBS += $$SHARED_FOLDER/libdemo_shared.a
-!hpuxi-acc*:!hpux-acc*:LIBS += -ldemo_shared
+symbian:LIBS += -ldemo_shared.lib
+!hpuxi-acc*:!hpux-acc*:!symbian:LIBS += -ldemo_shared
diff --git a/demos/shared/shared.pro b/demos/shared/shared.pro
index cabce25..de29857 100644
--- a/demos/shared/shared.pro
+++ b/demos/shared/shared.pro
@@ -29,5 +29,10 @@ target.path = $$[QT_INSTALL_DEMOS]/shared
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.pri images
sources.path = $$[QT_INSTALL_DEMOS]/shared
INSTALLS += sources
+
!cross_compile:INSTALLS += target
+symbian {
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+ TARGET.UID3 = 0xA000A63C
+}
diff --git a/demos/spreadsheet/spreadsheet.pro b/demos/spreadsheet/spreadsheet.pro
index 6ed0016..6b38abe 100644
--- a/demos/spreadsheet/spreadsheet.pro
+++ b/demos/spreadsheet/spreadsheet.pro
@@ -31,3 +31,4 @@ sources.files = $$SOURCES $$RESOURCES *.pro images $$HEADERS
sources.path = $$[QT_INSTALL_DEMOS]/spreadsheet
INSTALLS += target sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
diff --git a/demos/sqlbrowser/sqlbrowser.pro b/demos/sqlbrowser/sqlbrowser.pro
index 920e8a0..3a8036d 100644
--- a/demos/sqlbrowser/sqlbrowser.pro
+++ b/demos/sqlbrowser/sqlbrowser.pro
@@ -18,6 +18,8 @@ sources.files = $$SOURCES $$HEADERS $$FORMS *.pro
sources.path = $$[QT_INSTALL_DEMOS]/sqlbrowser
INSTALLS += target sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
wince*: {
DEPLOYMENT_PLUGIN += qsqlite
}
diff --git a/demos/symbianpkgrules.pri b/demos/symbianpkgrules.pri
new file mode 100644
index 0000000..7e6852b
--- /dev/null
+++ b/demos/symbianpkgrules.pri
@@ -0,0 +1,13 @@
+!symbian: error(Only include this file for Symbian platforms)
+
+RSS_RULES ="group_name=\"QtDemos\";"
+
+vendorinfo = \
+ "; Localised Vendor name" \
+ "%{\"Nokia, Qt\"}" \
+ " " \
+ "; Unique Vendor name" \
+ ":\"Nokia, Qt\"" \
+ " "
+
+default_deployment.pkg_prerules += vendorinfo
diff --git a/demos/textedit/textedit.cpp b/demos/textedit/textedit.cpp
index bf57eab..bc8d44b 100644
--- a/demos/textedit/textedit.cpp
+++ b/demos/textedit/textedit.cpp
@@ -128,7 +128,9 @@ TextEdit::TextEdit(QWidget *parent)
connect(textEdit, SIGNAL(copyAvailable(bool)), actionCut, SLOT(setEnabled(bool)));
connect(textEdit, SIGNAL(copyAvailable(bool)), actionCopy, SLOT(setEnabled(bool)));
+#ifndef QT_NO_CLIPBOARD
connect(QApplication::clipboard(), SIGNAL(dataChanged()), this, SLOT(clipboardDataChanged()));
+#endif
QString initialFile = ":/example.html";
const QStringList args = QCoreApplication::arguments();
@@ -259,7 +261,9 @@ void TextEdit::setupEditActions()
a->setShortcut(QKeySequence::Paste);
tb->addAction(a);
menu->addAction(a);
+#ifndef QT_NO_CLIPBOARD
actionPaste->setEnabled(!QApplication::clipboard()->text().isEmpty());
+#endif
}
void TextEdit::setupTextActions()
@@ -676,7 +680,9 @@ void TextEdit::cursorPositionChanged()
void TextEdit::clipboardDataChanged()
{
+#ifndef QT_NO_CLIPBOARD
actionPaste->setEnabled(!QApplication::clipboard()->text().isEmpty());
+#endif
}
void TextEdit::about()
diff --git a/demos/textedit/textedit.pro b/demos/textedit/textedit.pro
index 1ef4256..9669ec8 100644
--- a/demos/textedit/textedit.pro
+++ b/demos/textedit/textedit.pro
@@ -19,3 +19,4 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.html *.doc images
sources.path = $$[QT_INSTALL_DEMOS]/textedit
INSTALLS += target sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
diff --git a/demos/undo/undo.pro b/demos/undo/undo.pro
index e26d07c..0667bdd 100644
--- a/demos/undo/undo.pro
+++ b/demos/undo/undo.pro
@@ -15,3 +15,4 @@ sources.files = $$SOURCES $$HEADERS *.pro icons $$RESOURCES $$FORMS
sources.path = $$[QT_INSTALL_DEMOS]/undo
INSTALLS += target sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
diff --git a/dist/changes-4.4.4-temple b/dist/changes-4.4.4-temple
new file mode 100644
index 0000000..25f1f0b
--- /dev/null
+++ b/dist/changes-4.4.4-temple
@@ -0,0 +1,65 @@
+Qt for S60 4.4.4 Temple introduces new ported modules and few other improvements.
+It guarantees no source or binary compatibility between any other versions.
+
+Some of the changes listed in this file include internal issue tracking
+numbers.
+
+This file only lists changes specific to Qt for S60.
+
+
+****************************************************************************
+* Platform Specific Changes *
+****************************************************************************
+
+Qt for S60
+----------
+ * Changes to qmake:
+ * [228860] Fixed bld.inf and .mmp generation when not under Qt src tree,
+ i.e. when the makespec is default.
+ * [231121] Added no_icon CONFIG keyword to suppress showing application
+ icon in the application menu.
+ * [233497] EPOCROOT is no longer required as environment variable as long
+ as a Symbian device can be determined.
+ * [234551] Generated .pkg files no longer include Qt libraries directly,
+ instead they have a dependency to a separate QtLibs package.
+ * [234555] Added support for generic mmp file content in form of
+ MMP_RULES variable. Also, EXPORTUNFROZEN is now defined using this
+ variable instead of being hardcoded.
+ * [234557] Improved user ability to control include order via INCLUDEPATH
+ variable.
+ * [234557] Support for STDDLL, STDEXE and STDLIB Open C target types via
+ stdbinary CONFIG keyword.
+ * [235975] The -r switch is no longer required with qmake to recurse
+ subdirs template.
+ * Fixed: Resources with similar basenames corrupted makefile.
+
+ * [230751] Improved Elastic Nodes application stability.
+ * [230752] Mouse drag events work now.
+ * [234558] Ported QSharedMemory.
+ * [234559] Ported QSystemSemaphore.
+ * [234560] Ported all of QtXml.
+ * [234561] Ported all of QtScript.
+ * [234562] Ported all of QtSvg.
+ * [234869] QFileDialog no longer uses desktop layout in Qt for S60.
+ * QtNetwork now supports SSL.
+ * If current path returned by Open C doesn't exist when queried, it is
+ created.
+ * All supported libs and plugins built under src dir now have proper UIDs.
+ * Fixed GCCE build breaking on atomics.
+ * Improved fonts support:
+ * Anti aliasing
+ * Italic/bold
+ * Higher text layout precision
+ * QPixmapCache size limited to 2MB.
+ * Createpackage script looks for RnD certs in Qt installation root instead
+ of EPOCROOT.
+ * Iconengines plugins included in the default build.
+ * More examples and demos added in the default build to showcase newly
+ ported modules.
+ * QFileSystemWatcher thread stack size increased to avoid crashing when
+ entering directories that need AllFiles capability.
+ * Createpackage will now support signing with custom certificates in
+ addition to default ones.
+ * A perl script patch_capabilities.pl is provided for changing capabilities
+ of all binaries specified in a single .pkg file.
+ \ No newline at end of file
diff --git a/dist/changes-4.5.0-garden b/dist/changes-4.5.0-garden
new file mode 100644
index 0000000..ce258e7
--- /dev/null
+++ b/dist/changes-4.5.0-garden
@@ -0,0 +1,241 @@
+Qt 4.5.0-garden
+---------------
+
+The Qt for S60 "Garden" release is the fourth pre-release from the
+Qt for S60 porting project. "Garden" is based on the Qt 4.5 codebase
+and release focus has been on proper GUI integration.
+
+Up to and including change: b7621555cb1d1c97967dd40d63dd7e85a418407c
+
+Lists just S60 fixes, for general 4.5.0 changes go to:
+
+ http://qt.nokia.com/developer/changes/changes-4.5.0
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Task Tracker:
+
+ http://qt.nokia.com/developer/task-tracker
+
+Each of these identifiers can be entered in the task tracker to obtain
+more information about a particular change. Sometimes the task is internal
+and cannot be viewed by the public, a lot of them are non-public for Qt for
+S60 at the moment.
+
+****************************************************************************
+* New features *
+****************************************************************************
+
+New modules
+-----------
+
+- qtmain
+ * Added a small static library called qtmain which is linked in
+ automatically for Qt applications on S60. qtmain includes an
+ implementation of E32Main() that sets up Qt correctly for S60. This
+ means that Qt no longer links to libcrt0.lib but uses qtmain instead.
+ However, if you are not linking against QtGui, you'll still have to
+ link to libcrt0.
+
+New classes
+------------
+
+- QS60Style
+ * Native look for Qt applications on S60 3.1 and later versions. The
+ style picks up the current theme parts, palettes and font settings
+ through the skinserver and uses these when painting in Qt.
+ The layout data for different resolutions is considered.
+
+Ported classes
+--------------
+
+- QDesktopServices
+ * Provides methods for accessing common desktop services: Opening the
+ browser with an url, launching documents with the standard application
+ and getting default system directories.
+
+- QClipboard
+ * Provides access to the window system clipboard.
+
+- QSysInfo
+ * QSysInfo class provides information about the system.
+
+Features
+--------
+
+- Input methods
+ * QInputMethodEvent will now be generated by Qt.
+ To use it, widgets must set the attribute WA_InputMethodEnabled and
+ implement QWidget::inputMethodQuery(...).
+ * Qt will use the underlaying FEP framework from S60.
+ * Multitap and T9 supported.
+ * Virtual keyboard for touch phones is supported.
+ * Most of the Qt widgets already have support for input methods.
+
+- Drag-n-Drop
+ * At the moment works only within same Qt process.
+
+- STL support for QtS60
+ * use -stl switch when configuring Qt.
+
+Optimizations
+-------------
+
+
+****************************************************************************
+* Build issues *
+****************************************************************************
+
+- Fixed compilation on private S60 platforms by adding neccessary include paths.
+- Fix compiler error if --gnu flag is given to RVCT.
+
+
+****************************************************************************
+* Changes to existing classes *
+****************************************************************************
+
+- qapplication_s60.cpp (non-public)
+ * Simplified by introduction of qtmain.
+ * added CCoeControl to be the native representation of QWidget.
+ * Use window group from CEikonEnv instead of creating our own.
+ * No need to create/destroy RWsSession, this is now done by the Avkon
+ application.
+ * Handle pointer events from QSymbianControl.
+ * Stopped using QETWidget for translation, now handled by
+ QSymbianControl.
+ * MouseButtonDblClick mapped to EModifierDoubleClick (after dblclick
+ Symbian will send mouseButtonRelease.
+
+- QApplication
+ * Implemented setDoubleClickInterval(...).
+ * Improved widgetAt().
+ * Added support for resizing widget's when the screen orientation
+ changes from portrait to landscape. For fullscreen and maximized
+ widgets this will ensure that they look correct in the new screen
+ layout.
+
+- qwindowsurface_s60.cpp (non-public)
+ * Stopped creating our own CWindowGc based on the RWindow and get
+ SystemGc from the CCoeControl we are currently painting on instead.
+
+- qeventdispatcher_s60.cpp
+ * Stopped using Active Objects to recieve events, we get them from
+ C*AppUi and CCoeControl instead.
+
+- QWidget
+ * Proper implementation for QDesktopWidget::availableGeometry.
+ * Improved raising and lowering widgets.
+ * Implemented setWindowTitle(...).
+ * Implemented QWidget::setWindowIcon(...) and made it to react to
+ different statuspane layouts.
+ * Improved focus handling (improved setFocus_sys).
+ * Fixed native window scrolling. Only use accelerated scroll if we are
+ scrolling a window owning widget.
+ * Improved setWindowState(...).
+ * Added implementation for createDefaultWindowSurface_sys().
+ * Added implementation for setMask_sys().
+ * Not creating a backing store for the top level widget (saves memory).
+ * winId() now returns a CCoeControl instead of RWindow.
+
+- QMenuBar
+ * Added support for using native S60 menues.
+ * Supported infinite level of menues inside menues.
+ * Supported checkboxes next to menu items).
+
+- QtCore and QtGui
+ * link to CONE and Uikon libraries and stop linking to glib and gthread.
+ * Renamed qt_deployment.pro to qt_libs.pro as it is more consistent.
+
+- Event loop / Event dispatcher
+ * We now integrate with the native loop, allowing CActiveScheduler and
+ QEventLoop to be used interchangably.
+ * Enabled posted events to work from the Symbian active scheduler too.
+ * Enable use of QEventLoop::ExcludeSocketEvents on Symbian.
+ * Improved handling of zero timers.
+
+- QColumnView
+ * Fixed a typo in one instance of QT_NO_QCOLUMNVIEW.
+
+- font rendering
+ * Speed increase
+ * Correctly render RTL text
+ * Proper shaping of complex writing systems
+ * Automatic font linking (aka merging) of different writing systems
+ * Rudimentary fallback glyph outline support
+ * Defaults to Symbians native (usually iType based) font rendering.
+ Alternatively, supports FreeType. Configure with -qt-freetype.
+
+- qcore_symbian_p.h (non-public)
+ * Added helper functions to convert QRect <-> TRect.
+ * Renamed qstringToTPtrC to qt_QString2TPtrC.
+ * Added helper function qt_TDisplayMode2Format.
+ * Added helper function to convert QSize <-> TSize.
+ * Added helper function to convert QString ->HBufC.
+ * Added helper function to convert TDesC -> QString.
+
+- QGraphicsSystem
+ * QRasterPixmapData(...) is specified as default pixmap data for S60.
+
+- QPixmap
+ * Improved grabWindow(...) when it comes to selecting client rect.
+
+- QDirModel
+ * Returns root dir name similary as done in Windows
+
+- QFSFileEngine
+ * copy(...) now uses Symbian native copy implementation which is more efficient
+ and doesn't leave temp files behind
+
+- QLocale
+ * Now has Symbian system locale support.
+
+****************************************************************************
+* Examples and demos *
+****************************************************************************
+
+****************************************************************************
+* Tools *
+****************************************************************************
+
+- qmake
+ * Support for QMAKE_EXTRA_TARGETS and QMAKE_EXTRA_COMPILERS variables.
+ * Support BLD_INF_RULES variable. Adds entries to generated bld.inf file
+ * Added 'make' targets '<build>-<platform>' 'distclean' and 'run'
+ * New platform_paths.prf and data_caging_paths.prf contain several
+ variables and replacement functions for including known paths.
+ * The .pro file qt_libs.pro was moved to src/s60installs.
+ * Support for ICON variable for setting application icon.
+ * Support for RSS_RULES variable, which enables entries to be added to
+ generated application registration files.
+ * When bulding qmake and other bootstrapped tools we now use
+ "-warnings on" instead of "-warnings all".
+ * Improved error message if calls to $$system() fails.
+ * Fixed several issues when qmake is built for platform win32-mwc.
+ * Moved mocing step to the build step so it is not longer required to
+ do "abld build" or "abld makefile" to remoc.
+ * Improved "make clean".
+ * Increased max heap to 8Mb.
+ * Enabled __CC_ARM flag used by some versions of RVCT.
+ * Removed hard coded INCLUDEPATH from qmake - developer can control
+ the whole include path hierachy.
+ * Symbian export mechanism is no longer used for emulator deployment,
+ instead copy commands are generated to wrapper makefile and
+ executed during final phase of building, after post link.
+ * Removed -O1 flag from WINSCW builds.
+ * Added qmake function (size) to ask number of items in QStringList.
+ * Qt demos are now installed to QtDemos folder in S60 emulator.
+ * Qt examples are now installed to QtExamples folder in S60 emulator/HW.
+ * Plugin stubs suffix changed to ".qtplugin".
+ * Paths containing $${EPOCROOT}/epoc32 will now properly generate
+ absolute paths in mmps.
+
+
+-configure
+ * Defaults for FREETYPE and SCRIPTTOOLS set to "no".
+
+****************************************************************************
+* Plugins *
+****************************************************************************
+
+****************************************************************************
+* Important Behavior Changes *
+****************************************************************************
diff --git a/dist/changes-4.5.2-tower b/dist/changes-4.5.2-tower
new file mode 100644
index 0000000..8252c29
--- /dev/null
+++ b/dist/changes-4.5.2-tower
@@ -0,0 +1,436 @@
+Qt 4.5.2-tower
+---------------
+
+The Qt for S60 "Tower" release is the fifth pre-release from the Qt for
+S60 porting project. "Tower" is based on the Qt 4.5 codebase (mostly Qt 4.5.2).
+
+This list of changes lists S60 specific fixes only,
+for general 4.5.x changes go to:
+
+ http://qt.nokia.com/developer/changes/changes-4.5.0
+ http://qt.nokia.com/developer/changes/changes-4.5.1
+ http://qt.nokia.com/developer/changes/changes-4.5.2 (partially in Tower)
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Task Tracker:
+
+ http://qt.nokia.com/developer/task-tracker
+
+Each of these identifiers can be entered in the task tracker to obtain
+more information about a particular change. Sometimes the task is internal
+and cannot be viewed by the public, a lot of them are non-public for Qt for
+S60 at the moment.
+
+****************************************************************************
+* New features *
+****************************************************************************
+
+New modules
+-----------
+
+- Input methods
+ * Added events to support opening and closing the virtual keyboard, called
+ software input panel in Qt.
+ * Added an option to QApplication to choose between single or double click
+ input panel activation.
+ * Added input method hints API to Qt. These can be used to instruct input methods
+ to only allow certain characters or tailor their appearance.
+ * Added Qt::ImAnchorPosition to support querying for selections through input
+ methods.
+ * Added QInputMethodEvent::Selection to support setting the selection through
+ input methods.
+
+- Phonon
+ * The Phonon library is now part of Qt, but it comes without a backend.
+ This means that applications can build and run against the Phonon
+ library, but there is currently no S60 backend plugin providing actual
+ multimedia playback. Possible alternatives such as Helix and MMF are
+ being investigated.
+
+- QtSql
+ * Implemented QtSql module with sqlite3 backend. For now backend is
+ provided only in binary format.
+
+- QtWebkit
+ * Experimental webkit build for S60. Can be enabled by passing -webkit
+ to configure.
+
+New classes
+------------
+
+- QScopedPointer
+ * Smart pointer, which deletes pointer when destroyed.
+
+Ported classes
+--------------
+
+- QColormap
+ * Added basic implementation of QColormap for Symbian.
+
+- QLocalSocket and QLocalServer
+ * Added support for QLocalSocket and QLocalServer on Symbian.
+
+- QSound
+ * Implemented CMdaAudioPlayerUtility based Symbian backend for QSound.
+
+Features
+--------
+
+- QApplication
+ * Implemented QApplication::beep() for Symbian.
+
+- QPixmap
+ * Added supported for converting to/from CFbsBitmap
+
+- QSslSocket
+ * Added support for -openssl option i.e. runtime resolving of OpenSSL
+ symbols.
+
+- QWidget
+ * Basic widgets are now navigatable and usable via keypad on SDK 3
+ FP 1 and FP 2.
+ * Widgets can now be made semi-transparent on systems that support it
+ using Qt::WA_TranslucentBackground.
+
+- Exception safety
+ * Improving the exception safety of Qt, not yet complete.
+ * Added support for translating between Symbian leaves and standard C++
+ exceptions.
+
+Optimizations
+-------------
+
+- qdrawhelper
+ * Optimized drawing operations for RVCT builds, particulary for ARMV6.
+
+- QFont
+ * Use cached DPI for metrics.
+
+- qwidget_s60.cpp
+ * Avoid unnecessary calls to FocusChanged in Symbian.
+
+- qwindowsurface_s60.cpp
+ * Avoid updating raster buffer pointer on window hide
+
+Documentation
+-------------
+
+- exceptionsafety.qdoc
+ * A guide to exception safety in Qt.
+
+- symbian-exceptionsafety.qdoc
+ * A guide to integrating exception safety in Qt with Symbian.
+
+****************************************************************************
+* Code clean-up *
+****************************************************************************
+
+- Cleanup qeventdispatcher_unix.cpp
+ * 247268: All qeventdispatcher_unix.cpp changes were reverted since
+ this file is not anymore used in Symbian OS branch.
+
+- Cleanup QtNetwork workarounds implemented earlier due to Open C bugs.
+ * 247287: Removed getaddrinfo workaround.
+ * 247288: Removed waitForConnected workaround.
+ * 247289: Removed qt_socket_accept workaround.
+ * 247290: Removed qt_socket_connect workaround.
+ * 247290: Removed E32IONREAD workaround.
+ * 247293: Removed nativeHasPendingDatagrams workaround.
+ * 247295: Removed QNativeSocketEnginePrivate::nativeRead EPIPE
+ workaround.
+
+- Other code clean-ups
+ * 247278: Removed unnecessary includes from qbackingstore.cpp.
+ * Fixed Q_OS_SYMBIAN ifdef usage in qfiledialog_p.h.
+ * 247272: Removed qtestnetworkservers.h dependency, used
+ network-settings.h.
+ * Revert "Work around compiler bug on Nokia Metrowerks compiler."
+ * Remove UI highlights being inverted colors based on highlight text
+ colors.
+
+****************************************************************************
+* Build issues *
+****************************************************************************
+
+- Macros
+ * QT_NO_DEBUG now properly defined in release mode.
+
+- QTest
+ * Fixed testlib export macros for RVCT builds.
+
+- Namespaces
+ * Now builds when -qtnamespace option is defined.
+
+****************************************************************************
+* Changes to existing classes *
+****************************************************************************
+
+- QApplication
+ * 252798: Fixed layout when orientation changed via
+ AknAppUi::SetOrientationL.
+ * Generating MouseEvents has gone through several changes.
+ * qt_init() has been changed: auto flush is always enabled for
+ window server sessions on 3.1 SDK for both UDEB and UREL.
+ * Added support for '-graphics-system' command line option
+
+- QCoeFepInputContext (non-public)
+ * Fixes FEP crash when changing the focused Qt widget to NULL.
+ * Fixed a bug where the virtual keyboard could not be opened if there
+ was only one input widget.
+ * Fixed a crash in FEP when exiting application.
+
+- QDebug
+ * Fixed debug printing (incl. qWarning, qFatal) for strings longer
+ than 256 characters.
+ * introduce a breakpoint to get the emulator to stop in the debugger
+ when qFatal is called
+
+- QDesktopServices
+ * Fixed forwardslash/backslash usage as an path separator.
+ * Switched QDesktopServices mail-to URL handling to RSendAs in Symbian,
+ due to the fact that CSendUi requires extensive capabilities to work
+ correctly. Currently e-mail sending with qdesktopservices::openUrl
+ works in Symbian only if e-mail account already exists.
+
+- QDesktopWidget
+ * 253930: Implement proper resize behavior and emit necessary signals.
+
+- QEventDispatcherSymbian (non-public)
+ * Lowered the timeout for reprioritizing the process to 100ms.
+ * Fixed ASSERT panic in Symbian event dispatcher.
+ * 246600: Fix problem in eventdispatcher destructor / AO canceling.
+ * Fixed active scheduler removal when calling QThread::terminate.
+ * Fix to Open C bug: select sometimes returns -1 and errno is
+ ECONNREFUSED.
+ * Fix a crash when using QEventLoop::ExcludeSocketNotifiers flag.
+ * Changed to round robin scheduling for Qt's active objects. Other
+ active objects will still be scheduled like before.
+ * Fixed crash if events are posted before QApplication construction
+
+- QFontDataBase
+ * Now, also fonts from the user's /resources/fonts directories are
+ available.
+
+- QFontEngine
+ * Fix the vertical advance of glyph metrics.
+
+- QFontMetrics
+ * Fixed the boundingRect calculation for text.
+
+- QGraphicsView
+ * Added support for virtual keyboard to the the viewport.
+
+- QGraphicsTextItem
+ * Added support for virtual keyboard.
+
+- QHostInfo
+ * Added support for host lookups with multiple ipv4 addresses.
+
+- QInputContext
+ * Added QInputContext::s60FilterEvent().
+
+- QIoDevice
+ * Fixed compilation error when QIODEVICE_DEBUG is defined.
+
+- QKeyMapper (non-public)
+ * Fixed a broken keymapping where Enter key would be mapped to Tab.
+
+- QLocale
+ * Removed workaround for missing tzname symbol, fixes QLocal timeZone
+ implementation for Symbian.
+
+- QLocalSocket
+ * Connecting to QLocalServer is always done in blocking mode.
+
+- QMenuBar
+ * Native menus are handled properly even when application has multiple
+ QMainWindows.
+ * Fixed a bug causing both native and qt menu to be created.
+ * Fix for disappearing options menu after coming back from dialog.
+
+- QNativeSocketEnginePrivate (non-public)
+ * Socket connect and listen failure is indicated in exception set.
+ (Workaround to Open C bug)
+
+- QNetworkInterface
+ * Fixed R-handle leak in Symbian version of qnetworkinterface_unix.cpp.
+ * Introduced a new qnetworkinterface_symbian.cpp, because there wasn't
+ really anything common to UNIX equivalent.
+
+- QPixmap
+ * Added fromSymbianCFbsBitmap() and toSymbianCFbsBitmap().
+
+- QPlainTextEdit
+ * Added support for virtual keyboard.
+
+- QPluginLoader
+ * QPluginLoader will look for plugin stubs from the same folder on other
+ drives if it can't find them from the indicated drive.
+
+- QS60Style
+ * Added subElementRect implementation for SE_ItemViewItemCheckIndicator.
+ * Added support for E90 layouts.
+ * Added support for QScrollArea, QTextEditor, QGroupBox, QTreeView,
+ QToolBar and QDial styling.
+ * Better support for theme and layout changes.
+ * Better support for themed palettes and themed text colors.
+ * Better support for multiselection in item views.
+ * Better theming for QTable and QPanel.
+ * Better support of highlight graphics and texts for QLists, QTreeViews,
+ QCalendarWidgets and QComboBoxes.
+ * Support polishing fonts. Fonts are no longer changed within the drawing
+ code.
+ * Draw spinbox arrowbuttons side-by-side, instead one on top of the other.
+ * Harmonize widget drawing so that widgets are of similar height.
+ * Support check states for QLists and QPushButtons.
+ * Support flat QPushButtons.
+ * Support busy indicator.
+ * Support QScrollBar pressed state.
+ * Support QPushButton disabled theme graphics.
+ * Separate theme background for QDialogs.
+ * Clarify QToolButton pressed state.
+ * Removed linedrawing of panels and groupboxes.
+ * Fix palette-polution for a style that is activated from an application
+ after S60Style has been in use.
+ * Fix for frame masks with color depth other than EGrey2.
+ * Fix for squeezed QTabBars.
+ * Fix memory leak when color skinning graphics.
+ * Show focus/Editfocus visualization for KeyPad navigation on
+ SDK 3 FP 1 and FP 2.
+ * Fix for overwriting user specified palettes.
+
+- QSelectThread (non-public)
+ * We force monitoring sockets exception status as well, and not
+ just read/write.
+ * Notification related to the particular socket signaled via exception
+ fd_set will be mapped to the appropriate read/write notification.
+
+- QTemporaryFile
+ * Fixed temporary file rename in Symbian OS.
+
+- QTest
+ * Disable keypad navigation for autotests by default
+
+- QTextEdit
+ * Added support for virtual keyboard.
+
+- QThread
+ * Fixed thread termination in Symbian OS.
+
+- QUdpSocket
+ * Updated BindFlag documentation to reflect behaviour on Symbian OS.
+ * Wrote hack for QUdpSocket::writeDatagram return value in Symbian OS.
+
+- QWidget
+ * Added API for setting softkeys.
+ * Fixed background painting. Background can now be overwritten from
+ setting the respective palette role.
+ * Add support for Qt::WA_TranslucentBackground.
+
+- Many classes
+ * Improved exception safety.
+
+****************************************************************************
+* Examples and demos *
+****************************************************************************
+
+- Anomaly browser
+ * Added to demonstrate QtWebkit usage.
+
+- Deform, Pathstroke, and Wiggly
+ * Removed Symbian specific animation timer fixes since more generic
+ fix was made to event dispatcher.
+
+- DesktopServices
+ * Implemented content filters for desktopservices example.
+ * Added error handling to qdesktopservices example when openUrl fails.
+
+- Drilldown
+ * Added to demonstrate QtSql usage in Symbian OS.
+
+- Fluidlauncher
+ * Removed ugly workaround to make emulator deployment work correctly,
+ since the issue has been fixed in qmake.
+ * Included drilldown to demonstrate QtSql usage.
+ * Updated screenshots to S60 style.
+ * Added softkeys example.
+ * Added Anomaly browser to fluidlauncher.
+
+- Ftp
+ * Enabled default IAP setting for FTP example.
+ * IAP dialog will show after FTP UI is on screen.
+ * If active IAP exist that one will be used.
+
+- SecureSocketClient
+ * Fixed build issue caused by lack of cursor.
+
+- Softkeys
+ * New example showing how to use softkeys API in QWidget.
+
+****************************************************************************
+* Tools *
+****************************************************************************
+
+- configure
+ * -cetest is no longer a supported switch for configure.
+ * -stl option is enabled by default for Symbian OS
+ * -openssl option is enabled by default for Symbian OS.
+ * -fpu option enables vfpu type selection for ARM targets.
+
+- qmake
+ * Support for generating Symbian "test" targets: CONFIG += symbian_test.
+ * Support for Symbian Build System, version 2 (aka Raptor) via
+ symbian-sbsv2 mkspec.
+ * PAGED keyword is added to all MMP files by default, except in S60 3.1
+ builds.
+ * Read-only flag is no longer preserved when deploying files into
+ emulator environment.
+ * Changed the timestamp to ISO format in all files generated
+ by qmake for symbian-* mkspecs.
+ * Qt's VERSION variable will now generate VERSION keyword in mmp files.
+ * Made Open C include paths handling bit more robust.
+ * Support both Symbian Foundation header structure in /epoc32/include,
+ as well as old Symbian/S60 structure
+
+- Release package creation
+ * Removed the obsolete script to create release package.
+
+- Createpackage script
+ * Now creates packages with .sis suffix.
+
+- Patch_capabilities script
+ * Will now patch also vendor id in binaries and the UID in the pkg file.
+
+
+****************************************************************************
+* Documentation *
+****************************************************************************
+
+- qmake-manual
+ * 250370: Added documentation for ICON keyword.
+
+****************************************************************************
+* Plugins *
+****************************************************************************
+
+- S60 version specific plugins
+ * Isolated S60 version dependent functionality to S60 version specific
+ plugins (qts60plugin_x_y.dll) to make it possible for single build to
+ run on any supported device, even if with reduced functionality on
+ some.
+
+****************************************************************************
+* Important Behavior Changes *
+****************************************************************************
+
+- Qt libs
+ * Qt libs are now built with "All -Tcb" capabilities always. It is now
+ always necessary to run patch_capabilities.pl script if self-signing
+ of Qt libs is desired.
+ * QtCore and QtSql made UNPAGED when installed via SIS file as a
+ workaround for an obscure crash when they are paged.
+ * qt_libs.pro updated to reflect Open C dependencies, as Qt requires
+ 1.5.0 and newer release.
+ * Qt libs are now build with the "STDCPP" mmp flag. On platforms from
+ TB9.2, Qt code will throw std::bad_alloc exceptions on allocation
+ failure.
diff --git a/doc/src/development/qmake-manual.qdoc b/doc/src/development/qmake-manual.qdoc
index 181ba6a..5fdc4e8 100644
--- a/doc/src/development/qmake-manual.qdoc
+++ b/doc/src/development/qmake-manual.qdoc
@@ -918,6 +918,89 @@
This is discussed in more detail in the
\l{Deploying an Application on Windows#Visual Studio 2005 Onwards}
{deployment guide for Windows}.
+
+
+ \section1 S60
+
+ Features specific to this platform include handling of static data,
+ capabilities, stack and heap size, compiler specific options, and unique
+ identifiers for the application or library.
+
+ \section2 Handling of static data
+
+ If the application uses any static data, the build system needs to be
+ informed about it. This is because Symbian tries to save memory if no
+ static data is in use.
+
+ To specify that static data support is desired, add this to the project file:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 129
+
+ The default value is zero.
+
+ \section2 Stack and heap size
+
+ Symbian uses predefined sizes for stacks and heaps. If an
+ application exceeds either limit, it may crash or fail to complete its
+ task. Crashes that seem to have no reason can often be traced back to
+ insufficient stack and/or heap sizes.
+
+ The stack size has a maximum value, whereas the heap size has a
+ minimum and a maximum value, all specified in bytes. The minimum value
+ prevents the application from starting if that amount of memory is not available. The
+ minimum and maximum values are separated by a space. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 130
+
+ The default values depend on the version of the S60 SDK you're using.
+
+ \section2 Compiler specific options
+
+ General compiler options can as usual be set using \c QMAKE_CFLAGS and \c QMAKE_CXXFLAGS.
+ In order to set specific compiler options, \c QMAKE_CFLAGS.<compiler> and
+ \c QMAKE_CXXFLAGS.<compiler> can be used. \c <compiler> can be either \c CW for the WINSCW
+ architecture (emulator), or \c ARMCC for the ARMv5 architecture (hardware).
+
+ Here is an example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 131
+
+ \section2 Unique identifiers
+
+ Symbian applications may have unique identifiers attached to them.
+ Here is how to define them in a project file:
+
+ There are four types of IDs supported: \c UID2, \c UID3, \c SID, and \c VID. They
+ are specified like this:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 132
+
+ If \c UID2 is not specified, it defaults to the same value as \c UID3.
+ If \c UID3 is not specified, qmake will automatically generate a \c UID3
+ suitable for development and debugging. This value should be manually
+ specified for applications that are to be released. In order to optain
+ an official UID, please contact Nokia. Both \c SID and \c VID default to empty values.
+
+ For more information about unique identifiers and their meaning for
+ Symbian applications, please refer to the
+ \l{http://www.symbian.com/developer/techlib/v9.2docs/doc_source/ToolsAndUtilities/BuildTools/UsingUids.guide.html}{respective S60 SDK documentation}.
+
+ \section2 Capabilities
+
+ Capabilities define extra priviledges for the application, such as the
+ ability to list all files on the file system. Capabilities are defined
+ in the project file like this:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 133
+
+ It is also possible to specify which capabilities \e not to have,
+ by first specifying \c ALL and then list the unwanted capabilities
+ with a minus in front of them, like this:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 134
+
+ For more information about capabilities, please refer to the
+ \l{http://www.symbian.com/developer/techlib/v9.2docs/doc_source/guide/platsecsdk/index.html}{respective S60 SDK documentation}.
*/
/*!
@@ -1008,6 +1091,32 @@
\tableofcontents{3}
+ \target BLD_INF_RULES
+ \section1 BLD_INF_RULES
+
+ \e {This is only used on Symbian.}
+
+ Generic \c bld.inf file content can be specified with \c BLD_INF_RULES variables.
+ The section of \c bld.inf file where each rule goes is appended to
+ \c BLD_INF_RULES with a dot.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 146
+
+ This will add the specified statements to the \c prj_exports section of the
+ generated \c bld.inf file.
+
+ It is also possible to add multiple rows in a single block. Each double
+ quoted string will be placed on a new row in the generated \c bld.inf file.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 143
+
+ Any rules you define will be added after automatically generated
+ rules in each section.
+
\target CONFIG
\section1 CONFIG
@@ -1178,6 +1287,20 @@
The build process for bundles is also influenced by
the contents of the \l{#QMAKE_BUNDLE_DATA}{QMAKE_BUNDLE_DATA} variable.
+ These options only have an effect on Symbian:
+
+ \table 95%
+ \header \o Option \o Description
+ \row \o stdbinary \o Builds an Open C binary (i.e. STDDLL, STDEXE, or STDLIB,
+ depending on the target binary type.)
+ \row \o no_icon \o Doesn't generate resources needed for displaying an icon
+ for executable in application menu (app only).
+ \row \o symbian_test \o Places mmp files and extension makefiles under
+ test sections in generated bld.inf instead of their regular sections.
+ Note that this only affects automatically generated bld.inf content;
+ the content added via \c BLD_INF_RULES variable is not affected.
+ \endtable
+
These options have an effect on Linux/Unix platforms:
\table 95%
@@ -1221,7 +1344,7 @@
\target DEPLOYMENT
\section1 DEPLOYMENT
- \e {This is only used on Windows CE.}
+ \e {This is only used on Windows CE and Symbian.}
Specifies which additional files will be deployed. Deployment means the
transfer of files from the development system to the target device or
@@ -1239,7 +1362,8 @@
The default deployment target path for Windows CE is
\c{%CSIDL_PROGRAM_FILES%\target}, which usually gets expanded to
- \c{\Program Files\target}.
+ \c{\Program Files\target}. For Symbian, the default target is the application
+ private directory on the drive it is installed to.
It is also possible to specify multiple \c sources to be deployed on
target \c paths. In addition, different variables can be used for
@@ -1249,24 +1373,85 @@
\snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 29
- \note All linked Qt libraries will be deployed to the path specified
- by \c{myFiles.path}.
+ \note In Windows CE all linked Qt libraries will be deployed to the path
+ specified by \c{myFiles.path}. In Symbian all libraries and executables
+ will always be deployed to the \\sys\\bin of the installation drive.
+
+ Since the Symbian build system automatically moves binaries to certain
+ directories under the epoc32 directory, custom plugins, executables or
+ dynamically loadable libraries need special handling. When deploying
+ extra executables or dynamically loadable libraries, the target path
+ must specify \\sys\\bin. For plugins, the target path must specify the
+ location where the plugin stub will be deployed to (see the
+ \l{How to Create Qt Plugins} document for more information about plugins).
+ If the binary cannot be found from the indicated source path,
+ the directory Symbian build process moves the executables to is
+ searched, e.g. \\epoc32\\release\\armv5\\urel.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 128
+ In Symbian, generic PKG file content can also be specified with this
+ variable. You can use either \c pkg_prerules or \c pkg_postrules to
+ pass raw data to PKG file. The strings in \c pkg_prerules are added before
+ package-body and \c pkg_postrules after. The strings defined in
+ \c pkg_postrules or \c pkg_prerules are not parsed by qmake, so they
+ should be in a format understood by Symbian package generation tools.
+ Please consult Symbian documentation for correct syntax.
+
+ For example, to deploy DLL and add a new dependency:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 140
+
+ Please note that \c pkg_prerules can also replace default statements in
+ pkg file. If no pkg_prerules is defined, qmake makes sure that PKG file
+ syntax is correct and it contains all mandatory statements such as:
+
+ \list
+ \o languages, for example \BR
+ &EN,FR
+ \o package-header, for example \BR
+ #{"MyApp-EN", "MyApp-FR"}, (0x1000001F), 1, 2, 3, TYPE=SA
+ \o localized and unique vendor, for example \BR
+ %{"Vendor-EN", ..., "Vendor-FR"}
+ :"Unique vendor name"
+ \endlist
+
+ If you decide to override any of these statements, you need to pay
+ attention that also other statements stay valid. For example if you
+ override languages statement, you must override also package-header
+ statement and all other statements which are language specific.
+
+ In Symbian, the \c default_deployment item specifies
+ default platform dependencies. It can be overwritten if a more
+ restrictive set is needed - e.g. if a specific
+ device is required to run the application.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 141
+
\target DEPLOYMENT_PLUGIN
\section1 DEPLOYMENT_PLUGIN
- \e {This is only used on Windows CE.}
+ \e {This is only used on Windows CE and Symbian.}
This variable specifies the Qt plugins that will be deployed. All plugins
available in Qt can be explicitly deployed to the device. See
\l{Static Plugins}{Static Plugins} for a complete list.
- \note No plugins will be deployed automatically. If the application
- depends on plugins, these plugins have to be specified manually.
+ \note In Windows CE, No plugins will be deployed automatically.
+ If the application depends on plugins, these plugins have to be specified
+ manually.
+
+ \note In Symbian, all plugins supported by this variable will be deployed
+ by default with Qt libraries, so generally using this variable is not
+ needed.
For example:
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 128
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 142
This will upload the jpeg imageformat plugin to the plugins directory
on the Windows CE device.
@@ -1366,7 +1551,14 @@
\snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 34
See also \l{#SOURCES}{SOURCES}.
-
+
+ \target ICON
+ \section1 ICON
+
+ This variable is used only in MAC and S60 to set the application icon.
+ Please see \l{Setting the Application Icon}{the application icon documentation}
+ for more information.
+
\target INCLUDEPATH
\section1 INCLUDEPATH
@@ -1430,9 +1622,9 @@
This variable contains a list of libraries to be linked into the project.
You can use the Unix \c -l (library) and -L (library path) flags and qmake
- will do the correct thing with these libraries on Windows (namely this
- means passing the full path of the library to the linker). The only
- limitation to this is the library must exist, for qmake to find which
+ will do the correct thing with these libraries on Windows and Symbian
+ (namely this means passing the full path of the library to the linker). The
+ only limitation to this is the library must exist, for qmake to find which
directory a \c -l lib lives in.
For example:
@@ -1454,6 +1646,14 @@
explicitly specify the library to be used by including the \c{.lib}
file name suffix.
+ \bold{Note:} On S60, the build system makes a distinction between shared and
+ static libraries. In most cases, qmake will figure out which library you
+ are refering to, but in some cases you may have to specify it explicitly to
+ get the expected behavior. This typically happens if you are building a
+ library and using it in the same project. To specify that the library is
+ either shared or static, add a ".dll" or ".lib" suffix, respectively, to the
+ library name.
+
By default, the list of libraries stored in \c LIBS is reduced to a list of
unique names before it is used. To change this behavior, add the
\c no_lflags_merge option to the \c CONFIG variable:
@@ -1489,6 +1689,37 @@
when generating a Makefile. The value of this variable is typically
handled internally by \c qmake and rarely needs to be modified.
+ \target MMP_RULES
+ \section1 MMP_RULES
+
+ \e {This is only used on Symbian.}
+
+ Generic MMP file content can be specified with this variable.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 137
+
+ This will add the specified statement to the end of the generated MMP file.
+
+ It is also possible to add multiple rows in a single block. Each double
+ quoted string will be placed on a new row in the generated MMP file.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 138
+
+ If you need to include a hash (\c{#}) character inside the
+ \c MMP_RULES statement, it can be done with the variable
+ \c LITERAL_HASH as follows:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 139
+
+ \note You should not use this variable to add MMP statements that are
+ explicitly supported by their own variables, such as
+ \c TARGET.EPOCSTACKSIZE.
+ Doing so could result in duplicate statements in the MMP file.
+
\target MOC_DIR
\section1 MOC_DIR
@@ -1781,6 +2012,14 @@
the \c QMAKE_CXXFLAGS_DEBUG and \c QMAKE_CXXFLAGS_RELEASE variables,
respectively.
+ \bold{Note:} On S60, this variable can be used to pass architecture specific
+ options to each compiler in the Symbian build system. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 131
+
+ For more information, see
+ \l{qmake Platform Notes#Compiler specific options}{qmake Platform Notes}.
+
\target QMAKE_CXXFLAGS_DEBUG
\section1 QMAKE_CXXFLAGS_DEBUG
@@ -2568,6 +2807,49 @@
This variable contains the name of the resource file for the application.
The value of this variable is typically handled by \c qmake or
\l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \target RSS_RULES
+ \section1 RSS_RULES
+
+ \e {This is only used on Symbian.}
+
+ Generic RSS file content can be specified with this variable. The syntax is
+ similar to \c MMP_RULES and \c BLD_INF_RULES.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 144
+
+ This will add the specified statement to the end of the generated
+ registration resource file. As an impact of this statement, the application
+ will not be visible in application shell.
+
+ It is also possible to add multiple rows in a single block. Each double
+ quoted string will be placed on a new row in the registration resource file.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 145
+
+ This example will install the application to MyFolder in S60 application
+ shell. In addition it will make the application to be launched in background.
+
+ For detailed list of possible RSS statements, please refer to Symbian OS help.
+
+ \note You should not use \c RSS_RULES variable to set the following RSS statements:
+
+ app_file
+ localisable_resource_file
+ localisable_resource_id
+
+ These statements are internally handled by qmake.
+
+ \target S60_VERSION
+ \section1 S60_VERSION
+
+ \e {This is only used on Symbian.}
+
+ Contains the version number of the underlying S60 SDK; e.g. "5.0".
\target SIGNATURE_FILE
\section1 SIGNATURE_FILE
@@ -2632,6 +2914,78 @@
The project file above would produce an executable named \c myapp on
unix and 'myapp.exe' on windows.
+ \target TARGET.CAPABILITY
+ \section1 TARGET.CAPABILITY
+
+ \e {This is only used on Symbian.}
+
+ Specifies which platform capabilities the application should have. For more
+ information, please refer to the S60 SDK documentation.
+
+ \target TARGET.EPOCALLOWDLLDATA
+ \section1 TARGET.EPOCALLOWDLLDATA
+
+ \e {This is only used on Symbian.}
+
+ Specifies whether static data should be allowed in the application. Symbian
+ disallows this by default in order to save memory. To use it, set this to 1.
+
+ \target TARGET.EPOCHEAPSIZE
+ \section1 TARGET.EPOCHEAPSIZE
+
+ \e {This is only used on Symbian.}
+
+ Specifies the minimum and maximum heap size of the application. The program
+ will refuse to run if the minimum size is not available when it starts. For
+ example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 135
+
+ \target TARGET.EPOCSTACKSIZE
+ \section1 TARGET.EPOCSTACKSIZE
+
+ \e {This is only used on Symbian.}
+
+ Specifies the maximum stack size of the application. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 136
+
+ \target TARGET.SID
+ \section1 TARGET.SID
+
+ \e {This is only used on Symbian.}
+
+ Specifies which secure identifier to use for the target application or
+ library. For more information, see the S60 SDK documentation.
+
+ \target TARGET.UID2
+ \section1 TARGET.UID2
+
+ \e {This is only used on Symbian.}
+
+ Specifies which unique identifier 2 to use for the target application or
+ library. If this variable is not specified, it defaults to the same value
+ as TARGET.UID3. For more information, see the S60 SDK documentation.
+
+ \target TARGET.UID3
+ \section1 TARGET.UID3
+
+ \e {This is only used on Symbian.}
+
+ Specifies which unique identifier 3 to use for the target application or
+ library. If this variable is not specified, a UID3 suitable for development
+ and debugging will be generated automatically. However, applications being
+ released should always define this variable. For more information, see the
+ S60 SDK documentation.
+
+ \target TARGET.VID
+ \section1 TARGET.VID
+
+ \e {This is only used on Symbian.}
+
+ Specifies which vendor identifier to use for the target application or
+ library. For more information, see the S60 SDK documentation.
+
\section1 TARGET_EXT
This variable specifies the target's extension. The value of this variable
@@ -3447,22 +3801,70 @@
\table
\header
- \o Member
- \o Description
- \row
- \o combine
- \o Indicates that all of the input files are combined into a single output file.
- \row
- \o target_predeps
- \o Indicates that the output should be added to the list of PRE_TARGETDEPS.
- \row
- \o explicit_dependencies
- \o The dependencies for the output only get generated from the depends member and from
- nowhere else.
- \row
- \o no_link
- \o Indicates that the output should not be added to the list of objects to be linked in
- \endtable
+ \o Member
+ \o Description
+ \row
+ \o commands
+ \o The commands used for for generating the output from the input.
+ \row
+ \o CONFIG
+ \o Specific configuration options for the custom compiler. See the CONFIG table for details.
+ \row
+ \o depend_command
+ \o Specifies a command used to generate the list of dependencies for the output.
+ \row
+ \o dependency_type
+ \o Specifies the type of file the output is, if it is a known type (such as TYPE_C,
+ TYPE_UI, TYPE_QRC) then it is handled as one of those type of files.
+ \row
+ \o depends
+ \o Specifies the dependencies of the output file.
+ \row
+ \o input
+ \o The variable that contains the files that should be processed with the custom compiler.
+ \row
+ \o name
+ \o A description of what the custom compiler is doing. This is only used in some backends.
+ \row
+ \o output
+ \o The filename that is created from the custom compiler.
+ \row
+ \o output_function
+ \o Specifies a custom qmake function that is used to specify the filename to be created.
+ \row
+ \o variables
+ \o Indicates that the variables specified here are replaced with $(QMAKE_COMP_VARNAME) when refered to
+ in the pro file as $(VARNAME).
+ \row
+ \o variable_out
+ \o The variable that the files created from the output should be added to.
+ \endtable
+
+ List of members specific to the CONFIG option:
+
+ \table
+ \header
+ \o Member
+ \o Description
+ \row
+ \o combine
+ \o Indicates that all of the input files are combined into a single output file.
+ \row
+ \o target_predeps
+ \o Indicates that the output should be added to the list of PRE_TARGETDEPS.
+ \row
+ \o explicit_dependencies
+ \o The dependencies for the output only get generated from the depends member and from
+ nowhere else.
+ \row
+ \o no_link
+ \o Indicates that the output should not be added to the list of objects to be linked in.
+ \endtable
+
+ \note Symbian specific: Generating objects to be linked in is not supported in Symbian,
+ so either the \c CONFIG option \c no_link or variable \c variable_out
+ should always be defined for extra compilers.
+
*/
/*!
diff --git a/doc/src/examples/htmlinfo.qdoc b/doc/src/examples/htmlinfo.qdoc
new file mode 100644
index 0000000..68e8320
--- /dev/null
+++ b/doc/src/examples/htmlinfo.qdoc
@@ -0,0 +1,89 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example xml/htmlinfo
+ \title XML HTML Info Example
+
+ The XML HTML Info example provides a simple command line utility that
+ scans the current directory for HTML files and prints statistics about
+ them to standard out.
+
+ \note Standard out is redirected on some platforms. On Symbian using Open
+ C \c stdout is by default directed to the console window, but this window
+ may not always be visible. To redirect to a file instead, locate the \c
+ c:\\system\\data\\config.ini file (on either the emulator or the device)
+ and change \c STDOUT to point to \c MEDIA4. This will redirect the console
+ to \c c:\\system\\data\\out.txt.
+
+ The files are parsed using a QXmlStreamReader object. If the file does
+ not contain a well-formed XML document, a description of the error is
+ printed to the standard error console.
+
+ \section1 Basic Operation
+
+ The main function of the example uses QDir to access files in the current
+ directory that match either "*.htm" or "*.html". For each file found,
+ the \c parseHtmlFile() function is called.
+
+ Reading XML is handled by an instance of the QXmlStreamReader class, which
+ operates on the input file object:
+
+ \snippet examples/xml/htmlinfo/main.cpp 0
+
+ The work of parsing and the XML and extracting statistics is done in a
+ while loop, and is driven by input from the reader:
+
+ \snippet examples/xml/htmlinfo/main.cpp 1
+
+ If more input is available, the next token from the input file is read
+ and parsed. The program then looks for the specific element types,
+ "title", "a", and "p", and stores information about them.
+
+ When there is no more input, the loop terminates. If an error occurred,
+ information is written to the standard out file via a stream, and the
+ example exits:
+
+ \snippet examples/xml/htmlinfo/main.cpp 2
+
+ If no error occurred, the example prints some statistics from the data
+ gathered in the loop, and then exits.
+*/
diff --git a/doc/src/exceptionsafety.qdoc b/doc/src/exceptionsafety.qdoc
new file mode 100644
index 0000000..284159f
--- /dev/null
+++ b/doc/src/exceptionsafety.qdoc
@@ -0,0 +1,156 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page exceptionsafety.html
+ \title Exception Safety
+ \ingroup architecture
+ \brief A guide to exception safety in Qt.
+
+ \bold {Preliminary warning}: Exception safety is not feature complete!
+ Common cases should work, but classes might still leak or even crash.
+
+ Qt itself will not throw exceptions. Instead, error codes are used.
+ In addition, some classes have user visible error messages, for example
+ \l QIODevice::errorString() or \l QSqlQuery::lastError().
+ This has historical and practical reasons - turning on exceptions
+ can increase the library size by over 20%.
+
+ The following sections describe Qt's behavior if exception support is
+ enabled at compile time.
+
+ \tableofcontents
+
+ \section1 Exception safe modules
+
+ \section2 Containers
+
+ Qt's \l{container classes} are generally exception neutral. They pass any
+ exception that happens within their contained type \c T to the user
+ while keeping their internal state valid.
+
+ Example:
+
+ \code
+ QList<QString> list;
+ ...
+ try {
+ list.append("hello");
+ } catch (...) {
+ }
+ // list is safe to use - the exception did not affect it.
+ \endcode
+
+ Exceptions to that rule are containers for types that can throw during assignment
+ or copy constructions. For those types, functions that modify the container as well as
+ returning a value, are unsafe to use:
+
+ \code
+ MyType s = list.takeAt(2);
+ \endcode
+
+ If an exception occurs during the assignment of \c s, the value at index 2 is already
+ removed from the container, but hasn't been assigned to \c s yet. It is lost
+ without chance of recovery.
+
+ The correct way to write it:
+
+ \code
+ MyType s = list.at(2);
+ list.removeAt(2);
+ \endcode
+
+ If the assignment throws, the container still contains the value, no data loss occured.
+
+ Note that implicitly shared Qt classes will not throw in their assignment
+ operators or copy constructors, so the limitation above does not apply.
+
+ \section1 Out of Memory Handling
+
+ Most desktop operating systems overcommit memory. This means that \c malloc()
+ or \c{operator new} return a valid pointer, even though there is not enough
+ memory available at allocation time. On such systems, no exception of type
+ \c std::bad_alloc is thrown.
+
+ On all other operating systems, Qt will throw an exception of type std::bad_alloc
+ if any allocation fails. Allocations can fail if the system runs out of memory or
+ doesn't have enough continuous memory to allocate the requested size.
+
+ Exceptions to that rule are documented. As an example, \l QImage::create()
+ returns false if not enough memory exists instead of throwing an exception.
+
+ \section1 Recovering from exceptions
+
+ Currently, the only supported use case for recovering from exceptions thrown
+ within Qt (for example due to out of memory) is to exit the event loop and do
+ some cleanup before exiting the application.
+
+ Typical use case:
+
+ \code
+ QApplication app(argc, argv);
+ ...
+ try {
+ app.exec();
+ } catch (const std::bad_alloc &) {
+ // clean up here, e.g. save the session
+ // and close all config files.
+
+ return 0; // exit the application
+ }
+ \endcode
+
+ After an exception is thrown, the connection to the windowing server
+ might already be closed. It is not safe to call a GUI related function
+ after catching an exception.
+
+ \section1 Platform-Specific Exception Handling
+
+ \section2 Symbian (Qt for S60)
+
+ The Symbian platform implements its own exception system that differs from the standard
+ C++ mechanism. When using Qt for S60, and especially when writing code to access Symbian
+ functionality directly, it may be necessary to know about the underlying implementation
+ and how it interacts with Qt.
+
+ The \l{Exception Safety with Symbian} document shows how to use the facilities provided
+ by Qt to use exceptions as safely as possible.
+*/
diff --git a/doc/src/getting-started/installation.qdoc b/doc/src/getting-started/installation.qdoc
index 10791d8..9bf774b 100644
--- a/doc/src/getting-started/installation.qdoc
+++ b/doc/src/getting-started/installation.qdoc
@@ -497,6 +497,146 @@ in the \l{Qt for Windows CE Requirements} document.
We hope you will enjoy using Qt. Good luck!
*/
+/*! \page install-S60-installer.html
+
+\title Installing Qt on S60 using binary package
+\ingroup qts60
+\brief How to install Qt on S60 using the binary package.
+
+\note Qt for S60 has some requirements that are given in more detail
+in the \l{Qt for S60 Requirements} document.
+
+\list 1
+
+ \o Install Qt
+
+ Run \c{qt-s60-%VERSION%.exe} and follow the instructions.
+
+ \note Qt must be installed on the same drive as the S60 SDK you are
+ using, and the install path must not contain any spaces.
+
+ \o Running Qt demos
+
+ We've included a subset of the Qt demos in this package for you
+ to try out. An excellent starting point is the "fluidlauncher"
+ demo. To run the demo on a real device, you first have to install
+ \c{qt_libs.sis} and \c{fluidlauncher.sis} found in the Qt installation
+ directory. Begin by connecting your phone using the USB cable and
+ selecting "PC Suite mode". In Windows Explorer right click on the
+ \c{.sis} files and select "Install with Nokia Application Installer"
+ and follow the instructions.
+
+ To run the demos and examples on the emulator, you need to build them first.
+ Open the "Qt for S60 Command Prompt" from the Start menu and type:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 25
+
+ To run the demos on the emulator simply navigate to the directory of the demo
+ you want to see and run:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 27
+
+ For more information about building and running Qt programs on S60,
+ see \l{S60 - Introduction to using Qt}.
+
+ We hope you will enjoy using Qt.
+
+\endlist
+
+*/
+/*! \page install-S60.html
+
+\title Installing Qt on S60
+\ingroup installation
+\ingroup qts60
+\brief How to install Qt on S60
+
+\note Qt for S60 has some requirements that are given in more detail
+in the \l{Qt for S60 Requirements} document.
+
+\note \bold {This document describes how to install and configure Qt for S60 from scratch.
+If you are using pre-built binaries, follow the instructions
+\l{Installing Qt on S60 using binary package}{here}.}
+
+\list 1
+
+ \o Install Qt
+
+ Uncompress the package into the directory you want Qt installed,
+ e.g. \c{C:\Qt\%VERSION%}.
+
+ \note Qt must be installed on the same drive as the S60 SDK you are
+ using, and the install path must not contain any spaces.
+
+ \o Environment variables
+
+ In order to build and use Qt, the \c PATH environment variable needs
+ to be extended:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 18
+
+ This is done by adding \c{c:\Qt\%VERSION%\bin} to the \c PATH variable.
+
+ On Windows the PATH can be extended by navigating to
+ "Control Panel->System->Advanced->Environment variables".
+
+ In addition, you must configure the environment for use with the S60
+ emulator. This is done by locating the Carbide.c++ submenu on the Start
+ menu, and choosing "Configure environment for WINSCW command line".
+
+ \o Configure Qt
+
+ To configure Qt for S60, do:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 23
+
+ For other options, type \c{configure -help} to get a list of all available
+ options.
+
+ \o Build Qt
+
+ To build Qt for the device, type:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 28
+
+ To build Qt for the emulator, type:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 24
+
+ Congratulations, Qt is now ready to use.
+
+ \o Running Qt demos
+
+ We've included a subset of the Qt demos in this package for you
+ to try out. An excellent starting point is the "fluidlauncher"
+ demo. To run the demo on a real device, you first have to install
+ the Qt libraries on the device:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 29
+
+ \note You will need to supply certificate that allows installation
+ of binaries with "All -Tcb" capability to your device.
+
+ Similarly, install fluidlauncher to the device:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 30
+
+ This will create a self-signed \c fluidlauncher_armv5_urel.sis and
+ install it to your device.
+
+ To run the demos on the emulator simply navigate to the directory of the demo
+ you want to see and run:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 27
+
+ For more information about building and running Qt programs on S60,
+ see \l{S60 - Introduction to using Qt}.
+
+ We hope you will enjoy using Qt.
+
+\endlist
+
+*/
/*!
\page requirements.html
\title General Qt Requirements
@@ -523,6 +663,7 @@ in the \l{Qt for Windows CE Requirements} document.
\list
\o \l{Qt for Embedded Linux Requirements}
\o \l{Qt for Mac OS X Requirements}
+ \o \l{Qt for S60 Requirements}
\o \l{Qt for Windows CE Requirements}
\o \l{Qt for Windows Requirements}
\o \l{Qt for X11 Requirements}
@@ -804,3 +945,39 @@ in the \l{Qt for Windows CE Requirements} document.
enables the use of the Record extension to the X protocol to be used in
applications.
*/
+
+/*!
+ \page requirements-s60.html
+ \title Qt for S60 Requirements
+ \ingroup installation
+ \brief Setting up the S60 environment for Qt.
+ \previouspage General Qt Requirements
+
+ Qt for S60 requires the following software installed on your development PC:
+ \list
+ \o \l{http://www.forum.nokia.com/main/resources/tools_and_sdks/carbide_cpp/}{Carbide.c++ v2.0.0 or higher}
+ \list
+ \o \bold{Note:} It may be necessary to update the Carbide compiler.
+ See \l{http://pepper.troll.no/s60prereleases/patches/}{here} for instructions how to check your
+ compiler version and how to patch it, if needed.
+ \endlist
+ \o \l{http://www.forum.nokia.com/main/resources/tools_and_sdks/S60SDK/}{S60 Platform SDK 3rd Edition FP1 or higher}
+ \o \l{http://www.forum.nokia.com/main/resources/technologies/openc_cpp/}{Open C/C++ v1.6.0 or higher}.
+ Install this to all S60 SDKs you plan to use Qt with.
+ \o Building Qt libraries requires \l{http://www.arm.com/products/DevTools/RVCT.html}{RVCT} 2.2 [build 616] or later,
+ which is not available free of charge.
+ \endlist
+
+ Running Qt on real device requires the following packages to be installed on your device.
+ The packages can be found in the S60 SDK where you installed Open C/C++:
+ \list
+ \o \c{nokia_plugin\openc\s60opencsis\pips_s60_<version>.sis}
+ \o \c{nokia_plugin\openc\s60opencsis\openc_ssl_s60_<version>.sis}
+ \o \c{nokia_plugin\opencpp\s60opencppsis\stdcpp_s60_<version>.sis}
+ \endlist
+
+ \note Users of \bold{S60 Platform SDK 3rd Edition FP1} also need special updates. The update can be found
+ \l{http://pepper.troll.no/s60prereleases/patches/}{here}.
+
+ \sa {Known Issues in %VERSION%}
+*/
diff --git a/doc/src/howtos/appicon.qdoc b/doc/src/howtos/appicon.qdoc
index a664ade..2452689 100644
--- a/doc/src/howtos/appicon.qdoc
+++ b/doc/src/howtos/appicon.qdoc
@@ -212,4 +212,19 @@
installed in the appropriate locations for GNOME.
The GNOME developer website is at \l{http://developer.gnome.org/}.
+
+ \section1 Setting the Application Icon on S60 platforms
+
+ In order to set application icon for S60 application you need SVG-T icon.
+ How to create such SVG-T, please refer to
+ \l{http://wiki.forum.nokia.com/index.php/How_to_create_application_icon(SVG)_in_S60_3rd_edition/}
+
+ Once you have icon in correct format and assuming you are using
+ \c qmake to generate your makefiles, you only need to add a single
+ line to your \c .pro project file. For example, if the name of your
+ icon file is \c{myapp.svg}, and your project file is \c{myapp.pro},
+ add this line to \c{myapp.pro}:
+
+ \snippet doc/src/snippets/code/doc_src_appicon.qdoc 5
+
*/
diff --git a/doc/src/platforms/emb-install.qdoc b/doc/src/platforms/emb-install.qdoc
index e23cc1b..9cd3fad 100644
--- a/doc/src/platforms/emb-install.qdoc
+++ b/doc/src/platforms/emb-install.qdoc
@@ -42,10 +42,10 @@
/*!
\page qt-embedded-install.html
- \title Installing Qt for Embedded Linux
+ \title Installing Qt on Embedded Linux
\ingroup qt-embedded-linux
\ingroup installation
- \brief How to install Qt for Embedded Linux.
+ \brief How to install Qt on Embedded Linux.
This document describes how to install \l{Qt for Embedded Linux} in your
development environment:
diff --git a/doc/src/platforms/platform-notes.qdoc b/doc/src/platforms/platform-notes.qdoc
index 20f0933..e79b2f4 100644
--- a/doc/src/platforms/platform-notes.qdoc
+++ b/doc/src/platforms/platform-notes.qdoc
@@ -401,6 +401,19 @@
*/
/*!
+ \page platform-notes-symbian.html
+ \title Platform Notes - Symbian
+ \contentspage Platform Notes
+
+ This page contains information about the Symbian platforms Qt is currently known
+ to run on. More information about the combinations of platforms and compilers
+ supported by Qt can be found on the \l{Supported Platforms} page.
+
+ For information about mixing exceptions with symbian leaves,
+ see \l{Exception Safety with Symbian}
+*/
+
+/*!
\page platform-notes-embedded-linux.html
\title Platform Notes - Embedded Linux
\contentspage Platform Notes
diff --git a/doc/src/s60-introduction.qdoc b/doc/src/s60-introduction.qdoc
new file mode 100644
index 0000000..24f7817
--- /dev/null
+++ b/doc/src/s60-introduction.qdoc
@@ -0,0 +1,117 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page s60-with-qt-introduction.html
+
+ \title S60 - Introduction to using Qt
+ \brief An introduction to Qt for S60 developers.
+ \ingroup howto
+ \ingroup qts60
+
+ \tableofcontents
+
+ \section1 Required tools
+
+ See \l{Qt for S60 Requirements} to see what tools are required to use Qt for S60.
+
+ \section1 Installing Qt and running demos
+
+ Follow the instructions found in \l{Installing Qt on S60 using binary package} to learn how
+ to install Qt using binary package and how to build and run Qt demos.
+
+ Follow the instructions found in \l{Installing Qt on S60} to learn how to install Qt using
+ using source package and how to build and run the Qt demos.
+
+ \section1 Building your own applications
+
+ If you are new to Qt development, have a look at \l{How to Learn Qt}.
+ In general, the difference between developing a
+ Qt application on S60 compared to any of the other platforms supported
+ by Qt is not that big.
+
+ Once you have crated a \c .pro file for your project, generate the
+ Carbide specific \c Bld.inf and \c .mmp files this way:
+
+ \snippet doc/src/snippets/code/doc_src_s60-introduction.qdoc 0
+
+ For more information on how to use qmake have a look at the \l
+ {qmake Tutorial}.
+
+ Now you can build the Qt on S60 application with standard build
+ tools. By default, running \c make will produce binaries for the
+ emulator. However, S60 comes with several alternative build targets,
+ as shown in the table below:
+
+ \table
+ \row \o \c debug-winscw \o Build debug binaries for the emulator (default).
+ It is currently not possible to build release
+ binaries for the emulator.
+ \row \o \c debug-gcce \o Build debug binaries for hardware using GCCE.
+ \row \o \c release-gcce \o Build release binaries for hardware using GCCE.
+ \row \o \c debug-armv5 \o Build debug binaries for hardware using RVCT.
+ \row \o \c release-armv5 \o Build release binaries for hardware using RVCT.
+ \row \o \c run \o Run the emulator binaries from the build directory.
+ \endtable
+
+ The following lines perform a debug build for the emulator
+ and deploy all the needed files:
+
+ \snippet doc/src/snippets/code/doc_src_s60-introduction.qdoc 1
+
+ To work on your project in Carbide, simply import the \c .pro file
+ by right clicking on the project explorer and executing "Import...".
+
+ \section1 Installing your own applications
+
+ To install your own applications on hardware, Qt comes with a tool called
+ \c createpackage. When used on the \c .pkg files created by qmake, it
+ will produce a signed \c .sis file that can be installed to the device. For
+ example:
+
+ \snippet doc/src/snippets/code/doc_src_s60-introduction.qdoc 2
+
+ If you want to install the program immediately, make sure that the device
+ is connected to the computer in "PC Suite" mode, and run \c createpackage
+ with the \c -i switch, like this:
+
+ \snippet doc/src/snippets/code/doc_src_s60-introduction.qdoc 3
+*/
diff --git a/doc/src/snippets/code/doc_src_appicon.qdoc b/doc/src/snippets/code/doc_src_appicon.qdoc
index c8883fe..c763a68 100644
--- a/doc/src/snippets/code/doc_src_appicon.qdoc
+++ b/doc/src/snippets/code/doc_src_appicon.qdoc
@@ -21,3 +21,7 @@ kde-config --path icon
//! [4]
gnome-config --datadir
//! [4]
+
+//! [5]
+ICON = myapp.svg
+//! [5]
diff --git a/doc/src/snippets/code/doc_src_installation.qdoc b/doc/src/snippets/code/doc_src_installation.qdoc
index e35dad9..489016d 100644
--- a/doc/src/snippets/code/doc_src_installation.qdoc
+++ b/doc/src/snippets/code/doc_src_installation.qdoc
@@ -125,3 +125,41 @@ setcepaths wincewm50pocket-msvc2005
//! [22]
nmake
//! [22]
+
+
+//! [23]
+cd \Qt\%VERSION%
+configure -platform win32-mwc -xplatform symbian-abld
+//! [23]
+
+
+//! [24]
+make debug-winscw
+//! [24]
+
+//! [25]
+cd examples
+qmake
+make
+cd ..\demos
+qmake
+make
+//! [25]
+
+//! [27]
+make run
+//! [27]
+
+//! [28]
+make release-armv5
+//! [28]
+
+//! [29]
+cd src\s60installs
+createpackage -i qt_libs_armv5_urel.pkg <certificate file> <certificate key file>
+//! [29]
+
+//! [30]
+cd embedded\fluidlauncher
+createpackage -i fluidlauncher_armv5_urel.pkg
+//! [30]
diff --git a/doc/src/snippets/code/doc_src_qmake-manual.qdoc b/doc/src/snippets/code/doc_src_qmake-manual.qdoc
index 82c710d..64dc559 100644
--- a/doc/src/snippets/code/doc_src_qmake-manual.qdoc
+++ b/doc/src/snippets/code/doc_src_qmake-manual.qdoc
@@ -809,5 +809,122 @@ CONFIG(debug, debug|release) {
//! [127]
//! [128]
-DEPLOYMENT_PLUGIN += qjpeg
+customplugin.sources = customimageplugin.dll
+customplugin.sources += c:\myplugins\othercustomimageplugin.dll
+customplugin.path = imageformats
+dynamiclibrary.sources = mylib.dll helper.exe
+dynamiclibrary.path = \sys\bin
+globalplugin.sources = someglobalimageplugin.dll
+globalplugin.path = \resource\qt\plugins\imageformats
+DEPLOYMENT += customplugin dynamiclibrary globalplugin
//! [128]
+
+//! [129]
+TARGET.EPOCALLOWDLLDATA = 1
+//! [129]
+
+//! [130]
+TARGET.EPOCHEAPSIZE = 10000 10000000
+TARGET.EPOCSTACKSIZE = 0x8000
+//! [130]
+
+//! [131]
+QMAKE_CXXFLAGS.CW += -O2
+QMAKE_CXXFLAGS.ARMCC += -O0
+//! [131]
+
+//! [132]
+TARGET.UID2 = 0x00000001
+TARGET.UID3 = 0x00000002
+TARGET.SID = 0x00000003
+TARGET.VID = 0x00000004
+//! [132]
+
+//! [133]
+TARGET.CAPABILITY += AllFiles
+//! [133]
+
+//! [134]
+TARGET.CAPABILITY = ALL -TCB
+//! [134]
+
+//! [135]
+TARGET.EPOCHEAPSIZE = 10000 10000000
+//! [135]
+
+//! [136]
+TARGET.EPOCSTACKSIZE = 0x8000
+//! [136]
+
+//! [137]
+MMP_RULES += "DEFFILE hello.def"
+//! [137]
+
+//! [138]
+myBlock = \
+"START RESOURCE foo.rss" \
+"TARGET bar" \
+"TARGETPATH private\10001234" \
+"HEADER" \
+"LANG 01" \
+"UID 0x10002345 0x10003456" \
+"END"
+
+MMP_RULES += myBlock
+//! [138]
+
+//! [139]
+myIfdefBlock = \
+"$${LITERAL_HASH}ifdef WINSCW" \
+"DEFFILE hello_winscw.def" \
+"$${LITERAL_HASH}endif"
+
+MMP_RULES += myIfdefBlock
+//! [139]
+
+//! [140]
+somelib.sources = somelib.dll
+somelib.path = \sys\bin
+somelib.pkg_prerules = "(0x12345678), 2, 2, 0, {\"Some Package\"}" \
+ "(0x87654321), 1, *, * ~ 2, 2, 0, {\"Some Other Package\"}"
+justdep.pkg_prerules = "(0xAAAABBBB), 0, 2, 0, {\"My Framework\"}"
+DEPLOYMENT += somelib justdep
+//! [140]
+
+//! [141]
+default_deployment.pkg_prerules = "[0x11223344],0,0,0,{\"SomeSpecificDeviceID\"}"
+//! [141]
+
+//! [142]
+DEPLOYMENT_PLUGIN += qjpeg
+//! [142]
+
+//! [143]
+myextension = \
+ "start extension myextension" \
+ "$${LITERAL_HASH}if defined(WINSCW)" \
+ "option MYOPTION foo" \
+ "$${LITERAL_HASH}endif" \
+ "option MYOPTION bar" \
+ "end"
+BLD_INF_RULES.prj_extensions += myextension
+//! [143]
+
+//! [144]
+RSS_RULES += "hidden = KAppIsHidden;"
+//! [144]
+
+//! [145]
+myrssrules = \
+ "hidden = KAppIsHidden;" \
+ "launch = KAppLaunchInBackground;" \
+RSS_RULES += myrssrules
+//! [145]
+
+//! [146]
+BLD_INF_RULES.prj_exports += \
+ "$${LITERAL_HASH}include <platform_paths.hrh>" \
+ "rom/my.iby APP_LAYER_PUBLIC_EXPORT_PATH(my.iby)" \
+ "inc/myheader.h mycomp/myheader.h" \
+ ":zip my_api.zip my_api"
+//! [146]
diff --git a/doc/src/snippets/code/doc_src_s60-introduction.qdoc b/doc/src/snippets/code/doc_src_s60-introduction.qdoc
new file mode 100644
index 0000000..ff1d159
--- /dev/null
+++ b/doc/src/snippets/code/doc_src_s60-introduction.qdoc
@@ -0,0 +1,16 @@
+//! [0]
+ qmake
+//! [0]
+
+
+//! [1]
+ make debug-winscw
+//! [1]
+
+//! [2]
+ createpackage wiggly_gcce_udeb.pkg
+//! [2]
+
+//! [3]
+ createpackage -i wiggly_gcce_udeb.pkg
+//! [3]
diff --git a/doc/src/snippets/code/src_corelib_tools_qscopedpointer.cpp b/doc/src/snippets/code/src_corelib_tools_qscopedpointer.cpp
new file mode 100644
index 0000000..b625eb2
--- /dev/null
+++ b/doc/src/snippets/code/src_corelib_tools_qscopedpointer.cpp
@@ -0,0 +1,103 @@
+//! [0]
+void myFunction(bool useSubClass)
+{
+ MyClass *p = useSubClass ? new MyClass() : new MySubClass;
+ QIODevice *device = handsOverOwnership();
+
+ if (m_value > 3) {
+ delete p;
+ delete device;
+ return;
+ }
+
+ try {
+ process(device);
+ }
+ catch (...) {
+ delete p;
+ delete device;
+ throw;
+ }
+
+ delete p;
+ delete device;
+}
+//! [0]
+
+//! [1]
+void myFunction(bool useSubClass)
+{
+ // assuming that MyClass has a virtual destructor
+ QScopedPointer<MyClass> p(useSubClass ? new MyClass() : new MySubClass);
+ QScopedPointer<QIODevice> device(handsOverOwnership());
+
+ if (m_value > 3)
+ return;
+
+ process(device);
+}
+//! [1]
+
+//! [2]
+ const QWidget *const p = new QWidget();
+ // is equivalent to:
+ const QScopedPointer<const QWidget> p(new QWidget());
+
+ QWidget *const p = new QWidget();
+ // is equivalent to:
+ const QScopedPointer<QWidget> p(new QWidget());
+
+ QWidget *const p = new QWidget();
+ // is equivalent to:
+ const QScopedPointer<QWidget> p(new QWidget());
+
+ const QWidget *p = new QWidget();
+ // is equivalent to:
+ QScopedPointer<const QWidget> p(new QWidget());
+
+//! [2]
+
+//! [3]
+if (scopedPointer) {
+ ...
+}
+//! [3]
+
+//! [4]
+class MyPrivateClass; // forward declare MyPrivateClass
+
+class MyClass
+{
+private:
+ QScopedPointer<MyPrivateClass> privatePtr; // QScopedPointer to forward declared class
+
+public:
+ MyClass(); // OK
+ inline ~MyClass() {} // VIOLATION - Destructor must not be inline
+
+private:
+ Q_DISABLE_COPY(MyClass) // OK - copy constructor and assignment operators
+ // are now disabled, so the compiler won't implicitely
+ // generate them.
+};
+//! [4]
+
+//! [5]
+// this QScopedPointer deletes its data using the delete[] operator:
+QScopedPointer<int, QScopedPointerArrayDeleter<int> > arrayPointer(new int[42]);
+
+// this QScopedPointer frees its data using free():
+QScopedPointer<int, QScopedPointerPodDeleter<int> > podPointer(reinterpret_cast<int *>(malloc(42)));
+
+// this struct calls "myCustomDeallocator" to delete the pointer
+struct ScopedPointerCustomDeleter
+{
+ static inline void cleanup(MyCustomClass *pointer)
+ {
+ myCustomDeallocator(pointer);
+ }
+};
+
+// QScopedPointer using a custom deleter:
+QScopedPointer<MyCustomClass, ScopedPointerCustomDeleter> customPointer(new MyCustomClass);
+//! [5]
diff --git a/doc/src/symbian-exceptionsafety.qdoc b/doc/src/symbian-exceptionsafety.qdoc
new file mode 100644
index 0000000..9183ba7
--- /dev/null
+++ b/doc/src/symbian-exceptionsafety.qdoc
@@ -0,0 +1,241 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page symbianexceptionsafety.html
+ \title Exception Safety with Symbian
+ \ingroup qts60
+ \brief A guide to integrating exception safety in Qt with Symbian.
+
+ The following sections describe how Qt code can interoperate with Symbian's
+ exception safety system.
+
+ \tableofcontents
+
+ \section1 What the problem is
+
+ Qt and Symbian have different exception systems. Qt works with standard C++
+ exceptions, whereas Symbian has its TRAP/Leave/CleanupStack system. So, what would
+ happen if you mix the two systems? It could go wrong in a number of ways.
+
+ Clean-up ordering would be different between the two. When Symbian code
+ leaves, the clean-up stack is cleaned up before anything else happens. After
+ that, the objects on the call stack would be cleaned up as with a normal
+ exception. So if there are any dependencies between stack-based and
+ objects owned by the clean-up stack, there could be problems due to this
+ ordering.
+
+ Symbian's \c XLeaveException, which is used when Symbian implements leaves as
+ exceptions, is not derived from \c std::exception, so would not be caught in
+ Qt catch statements designed to catch \c std::exception.
+
+ Qt's and standard C++'s \c std::exception derived exceptions result in program
+ termination if they fall back to a Symbian TRAP.
+
+ These problems can be solved with barrier macros and helper functions that
+ will translate between the two exception systems. Use them, in Qt code,
+ whenever calling into or being called from Symbian code.
+
+ \section1 Qt calls to Symbian
+
+ When calling Symbian leaving functions from Qt code, we want to translate
+ Symbian leaves to standard C++ exceptions. The following help is provided:
+
+ \list
+ \o \l qt_symbian_throwIfError() takes a Symbian
+ error code and throws an appropriate exception to represent it.
+ This will do nothing if the error code is not in fact an error. The
+ function is equivalent to Symbian's \c User::LeaveIfError.
+ \o \l q_check_ptr() takes a pointer and throws a std::bad_alloc
+ exception if it is 0, otherwise the pointer is returned. This can be
+ used to check the success of a non-throwing allocation, eg from
+ \c malloc(). The function is equivalent to Symbian's \c
+ User::LeaveIfNull.
+ \o \l QT_TRAP_THROWING() takes a Symbian leaving
+ code fragment f and runs it under a trap harness converting any resulting
+ error into an exception.
+ \o \c TRAP and \c TRAPD from the Symbian libraries can be used to convert
+ leaves to error codes.
+ \endlist
+
+ \code
+ HBufC* buf=0;
+ // this will throw a std::bad_alloc because we've asked for too much memory
+ QT_TRAP_THROWING(buf = HBufC::NewL(100000000));
+
+ _LIT(KStr,"abc");
+ TInt pos = KStr().Locate('c');
+ // pos is a good value, >= 0, so no exception is thrown
+ qt_symbian_throwIfError(pos);
+
+ pos = KStr().Locate('d');
+ // pos == KErrNotFound, so this throws an exception
+ qt_symbian_throwIfError(pos);
+
+ // we are asking for a lot of memory, HBufC::New may return NULL, so check it
+ HBufC *buffer = q_check_ptr(HBufC::New(1000000));
+ \endcode
+
+ \section2 Be careful with new and CBase
+
+ When writing Qt code, \c new will normally throw a \c std::bad_alloc if the
+ allocation fails. However this may not happen if the object being created
+ has its own \c {operator new}. For example, CBase and derived classes have
+ their own \c {operator new} which returns 0 and the \c {new(ELeave)}
+ overload for a leaving \c {operator new}, neither of which does what we want.
+ When using 2-phase construction of CBase derived objects, use \c new and
+ \l q_check_ptr().
+
+ \oldcode
+ CFbsBitmap* fbsBitmap = new(ELeave) CFbsBitmap;
+ \newcode
+ CFbsBitmap* fbsBitmap = q_check_ptr(new CFbsBitmap);
+ \endcode
+
+ \section1 Qt called from Symbian
+
+ When Qt code is called from Symbian, we want to translate standard C++
+ exceptions to Symbian leaves or error codes. The following help is
+ provided:
+
+ \list
+ \o \l qt_symbian_exception2Error() -
+ this takes a standard exception and gives an appropriate Symbian
+ error code. If no mapping is known for the exception type,
+ \c KErrGeneral is returned.
+ \o \l qt_symbian_exception2LeaveL() -
+ this takes a standard exception and generates an appropriate Symbian
+ leave.
+ \o \l QT_TRYCATCH_ERROR() - this macro
+ takes the standard C++ code fragment \c f, catches any std::exceptions
+ thrown from it, and sets err to the corresponding Symbian error code.
+ err is set to \c KErrNone otherwise.
+ \o \l QT_TRYCATCH_LEAVING() - this macro takes the
+ standard C++ code fragment \c f, catches any std::exceptions thrown from
+ it, and throws a corresponding Symbian leave.
+ \endlist
+
+ \code
+ TInt DoTickL() // called from an active object RunL, ie Symbian leaves expected
+ {
+ // without the translation to Symbian Leave, we get a USER:0 panic
+ QT_TRYCATCH_LEAVING({
+ int* x = new int[100000000]; // compiled as Qt code, will throw std::bad_alloc
+ delete [] x;
+ });
+ return 0;
+ }
+ \endcode
+
+ \section1 Common sense things
+
+ Try to minimise the interleaving of Symbian and Qt code, every switch
+ requires a barrier. Grouping the code styles in different blocks will
+ minimise the problems. For instance, examine the following code.
+
+ \code
+ 1. TRAPD(err, m_playUtility = CMdaAudioPlayerUtility::NewL(*this);
+ 2. QString filepath = QFileInfo( m_sound->fileName() ).absoluteFilePath();
+ 3. filepath = QDir::toNativeSeparators(filepath);
+ 4. m_playUtility->OpenFileL(qt_QString2TPtrC(filepath)));
+ \endcode
+
+ Line 1 starts a Symbian leave handling block, which is good because it
+ also uses a Symbian leave generating function.
+
+ Line 2 creates a \l QString, uses \l QFileInfo and various member functions.
+ These could all throw exceptions, which is not good inside a \c TRAP block.
+
+ Line 3 is unclear as to whether it might throw an exception, but since
+ it's dealing with strings it probably does, again bad.
+
+ Line 4 is tricky, it calls a leaving function which is ok within a \c TRAP,
+ but it also uses a helper function to convert string types. In this case
+ the helper function may cause an unwelcome exception.
+
+ We could rewrite this with nested exception translations, but it's much
+ easier to refactor it.
+
+ \code
+ QString filepath = QFileInfo( m_sound->fileName() ).absoluteFilePath();
+ filepath = QDir::toNativeSeparators(filepath);
+ TPtrC filepathPtr(qt_QString2TPtrC(filepath));
+ TRAPD(err, m_playUtility = CMdaAudioPlayerUtility::NewL(*this);
+ m_playUtility->OpenFileL(filepathPtr));
+ \endcode
+
+ Now the exception generating functions are separated from the leaving
+ functions.
+
+ \section1 Advanced technique
+ When using Symbian APIs in Qt code, you may find that Symbian leaving
+ code and Qt exception throwing code are just too mixed up to have
+ them interoperate through barriers. In some circumstances you can allow
+ code to both leave and throw exceptions. But you must be aware of the
+ following issues:
+
+ \list
+ \o Depending on whether a leave or exception is thrown, or a normal
+ exit happens, the cleanup order will vary. If the code leaves,
+ cleanup stack cleanup will happen first. On an exception however,
+ cleanup stack cleanup will happen last.
+ \o There must not be any destructor dependencies between different
+ code styles. That is, you must not have symbian objects using Qt
+ objects in their destructors, and vice versa. This is because the
+ cleanup order varies, and may result in objects being used after
+ they are deleted.
+ \o The cleanup stack must not refer to any stack based object. For
+ instance, in Symbian you may use \c CleanupClosePushL() to push
+ stack based R-classes onto the cleanup stack. However if the
+ stack has unwound due to an exception before the cleanup stack
+ cleanup happens, stack based objects will now be invalid.
+ Instead of using the cleanup stack, consider Symbian's new
+ \c LManagedHandle<> (or a custom cleanup object) to tie R-class
+ cleanup to the stack.
+ \o Mixed throwing code must be called within both a TRAP and a
+ try/catch harness. Standard exceptions must not propagate to
+ the TRAP and cleanup stack cleanup will only happen if a leave
+ is thrown, so the correct pattern is either \c {TRAPD(err,
+ QT_TRYCATCH_LEAVING( f ));} or \c {QT_TRAP_THROWING(
+ QT_TRYCATCH_LEAVING( f ));}, depending if you want an error
+ code or exception as a result.
+ \endlist
+*/
diff --git a/examples/activeqt/activeqt.pro b/examples/activeqt/activeqt.pro
index 262e1a1..1cd05f6 100644
--- a/examples/activeqt/activeqt.pro
+++ b/examples/activeqt/activeqt.pro
@@ -18,3 +18,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/activeqt
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS activeqt.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/activeqt
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/activeqt/comapp/comapp.pro b/examples/activeqt/comapp/comapp.pro
index 84ce072..29aebae 100644
--- a/examples/activeqt/comapp/comapp.pro
+++ b/examples/activeqt/comapp/comapp.pro
@@ -11,3 +11,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/activeqt/comapp
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS comapp.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/activeqt/comapp
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/activeqt/hierarchy/hierarchy.pro b/examples/activeqt/hierarchy/hierarchy.pro
index abe5f1b..d0ebbcd 100644
--- a/examples/activeqt/hierarchy/hierarchy.pro
+++ b/examples/activeqt/hierarchy/hierarchy.pro
@@ -14,3 +14,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/activeqt/hierarchy
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS hierarchy.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/activeqt/hierarchy
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/activeqt/menus/menus.pro b/examples/activeqt/menus/menus.pro
index c962b6b..8963bad 100644
--- a/examples/activeqt/menus/menus.pro
+++ b/examples/activeqt/menus/menus.pro
@@ -12,3 +12,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/activeqt/menus
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS menus.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/activeqt/menus
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/activeqt/multiple/multiple.pro b/examples/activeqt/multiple/multiple.pro
index 7b86950..97acc9a 100644
--- a/examples/activeqt/multiple/multiple.pro
+++ b/examples/activeqt/multiple/multiple.pro
@@ -14,3 +14,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/activeqt/multiple
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS multiple.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/activeqt/multiple
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/activeqt/opengl/opengl.pro b/examples/activeqt/opengl/opengl.pro
index 8eb81be..4979dc0 100644
--- a/examples/activeqt/opengl/opengl.pro
+++ b/examples/activeqt/opengl/opengl.pro
@@ -17,3 +17,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/activeqt/opengl
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS opengl.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/activeqt/opengl
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/activeqt/qutlook/qutlook.pro b/examples/activeqt/qutlook/qutlook.pro
index c1154e0..0387735 100644
--- a/examples/activeqt/qutlook/qutlook.pro
+++ b/examples/activeqt/qutlook/qutlook.pro
@@ -21,3 +21,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/activeqt/qutlook
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS qutlook.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/activeqt/qutlook
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/activeqt/simple/simple.pro b/examples/activeqt/simple/simple.pro
index d0f2019..4d8480e 100644
--- a/examples/activeqt/simple/simple.pro
+++ b/examples/activeqt/simple/simple.pro
@@ -11,3 +11,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/activeqt/simple
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS simple.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/activeqt/simple
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/activeqt/webbrowser/webbrowser.pro b/examples/activeqt/webbrowser/webbrowser.pro
index 32eac71..c3e6e1e 100644
--- a/examples/activeqt/webbrowser/webbrowser.pro
+++ b/examples/activeqt/webbrowser/webbrowser.pro
@@ -15,3 +15,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/activeqt/webbrowser
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS webbrowser.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/activeqt/webbrowser
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/activeqt/wrapper/wrapper.pro b/examples/activeqt/wrapper/wrapper.pro
index 4eb6baf..e109dba 100644
--- a/examples/activeqt/wrapper/wrapper.pro
+++ b/examples/activeqt/wrapper/wrapper.pro
@@ -13,3 +13,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/activeqt/wrapper
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS wrapper.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/activeqt/wrapper
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/assistant/assistant.pro b/examples/assistant/assistant.pro
index 1477178..b724bcb 100644
--- a/examples/assistant/assistant.pro
+++ b/examples/assistant/assistant.pro
@@ -6,3 +6,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/assistant
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS assistant.pro README
sources.path = $$[QT_INSTALL_EXAMPLES]/assistant
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/assistant/simpletextviewer/simpletextviewer.pro b/examples/assistant/simpletextviewer/simpletextviewer.pro
index 4b66edb..4bbdaf1 100644
--- a/examples/assistant/simpletextviewer/simpletextviewer.pro
+++ b/examples/assistant/simpletextviewer/simpletextviewer.pro
@@ -14,3 +14,5 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES documentation *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/assistant/simpletextviewer
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
diff --git a/examples/dbus/complexpingpong/complexping.pro b/examples/dbus/complexpingpong/complexping.pro
index 4b37b03..7c46533 100644
--- a/examples/dbus/complexpingpong/complexping.pro
+++ b/examples/dbus/complexpingpong/complexping.pro
@@ -14,3 +14,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/dbus/complexpingpong
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/dbus/complexpingpong
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/dbus/complexpingpong/complexpong.pro b/examples/dbus/complexpingpong/complexpong.pro
index e62fb85..b4d4d1a 100644
--- a/examples/dbus/complexpingpong/complexpong.pro
+++ b/examples/dbus/complexpingpong/complexpong.pro
@@ -14,3 +14,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/dbus/complexpingpong
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/dbus/complexpingpong
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/dbus/dbus-chat/dbus-chat.pro b/examples/dbus/dbus-chat/dbus-chat.pro
index a094048..e04c641 100644
--- a/examples/dbus/dbus-chat/dbus-chat.pro
+++ b/examples/dbus/dbus-chat/dbus-chat.pro
@@ -17,3 +17,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/dbus/chat
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro *.xml
sources.path = $$[QT_INSTALL_EXAMPLES]/dbus/chat
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/dbus/dbus.pro b/examples/dbus/dbus.pro
index 36bdc1a..e4a4f70 100644
--- a/examples/dbus/dbus.pro
+++ b/examples/dbus/dbus.pro
@@ -10,3 +10,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/dbus
sources.files = *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/dbus
INSTALLS += sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/dbus/listnames/listnames.pro b/examples/dbus/listnames/listnames.pro
index e2096a7..b8a648e 100644
--- a/examples/dbus/listnames/listnames.pro
+++ b/examples/dbus/listnames/listnames.pro
@@ -15,3 +15,5 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/dbus/listnames
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
diff --git a/examples/dbus/pingpong/ping.pro b/examples/dbus/pingpong/ping.pro
index 5e5f07a..e28060f 100644
--- a/examples/dbus/pingpong/ping.pro
+++ b/examples/dbus/pingpong/ping.pro
@@ -14,3 +14,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/dbus/pingpong
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/dbus/pingpong
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/dbus/pingpong/pong.pro b/examples/dbus/pingpong/pong.pro
index f377a71..ed06d22 100644
--- a/examples/dbus/pingpong/pong.pro
+++ b/examples/dbus/pingpong/pong.pro
@@ -14,3 +14,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/dbus/pingpong
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/dbus/pingpong
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/dbus/remotecontrolledcar/car/car.pro b/examples/dbus/remotecontrolledcar/car/car.pro
index d4a97fa..600c3f2 100644
--- a/examples/dbus/remotecontrolledcar/car/car.pro
+++ b/examples/dbus/remotecontrolledcar/car/car.pro
@@ -18,3 +18,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/dbus/remotecontrolledcar/car
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.xml
sources.path = $$[QT_INSTALL_EXAMPLES]/dbus/remotecontrolledcar/car
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/dbus/remotecontrolledcar/controller/controller.pro b/examples/dbus/remotecontrolledcar/controller/controller.pro
index 3015127..b31d418 100644
--- a/examples/dbus/remotecontrolledcar/controller/controller.pro
+++ b/examples/dbus/remotecontrolledcar/controller/controller.pro
@@ -19,3 +19,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/dbus/remotecontrolledcar/controller
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro *.xml
sources.path = $$[QT_INSTALL_EXAMPLES]/dbus/remotecontrolledcar/controller
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/dbus/remotecontrolledcar/remotecontrolledcar.pro b/examples/dbus/remotecontrolledcar/remotecontrolledcar.pro
index 73bfa37..0df8e1f 100644
--- a/examples/dbus/remotecontrolledcar/remotecontrolledcar.pro
+++ b/examples/dbus/remotecontrolledcar/remotecontrolledcar.pro
@@ -6,3 +6,5 @@ SUBDIRS = car \
sources.files = *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/dbus/remotecontrolledcar
INSTALLS += sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/designer/calculatorbuilder/calculatorbuilder.pro b/examples/designer/calculatorbuilder/calculatorbuilder.pro
index 1d69cc8..e08220a 100644
--- a/examples/designer/calculatorbuilder/calculatorbuilder.pro
+++ b/examples/designer/calculatorbuilder/calculatorbuilder.pro
@@ -12,3 +12,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/designer/calculatorbuilder
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.ui *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/designer/calculatorbuilder
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/designer/calculatorform/calculatorform.pro b/examples/designer/calculatorform/calculatorform.pro
index 73f4351..5a133a9 100644
--- a/examples/designer/calculatorform/calculatorform.pro
+++ b/examples/designer/calculatorform/calculatorform.pro
@@ -11,3 +11,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/designer/calculatorform
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/designer/calculatorform
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/designer/containerextension/containerextension.pro b/examples/designer/containerextension/containerextension.pro
index 6a2cb58..9b2b8bc 100644
--- a/examples/designer/containerextension/containerextension.pro
+++ b/examples/designer/containerextension/containerextension.pro
@@ -24,3 +24,5 @@ target.path = $$[QT_INSTALL_PLUGINS]/designer
sources.files = $$SOURCES $$HEADERS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/designer/containerextension
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/designer/customwidgetplugin/customwidgetplugin.pro b/examples/designer/customwidgetplugin/customwidgetplugin.pro
index 4feee59..6cc376f 100644
--- a/examples/designer/customwidgetplugin/customwidgetplugin.pro
+++ b/examples/designer/customwidgetplugin/customwidgetplugin.pro
@@ -19,3 +19,5 @@ target.path = $$[QT_INSTALL_PLUGINS]/designer
sources.files = $$SOURCES $$HEADERS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/designer/customwidgetplugin
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/designer/designer.pro b/examples/designer/designer.pro
index 0f30421..b7eacc0 100644
--- a/examples/designer/designer.pro
+++ b/examples/designer/designer.pro
@@ -17,3 +17,5 @@ solaris-cc*:SUBDIRS -= calculatorbuilder \
sources.files = README *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/designer
INSTALLS += sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/designer/taskmenuextension/taskmenuextension.pro b/examples/designer/taskmenuextension/taskmenuextension.pro
index 83dd878..89c0c44 100644
--- a/examples/designer/taskmenuextension/taskmenuextension.pro
+++ b/examples/designer/taskmenuextension/taskmenuextension.pro
@@ -23,3 +23,5 @@ target.path = $$[QT_INSTALL_PLUGINS]/designer
sources.files = $$SOURCES $$HEADERS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/designer/taskmenuextension
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/designer/worldtimeclockbuilder/worldtimeclockbuilder.pro b/examples/designer/worldtimeclockbuilder/worldtimeclockbuilder.pro
index 2690921..0123fd1 100644
--- a/examples/designer/worldtimeclockbuilder/worldtimeclockbuilder.pro
+++ b/examples/designer/worldtimeclockbuilder/worldtimeclockbuilder.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/designer/worldtimeclockbuilder
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.ui *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/designer/worldtimeclockbuilder
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/designer/worldtimeclockplugin/worldtimeclockplugin.pro b/examples/designer/worldtimeclockplugin/worldtimeclockplugin.pro
index cd117dc..5eb133f 100644
--- a/examples/designer/worldtimeclockplugin/worldtimeclockplugin.pro
+++ b/examples/designer/worldtimeclockplugin/worldtimeclockplugin.pro
@@ -19,3 +19,5 @@ target.path = $$[QT_INSTALL_PLUGINS]/designer
sources.files = $$SOURCES $$HEADERS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/designer/worldtimeclockplugin
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/desktop/desktop.pro b/examples/desktop/desktop.pro
index b65f4f2..61108e5 100644
--- a/examples/desktop/desktop.pro
+++ b/examples/desktop/desktop.pro
@@ -2,10 +2,12 @@ TEMPLATE = subdirs
CONFIG += ordered
SUBDIRS = screenshot
-contains(QT_CONFIG, svg): SUBDIRS += systray
+!symbian:contains(QT_CONFIG, svg): SUBDIRS += systray
# install
target.path = $$[QT_INSTALL_EXAMPLES]/desktop
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS desktop.pro README
sources.path = $$[QT_INSTALL_EXAMPLES]/desktop
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/desktop/screenshot/screenshot.pro b/examples/desktop/screenshot/screenshot.pro
index 3ecbf8f..b610812 100644
--- a/examples/desktop/screenshot/screenshot.pro
+++ b/examples/desktop/screenshot/screenshot.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/desktop/screenshot
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS screenshot.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/desktop/screenshot
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/desktop/systray/systray.pro b/examples/desktop/systray/systray.pro
index c73a48e..3c08626 100644
--- a/examples/desktop/systray/systray.pro
+++ b/examples/desktop/systray/systray.pro
@@ -10,6 +10,8 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS systray.pro resources im
sources.path = $$[QT_INSTALL_EXAMPLES]/desktop/systray
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
wince* {
CONFIG(debug, release|debug) {
addPlugins.sources = $$QT_BUILD_TREE/plugins/imageformats/qsvgd4.dll
diff --git a/examples/dialogs/classwizard/classwizard.pro b/examples/dialogs/classwizard/classwizard.pro
index 15b6029..0515a8a 100644
--- a/examples/dialogs/classwizard/classwizard.pro
+++ b/examples/dialogs/classwizard/classwizard.pro
@@ -8,3 +8,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/dialogs/classwizard
sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.pro images
sources.path = $$[QT_INSTALL_EXAMPLES]/dialogs/classwizard
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/dialogs/configdialog/configdialog.pro b/examples/dialogs/configdialog/configdialog.pro
index 344a394..5ef3810 100644
--- a/examples/dialogs/configdialog/configdialog.pro
+++ b/examples/dialogs/configdialog/configdialog.pro
@@ -10,5 +10,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/dialogs/configdialog
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro images
sources.path = $$[QT_INSTALL_EXAMPLES]/dialogs/configdialog
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
wince50standard-x86-msvc2005: LIBS += libcmt.lib corelibc.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib coredll.lib winsock.lib ws2.lib
diff --git a/examples/dialogs/dialogs.pro b/examples/dialogs/dialogs.pro
index b9f029a..6d0ed8d 100644
--- a/examples/dialogs/dialogs.pro
+++ b/examples/dialogs/dialogs.pro
@@ -5,7 +5,7 @@ SUBDIRS = classwizard \
tabdialog \
trivialwizard
-!wince*: SUBDIRS += licensewizard \
+!symbian:!wince*: SUBDIRS += licensewizard \
extension \
findfiles
@@ -15,3 +15,5 @@ wince*: SUBDIRS += sipdialog
sources.files = README *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/dialogs
INSTALLS += sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/dialogs/extension/extension.pro b/examples/dialogs/extension/extension.pro
index 3e56cb9..7f80f9c 100644
--- a/examples/dialogs/extension/extension.pro
+++ b/examples/dialogs/extension/extension.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/dialogs/extension
sources.files = $$SOURCES $$HEADERS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/dialogs/extension
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/dialogs/findfiles/findfiles.pro b/examples/dialogs/findfiles/findfiles.pro
index 99be394..6820c17 100644
--- a/examples/dialogs/findfiles/findfiles.pro
+++ b/examples/dialogs/findfiles/findfiles.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/dialogs/findfiles
sources.files = $$SOURCES $$HEADERS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/dialogs/findfiles
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/dialogs/licensewizard/licensewizard.pro b/examples/dialogs/licensewizard/licensewizard.pro
index fd5e37c..789dae0 100644
--- a/examples/dialogs/licensewizard/licensewizard.pro
+++ b/examples/dialogs/licensewizard/licensewizard.pro
@@ -8,3 +8,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/dialogs/licensewizard
sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.pro images
sources.path = $$[QT_INSTALL_EXAMPLES]/dialogs/licensewizard
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/dialogs/sipdialog/sipdialog.pro b/examples/dialogs/sipdialog/sipdialog.pro
index 69667eb..3d5503f 100644
--- a/examples/dialogs/sipdialog/sipdialog.pro
+++ b/examples/dialogs/sipdialog/sipdialog.pro
@@ -7,6 +7,8 @@ target.path = $$[QT_INSTALL_EXAMPLES]/dialogs/sipdialog
sources.files = $$SOURCES $$HEADERS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/dialogs/sipdialog
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
wince50standard-x86-msvc2005: LIBS += libcmt.lib corelibc.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib coredll.lib winsock.lib ws2.lib
diff --git a/examples/dialogs/standarddialogs/standarddialogs.pro b/examples/dialogs/standarddialogs/standarddialogs.pro
index 6bfa6bf..9b06e5c 100644
--- a/examples/dialogs/standarddialogs/standarddialogs.pro
+++ b/examples/dialogs/standarddialogs/standarddialogs.pro
@@ -7,5 +7,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/dialogs/standarddialogs
sources.files = $$SOURCES $$HEADERS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/dialogs/standarddialogs
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
wince50standard-x86-msvc2005: LIBS += libcmt.lib corelibc.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib coredll.lib winsock.lib ws2.lib
diff --git a/examples/dialogs/tabdialog/tabdialog.pro b/examples/dialogs/tabdialog/tabdialog.pro
index 3239a72..f3fa95d 100644
--- a/examples/dialogs/tabdialog/tabdialog.pro
+++ b/examples/dialogs/tabdialog/tabdialog.pro
@@ -7,4 +7,6 @@ target.path = $$[QT_INSTALL_EXAMPLES]/dialogs/tabdialog
sources.files = $$SOURCES $$HEADERS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/dialogs/tabdialog
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
wince50standard-x86-msvc2005: LIBS += libcmt.lib corelibc.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib coredll.lib winsock.lib ws2.lib
diff --git a/examples/dialogs/trivialwizard/trivialwizard.pro b/examples/dialogs/trivialwizard/trivialwizard.pro
index 970e12f..27bb8d9 100644
--- a/examples/dialogs/trivialwizard/trivialwizard.pro
+++ b/examples/dialogs/trivialwizard/trivialwizard.pro
@@ -5,3 +5,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/dialogs/trivialwizard
sources.files = $$SOURCES $$HEADERS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/dialogs/trivialwizard
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/draganddrop/delayedencoding/delayedencoding.pro b/examples/draganddrop/delayedencoding/delayedencoding.pro
index c7b95b6..7315ac5 100644
--- a/examples/draganddrop/delayedencoding/delayedencoding.pro
+++ b/examples/draganddrop/delayedencoding/delayedencoding.pro
@@ -12,3 +12,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/draganddrop/delayedencoding
sources.files = $$SOURCES $$HEADERS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/itemviews/delayedencoding
INSTALLS += target sources
+
+symbian:TARGET.UID3 = 0xA000C614 \ No newline at end of file
diff --git a/examples/draganddrop/draganddrop.pro b/examples/draganddrop/draganddrop.pro
index 0cd881a..fa857db 100644
--- a/examples/draganddrop/draganddrop.pro
+++ b/examples/draganddrop/draganddrop.pro
@@ -8,7 +8,7 @@ SUBDIRS = draggableicons \
contains(QT_CONFIG, svg): SUBDIRS += delayedencoding
wince*: SUBDIRS -= dropsite
-
+symbian: SUBDIRS -= dropsite
# install
sources.files = README *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/draganddrop
diff --git a/examples/draganddrop/draggableicons/draggableicons.pro b/examples/draganddrop/draggableicons/draggableicons.pro
index 74cfda9..6d53baa 100644
--- a/examples/draganddrop/draggableicons/draggableicons.pro
+++ b/examples/draganddrop/draggableicons/draggableicons.pro
@@ -8,3 +8,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/draganddrop/draggableicons
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro images
sources.path = $$[QT_INSTALL_EXAMPLES]/draganddrop/draggableicons
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000C615 \ No newline at end of file
diff --git a/examples/draganddrop/draggabletext/draggabletext.pro b/examples/draganddrop/draggabletext/draggabletext.pro
index 07c7c24..15d909d 100644
--- a/examples/draganddrop/draggabletext/draggabletext.pro
+++ b/examples/draganddrop/draggabletext/draggabletext.pro
@@ -10,3 +10,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/draganddrop/draggabletext
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.txt *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/draganddrop/draggabletext
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000CF64 \ No newline at end of file
diff --git a/examples/draganddrop/dropsite/dropsite.pro b/examples/draganddrop/dropsite/dropsite.pro
index 29dd0fd..a42f717 100644
--- a/examples/draganddrop/dropsite/dropsite.pro
+++ b/examples/draganddrop/dropsite/dropsite.pro
@@ -10,3 +10,4 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro images
sources.path = $$[QT_INSTALL_EXAMPLES]/draganddrop/dropsite
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/draganddrop/fridgemagnets/dragwidget.cpp b/examples/draganddrop/fridgemagnets/dragwidget.cpp
index fb61559..b90562e 100644
--- a/examples/draganddrop/fridgemagnets/dragwidget.cpp
+++ b/examples/draganddrop/fridgemagnets/dragwidget.cpp
@@ -75,9 +75,12 @@ DragWidget::DragWidget(QWidget *parent)
//! [1]
//! [2]
+ #ifndef Q_WS_S60
+ //Fridge magnets is used for demoing Qt on S60 and themed backgrounds look better than white
QPalette newPalette = palette();
newPalette.setColor(QPalette::Window, Qt::white);
setPalette(newPalette);
+ #endif
setMinimumSize(400, qMax(200, y));
setWindowTitle(tr("Fridge Magnets"));
diff --git a/examples/draganddrop/fridgemagnets/fridgemagnets.pro b/examples/draganddrop/fridgemagnets/fridgemagnets.pro
index f1baaef..b452746 100644
--- a/examples/draganddrop/fridgemagnets/fridgemagnets.pro
+++ b/examples/draganddrop/fridgemagnets/fridgemagnets.pro
@@ -10,3 +10,6 @@ target.path = $$[QT_INSTALL_EXAMPLES]/draganddrop/fridgemagnets
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.txt
sources.path = $$[QT_INSTALL_EXAMPLES]/draganddrop/fridgemagnets
INSTALLS += target sources
+TARGET.UID3 = 0xA000C610
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/draganddrop/fridgemagnets/main.cpp b/examples/draganddrop/fridgemagnets/main.cpp
index 6c0cd45..de4a7dd 100644
--- a/examples/draganddrop/fridgemagnets/main.cpp
+++ b/examples/draganddrop/fridgemagnets/main.cpp
@@ -45,9 +45,16 @@
int main(int argc, char *argv[])
{
Q_INIT_RESOURCE(fridgemagnets);
+ bool smallScreen = false;
+ for (int i=0; i<argc; i++)
+ if (QString(argv[i]) == "-small-screen")
+ smallScreen = true;
QApplication app(argc, argv);
DragWidget window;
- window.show();
+ if (smallScreen)
+ window.showFullScreen();
+ else
+ window.show();
return app.exec();
}
diff --git a/examples/draganddrop/puzzle/puzzle.pro b/examples/draganddrop/puzzle/puzzle.pro
index 26d2350..ecaf706 100644
--- a/examples/draganddrop/puzzle/puzzle.pro
+++ b/examples/draganddrop/puzzle/puzzle.pro
@@ -13,6 +13,14 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.jpg
sources.path = $$[QT_INSTALL_EXAMPLES]/draganddrop/puzzle
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:{
+ addFile.sources = example.jpg
+ addFile.path = .
+ DEPLOYMENT += addFile
+ TARGET.UID3 = 0xA000CF65
+}
wince*: {
addFile.sources = example.jpg
addFile.path = .
diff --git a/examples/examplebase.pri b/examples/examplebase.pri
new file mode 100644
index 0000000..9f24232
--- /dev/null
+++ b/examples/examplebase.pri
@@ -0,0 +1,12 @@
+symbian {
+ RSS_RULES ="group_name=\"QtExamples\";"
+
+ vendorinfo = \
+ "; Localised Vendor name" \
+ "%{\"Nokia, Qt\"}" \
+ " " \
+ "; Unique Vendor name" \
+ ":\"Nokia, Qt\"" \
+ " "
+ default_deployment.pkg_prerules += vendorinfo
+}
diff --git a/examples/examples.pro b/examples/examples.pro
index c334fd5..4aa5576 100644
--- a/examples/examples.pro
+++ b/examples/examples.pro
@@ -25,12 +25,25 @@ SUBDIRS = \
multitouch \
gestures
+symbian: SUBDIRS = \
+ graphicsview \
+ itemviews \
+ network \
+ painting \
+ widgets \
+ draganddrop \
+ mainwindows \
+ script \
+ sql \
+ uitools \
+ xml
+
contains(QT_CONFIG, script): SUBDIRS += script
contains(QT_CONFIG, multimedia):!static: SUBDIRS += multimedia
contains(QT_CONFIG, phonon):!static: SUBDIRS += phonon
contains(QT_CONFIG, webkit): SUBDIRS += webkit
embedded:SUBDIRS += qws
-!wince*: {
+!wince*:!symbian: {
!contains(QT_EDITION, Console):contains(QT_BUILD_PARTS, tools):SUBDIRS += designer
contains(QT_BUILD_PARTS, tools):SUBDIRS += assistant qtestlib help
} else {
@@ -47,3 +60,5 @@ contains(DEFINES, QT_NO_CURSOR): SUBDIRS -= mainwindows
sources.files = README *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]
INSTALLS += sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/graphicsview/basicgraphicslayouts/basicgraphicslayouts.pro b/examples/graphicsview/basicgraphicslayouts/basicgraphicslayouts.pro
index a166882..956f5c2 100644
--- a/examples/graphicsview/basicgraphicslayouts/basicgraphicslayouts.pro
+++ b/examples/graphicsview/basicgraphicslayouts/basicgraphicslayouts.pro
@@ -10,3 +10,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/basicgraphicslayouts
sources.files = $$SOURCES $$HEADERS $$RESOURCES basicgraphicslayouts.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/basicgraphicslayouts
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000A645 \ No newline at end of file
diff --git a/examples/graphicsview/collidingmice/collidingmice.pro b/examples/graphicsview/collidingmice/collidingmice.pro
index 77543b5..a434efc 100644
--- a/examples/graphicsview/collidingmice/collidingmice.pro
+++ b/examples/graphicsview/collidingmice/collidingmice.pro
@@ -12,3 +12,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/collidingmice
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS collidingmice.pro images
sources.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/collidingmice
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000A643 \ No newline at end of file
diff --git a/examples/graphicsview/diagramscene/diagramscene.pro b/examples/graphicsview/diagramscene/diagramscene.pro
index fe261bd..9e90e0d 100644
--- a/examples/graphicsview/diagramscene/diagramscene.pro
+++ b/examples/graphicsview/diagramscene/diagramscene.pro
@@ -18,3 +18,5 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS diagramscene.pro images
sources.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/diagramscene
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
diff --git a/examples/graphicsview/dragdroprobot/dragdroprobot.pro b/examples/graphicsview/dragdroprobot/dragdroprobot.pro
index 769e54a..756a9c8 100644
--- a/examples/graphicsview/dragdroprobot/dragdroprobot.pro
+++ b/examples/graphicsview/dragdroprobot/dragdroprobot.pro
@@ -16,3 +16,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/dragdroprobot
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS dragdroprobot.pro images
sources.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/dragdroprobot
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/graphicsview/elasticnodes/elasticnodes.pro b/examples/graphicsview/elasticnodes/elasticnodes.pro
index 77ca706..800eaae 100644
--- a/examples/graphicsview/elasticnodes/elasticnodes.pro
+++ b/examples/graphicsview/elasticnodes/elasticnodes.pro
@@ -9,8 +9,14 @@ SOURCES += \
node.cpp \
graphwidget.cpp
+TARGET.EPOCHEAPSIZE = 0x200000 0xA00000
+
# install
target.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/elasticnodes
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS elasticnodes.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/elasticnodes
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000A642 \ No newline at end of file
diff --git a/examples/graphicsview/graphicsview.pro b/examples/graphicsview/graphicsview.pro
index 7238995..95f66b7 100644
--- a/examples/graphicsview/graphicsview.pro
+++ b/examples/graphicsview/graphicsview.pro
@@ -1,19 +1,22 @@
-TEMPLATE = \
- subdirs
+TEMPLATE = subdirs
SUBDIRS = \
elasticnodes \
collidingmice \
+ padnavigator \
+ basicgraphicslayouts
+
+!symbian: SUBDIRS += \
diagramscene \
dragdroprobot \
- padnavigator \
- basicgraphicslayouts \
anchorlayout
contains(QT_CONFIG, qt3support):SUBDIRS += portedcanvas portedasteroids
-contains(DEFINES, QT_NO_CURSOR): SUBDIRS -= dragdroprobot
+contains(DEFINES, QT_NO_CURSOR)|contains(DEFINES, QT_NO_DRAGANDDROP): SUBDIRS -= dragdroprobot
# install
target.path = $$[QT_INSTALL_EXAMPLES]/graphicsview
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS graphicsview.pro README
sources.path = $$[QT_INSTALL_EXAMPLES]/graphicsview
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/graphicsview/padnavigator/main.cpp b/examples/graphicsview/padnavigator/main.cpp
index f8af27e..5fca336 100644
--- a/examples/graphicsview/padnavigator/main.cpp
+++ b/examples/graphicsview/padnavigator/main.cpp
@@ -53,7 +53,7 @@ int main(int argc, char *argv[])
Panel panel(3, 3);
panel.setFocus();
- panel.show();
+ panel.showFullScreen();
return app.exec();
}
diff --git a/examples/graphicsview/padnavigator/padnavigator.pro b/examples/graphicsview/padnavigator/padnavigator.pro
index 0d094c6..7fa8507 100644
--- a/examples/graphicsview/padnavigator/padnavigator.pro
+++ b/examples/graphicsview/padnavigator/padnavigator.pro
@@ -22,3 +22,8 @@ target.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/padnavigator
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS padnavigator.pro images
sources.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/padnavigator
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+CONFIG += console
+
+symbian:TARGET.UID3 = 0xA000A644 \ No newline at end of file
diff --git a/examples/graphicsview/padnavigator/panel.h b/examples/graphicsview/padnavigator/panel.h
index 4db9b06..d322e41 100644
--- a/examples/graphicsview/padnavigator/panel.h
+++ b/examples/graphicsview/padnavigator/panel.h
@@ -44,7 +44,7 @@
QT_BEGIN_NAMESPACE
class QTimeLine;
class Ui_BackSide;
-QT_END_NAMESPACE;
+QT_END_NAMESPACE
class RoundRectItem;
diff --git a/examples/graphicsview/padnavigator/roundrectitem.h b/examples/graphicsview/padnavigator/roundrectitem.h
index e3f7893..770a16f 100644
--- a/examples/graphicsview/padnavigator/roundrectitem.h
+++ b/examples/graphicsview/padnavigator/roundrectitem.h
@@ -46,7 +46,7 @@
QT_BEGIN_NAMESPACE
class QGraphicsProxyWidget;
-QT_END_NAMESPACE;
+QT_END_NAMESPACE
class RoundRectItem : public QObject, public QGraphicsRectItem
{
diff --git a/examples/graphicsview/portedasteroids/portedasteroids.pro b/examples/graphicsview/portedasteroids/portedasteroids.pro
index 1452e91..99dc042 100644
--- a/examples/graphicsview/portedasteroids/portedasteroids.pro
+++ b/examples/graphicsview/portedasteroids/portedasteroids.pro
@@ -17,3 +17,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/portedasteroids
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS portedasteroids.pro bg.png sounds sprites
sources.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/portedasteroids
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/graphicsview/portedcanvas/portedcanvas.pro b/examples/graphicsview/portedcanvas/portedcanvas.pro
index 71e3d84..7c3946b 100644
--- a/examples/graphicsview/portedcanvas/portedcanvas.pro
+++ b/examples/graphicsview/portedcanvas/portedcanvas.pro
@@ -14,3 +14,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/portedcanvas
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS portedcanvas.pro *.png *.xpm *.doc
sources.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/portedcanvas
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/help/contextsensitivehelp/contextsensitivehelp.pro b/examples/help/contextsensitivehelp/contextsensitivehelp.pro
index 5a8c0b1..03a26fa 100644
--- a/examples/help/contextsensitivehelp/contextsensitivehelp.pro
+++ b/examples/help/contextsensitivehelp/contextsensitivehelp.pro
@@ -16,3 +16,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/help/contextsensitivehelp
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro *.png *.doc doc
sources.path = $$[QT_INSTALL_EXAMPLES]/help/contextsensitivehelp
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/help/help.pro b/examples/help/help.pro
index 1ce6322..293e511 100644
--- a/examples/help/help.pro
+++ b/examples/help/help.pro
@@ -9,3 +9,5 @@ SUBDIRS += contextsensitivehelp \
sources.files = README *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/help
INSTALLS += sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/help/remotecontrol/remotecontrol.pro b/examples/help/remotecontrol/remotecontrol.pro
index 05fc14c..e97af6d 100644
--- a/examples/help/remotecontrol/remotecontrol.pro
+++ b/examples/help/remotecontrol/remotecontrol.pro
@@ -11,3 +11,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/help/remotecontrol
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro *.png *.doc doc
sources.path = $$[QT_INSTALL_EXAMPLES]/help/remotecontrol
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/help/simpletextviewer/simpletextviewer.pro b/examples/help/simpletextviewer/simpletextviewer.pro
index e9e7ea2..a8504e1 100644
--- a/examples/help/simpletextviewer/simpletextviewer.pro
+++ b/examples/help/simpletextviewer/simpletextviewer.pro
@@ -14,3 +14,5 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES documentation *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/help/simpletextviewer
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
diff --git a/examples/ipc/ipc.pro b/examples/ipc/ipc.pro
index 9098936..e70fc38 100644
--- a/examples/ipc/ipc.pro
+++ b/examples/ipc/ipc.pro
@@ -7,3 +7,5 @@ TEMPLATE = subdirs
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS ipc.pro README
sources.path = $$[QT_INSTALL_EXAMPLES]/ipc
INSTALLS += sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/ipc/localfortuneclient/localfortuneclient.pro b/examples/ipc/localfortuneclient/localfortuneclient.pro
index 906cc8a..a394169 100644
--- a/examples/ipc/localfortuneclient/localfortuneclient.pro
+++ b/examples/ipc/localfortuneclient/localfortuneclient.pro
@@ -9,4 +9,6 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS localfortuneclient.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/ipc/localfortuneclient
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
diff --git a/examples/ipc/localfortuneserver/localfortuneserver.pro b/examples/ipc/localfortuneserver/localfortuneserver.pro
index fca9a0a..db20791 100644
--- a/examples/ipc/localfortuneserver/localfortuneserver.pro
+++ b/examples/ipc/localfortuneserver/localfortuneserver.pro
@@ -9,4 +9,6 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS localfortuneserver.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/ipc/localfortuneserver
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
diff --git a/examples/ipc/sharedmemory/sharedmemory.pro b/examples/ipc/sharedmemory/sharedmemory.pro
index 4833090..4dad1d1 100644
--- a/examples/ipc/sharedmemory/sharedmemory.pro
+++ b/examples/ipc/sharedmemory/sharedmemory.pro
@@ -11,3 +11,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/ipc/sharedmemory
sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.pro *.png
sources.path = $$[QT_INSTALL_EXAMPLES]/ipc/sharedmemory
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/itemviews/addressbook/addressbook.pro b/examples/itemviews/addressbook/addressbook.pro
index 6f6a72d..a03e3b6 100644
--- a/examples/itemviews/addressbook/addressbook.pro
+++ b/examples/itemviews/addressbook/addressbook.pro
@@ -15,3 +15,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/itemviews/addressbook
sources.files = $$SOURCES $$HEADERS $$RESOURCES addressbook.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/itemviews/addressbook
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000A646 \ No newline at end of file
diff --git a/examples/itemviews/basicsortfiltermodel/basicsortfiltermodel.pro b/examples/itemviews/basicsortfiltermodel/basicsortfiltermodel.pro
index 7870b39..a2c8751 100644
--- a/examples/itemviews/basicsortfiltermodel/basicsortfiltermodel.pro
+++ b/examples/itemviews/basicsortfiltermodel/basicsortfiltermodel.pro
@@ -8,3 +8,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/itemviews/basicsortfiltermodel
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/itemviews/basicsortfiltermodel
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/itemviews/chart/chart.pro b/examples/itemviews/chart/chart.pro
index 7a9d197..3290170 100644
--- a/examples/itemviews/chart/chart.pro
+++ b/examples/itemviews/chart/chart.pro
@@ -4,10 +4,16 @@ RESOURCES = chart.qrc
SOURCES = main.cpp \
mainwindow.cpp \
pieview.cpp
-unix:!mac:!vxworks:LIBS+= -lm
+unix:!mac:!symbian:!vxworks:LIBS+= -lm
+
+TARGET.EPOCHEAPSIZE = 0x200000 0x800000
# install
target.path = $$[QT_INSTALL_EXAMPLES]/itemviews/chart
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.cht
sources.path = $$[QT_INSTALL_EXAMPLES]/itemviews/chart
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000A647
diff --git a/examples/itemviews/coloreditorfactory/coloreditorfactory.pro b/examples/itemviews/coloreditorfactory/coloreditorfactory.pro
index ebb3b8e..f668e6a 100644
--- a/examples/itemviews/coloreditorfactory/coloreditorfactory.pro
+++ b/examples/itemviews/coloreditorfactory/coloreditorfactory.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/itemviews/coloreditorfactory
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/itemviews/coloreditorfactory
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/itemviews/customsortfiltermodel/customsortfiltermodel.pro b/examples/itemviews/customsortfiltermodel/customsortfiltermodel.pro
index 5a9b9f9..091cd9d 100644
--- a/examples/itemviews/customsortfiltermodel/customsortfiltermodel.pro
+++ b/examples/itemviews/customsortfiltermodel/customsortfiltermodel.pro
@@ -10,3 +10,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/itemviews/customsortfiltermodel
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/itemviews/customsortfiltermodel
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/itemviews/dirview/dirview.pro b/examples/itemviews/dirview/dirview.pro
index 5865d3c..77290a8 100644
--- a/examples/itemviews/dirview/dirview.pro
+++ b/examples/itemviews/dirview/dirview.pro
@@ -5,3 +5,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/itemviews/dirview
sources.files = $$SOURCES *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/itemviews/dirview
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/itemviews/editabletreemodel/editabletreemodel.pro b/examples/itemviews/editabletreemodel/editabletreemodel.pro
index 2b7b7de..4213cd7 100644
--- a/examples/itemviews/editabletreemodel/editabletreemodel.pro
+++ b/examples/itemviews/editabletreemodel/editabletreemodel.pro
@@ -14,3 +14,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/itemviews/editabletreemodel
sources.files = $$FORMS $$HEADERS $$RESOURCES $$SOURCES *.pro *.txt
sources.path = $$[QT_INSTALL_EXAMPLES]/itemviews/editabletreemodel
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/itemviews/itemviews.pro b/examples/itemviews/itemviews.pro
index 7dcf0f6..253549f 100644
--- a/examples/itemviews/itemviews.pro
+++ b/examples/itemviews/itemviews.pro
@@ -17,7 +17,13 @@ SUBDIRS = addressbook \
spinboxdelegate \
stardelegate
+symbian: SUBDIRS = \
+ addressbook \
+ chart
+
# install
sources.files = README *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/itemviews
INSTALLS += sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/itemviews/pixelator/pixelator.pro b/examples/itemviews/pixelator/pixelator.pro
index dc05296..8a139d4 100644
--- a/examples/itemviews/pixelator/pixelator.pro
+++ b/examples/itemviews/pixelator/pixelator.pro
@@ -12,3 +12,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/itemviews/pixelator
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro images
sources.path = $$[QT_INSTALL_EXAMPLES]/itemviews/pixelator
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/itemviews/puzzle/puzzle.pro b/examples/itemviews/puzzle/puzzle.pro
index 4f5aaad..de17a69 100644
--- a/examples/itemviews/puzzle/puzzle.pro
+++ b/examples/itemviews/puzzle/puzzle.pro
@@ -13,6 +13,8 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.jpg
sources.path = $$[QT_INSTALL_EXAMPLES]/itemviews/puzzle
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
wince* {
DEPLOYMENT_PLUGIN += qjpeg qgif qtiff
}
diff --git a/examples/itemviews/simpledommodel/simpledommodel.pro b/examples/itemviews/simpledommodel/simpledommodel.pro
index bc9b1ca..cc7b4de 100644
--- a/examples/itemviews/simpledommodel/simpledommodel.pro
+++ b/examples/itemviews/simpledommodel/simpledommodel.pro
@@ -13,3 +13,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/itemviews/simpledommodel
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/itemviews/simpledommodel
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/itemviews/simpletreemodel/simpletreemodel.pro b/examples/itemviews/simpletreemodel/simpletreemodel.pro
index 9db74d4..b1dd37a 100644
--- a/examples/itemviews/simpletreemodel/simpletreemodel.pro
+++ b/examples/itemviews/simpletreemodel/simpletreemodel.pro
@@ -11,3 +11,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/itemviews/simpletreemodel
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.txt
sources.path = $$[QT_INSTALL_EXAMPLES]/itemviews/simpletreemodel
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/itemviews/simplewidgetmapper/simplewidgetmapper.pro b/examples/itemviews/simplewidgetmapper/simplewidgetmapper.pro
index b2940d7..8bbfef9 100644
--- a/examples/itemviews/simplewidgetmapper/simplewidgetmapper.pro
+++ b/examples/itemviews/simplewidgetmapper/simplewidgetmapper.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/itemviews/simplewidgetmapper
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/itemviews/simplewidgetmapper
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/itemviews/spinboxdelegate/spinboxdelegate.pro b/examples/itemviews/spinboxdelegate/spinboxdelegate.pro
index a202748..31b55d4 100644
--- a/examples/itemviews/spinboxdelegate/spinboxdelegate.pro
+++ b/examples/itemviews/spinboxdelegate/spinboxdelegate.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/itemviews/spinboxdelegate
sources.files = $$SOURCES $$HEADERS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/itemviews/spinboxdelegate
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/itemviews/stardelegate/stardelegate.pro b/examples/itemviews/stardelegate/stardelegate.pro
index 4e1ef45..a55b55d 100644
--- a/examples/itemviews/stardelegate/stardelegate.pro
+++ b/examples/itemviews/stardelegate/stardelegate.pro
@@ -12,3 +12,5 @@ sources.files = $$SOURCES $$HEADERS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/itemviews/stardelegate
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
diff --git a/examples/layouts/basiclayouts/basiclayouts.pro b/examples/layouts/basiclayouts/basiclayouts.pro
index 8fa73ff..4ffc8c0 100644
--- a/examples/layouts/basiclayouts/basiclayouts.pro
+++ b/examples/layouts/basiclayouts/basiclayouts.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/layouts/basiclayouts
sources.files = $$SOURCES $$HEADERS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/layouts/basiclayouts
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/layouts/borderlayout/borderlayout.pro b/examples/layouts/borderlayout/borderlayout.pro
index e327574..18b5e6c 100644
--- a/examples/layouts/borderlayout/borderlayout.pro
+++ b/examples/layouts/borderlayout/borderlayout.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/layouts/borderlayout
sources.files = $$SOURCES $$HEADERS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/layouts/borderlayout
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/layouts/dynamiclayouts/dynamiclayouts.pro b/examples/layouts/dynamiclayouts/dynamiclayouts.pro
index c169dd0..dce1e29 100644
--- a/examples/layouts/dynamiclayouts/dynamiclayouts.pro
+++ b/examples/layouts/dynamiclayouts/dynamiclayouts.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/layouts/dynamiclayouts
sources.files = $$SOURCES $$HEADERS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/layouts/dynamiclayouts
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/layouts/flowlayout/flowlayout.pro b/examples/layouts/flowlayout/flowlayout.pro
index 0e97824..ece314f 100644
--- a/examples/layouts/flowlayout/flowlayout.pro
+++ b/examples/layouts/flowlayout/flowlayout.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/layouts/flowlayout
sources.files = $$SOURCES $$HEADERS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/layouts/flowlayout
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/layouts/layouts.pro b/examples/layouts/layouts.pro
index 9676f4b..81c15f2 100644
--- a/examples/layouts/layouts.pro
+++ b/examples/layouts/layouts.pro
@@ -8,3 +8,5 @@ SUBDIRS = basiclayouts \
sources.files = README *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/layouts
INSTALLS += sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/linguist/arrowpad/arrowpad.pro b/examples/linguist/arrowpad/arrowpad.pro
index c8a6fb2..7e409a6 100644
--- a/examples/linguist/arrowpad/arrowpad.pro
+++ b/examples/linguist/arrowpad/arrowpad.pro
@@ -14,3 +14,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/linguist/arrowpad
sources.files = $$SOURCES $$HEADERS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/linguist/arrowpad
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/linguist/hellotr/hellotr.pro b/examples/linguist/hellotr/hellotr.pro
index c0065a4..ecd480b 100644
--- a/examples/linguist/hellotr/hellotr.pro
+++ b/examples/linguist/hellotr/hellotr.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/linguist/hellotr
sources.files = $$SOURCES *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/linguist/hellotr
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/linguist/linguist.pro b/examples/linguist/linguist.pro
index 921667d..ad3f772 100644
--- a/examples/linguist/linguist.pro
+++ b/examples/linguist/linguist.pro
@@ -7,3 +7,5 @@ SUBDIRS = arrowpad \
sources.files = README *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/linguist
INSTALLS += sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/linguist/trollprint/trollprint.pro b/examples/linguist/trollprint/trollprint.pro
index 9f3aaeb..27cb38e 100644
--- a/examples/linguist/trollprint/trollprint.pro
+++ b/examples/linguist/trollprint/trollprint.pro
@@ -10,3 +10,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/linguist/trollprint
sources.files = $$SOURCES $$HEADERS $$TRANSLATIONS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/linguist/trollprint
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/mainwindows/application/application.pro b/examples/mainwindows/application/application.pro
index ad1168a..fc022fc 100644
--- a/examples/mainwindows/application/application.pro
+++ b/examples/mainwindows/application/application.pro
@@ -10,3 +10,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/mainwindows/application
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS application.pro images
sources.path = $$[QT_INSTALL_EXAMPLES]/mainwindows/application
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/mainwindows/application/mainwindow.cpp b/examples/mainwindows/application/mainwindow.cpp
index 18ce69f..f2a2910 100644
--- a/examples/mainwindows/application/mainwindow.cpp
+++ b/examples/mainwindows/application/mainwindow.cpp
@@ -328,9 +328,13 @@ void MainWindow::loadFile(const QString &fileName)
}
QTextStream in(&file);
+#ifndef QT_NO_CURSOR
QApplication::setOverrideCursor(Qt::WaitCursor);
+#endif
textEdit->setPlainText(in.readAll());
+#ifndef QT_NO_CURSOR
QApplication::restoreOverrideCursor();
+#endif
setCurrentFile(fileName);
statusBar()->showMessage(tr("File loaded"), 2000);
@@ -351,9 +355,13 @@ bool MainWindow::saveFile(const QString &fileName)
}
QTextStream out(&file);
+#ifndef QT_NO_CURSOR
QApplication::setOverrideCursor(Qt::WaitCursor);
+#endif
out << textEdit->toPlainText();
+#ifndef QT_NO_CURSOR
QApplication::restoreOverrideCursor();
+#endif
setCurrentFile(fileName);
statusBar()->showMessage(tr("File saved"), 2000);
diff --git a/examples/mainwindows/dockwidgets/dockwidgets.pro b/examples/mainwindows/dockwidgets/dockwidgets.pro
index afc8aaa..ea8594d 100644
--- a/examples/mainwindows/dockwidgets/dockwidgets.pro
+++ b/examples/mainwindows/dockwidgets/dockwidgets.pro
@@ -8,3 +8,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/mainwindows/dockwidgets
sources.files = $$SOURCES $$HEADERS $$RESOURCES dockwidgets.pro images
sources.path = $$[QT_INSTALL_EXAMPLES]/mainwindows/dockwidgets
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/mainwindows/mainwindows.pro b/examples/mainwindows/mainwindows.pro
index 90ff3a5..e310e3d 100644
--- a/examples/mainwindows/mainwindows.pro
+++ b/examples/mainwindows/mainwindows.pro
@@ -6,8 +6,14 @@ SUBDIRS = application \
recentfiles \
sdi
+symbian: SUBDIRS = \
+ menus
+
+
# install
target.path = $$[QT_INSTALL_EXAMPLES]/mainwindows
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS mainwindows.pro README
sources.path = $$[QT_INSTALL_EXAMPLES]/mainwindows
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/mainwindows/mdi/mdi.pro b/examples/mainwindows/mdi/mdi.pro
index 4601f1c..b0db42c 100644
--- a/examples/mainwindows/mdi/mdi.pro
+++ b/examples/mainwindows/mdi/mdi.pro
@@ -10,3 +10,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/mainwindows/mdi
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS mdi.pro images
sources.path = $$[QT_INSTALL_EXAMPLES]/mainwindows/mdi
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/mainwindows/menus/menus.pro b/examples/mainwindows/menus/menus.pro
index 7b0a2ec..8cf60bf 100644
--- a/examples/mainwindows/menus/menus.pro
+++ b/examples/mainwindows/menus/menus.pro
@@ -7,3 +7,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/mainwindows/menus
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS menus.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/mainwindows/menus
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000CF66 \ No newline at end of file
diff --git a/examples/mainwindows/recentfiles/recentfiles.pro b/examples/mainwindows/recentfiles/recentfiles.pro
index 7c62cdf..8f7ddaf 100644
--- a/examples/mainwindows/recentfiles/recentfiles.pro
+++ b/examples/mainwindows/recentfiles/recentfiles.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/mainwindows/recentfiles
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS recentfiles.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/mainwindows/recentfiles
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/mainwindows/sdi/sdi.pro b/examples/mainwindows/sdi/sdi.pro
index 3283334..c033e19 100644
--- a/examples/mainwindows/sdi/sdi.pro
+++ b/examples/mainwindows/sdi/sdi.pro
@@ -8,3 +8,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/mainwindows/sdi
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS sdi.pro images
sources.path = $$[QT_INSTALL_EXAMPLES]/mainwindows/sdi
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/network/blockingfortuneclient/blockingfortuneclient.pro b/examples/network/blockingfortuneclient/blockingfortuneclient.pro
index fa146fa..96fbc1f 100644
--- a/examples/network/blockingfortuneclient/blockingfortuneclient.pro
+++ b/examples/network/blockingfortuneclient/blockingfortuneclient.pro
@@ -10,3 +10,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/network/blockingfortuneclient
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS blockingfortuneclient.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/network/blockingfortuneclient
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/network/broadcastreceiver/broadcastreceiver.pro b/examples/network/broadcastreceiver/broadcastreceiver.pro
index ad04e2c..36ad096 100644
--- a/examples/network/broadcastreceiver/broadcastreceiver.pro
+++ b/examples/network/broadcastreceiver/broadcastreceiver.pro
@@ -8,3 +8,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/network/broadcastreceiver
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS broadcastreceiver.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/network/broadcastreceiver
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/network/broadcastsender/broadcastsender.pro b/examples/network/broadcastsender/broadcastsender.pro
index b300a50..84e6593 100644
--- a/examples/network/broadcastsender/broadcastsender.pro
+++ b/examples/network/broadcastsender/broadcastsender.pro
@@ -8,3 +8,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/network/broadcastsender
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS broadcastsender.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/network/broadcastsender
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/network/download/download.pro b/examples/network/download/download.pro
index 254c356..f0db340 100644
--- a/examples/network/download/download.pro
+++ b/examples/network/download/download.pro
@@ -17,3 +17,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/network/download
sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.pro *.png
sources.path = $$[QT_INSTALL_EXAMPLES]/network/download
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/network/downloadmanager/downloadmanager.pro b/examples/network/downloadmanager/downloadmanager.pro
index 1b979ca..ef7052c 100644
--- a/examples/network/downloadmanager/downloadmanager.pro
+++ b/examples/network/downloadmanager/downloadmanager.pro
@@ -18,3 +18,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/network/downloadmanager
sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.pro *.png
sources.path = $$[QT_INSTALL_EXAMPLES]/network/downloadmanager
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/network/fortuneclient/client.cpp b/examples/network/fortuneclient/client.cpp
index a921da9..9cc50ac 100644
--- a/examples/network/fortuneclient/client.cpp
+++ b/examples/network/fortuneclient/client.cpp
@@ -44,6 +44,10 @@
#include "client.h"
+#ifdef Q_OS_SYMBIAN
+#include "sym_iap_util.h"
+#endif
+
//! [0]
Client::Client(QWidget *parent)
: QDialog(parent)
@@ -102,6 +106,10 @@ Client::Client(QWidget *parent)
setWindowTitle(tr("Fortune Client"));
portLineEdit->setFocus();
+
+#ifdef Q_OS_SYMBIAN
+ isDefaultIapSet = false;
+#endif
//! [5]
}
//! [5]
@@ -110,6 +118,12 @@ Client::Client(QWidget *parent)
void Client::requestNewFortune()
{
getFortuneButton->setEnabled(false);
+#ifdef Q_OS_SYMBIAN
+ if(!isDefaultIapSet) {
+ qt_SetDefaultIap();
+ isDefaultIapSet = true;
+ }
+#endif
blockSize = 0;
tcpSocket->abort();
//! [7]
diff --git a/examples/network/fortuneclient/client.h b/examples/network/fortuneclient/client.h
index 20d3513..ea3611b 100644
--- a/examples/network/fortuneclient/client.h
+++ b/examples/network/fortuneclient/client.h
@@ -80,6 +80,9 @@ private:
QTcpSocket *tcpSocket;
QString currentFortune;
quint16 blockSize;
+#ifdef Q_OS_SYMBIAN
+ bool isDefaultIapSet;
+#endif
};
//! [0]
diff --git a/examples/network/fortuneclient/fortuneclient.pro b/examples/network/fortuneclient/fortuneclient.pro
index 1c7b0a8..4765208 100644
--- a/examples/network/fortuneclient/fortuneclient.pro
+++ b/examples/network/fortuneclient/fortuneclient.pro
@@ -8,3 +8,12 @@ target.path = $$[QT_INSTALL_EXAMPLES]/network/fortuneclient
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS fortuneclient.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/network/fortuneclient
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian {
+ HEADERS += $$QT_SOURCE_TREE/examples/network/ftp/sym_iap_util.h
+ LIBS += -lesock
+ TARGET.CAPABILITY = "NetworkServices ReadUserData WriteUserData"
+ TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
+}
diff --git a/examples/network/fortuneclient/main.cpp b/examples/network/fortuneclient/main.cpp
index 1e8f509..1ded796 100644
--- a/examples/network/fortuneclient/main.cpp
+++ b/examples/network/fortuneclient/main.cpp
@@ -40,13 +40,17 @@
****************************************************************************/
#include <QApplication>
-
#include "client.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Client client;
+#ifdef Q_OS_SYMBIAN
+ // Make application better looking and more usable on small screen
+ client.showMaximized();
+#else
client.show();
+#endif
return client.exec();
}
diff --git a/examples/network/fortuneserver/fortuneserver.pro b/examples/network/fortuneserver/fortuneserver.pro
index e98385a..ea37b58 100644
--- a/examples/network/fortuneserver/fortuneserver.pro
+++ b/examples/network/fortuneserver/fortuneserver.pro
@@ -8,3 +8,13 @@ target.path = $$[QT_INSTALL_EXAMPLES]/network/fortuneserver
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS fortuneserver.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/network/fortuneserver
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian {
+ HEADERS += $$QT_SOURCE_TREE/examples/network/ftp/sym_iap_util.h
+ LIBS += -lesock
+ TARGET.UID3 = 0xA000CF71
+ TARGET.CAPABILITY = "All -TCB"
+ TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
+} \ No newline at end of file
diff --git a/examples/network/fortuneserver/main.cpp b/examples/network/fortuneserver/main.cpp
index faceca5..7349a64 100644
--- a/examples/network/fortuneserver/main.cpp
+++ b/examples/network/fortuneserver/main.cpp
@@ -46,11 +46,22 @@
#include "server.h"
+#ifdef Q_OS_SYMBIAN
+#include "sym_iap_util.h"
+#endif
+
int main(int argc, char *argv[])
{
+#ifdef Q_OS_SYMBIAN
+ qt_SetDefaultIap();
+#endif
QApplication app(argc, argv);
Server server;
+#ifdef Q_OS_SYMBIAN
+ server.showMaximized();
+#else
server.show();
+#endif
qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
return server.exec();
}
diff --git a/examples/network/fortuneserver/server.cpp b/examples/network/fortuneserver/server.cpp
index 8a10675..4bcc99e 100644
--- a/examples/network/fortuneserver/server.cpp
+++ b/examples/network/fortuneserver/server.cpp
@@ -63,10 +63,15 @@ Server::Server(QWidget *parent)
return;
}
//! [0]
+ QList<QHostAddress> ipAddresseList = QNetworkInterface::allAddresses();
+ QString ipAddresses;
+ for (int i = 0; i < ipAddresseList.size(); ++i) {
+ ipAddresses.append(ipAddresseList.at(i).toString()).append("\n");
+ }
- statusLabel->setText(tr("The server is running on port %1.\n"
+ statusLabel->setText(tr("The server is running on \n IP: \n%1 PORT: \n%2\n"
"Run the Fortune Client example now.")
- .arg(tcpServer->serverPort()));
+ .arg(ipAddresses).arg(tcpServer->serverPort()));
//! [1]
//! [2]
diff --git a/examples/network/ftp/ftp.pro b/examples/network/ftp/ftp.pro
index cabc003..0ddcb6c 100644
--- a/examples/network/ftp/ftp.pro
+++ b/examples/network/ftp/ftp.pro
@@ -9,3 +9,13 @@ target.path = $$[QT_INSTALL_EXAMPLES]/network/ftp
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS ftp.pro images
sources.path = $$[QT_INSTALL_EXAMPLES]/network/ftp
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian {
+ HEADERS += sym_iap_util.h
+ INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+ TARGET.CAPABILITY="NetworkServices ReadUserData WriteUserData"
+ TARGET.UID3 = 0xA000A648
+ LIBS+=-lesock -lcommdb -linsock # For IAP selection
+} \ No newline at end of file
diff --git a/examples/network/ftp/ftpwindow.cpp b/examples/network/ftp/ftpwindow.cpp
index 2be9059..380a746 100644
--- a/examples/network/ftp/ftpwindow.cpp
+++ b/examples/network/ftp/ftpwindow.cpp
@@ -44,6 +44,10 @@
#include "ftpwindow.h"
+#ifdef Q_OS_SYMBIAN
+#include "sym_iap_util.h"
+#endif
+
FtpWindow::FtpWindow(QWidget *parent)
: QDialog(parent), ftp(0)
{
@@ -52,6 +56,10 @@ FtpWindow::FtpWindow(QWidget *parent)
ftpServerLabel->setBuddy(ftpServerLineEdit);
statusLabel = new QLabel(tr("Please enter the name of an FTP server."));
+#ifdef Q_OS_SYMBIAN
+ // Use word wrapping to fit the text on screen
+ statusLabel->setWordWrap( true );
+#endif
fileList = new QTreeWidget;
fileList->setEnabled(false);
@@ -61,7 +69,7 @@ FtpWindow::FtpWindow(QWidget *parent)
connectButton = new QPushButton(tr("Connect"));
connectButton->setDefault(true);
-
+
cdToParentButton = new QPushButton;
cdToParentButton->setIcon(QPixmap(":/images/cdtoparent.png"));
cdToParentButton->setEnabled(false);
@@ -90,16 +98,31 @@ FtpWindow::FtpWindow(QWidget *parent)
QHBoxLayout *topLayout = new QHBoxLayout;
topLayout->addWidget(ftpServerLabel);
topLayout->addWidget(ftpServerLineEdit);
+#ifndef Q_OS_SYMBIAN
topLayout->addWidget(cdToParentButton);
topLayout->addWidget(connectButton);
-
+#else
+ // Make app better lookin on small screen
+ QHBoxLayout *topLayout2 = new QHBoxLayout;
+ topLayout2->addWidget(cdToParentButton);
+ topLayout2->addWidget(connectButton);
+#endif
+
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addLayout(topLayout);
+#ifdef Q_OS_SYMBIAN
+ // Make app better lookin on small screen
+ mainLayout->addLayout(topLayout2);
+#endif
mainLayout->addWidget(fileList);
mainLayout->addWidget(statusLabel);
mainLayout->addWidget(buttonBox);
setLayout(mainLayout);
+#ifdef Q_OS_SYMBIAN
+ bDefaultIapSet = false;
+#endif
+
setWindowTitle(tr("FTP"));
}
@@ -111,6 +134,12 @@ QSize FtpWindow::sizeHint() const
//![0]
void FtpWindow::connectOrDisconnect()
{
+#ifdef Q_OS_SYMBIAN
+ if(!bDefaultIapSet) {
+ qt_SetDefaultIap();
+ bDefaultIapSet = true;
+ }
+#endif
if (ftp) {
ftp->abort();
ftp->deleteLater();
@@ -124,6 +153,7 @@ void FtpWindow::connectOrDisconnect()
#ifndef QT_NO_CURSOR
setCursor(Qt::ArrowCursor);
#endif
+ statusLabel->setText(tr("Please enter the name of an FTP server."));
return;
}
@@ -131,7 +161,7 @@ void FtpWindow::connectOrDisconnect()
setCursor(Qt::WaitCursor);
#endif
-//![1]
+//![1]
ftp = new QFtp(this);
connect(ftp, SIGNAL(commandFinished(int, bool)),
this, SLOT(ftpCommandFinished(int, bool)));
diff --git a/examples/network/ftp/ftpwindow.h b/examples/network/ftp/ftpwindow.h
index 8283838..d5d9000 100644
--- a/examples/network/ftp/ftpwindow.h
+++ b/examples/network/ftp/ftpwindow.h
@@ -98,6 +98,10 @@ private:
QString currentPath;
QFtp *ftp;
QFile *file;
+
+#ifdef Q_OS_SYMBIAN
+ bool bDefaultIapSet;
+#endif
//![1]
};
diff --git a/examples/network/ftp/main.cpp b/examples/network/ftp/main.cpp
index 6a7b4a0..1bd1249 100644
--- a/examples/network/ftp/main.cpp
+++ b/examples/network/ftp/main.cpp
@@ -40,15 +40,28 @@
****************************************************************************/
#include <QApplication>
-
#include "ftpwindow.h"
+#ifdef Q_OS_SYMBIAN
+#include <QDir>
+#include <QDesktopWidget>
+#endif
+
int main(int argc, char *argv[])
{
Q_INIT_RESOURCE(ftp);
-
+#ifdef Q_OS_SYMBIAN
+ // Change current directory from default private to c:\data
+ // in order that user can access the downloaded content
+ QDir::setCurrent( "c:\\data" );
+#endif
QApplication app(argc, argv);
FtpWindow ftpWin;
+#ifdef Q_OS_SYMBIAN
+ // Make application better looking and more usable on small screen
+ ftpWin.showMaximized();
+#else
ftpWin.show();
+#endif
return ftpWin.exec();
}
diff --git a/examples/network/ftp/sym_iap_util.h b/examples/network/ftp/sym_iap_util.h
new file mode 100644
index 0000000..6c43738
--- /dev/null
+++ b/examples/network/ftp/sym_iap_util.h
@@ -0,0 +1,510 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef QSYM_IAP_UTIL_H
+#define QSYM_IAP_UTIL_H
+
+// Symbian
+#include <utf.h>
+#include <es_sock.h>
+#include <in_sock.h>
+#include <es_enum.h>
+#include <in_iface.h>
+#include <commdbconnpref.h>
+#include <e32cmn.h>
+
+// OpenC
+#include <sys/socket.h>
+#include <net/if.h>
+
+//Qt
+#include <QSettings>
+#include <QStringList>
+//#include <QTextCodec>
+
+_LIT(KIapNameSetting, "IAP\\Name"); // text - mandatory
+_LIT(KIapDialogPref, "IAP\\DialogPref"); // TUnit32 - optional
+_LIT(KIapService, "IAP\\IAPService"); // TUnit32 - mandatory
+_LIT(KIapServiceType, "IAP\\IAPServiceType"); // text - mandatory
+_LIT(KIapBearer, "IAP\\IAPBearer"); // TUint32 - optional
+_LIT(KIapBearerType, "IAP\\IAPBearerType"); // text - optional
+_LIT(KIapNetwork, "IAP\\IAPNetwork"); // TUint32 - optional
+
+const QLatin1String qtOrganizationTag("Trolltech");
+const QLatin1String qtNetworkModuleTag("QtNetwork");
+const QLatin1String iapGroupTag("IAP");
+const QLatin1String iapNamesArrayTag("Names");
+const QLatin1String iapNameItemTag("Name");
+
+static QTextCodec *utf16LETextCodec = 0;
+
+void clearIapNamesSettings(QSettings &settings) {
+ settings.beginGroup(qtNetworkModuleTag);
+ settings.beginGroup(iapGroupTag);
+ settings.remove(iapNamesArrayTag);
+ settings.endGroup();
+ settings.endGroup();
+}
+
+void writeIapNamesSettings(QSettings &settings, const QStringList& iapNames) {
+ clearIapNamesSettings(settings);
+ settings.beginGroup(qtNetworkModuleTag);
+ settings.beginGroup(iapGroupTag);
+ settings.beginWriteArray(iapNamesArrayTag);
+ for (int index = 0; index < iapNames.size(); ++index) {
+ settings.setArrayIndex(index);
+ settings.setValue(iapNameItemTag, iapNames.at(index));
+ }
+ settings.endArray();
+ settings.endGroup();
+ settings.endGroup();
+}
+
+void readIapNamesSettings(QSettings &settings, QStringList& iapNames) {
+ settings.beginGroup(qtNetworkModuleTag);
+ settings.beginGroup(iapGroupTag);
+ int last = settings.beginReadArray(iapNamesArrayTag);
+ for (int index = 0; index < last; ++index) {
+ settings.setArrayIndex(index);
+ iapNames.append(settings.value(iapNameItemTag).toString());
+ }
+ settings.endArray();
+ settings.endGroup();
+ settings.endGroup();
+}
+
+static QString qt_TNameToQString(TName data) {
+ if(utf16LETextCodec == 0)
+ utf16LETextCodec = QTextCodec::codecForName("UTF-16LE");
+
+ QByteArray tmpByteArray = QByteArray::fromRawData((char*)(data.PtrZ()), data.Length() * 2);
+ return utf16LETextCodec->toUnicode(tmpByteArray);
+}
+
+static QString qt_InterfaceInfoL()
+{
+ QString output;
+
+ TBuf8<512> buffer;
+ TBuf<128> t;
+ TAutoClose<RSocketServ> ss;
+ User::LeaveIfError(ss.iObj.Connect());
+ ss.PushL();
+
+ TAutoClose<RSocket> sock;
+ User::LeaveIfError(sock.iObj.Open(ss.iObj, _L("udp")));
+ sock.PushL();
+
+ User::LeaveIfError(sock.iObj.SetOpt(KSoInetEnumInterfaces, KSolInetIfCtrl));
+
+ TProtocolDesc in;
+ User::LeaveIfError(sock.iObj.Info(in));
+ printf("EPOC32 IP Configuration TCPIP Version %d.%d.%d\n", in.iVersion.iMajor, in.iVersion.iMinor, in.iVersion.iBuild);
+
+ TPckgBuf<TSoInetInterfaceInfo> info, next;
+
+ TInt res=sock.iObj.GetOpt(KSoInetNextInterface, KSolInetIfCtrl, info);
+ if(res!=KErrNone)
+ User::Leave(res);
+ TInt count = 0;
+ while(res==KErrNone) {
+ res=sock.iObj.GetOpt(KSoInetNextInterface, KSolInetIfCtrl, next);
+
+ if(info().iName != _L("") && info().iName != _L("loop6") && info().iName != _L("loop4")) {
+ printf("Interface %d\n", count++);
+
+ printf("Name \"%s\"\n", qt_TNameToQString(info().iName).toLatin1().data());
+ printf("NIF tag \"%s\"\n", qt_TNameToQString(info().iTag).toLatin1().data());
+
+ printf("State ");
+ switch (info().iState)
+ {
+ case EIfPending:
+ printf("pending\n");
+ break;
+ case EIfUp:
+ printf("up\n");
+ break;
+ case EIfBusy:
+ printf("busy\n");
+ break;
+ default:
+ printf("down\n");
+ break;
+ }
+
+ printf("Mtu %d\n", info().iMtu);
+ printf("Speed Metric %d\n", info().iSpeedMetric);
+
+ printf("Features:");
+ info().iFeatures & KIfIsLoopback ? printf(" loopback") : printf("");
+ info().iFeatures & KIfIsDialup ? printf(" dialup") : printf("");
+ info().iFeatures & KIfIsPointToPoint ? printf(" pointtopoint") : printf("");
+ info().iFeatures & KIfCanBroadcast ? printf(" canbroadcast") : printf("");
+ info().iFeatures & KIfCanMulticast ? printf(" canmulticast") : printf("");
+ info().iFeatures & KIfCanSetMTU ? printf(" cansetmtu") : printf("");
+ info().iFeatures & KIfHasHardwareAddr ? printf(" hardwareaddr") : printf("");
+ info().iFeatures & KIfCanSetHardwareAddr ? printf(" cansethardwareaddr") : printf("");
+ printf("\n");
+
+ TName address;
+ info().iAddress.Output(address);
+ printf("Addr: %s\n", qt_TNameToQString(address).toLatin1().data());
+
+ if(info().iAddress.IsLinkLocal()) {
+ printf(" -link local\n");
+ } else if(info().iAddress.IsSiteLocal()) {
+ printf(" -site local\n");
+ } else {
+ printf(" -global\n");
+ }
+
+ info().iNetMask.Output(address);
+ printf("Netmask %s\n", qt_TNameToQString(address).toLatin1().data());
+
+ info().iBrdAddr.Output(address);
+ printf("Broadcast address %s\n", qt_TNameToQString(address).toLatin1().data());
+
+ info().iDefGate.Output(address);
+ printf("Gatew: %s\n", qt_TNameToQString(address).toLatin1().data());
+
+ info().iNameSer1.Output(address);
+ printf("DNS 1: %s\n", qt_TNameToQString(address).toLatin1().data());
+
+ info().iNameSer2.Output(address);
+ printf("DNS 2: %s\n", qt_TNameToQString(address).toLatin1().data());
+
+ if (info().iHwAddr.Family() != KAFUnspec) {
+ printf("Hardware address ");
+ TUint j;
+ for(j = sizeof(SSockAddr) ; j < sizeof(SSockAddr) + 6 ; ++j) {
+ if(j < (TUint)info().iHwAddr.Length()) {
+ printf("%02X", info().iHwAddr[j]);
+ } else {
+ printf("??");
+ }
+ if(j < sizeof(SSockAddr) + 5)
+ printf("-");
+ else
+ printf("\n");
+ }
+ }
+ }
+ if(res == KErrNone) {
+ info = next;
+ printf("\n");
+ } else {
+ printf("\n");
+ }
+ }
+
+ sock.Pop();
+ ss.Pop();
+
+ return output;
+}
+
+static QString qt_RouteInfoL() {
+ QString output;
+ TAutoClose<RSocketServ> ss;
+ User::LeaveIfError(ss.iObj.Connect());
+ ss.PushL();
+
+ TAutoClose<RSocket> sock;
+ User::LeaveIfError(sock.iObj.Open(ss.iObj, _L("udp")));
+ sock.PushL();
+
+ TSoInetRouteInfo routeInfo;
+ TPckg<TSoInetRouteInfo> routeInfoPkg(routeInfo);
+
+ TName destAddr;
+ TName netMask;
+ TName gateway;
+ TName ifAddr;
+
+ // Begins enumeration of routes by setting this option
+ User::LeaveIfError(sock.iObj.SetOpt(KSoInetEnumRoutes, KSolInetRtCtrl));
+
+ // The TSoInetRouteInfo contains information for a new route each time GetOpt returns KErrNone
+ for(TInt i = 0; sock.iObj.GetOpt(KSoInetNextRoute, KSolInetRtCtrl, routeInfoPkg) == KErrNone ; i++)
+ {
+ // Extract the destination and netmask
+ routeInfo.iDstAddr.Output(destAddr);
+ routeInfo.iNetMask.Output(netMask);
+ routeInfo.iGateway.Output(gateway);
+ routeInfo.iIfAddr.Output(ifAddr);
+/*
+ if(destAddr.Length() <= 2)
+ continue;
+
+ if(netMask.Find(_L("255.255.255.255")) != KErrNotFound
+ || netMask.Find(_L("0.0.0.0")) != KErrNotFound
+ || netMask.Find(_L("ffff:ffff:ffff:ffff")) != KErrNotFound)
+ continue;
+*/
+ printf("Route Info #[%i]\n", i);
+ printf("DstAddr %s\n", qt_TNameToQString(destAddr).toLatin1().data());
+ printf("NetMask %s\n", qt_TNameToQString(netMask).toLatin1().data());
+ printf("Gateway %s\n", qt_TNameToQString(gateway).toLatin1().data());
+ printf("IfAddr %s\n", qt_TNameToQString(ifAddr).toLatin1().data());
+ printf("\n");
+ }
+
+ sock.Pop();
+ ss.Pop();
+
+ return output;
+}
+
+QString qt_TDesC2QStringL(const TDesC& aDescriptor)
+{
+#ifdef QT_NO_UNICODE
+ return QString::fromLocal8Bit(aDescriptor.Ptr(), aDescriptor.Length());
+#else
+ return QString::fromUtf16(aDescriptor.Ptr(), aDescriptor.Length());
+#endif
+}
+
+static bool qt_SetDefaultIapName(const QString &iapName, int &error) {
+ struct ifreq ifReq;
+ // clear structure
+ memset(&ifReq, 0, sizeof(struct ifreq));
+ // set IAP name value
+ // make sure it is in UTF8
+ strcpy(ifReq.ifr_name, iapName.toUtf8().data());
+
+ if(setdefaultif(&ifReq) == 0) {
+ // OK
+ error = 0;
+ return true;
+ } else {
+ error = errno;
+ return false;
+ }
+
+}
+static bool qt_SetDefaultSnapId(const int snapId, int &error) {
+ struct ifreq ifReq;
+ // clear structure
+ memset(&ifReq, 0, sizeof(struct ifreq));
+ // set SNAP ID value
+ ifReq.ifr_ifru.snap_id = snapId;
+
+ if(setdefaultif(&ifReq) == 0) {
+ // OK
+ error = 0;
+ return true;
+ } else {
+ error = errno;
+ return false;
+ }
+
+}
+
+static void qt_SaveIapName(QSettings& settings, QStringList& iapNames, QString& iapNameValue) {
+ if(iapNames.contains(iapNameValue) && iapNames.first() == iapNameValue) {
+ // no need to update
+ } else {
+ if(iapNameValue != QString("Easy WLAN")) {
+ // new selection alway on top
+ iapNames.removeAll(iapNameValue);
+ iapNames.prepend(iapNameValue);
+ writeIapNamesSettings(settings, iapNames);
+ } else {
+ // Unbeliveable ... if IAP dodn't exist before
+ // no matter what you choose from IAP selection list
+ // you will get "Easy WLAN" as IAP name value
+
+ // somehow commsdb is not in sync
+ }
+ }
+}
+
+static QString qt_OfferIapDialog() {
+ TBuf8<256> iapName;
+
+ RSocketServ socketServ;
+ CleanupClosePushL(socketServ);
+
+ RConnection connection;
+ CleanupClosePushL(connection);
+
+ socketServ.Connect();
+ connection.Open(socketServ);
+ connection.Start();
+
+ connection.GetDesSetting(TPtrC(KIapNameSetting), iapName);
+
+ //connection.Stop();
+
+ iapName.ZeroTerminate();
+ QString strIapName((char*)iapName.Ptr());
+
+ int error = 0;
+ if(!qt_SetDefaultIapName(strIapName, error)) {
+ //printf("failed setdefaultif @ %i with %s and errno = %d \n", __LINE__, strIapName.toUtf8().data(), error);
+ strIapName = QString("");
+ }
+
+ CleanupStack::PopAndDestroy(&connection);
+ CleanupStack::PopAndDestroy(&socketServ);
+
+ return strIapName;
+}
+
+static QString qt_CheckForActiveConnection() {
+ TUint count;
+
+ RSocketServ serv;
+ CleanupClosePushL(serv);
+
+ RConnection conn;
+ CleanupClosePushL(conn);
+
+ serv.Connect();
+ conn.Open(serv);
+
+ TConnectionInfoBuf connInfo;
+
+ TBuf8<256> iapName;
+ TBuf8<256> iapServiceType;
+
+ QString strIapName;
+
+ if (conn.EnumerateConnections(count) == KErrNone) {
+ if(count > 0) {
+ for (TUint i = 1; i <= count; i++) {
+ if (conn.GetConnectionInfo(i, connInfo) == KErrNone) {
+ RConnection tempConn;
+ CleanupClosePushL(tempConn);
+ tempConn.Open(serv);
+ if (tempConn.Attach(connInfo, RConnection::EAttachTypeNormal) == KErrNone) {
+ tempConn.GetDesSetting(TPtrC(KIapNameSetting), iapName);
+ tempConn.GetDesSetting(TPtrC(KIapServiceType), iapServiceType);
+ //tempConn.Stop();
+ iapName.ZeroTerminate();
+ iapServiceType.ZeroTerminate();
+
+// if(iapServiceType.Find(_L8("LANService")) != KErrNotFound) {
+// activeLanConnectionFound = ETrue;
+// break;
+// }
+ strIapName = QString((char*)iapName.Ptr());
+ int error = 0;
+ if(!qt_SetDefaultIapName(strIapName, error)) {
+ //printf("failed setdefaultif @ %i with %s and errno = %d \n", __LINE__, strIapName.toUtf8().data(), error);
+ strIapName = QString("");
+ }
+
+ CleanupStack::PopAndDestroy(&tempConn);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ //conn.Stop();
+
+ CleanupStack::PopAndDestroy(&conn);
+ CleanupStack::PopAndDestroy(&serv);
+
+ return strIapName;
+}
+
+static QString qt_CheckSettingsForConnection(QStringList& iapNames) {
+ QString strIapName;
+ for(int index = 0; index < iapNames.size(); ++index) {
+ strIapName = iapNames.at(index);
+ int error = 0;
+ if(!qt_SetDefaultIapName(strIapName, error)) {
+ //printf("failed setdefaultif @ %i with %s and errno = %d \n", __LINE__, strIapName.toUtf8().data(), error);
+ strIapName = QString("");
+ } else {
+ return strIapName;
+ }
+ }
+ return strIapName;
+}
+
+static void qt_SetDefaultIapL()
+{
+ // settings @ /c/data/.config/Trolltech.com
+ QSettings settings(QSettings::UserScope, qtOrganizationTag);
+ // populate iap name list
+ QStringList iapNames;
+ readIapNamesSettings(settings, iapNames);
+
+ QString iapNameValue;
+
+ iapNameValue = qt_CheckForActiveConnection();
+
+ if(!iapNameValue.isEmpty()) {
+ qt_SaveIapName(settings, iapNames, iapNameValue);
+ return;
+ }
+
+ iapNameValue = qt_CheckSettingsForConnection(iapNames);
+
+ if(!iapNameValue.isEmpty()) {
+ qt_SaveIapName(settings, iapNames, iapNameValue);
+ return;
+ }
+
+ /*
+ * no active LAN connections yet
+ * no IAP in settings
+ * offer IAP dialog to user
+ */
+ iapNameValue = qt_OfferIapDialog();
+ qt_SaveIapName(settings, iapNames, iapNameValue);
+ return;
+
+}
+
+static int qt_SetDefaultIap()
+{
+ TRAPD(err1, qt_SetDefaultIapL());
+// TRAPD(err2, qt_InterfaceInfoL());
+// TRAPD(err3, qt_RouteInfoL());
+ return err1;
+}
+
+#endif // QSYM_IAP_UTIL_H
diff --git a/examples/network/http/http.pro b/examples/network/http/http.pro
index 7f58d9f..99aa717 100644
--- a/examples/network/http/http.pro
+++ b/examples/network/http/http.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/network/http
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS http.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/network/http
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/network/loopback/loopback.pro b/examples/network/loopback/loopback.pro
index 88b7a8b..0a09e34 100644
--- a/examples/network/loopback/loopback.pro
+++ b/examples/network/loopback/loopback.pro
@@ -8,3 +8,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/network/loopback
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS loopback.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/network/loopback
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/network/network-chat/chatdialog.cpp b/examples/network/network-chat/chatdialog.cpp
index cbff11d..3ec4107 100644
--- a/examples/network/network-chat/chatdialog.cpp
+++ b/examples/network/network-chat/chatdialog.cpp
@@ -54,6 +54,10 @@ ChatDialog::ChatDialog(QWidget *parent)
listWidget->setFocusPolicy(Qt::NoFocus);
connect(lineEdit, SIGNAL(returnPressed()), this, SLOT(returnPressed()));
+#ifdef Q_OS_SYMBIAN
+ connect(sendButton, SIGNAL(clicked()), this, SLOT(returnPressed()));
+#endif
+ connect(lineEdit, SIGNAL(returnPressed()), this, SLOT(returnPressed()));
connect(&client, SIGNAL(newMessage(const QString &, const QString &)),
this, SLOT(appendMessage(const QString &, const QString &)));
connect(&client, SIGNAL(newParticipant(const QString &)),
diff --git a/examples/network/network-chat/main.cpp b/examples/network/network-chat/main.cpp
index 371f2df..5d71845 100644
--- a/examples/network/network-chat/main.cpp
+++ b/examples/network/network-chat/main.cpp
@@ -42,11 +42,22 @@
#include <QApplication>
#include "chatdialog.h"
+#ifdef Q_OS_SYMBIAN
+#include "sym_iap_util.h"
+#endif
int main(int argc, char *argv[])
{
+#ifdef Q_OS_SYMBIAN
+ qt_SetDefaultIap();
+#endif
QApplication app(argc, argv);
ChatDialog dialog;
+#ifdef Q_OS_SYMBIAN
+ // Make application better looking and more usable on small screen
+ dialog.showMaximized();
+#else
dialog.show();
+#endif
return app.exec();
}
diff --git a/examples/network/network-chat/network-chat.pro b/examples/network/network-chat/network-chat.pro
index 5d5efea..5ba2289 100644
--- a/examples/network/network-chat/network-chat.pro
+++ b/examples/network/network-chat/network-chat.pro
@@ -17,3 +17,12 @@ target.path = $$[QT_INSTALL_EXAMPLES]/network/network-chat
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS network-chat.pro *.chat
sources.path = $$[QT_INSTALL_EXAMPLES]/network/network-chat
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian {
+ HEADERS += $$QT_SOURCE_TREE/examples/network/ftp/sym_iap_util.h
+ LIBS += -lesock -lconnmon -lcharconv -linsock
+ TARGET.CAPABILITY = "NetworkServices ReadUserData WriteUserData"
+ TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
+}
diff --git a/examples/network/network-chat/peermanager.cpp b/examples/network/network-chat/peermanager.cpp
index a2e7edf..8fdef8c 100644
--- a/examples/network/network-chat/peermanager.cpp
+++ b/examples/network/network-chat/peermanager.cpp
@@ -70,7 +70,11 @@ PeerManager::PeerManager(Client *client)
}
if (username.isEmpty())
+#ifndef Q_OS_SYMBIAN
username = "unknown";
+#else
+ username = "QtS60";
+#endif
updateAddresses();
serverPort = 0;
@@ -160,8 +164,7 @@ void PeerManager::updateAddresses()
foreach (QNetworkInterface interface, QNetworkInterface::allInterfaces()) {
foreach (QNetworkAddressEntry entry, interface.addressEntries()) {
QHostAddress broadcastAddress = entry.broadcast();
- if (broadcastAddress != QHostAddress::Null &&
- entry.ip() != QHostAddress::LocalHost) {
+ if (broadcastAddress != QHostAddress::Null && entry.ip() != QHostAddress::LocalHost) {
broadcastAddresses << broadcastAddress;
ipAddresses << entry.ip();
}
diff --git a/examples/network/network.pro b/examples/network/network.pro
index adf998f..99c778c 100644
--- a/examples/network/network.pro
+++ b/examples/network/network.pro
@@ -1,9 +1,9 @@
TEMPLATE = subdirs
SUBDIRS = blockingfortuneclient \
- broadcastreceiver \
+ broadcastreceiver \
broadcastsender \
- download \
- downloadmanager \
+ download \
+ downloadmanager \
fortuneclient \
fortuneserver \
ftp \
@@ -11,14 +11,18 @@ SUBDIRS = blockingfortuneclient \
loopback \
threadedfortuneserver \
googlesuggest \
- torrent
+ torrent
# no QProcess
!vxworks:!qnx:SUBDIRS += network-chat
+symbian: SUBDIRS = ftp
+
contains(QT_CONFIG, openssl):SUBDIRS += securesocketclient
# install
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS network.pro README
sources.path = $$[QT_INSTALL_EXAMPLES]/network
INSTALLS += sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/network/securesocketclient/securesocketclient.pro b/examples/network/securesocketclient/securesocketclient.pro
index 4d70a71..2e9141d 100644
--- a/examples/network/securesocketclient/securesocketclient.pro
+++ b/examples/network/securesocketclient/securesocketclient.pro
@@ -14,3 +14,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/network/securesocketclient
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro *.png *.jpg images
sources.path = $$[QT_INSTALL_EXAMPLES]/network/securesocketclient
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000CF67 \ No newline at end of file
diff --git a/examples/network/securesocketclient/sslclient.cpp b/examples/network/securesocketclient/sslclient.cpp
index 9ae97b7..a3498c4 100644
--- a/examples/network/securesocketclient/sslclient.cpp
+++ b/examples/network/securesocketclient/sslclient.cpp
@@ -145,7 +145,9 @@ void SslClient::socketEncrypted()
if (!padLock) {
padLock = new QToolButton;
padLock->setIcon(QIcon(":/encrypted.png"));
+#ifndef QT_NO_CURSOR
padLock->setCursor(Qt::ArrowCursor);
+#endif
padLock->setToolTip(tr("Display encryption details."));
int extent = form->hostNameEdit->height() - 2;
diff --git a/examples/network/threadedfortuneserver/threadedfortuneserver.pro b/examples/network/threadedfortuneserver/threadedfortuneserver.pro
index 0867dac..94543bf 100644
--- a/examples/network/threadedfortuneserver/threadedfortuneserver.pro
+++ b/examples/network/threadedfortuneserver/threadedfortuneserver.pro
@@ -12,3 +12,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/network/threadedfortuneserver
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS threadedfortuneserver.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/network/threadedfortuneserver
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/network/torrent/torrent.pro b/examples/network/torrent/torrent.pro
index 10b2672..bfd5767 100644
--- a/examples/network/torrent/torrent.pro
+++ b/examples/network/torrent/torrent.pro
@@ -35,3 +35,5 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES torrent.pro *.torrent
sources.files += icons forms 3rdparty
sources.path = $$[QT_INSTALL_EXAMPLES]/network/torrent
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/opengl/2dpainting/2dpainting.pro b/examples/opengl/2dpainting/2dpainting.pro
index c45b764..01df1da 100644
--- a/examples/opengl/2dpainting/2dpainting.pro
+++ b/examples/opengl/2dpainting/2dpainting.pro
@@ -15,3 +15,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/opengl/2dpainting
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS 2dpainting.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/opengl/2dpainting
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/opengl/framebufferobject/framebufferobject.pro b/examples/opengl/framebufferobject/framebufferobject.pro
index 4bc667c..a5927ec 100644
--- a/examples/opengl/framebufferobject/framebufferobject.pro
+++ b/examples/opengl/framebufferobject/framebufferobject.pro
@@ -20,3 +20,5 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.png *.svg
sources.path = $$[QT_INSTALL_EXAMPLES]/opengl/framebufferobject
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
diff --git a/examples/opengl/framebufferobject2/framebufferobject2.pro b/examples/opengl/framebufferobject2/framebufferobject2.pro
index 9f1644c..076f98c 100644
--- a/examples/opengl/framebufferobject2/framebufferobject2.pro
+++ b/examples/opengl/framebufferobject2/framebufferobject2.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/opengl/framebufferobject2
sources.files = $$SOURCES $$HEADERS $$RESOURCES framebufferobject2.pro *.png
sources.path = $$[QT_INSTALL_EXAMPLES]/opengl/framebufferobject2
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/opengl/grabber/grabber.pro b/examples/opengl/grabber/grabber.pro
index 15eaf02..23a0c4a 100644
--- a/examples/opengl/grabber/grabber.pro
+++ b/examples/opengl/grabber/grabber.pro
@@ -10,3 +10,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/opengl/grabber
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS grabber.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/opengl/grabber
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/opengl/hellogl/hellogl.pro b/examples/opengl/hellogl/hellogl.pro
index ce9c8e8..77034cc 100644
--- a/examples/opengl/hellogl/hellogl.pro
+++ b/examples/opengl/hellogl/hellogl.pro
@@ -10,3 +10,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/opengl/hellogl
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS hellogl.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/opengl/hellogl
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/opengl/opengl.pro b/examples/opengl/opengl.pro
index a4c2a22..7b76d86 100644
--- a/examples/opengl/opengl.pro
+++ b/examples/opengl/opengl.pro
@@ -27,3 +27,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/opengl
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS opengl.pro README
sources.path = $$[QT_INSTALL_EXAMPLES]/opengl
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/opengl/overpainting/overpainting.pro b/examples/opengl/overpainting/overpainting.pro
index b8e79eb..3603260 100644
--- a/examples/opengl/overpainting/overpainting.pro
+++ b/examples/opengl/overpainting/overpainting.pro
@@ -11,3 +11,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/opengl/overpainting
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS overpainting.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/opengl/overpainting
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/opengl/pbuffers/pbuffers.pro b/examples/opengl/pbuffers/pbuffers.pro
index c1060e2..72f20f8 100644
--- a/examples/opengl/pbuffers/pbuffers.pro
+++ b/examples/opengl/pbuffers/pbuffers.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/opengl/pbuffers
sources.files = $$SOURCES $$HEADERS $$RESOURCES pbuffers.pro *.png
sources.path = $$[QT_INSTALL_EXAMPLES]/opengl/pbuffers
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/opengl/pbuffers2/pbuffers2.pro b/examples/opengl/pbuffers2/pbuffers2.pro
index cbd0cb5..7f12483 100644
--- a/examples/opengl/pbuffers2/pbuffers2.pro
+++ b/examples/opengl/pbuffers2/pbuffers2.pro
@@ -19,3 +19,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/opengl/pbuffers2
sources.files = $$SOURCES $$HEADERS $$RESOURCES pbuffers2.pro *.png *.svg
sources.path = $$[QT_INSTALL_EXAMPLES]/opengl/pbuffers2
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/opengl/samplebuffers/samplebuffers.pro b/examples/opengl/samplebuffers/samplebuffers.pro
index 9eb5f58..de09a71 100644
--- a/examples/opengl/samplebuffers/samplebuffers.pro
+++ b/examples/opengl/samplebuffers/samplebuffers.pro
@@ -8,3 +8,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/opengl/samplebuffers
sources.files = $$SOURCES $$HEADERS samplebuffers.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/opengl/samplebuffers
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/opengl/textures/textures.pro b/examples/opengl/textures/textures.pro
index cd98a68..086c9ac 100644
--- a/examples/opengl/textures/textures.pro
+++ b/examples/opengl/textures/textures.pro
@@ -11,3 +11,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/opengl/textures
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS textures.pro images
sources.path = $$[QT_INSTALL_EXAMPLES]/opengl/textures
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/painting/basicdrawing/basicdrawing.pro b/examples/painting/basicdrawing/basicdrawing.pro
index 4011260..df845d9 100644
--- a/examples/painting/basicdrawing/basicdrawing.pro
+++ b/examples/painting/basicdrawing/basicdrawing.pro
@@ -10,3 +10,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/painting/basicdrawing
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS basicdrawing.pro images
sources.path = $$[QT_INSTALL_EXAMPLES]/painting/basicdrawing
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000A649 \ No newline at end of file
diff --git a/examples/painting/concentriccircles/concentriccircles.pro b/examples/painting/concentriccircles/concentriccircles.pro
index 093ea1c..bf8398f 100644
--- a/examples/painting/concentriccircles/concentriccircles.pro
+++ b/examples/painting/concentriccircles/concentriccircles.pro
@@ -9,3 +9,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/painting/concentriccircles
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS concentriccircles.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/painting/concentriccircles
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000A64A \ No newline at end of file
diff --git a/examples/painting/fontsampler/fontsampler.pro b/examples/painting/fontsampler/fontsampler.pro
index 8b63752..bc7e0a2 100644
--- a/examples/painting/fontsampler/fontsampler.pro
+++ b/examples/painting/fontsampler/fontsampler.pro
@@ -8,3 +8,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/painting/fontsampler
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS fontsampler.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/painting/fontsampler
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/painting/imagecomposition/imagecomposition.pro b/examples/painting/imagecomposition/imagecomposition.pro
index 935a1d4..66fcf6a 100644
--- a/examples/painting/imagecomposition/imagecomposition.pro
+++ b/examples/painting/imagecomposition/imagecomposition.pro
@@ -9,3 +9,6 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES images *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/painting/imagecomposition
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000A64B \ No newline at end of file
diff --git a/examples/painting/painterpaths/painterpaths.pro b/examples/painting/painterpaths/painterpaths.pro
index 98b9bd1..fbf2ba9 100644
--- a/examples/painting/painterpaths/painterpaths.pro
+++ b/examples/painting/painterpaths/painterpaths.pro
@@ -3,10 +3,14 @@ HEADERS = renderarea.h \
SOURCES = main.cpp \
renderarea.cpp \
window.cpp
-unix:!mac:!vxworks:LIBS += -lm
+unix:!mac:!symbian:!vxworks:LIBS += -lm
# install
target.path = $$[QT_INSTALL_EXAMPLES]/painting/painterpaths
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS painterpaths.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/painting/painterpaths
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000A64C
diff --git a/examples/painting/painting.pro b/examples/painting/painting.pro
index 6d00720..59ca54e 100644
--- a/examples/painting/painting.pro
+++ b/examples/painting/painting.pro
@@ -5,7 +5,7 @@ SUBDIRS = basicdrawing \
painterpaths \
transformations
-!wince*: SUBDIRS += fontsampler
+!wince*:!symbian: SUBDIRS += fontsampler
contains(QT_CONFIG, svg): SUBDIRS += svggenerator svgviewer
@@ -14,3 +14,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/painting
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS painting.pro README
sources.path = $$[QT_INSTALL_EXAMPLES]/painting
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/painting/svggenerator/displaywidget.cpp b/examples/painting/svggenerator/displaywidget.cpp
index 55d999d..5bbffae 100644
--- a/examples/painting/svggenerator/displaywidget.cpp
+++ b/examples/painting/svggenerator/displaywidget.cpp
@@ -63,7 +63,7 @@ DisplayWidget::DisplayWidget(QWidget *parent)
}
//! [paint event]
-void DisplayWidget::paintEvent(QPaintEvent *event)
+void DisplayWidget::paintEvent(QPaintEvent * /* event */)
{
QPainter painter;
painter.begin(this);
diff --git a/examples/painting/svggenerator/svggenerator.pro b/examples/painting/svggenerator/svggenerator.pro
index 4d08ba4..1134619 100644
--- a/examples/painting/svggenerator/svggenerator.pro
+++ b/examples/painting/svggenerator/svggenerator.pro
@@ -13,3 +13,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/painting/svggenerator
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS svggenerator.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/painting/svggenerator
INSTALLS += target sources
+
+symbian:TARGET.UID3 = 0xA000CF68 \ No newline at end of file
diff --git a/examples/painting/svgviewer/svgviewer.pro b/examples/painting/svgviewer/svgviewer.pro
index b29e218..ea77946 100644
--- a/examples/painting/svgviewer/svgviewer.pro
+++ b/examples/painting/svgviewer/svgviewer.pro
@@ -16,8 +16,17 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES svgviewer.pro files
sources.path = $$[QT_INSTALL_EXAMPLES]/painting/svgviewer
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
wince*: {
addFiles.sources = files\*.svg
addFiles.path = \My Documents
DEPLOYMENT += addFiles
}
+
+symbian: {
+ TARGET.UID3 = 0xA000A64E
+ addFiles.sources = files\*.svg
+ addFiles.path = .
+ DEPLOYMENT += addFiles
+}
diff --git a/examples/painting/transformations/transformations.pro b/examples/painting/transformations/transformations.pro
index a8ff610..6e4fe4f 100644
--- a/examples/painting/transformations/transformations.pro
+++ b/examples/painting/transformations/transformations.pro
@@ -9,3 +9,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/painting/transformations
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS transformations.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/painting/transformations
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000A64D \ No newline at end of file
diff --git a/examples/phonon/capabilities/capabilities.pro b/examples/phonon/capabilities/capabilities.pro
index 52b6b1b..d05e5ec 100644
--- a/examples/phonon/capabilities/capabilities.pro
+++ b/examples/phonon/capabilities/capabilities.pro
@@ -14,3 +14,4 @@ wince*{
DEPLOYMENT_PLUGIN += phonon_ds9 phonon_waveout
}
+symbian:TARGET.UID3 = 0xA000CF69
diff --git a/examples/phonon/musicplayer/mainwindow.cpp b/examples/phonon/musicplayer/mainwindow.cpp
index a20d05f..75e4275 100644
--- a/examples/phonon/musicplayer/mainwindow.cpp
+++ b/examples/phonon/musicplayer/mainwindow.cpp
@@ -184,7 +184,7 @@ void MainWindow::metaStateChanged(Phonon::State newState, Phonon::State /* oldSt
QMessageBox::warning(this, tr("Error opening files"),
metaInformationResolver->errorString());
while (!sources.isEmpty() &&
- !(sources.takeLast() == metaInformationResolver->currentSource())) /* loop */;
+ !(sources.takeLast() == metaInformationResolver->currentSource())) {} /* loop */;
return;
}
diff --git a/examples/phonon/musicplayer/musicplayer.pro b/examples/phonon/musicplayer/musicplayer.pro
index 0a93dc2..a0c953a 100644
--- a/examples/phonon/musicplayer/musicplayer.pro
+++ b/examples/phonon/musicplayer/musicplayer.pro
@@ -14,3 +14,4 @@ wince*{
DEPLOYMENT_PLUGIN += phonon_ds9 phonon_waveout
}
+symbian:TARGET.UID3 = 0xA000CF6A
diff --git a/examples/phonon/phonon.pro b/examples/phonon/phonon.pro
index 0dea766..7bb5822 100644
--- a/examples/phonon/phonon.pro
+++ b/examples/phonon/phonon.pro
@@ -8,3 +8,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/phonon
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS phonon.pro README
sources.path = $$[QT_INSTALL_EXAMPLES]/phonon
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/qtconcurrent/imagescaling/imagescaling.pro b/examples/qtconcurrent/imagescaling/imagescaling.pro
index 0a25efb..180571c 100644
--- a/examples/qtconcurrent/imagescaling/imagescaling.pro
+++ b/examples/qtconcurrent/imagescaling/imagescaling.pro
@@ -12,4 +12,6 @@ sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.pro *.png
sources.path = $$[QT_INSTALL_EXAMPLES]/qtconcurrent/imagescaling
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
wince*: DEPLOYMENT_PLUGIN += qgif qjpeg qtiff
diff --git a/examples/qtconcurrent/map/map.pro b/examples/qtconcurrent/map/map.pro
index f20267b..cc80704 100644
--- a/examples/qtconcurrent/map/map.pro
+++ b/examples/qtconcurrent/map/map.pro
@@ -12,3 +12,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/qtconcurrent/map
sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.pro *.png
sources.path = $$[QT_INSTALL_EXAMPLES]/qtconcurrent/map
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/qtconcurrent/progressdialog/progressdialog.pro b/examples/qtconcurrent/progressdialog/progressdialog.pro
index 12ba0bf..aa6a118 100644
--- a/examples/qtconcurrent/progressdialog/progressdialog.pro
+++ b/examples/qtconcurrent/progressdialog/progressdialog.pro
@@ -12,3 +12,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/qtconcurrent/progressdialog
sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.pro *.png
sources.path = $$[QT_INSTALL_EXAMPLES]/qtconcurrent/progressdialog
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/qtconcurrent/qtconcurrent.pro b/examples/qtconcurrent/qtconcurrent.pro
index 5d73533..a30c0bd 100644
--- a/examples/qtconcurrent/qtconcurrent.pro
+++ b/examples/qtconcurrent/qtconcurrent.pro
@@ -13,3 +13,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/qtconcurrent
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS qtconcurrent.pro README
sources.path = $$[QT_INSTALL_EXAMPLES]/qtconcurrent
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/qtconcurrent/runfunction/runfunction.pro b/examples/qtconcurrent/runfunction/runfunction.pro
index 9034476..58a1375 100644
--- a/examples/qtconcurrent/runfunction/runfunction.pro
+++ b/examples/qtconcurrent/runfunction/runfunction.pro
@@ -12,3 +12,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/qtconcurrent/runfunction
sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.pro *.png
sources.path = $$[QT_INSTALL_EXAMPLES]/qtconcurrent/runfunction
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/qtconcurrent/wordcount/wordcount.pro b/examples/qtconcurrent/wordcount/wordcount.pro
index fba95ee..581e6c7 100644
--- a/examples/qtconcurrent/wordcount/wordcount.pro
+++ b/examples/qtconcurrent/wordcount/wordcount.pro
@@ -12,3 +12,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/qtconcurrent/wordcount
sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.pro *.png
sources.path = $$[QT_INSTALL_EXAMPLES]/qtconcurrent/wordcount
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/qtestlib/qtestlib.pro b/examples/qtestlib/qtestlib.pro
index 8addbcb..70115e2 100644
--- a/examples/qtestlib/qtestlib.pro
+++ b/examples/qtestlib/qtestlib.pro
@@ -6,3 +6,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/qtestlib
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS qtestlib.pro README
sources.path = $$[QT_INSTALL_EXAMPLES]/qtestlib
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/qtestlib/tutorial1/tutorial1.pro b/examples/qtestlib/tutorial1/tutorial1.pro
index baa15b2..5191a3d 100644
--- a/examples/qtestlib/tutorial1/tutorial1.pro
+++ b/examples/qtestlib/tutorial1/tutorial1.pro
@@ -6,3 +6,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/qtestlib/tutorial1
sources.files = $$SOURCES *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/qtestlib/tutorial1
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000C60B \ No newline at end of file
diff --git a/examples/qtestlib/tutorial2/tutorial2.pro b/examples/qtestlib/tutorial2/tutorial2.pro
index 44211d8..ae66cac 100644
--- a/examples/qtestlib/tutorial2/tutorial2.pro
+++ b/examples/qtestlib/tutorial2/tutorial2.pro
@@ -6,3 +6,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/qtestlib/tutorial2
sources.files = $$SOURCES *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/qtestlib/tutorial2
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000C60C \ No newline at end of file
diff --git a/examples/qtestlib/tutorial3/tutorial3.pro b/examples/qtestlib/tutorial3/tutorial3.pro
index b494ba8..9fdda2a 100644
--- a/examples/qtestlib/tutorial3/tutorial3.pro
+++ b/examples/qtestlib/tutorial3/tutorial3.pro
@@ -6,3 +6,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/qtestlib/tutorial3
sources.files = $$SOURCES *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/qtestlib/tutorial3
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000C60D \ No newline at end of file
diff --git a/examples/qtestlib/tutorial4/tutorial4.pro b/examples/qtestlib/tutorial4/tutorial4.pro
index 0777d48..4cb7bf8 100644
--- a/examples/qtestlib/tutorial4/tutorial4.pro
+++ b/examples/qtestlib/tutorial4/tutorial4.pro
@@ -6,3 +6,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/qtestlib/tutorial4
sources.files = $$SOURCES *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/qtestlib/tutorial4
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000C60E \ No newline at end of file
diff --git a/examples/qtestlib/tutorial5/tutorial5.pro b/examples/qtestlib/tutorial5/tutorial5.pro
index 0310916..f988904 100644
--- a/examples/qtestlib/tutorial5/tutorial5.pro
+++ b/examples/qtestlib/tutorial5/tutorial5.pro
@@ -6,3 +6,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/qtestlib/tutorial5
sources.files = $$SOURCES *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/qtestlib/tutorial5
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000C60F \ No newline at end of file
diff --git a/examples/qws/ahigl/ahigl.pro b/examples/qws/ahigl/ahigl.pro
index 1ee8e6e..c831335 100644
--- a/examples/qws/ahigl/ahigl.pro
+++ b/examples/qws/ahigl/ahigl.pro
@@ -7,6 +7,8 @@ TARGET = qahiglscreen
target.path = $$[QT_INSTALL_PLUGINS]/gfxdrivers
INSTALLS += target
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
HEADERS = qwindowsurface_ahigl_p.h \
qscreenahigl_qws.h
diff --git a/examples/qws/dbscreen/dbscreen.pro b/examples/qws/dbscreen/dbscreen.pro
index 172a02a..86152ab 100644
--- a/examples/qws/dbscreen/dbscreen.pro
+++ b/examples/qws/dbscreen/dbscreen.pro
@@ -5,6 +5,8 @@ TARGET = dbscreen
target.path += $$[QT_INSTALL_PLUGINS]/gfxdrivers
INSTALLS += target
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
HEADERS = dbscreen.h
SOURCES = dbscreendriverplugin.cpp \
dbscreen.cpp
diff --git a/examples/qws/framebuffer/framebuffer.pro b/examples/qws/framebuffer/framebuffer.pro
index f9fe850..0379908 100644
--- a/examples/qws/framebuffer/framebuffer.pro
+++ b/examples/qws/framebuffer/framebuffer.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/qws/framebuffer
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS framebuffer.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/qws/framebuffer
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/qws/mousecalibration/mousecalibration.pro b/examples/qws/mousecalibration/mousecalibration.pro
index bd31853..6f60b6d 100644
--- a/examples/qws/mousecalibration/mousecalibration.pro
+++ b/examples/qws/mousecalibration/mousecalibration.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/qws/mousecalibration
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/qws/mousecalibration
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/qws/qws.pro b/examples/qws/qws.pro
index 95e1b44..34b1d2c 100644
--- a/examples/qws/qws.pro
+++ b/examples/qws/qws.pro
@@ -7,3 +7,5 @@ SUBDIRS += mousecalibration simpledecoration
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS README *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/qws
INSTALLS += sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/qws/svgalib/svgalib.pro b/examples/qws/svgalib/svgalib.pro
index 8a47c1d..3ab5a19 100644
--- a/examples/qws/svgalib/svgalib.pro
+++ b/examples/qws/svgalib/svgalib.pro
@@ -7,6 +7,8 @@ TARGET = svgalibscreen
target.path = $$[QT_INSTALL_PLUGINS]/gfxdrivers
INSTALLS += target
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
HEADERS = svgalibscreen.h \
svgalibpaintengine.h \
svgalibsurface.h \
diff --git a/examples/richtext/calendar/calendar.pro b/examples/richtext/calendar/calendar.pro
index bf032f5..fb85d96 100644
--- a/examples/richtext/calendar/calendar.pro
+++ b/examples/richtext/calendar/calendar.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/richtext/calendar
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS calendar.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/richtext/calendar
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/richtext/orderform/orderform.pro b/examples/richtext/orderform/orderform.pro
index 63739b0..3875ea0 100644
--- a/examples/richtext/orderform/orderform.pro
+++ b/examples/richtext/orderform/orderform.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/richtext/orderform
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS orderform.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/richtext/orderform
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/richtext/richtext.pro b/examples/richtext/richtext.pro
index ef8f094..d48602e 100644
--- a/examples/richtext/richtext.pro
+++ b/examples/richtext/richtext.pro
@@ -10,3 +10,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/richtext
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS richtext.pro README
sources.path = $$[QT_INSTALL_EXAMPLES]/richtext
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/richtext/syntaxhighlighter/syntaxhighlighter.pro b/examples/richtext/syntaxhighlighter/syntaxhighlighter.pro
index b861970..4b90aa3 100644
--- a/examples/richtext/syntaxhighlighter/syntaxhighlighter.pro
+++ b/examples/richtext/syntaxhighlighter/syntaxhighlighter.pro
@@ -10,6 +10,8 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS syntaxhighlighter.pro ex
sources.path = $$[QT_INSTALL_EXAMPLES]/richtext/syntaxhighlighter
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
wince*: {
addFiles.sources = main.cpp mainwindow.cpp
addFiles.path = .
diff --git a/examples/script/calculator/calculator.pro b/examples/script/calculator/calculator.pro
index 226d5f4..734078c 100644
--- a/examples/script/calculator/calculator.pro
+++ b/examples/script/calculator/calculator.pro
@@ -10,3 +10,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/script/calculator
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro *.js *.ui
sources.path = $$[QT_INSTALL_EXAMPLES]/script/calculator
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/script/context2d/context2d.pro b/examples/script/context2d/context2d.pro
index 30ec9a7..be14272 100644
--- a/examples/script/context2d/context2d.pro
+++ b/examples/script/context2d/context2d.pro
@@ -21,3 +21,12 @@ target.path = $$[QT_INSTALL_EXAMPLES]/script/context2d
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS context2d.pro scripts
sources.path = $$[QT_INSTALL_EXAMPLES]/script/context2d
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+symbian:{
+ TARGET.UID3 = 0xA000C608
+ TARGET.EPOCHEAPSIZE = 0x200000 0xA00000
+ contextScripts.path = .
+ contextScripts.sources = scripts
+ DEPLOYMENT += contextScripts
+} \ No newline at end of file
diff --git a/examples/script/context2d/main.cpp b/examples/script/context2d/main.cpp
index cabc60b..9ed5df8 100644
--- a/examples/script/context2d/main.cpp
+++ b/examples/script/context2d/main.cpp
@@ -48,6 +48,7 @@ int main(int argc, char **argv)
QApplication app(argc, argv);
Window win;
- win.show();
+ //win.show();
+ win.showFullScreen();
return app.exec();
}
diff --git a/examples/script/context2d/qcontext2dcanvas.cpp b/examples/script/context2d/qcontext2dcanvas.cpp
index a495789..40aed1f 100644
--- a/examples/script/context2d/qcontext2dcanvas.cpp
+++ b/examples/script/context2d/qcontext2dcanvas.cpp
@@ -85,6 +85,11 @@ void QContext2DCanvas::contentsChanged(const QImage &image)
void QContext2DCanvas::paintEvent(QPaintEvent *e)
{
QPainter p(this);
+#ifdef Q_WS_S60
+// Draw white rect first since in with some themes the js-file content will produce black-on-black.
+ QBrush whiteBgBrush(Qt::white);
+ p.fillRect(e->rect(), whiteBgBrush);
+#endif
p.setClipRect(e->rect());
p.drawImage(0, 0, m_image);
}
diff --git a/examples/script/customclass/customclass.pro b/examples/script/customclass/customclass.pro
index ba7f69d..bb263d2 100644
--- a/examples/script/customclass/customclass.pro
+++ b/examples/script/customclass/customclass.pro
@@ -11,3 +11,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/script/customclass
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro *.pri
sources.path = $$[QT_INSTALL_EXAMPLES]/script/customclass
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/script/defaultprototypes/defaultprototypes.pro b/examples/script/defaultprototypes/defaultprototypes.pro
index b9a6765..21328e6 100644
--- a/examples/script/defaultprototypes/defaultprototypes.pro
+++ b/examples/script/defaultprototypes/defaultprototypes.pro
@@ -8,3 +8,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/script/defaultprototypes
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.js defaultprototypes.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/script/defaultprototypes
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/script/helloscript/helloscript.pro b/examples/script/helloscript/helloscript.pro
index d94a318..5b04f84 100644
--- a/examples/script/helloscript/helloscript.pro
+++ b/examples/script/helloscript/helloscript.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/script/helloscript
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS helloscript.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/script/helloscript
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/script/marshal/marshal.pro b/examples/script/marshal/marshal.pro
index 46b33b9..69fc578 100644
--- a/examples/script/marshal/marshal.pro
+++ b/examples/script/marshal/marshal.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/script/marshal
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS marshal.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/script/marshal
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/script/qscript/qscript.pro b/examples/script/qscript/qscript.pro
index 759eedf..3c03545 100644
--- a/examples/script/qscript/qscript.pro
+++ b/examples/script/qscript/qscript.pro
@@ -12,3 +12,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/script/qscript
sources.files = $$RESOURCES $$FORMS main.cpp qscript.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/script/qscript
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/script/qsdbg/qsdbg.pro b/examples/script/qsdbg/qsdbg.pro
index c199123..77b55a2 100644
--- a/examples/script/qsdbg/qsdbg.pro
+++ b/examples/script/qsdbg/qsdbg.pro
@@ -16,4 +16,6 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS qsdbg.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/script/qsdbg
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
diff --git a/examples/script/script.pro b/examples/script/script.pro
index ae3542e..c5a37ef 100644
--- a/examples/script/script.pro
+++ b/examples/script/script.pro
@@ -4,8 +4,12 @@ SUBDIRS = helloscript context2d defaultprototypes customclass
!wince*:SUBDIRS += qscript marshal
!wince*:!cross_compile:SUBDIRS += calculator qstetrix
+symbian: SUBDIRS = context2d
+
# install
target.path = $$[QT_INSTALL_EXAMPLES]/script
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS script.pro README
sources.path = $$[QT_INSTALL_EXAMPLES]/script
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/sql/cachedtable/cachedtable.pro b/examples/sql/cachedtable/cachedtable.pro
index a14aa42..89e97ae 100644
--- a/examples/sql/cachedtable/cachedtable.pro
+++ b/examples/sql/cachedtable/cachedtable.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/sql/cachedtable
sources.files = $$SOURCES *.h $$RESOURCES $$FORMS cachedtable.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/sql/cachedtable
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/sql/drilldown/drilldown.pro b/examples/sql/drilldown/drilldown.pro
index e15a4ad..1d0714b 100644
--- a/examples/sql/drilldown/drilldown.pro
+++ b/examples/sql/drilldown/drilldown.pro
@@ -1,7 +1,7 @@
HEADERS = ../connection.h \
imageitem.h \
informationwindow.h \
- view.h
+ view.h
RESOURCES = drilldown.qrc
SOURCES = imageitem.cpp \
informationwindow.cpp \
@@ -14,3 +14,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/sql/drilldown
sources.files = $$SOURCES *.h $$RESOURCES $$FORMS drilldown.pro *.png *.jpg images
sources.path = $$[QT_INSTALL_EXAMPLES]/sql/drilldown
INSTALLS += target sources
+
+symbian:TARGET.UID3 = 0xA000C612
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/sql/drilldown/informationwindow.cpp b/examples/sql/drilldown/informationwindow.cpp
index 3926aba..6aa2a9a 100644
--- a/examples/sql/drilldown/informationwindow.cpp
+++ b/examples/sql/drilldown/informationwindow.cpp
@@ -101,7 +101,9 @@ InformationWindow::InformationWindow(int id, QSqlRelationalTableModel *offices,
setWindowFlags(Qt::Window);
enableButtons(false);
setWindowTitle(tr("Office: %1").arg(locationText->text()));
+#ifndef Q_OS_SYMBIAN
resize(320, sizeHint().height());
+#endif
}
//! [4]
diff --git a/examples/sql/drilldown/main.cpp b/examples/sql/drilldown/main.cpp
index dd57fca..b55d134 100644
--- a/examples/sql/drilldown/main.cpp
+++ b/examples/sql/drilldown/main.cpp
@@ -54,6 +54,10 @@ int main(int argc, char *argv[])
return 1;
View view("offices", "images");
+#ifndef Q_OS_SYMBIAN
view.show();
+#else
+ view.showFullScreen();
+#endif
return app.exec();
}
diff --git a/examples/sql/drilldown/view.cpp b/examples/sql/drilldown/view.cpp
index 29d1505..42a2bfc 100644
--- a/examples/sql/drilldown/view.cpp
+++ b/examples/sql/drilldown/view.cpp
@@ -63,9 +63,14 @@ View::View(const QString &offices, const QString &images, QWidget *parent)
QGraphicsPixmapItem *logo = scene->addPixmap(QPixmap(":/logo.png"));
logo->setPos(30, 515);
+#ifndef Q_OS_SYMBIAN
setMinimumSize(470, 620);
setMaximumSize(470, 620);
- setWindowTitle(tr("Offices World Wide"));
+#else
+ setDragMode(QGraphicsView::ScrollHandDrag);
+#endif
+
+ setWindowTitle(tr("Offices World Wide"));
}
//! [1]
@@ -126,7 +131,11 @@ void View::showInformation(ImageItem *image)
window->raise();
window->activateWindow();
} else if (window && !window->isVisible()) {
+#ifndef Q_OS_SYMBIAN
window->show();
+#else
+ window->showFullScreen();
+#endif
} else {
InformationWindow *window;
window = new InformationWindow(id, officeTable, this);
@@ -134,8 +143,12 @@ void View::showInformation(ImageItem *image)
connect(window, SIGNAL(imageChanged(int, QString)),
this, SLOT(updateImage(int, QString)));
+#ifndef Q_OS_SYMBIAN
window->move(pos() + QPoint(20, 40));
window->show();
+#else
+ window->showFullScreen();
+#endif
informationWindows.append(window);
}
}
diff --git a/examples/sql/masterdetail/masterdetail.pro b/examples/sql/masterdetail/masterdetail.pro
index 205c544..2363e54 100644
--- a/examples/sql/masterdetail/masterdetail.pro
+++ b/examples/sql/masterdetail/masterdetail.pro
@@ -14,3 +14,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/sql/masterdetail
sources.files = $$SOURCES *.h $$RESOURCES $$FORMS masterdetail.pro *.xml images
sources.path = $$[QT_INSTALL_EXAMPLES]/sql/masterdetail
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/sql/querymodel/querymodel.pro b/examples/sql/querymodel/querymodel.pro
index e0e0813..f20898c 100644
--- a/examples/sql/querymodel/querymodel.pro
+++ b/examples/sql/querymodel/querymodel.pro
@@ -11,3 +11,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/sql/querymodel
sources.files = $$SOURCES *.h $$RESOURCES $$FORMS querymodel.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/sql/querymodel
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/sql/relationaltablemodel/relationaltablemodel.pro b/examples/sql/relationaltablemodel/relationaltablemodel.pro
index 38f1e21..e57729e 100644
--- a/examples/sql/relationaltablemodel/relationaltablemodel.pro
+++ b/examples/sql/relationaltablemodel/relationaltablemodel.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/sql/relationaltablemodel
sources.files = $$SOURCES *.h $$RESOURCES $$FORMS relationaltablemodel.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/sql/relationaltablemodel
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/sql/sql.pro b/examples/sql/sql.pro
index 6d0d402..7bdff69 100644
--- a/examples/sql/sql.pro
+++ b/examples/sql/sql.pro
@@ -1,12 +1,18 @@
TEMPLATE = subdirs
-SUBDIRS = cachedtable \
- drilldown \
- relationaltablemodel \
- sqlwidgetmapper
-!wince*: SUBDIRS += querymodel tablemodel masterdetail
+SUBDIRS = drilldown
+!symbian: SUBDIRS += cachedtable \
+ relationaltablemodel \
+ sqlwidgetmapper
+
+!wince*:!symbian: SUBDIRS += \
+ querymodel \
+ tablemodel \
+ masterdetail
# install
sources.files = connection.h sql.pro README
sources.path = $$[QT_INSTALL_EXAMPLES]/sql
INSTALLS += sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/sql/tablemodel/tablemodel.pro b/examples/sql/tablemodel/tablemodel.pro
index 4d099d0..7adf40c 100644
--- a/examples/sql/tablemodel/tablemodel.pro
+++ b/examples/sql/tablemodel/tablemodel.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/sql/tablemodel
sources.files = $$SOURCES *.h $$RESOURCES $$FORMS tablemodel.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/sql/tablemodel
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/threads/mandelbrot/mandelbrot.pro b/examples/threads/mandelbrot/mandelbrot.pro
index 7870ca8..cf95ea0 100644
--- a/examples/threads/mandelbrot/mandelbrot.pro
+++ b/examples/threads/mandelbrot/mandelbrot.pro
@@ -4,10 +4,12 @@ SOURCES = main.cpp \
mandelbrotwidget.cpp \
renderthread.cpp
-unix:!mac:!vxworks:LIBS += -lm
+unix:!mac:!symbian:!vxworks:LIBS += -lm
# install
target.path = $$[QT_INSTALL_EXAMPLES]/threads/mandelbrot
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS mandelbrot.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/threads/mandelbrot
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/threads/semaphores/semaphores.pro b/examples/threads/semaphores/semaphores.pro
index 2e468b7..5331383 100644
--- a/examples/threads/semaphores/semaphores.pro
+++ b/examples/threads/semaphores/semaphores.pro
@@ -8,3 +8,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/threads/semaphores
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS semaphores.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/threads/semaphores
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/threads/threads.pro b/examples/threads/threads.pro
index a2ccfa7..a0e69c8 100644
--- a/examples/threads/threads.pro
+++ b/examples/threads/threads.pro
@@ -8,3 +8,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/threads
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS threads.pro README
sources.path = $$[QT_INSTALL_EXAMPLES]/threads
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/threads/waitconditions/waitconditions.pro b/examples/threads/waitconditions/waitconditions.pro
index 8c34cec..49fe318 100644
--- a/examples/threads/waitconditions/waitconditions.pro
+++ b/examples/threads/waitconditions/waitconditions.pro
@@ -10,11 +10,13 @@ INCLUDEPATH += .
# Input
SOURCES += waitconditions.cpp
CONFIG += qt warn_on create_prl link_prl console
-OBJECTS_DIR=.obj/debug-shared
-MOC_DIR=.moc/debug-shared
+OBJECTS_DIR=obj/debug-shared
+MOC_DIR=moc/debug-shared
# install
target.path = $$[QT_INSTALL_EXAMPLES]/threads/waitconditions
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS waitconditions.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/threads/waitconditions
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tools/codecs/codecs.pro b/examples/tools/codecs/codecs.pro
index 6ae225a..7cc0ae8 100644
--- a/examples/tools/codecs/codecs.pro
+++ b/examples/tools/codecs/codecs.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tools/codecs
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS encodedfiles codecs.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/tools/codecs
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tools/completer/completer.pro b/examples/tools/completer/completer.pro
index 4ac5084..4f31454 100644
--- a/examples/tools/completer/completer.pro
+++ b/examples/tools/completer/completer.pro
@@ -10,3 +10,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tools/completer
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS completer.pro resources
sources.path = $$[QT_INSTALL_EXAMPLES]/tools/completer
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tools/customcompleter/customcompleter.pro b/examples/tools/customcompleter/customcompleter.pro
index ebaa831..8a11cf1 100644
--- a/examples/tools/customcompleter/customcompleter.pro
+++ b/examples/tools/customcompleter/customcompleter.pro
@@ -10,3 +10,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tools/customcompleter
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS customcompleter.pro resources
sources.path = $$[QT_INSTALL_EXAMPLES]/tools/customcompleter
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tools/echoplugin/echoplugin.pro b/examples/tools/echoplugin/echoplugin.pro
index 998f25c..6146b49 100644
--- a/examples/tools/echoplugin/echoplugin.pro
+++ b/examples/tools/echoplugin/echoplugin.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tools/echoplugin
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS echoplugin.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/tools/echoplugin
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tools/echoplugin/echowindow/echowindow.pro b/examples/tools/echoplugin/echowindow/echowindow.pro
index fb1cea9..142438b 100644
--- a/examples/tools/echoplugin/echowindow/echowindow.pro
+++ b/examples/tools/echoplugin/echowindow/echowindow.pro
@@ -16,3 +16,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tools/echoplugin
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS echowindow.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/tools/echoplugin/echowindow
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tools/echoplugin/plugin/plugin.pro b/examples/tools/echoplugin/plugin/plugin.pro
index 5c0c5af..d943425 100644
--- a/examples/tools/echoplugin/plugin/plugin.pro
+++ b/examples/tools/echoplugin/plugin/plugin.pro
@@ -13,3 +13,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tools/echoplugin/plugin
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS plugin.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/tools/echoplugin/plugin
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.EPOCALLOWDLLDATA = 1
diff --git a/examples/tools/i18n/i18n.pro b/examples/tools/i18n/i18n.pro
index 0ef9a0b..a065611 100644
--- a/examples/tools/i18n/i18n.pro
+++ b/examples/tools/i18n/i18n.pro
@@ -24,3 +24,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tools/i18n
sources.files = $$SOURCES $$HEADERS $$RESOURCES translations i18n.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/tools/i18n
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tools/plugandpaint/plugandpaint.pro b/examples/tools/plugandpaint/plugandpaint.pro
index 15bc21e..fef1b86 100644
--- a/examples/tools/plugandpaint/plugandpaint.pro
+++ b/examples/tools/plugandpaint/plugandpaint.pro
@@ -7,7 +7,11 @@ SOURCES = main.cpp \
mainwindow.cpp \
paintarea.cpp \
plugindialog.cpp
-LIBS = -L$${QT_BUILD_TREE}/examples/tools/plugandpaint/plugins -lpnp_basictools
+symbian {
+ LIBS = -lpnp_basictools.lib
+} else {
+ LIBS = -L$${QT_BUILD_TREE}/examples/tools/plugandpaint/plugins -lpnp_basictools
+}
if(!debug_and_release|build_pass):CONFIG(debug, debug|release) {
mac:LIBS = $$member(LIBS, 0) $$member(LIBS, 1)_debug
@@ -20,3 +24,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tools/plugandpaint
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS plugandpaint.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/tools/plugandpaint
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tools/plugandpaintplugins/basictools/basictools.pro b/examples/tools/plugandpaintplugins/basictools/basictools.pro
index f015fdc..f9cd4a6 100644
--- a/examples/tools/plugandpaintplugins/basictools/basictools.pro
+++ b/examples/tools/plugandpaintplugins/basictools/basictools.pro
@@ -13,3 +13,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tools/plugandpaint/plugins
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS basictools.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/tools/plugandpaintplugins/basictools
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tools/plugandpaintplugins/extrafilters/extrafilters.pro b/examples/tools/plugandpaintplugins/extrafilters/extrafilters.pro
index 3cf2b66..7fbb6d1 100644
--- a/examples/tools/plugandpaintplugins/extrafilters/extrafilters.pro
+++ b/examples/tools/plugandpaintplugins/extrafilters/extrafilters.pro
@@ -13,3 +13,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tools/plugandpaint/plugins
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS extrafilters.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/tools/plugandpaintplugins/extrafilters
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.EPOCALLOWDLLDATA = 1
diff --git a/examples/tools/plugandpaintplugins/plugandpaintplugins.pro b/examples/tools/plugandpaintplugins/plugandpaintplugins.pro
index 89e8b7e..ccc042c 100644
--- a/examples/tools/plugandpaintplugins/plugandpaintplugins.pro
+++ b/examples/tools/plugandpaintplugins/plugandpaintplugins.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tools/plugandpaintplugins
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS plugandpaintplugins.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/tools/plugandpaintplugins
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tools/regexp/regexp.pro b/examples/tools/regexp/regexp.pro
index 15ca9a4..bbb3fd3 100644
--- a/examples/tools/regexp/regexp.pro
+++ b/examples/tools/regexp/regexp.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tools/regexp
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS regexp.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/tools/regexp
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tools/settingseditor/settingseditor.pro b/examples/tools/settingseditor/settingseditor.pro
index 321c2bb..c6838bc 100644
--- a/examples/tools/settingseditor/settingseditor.pro
+++ b/examples/tools/settingseditor/settingseditor.pro
@@ -13,3 +13,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tools/settingseditor
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS settingseditor.pro inifiles
sources.path = $$[QT_INSTALL_EXAMPLES]/tools/settingseditor
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tools/styleplugin/plugin/plugin.pro b/examples/tools/styleplugin/plugin/plugin.pro
index 1e84e3c..2a36d51 100644
--- a/examples/tools/styleplugin/plugin/plugin.pro
+++ b/examples/tools/styleplugin/plugin/plugin.pro
@@ -19,3 +19,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tools/styleplugin/styles
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS plugin.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/tools/styleplugin/plugin
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.EPOCALLOWDLLDATA = 1
diff --git a/examples/tools/styleplugin/styleplugin.pro b/examples/tools/styleplugin/styleplugin.pro
index bf4fa5c..74f77b5 100644
--- a/examples/tools/styleplugin/styleplugin.pro
+++ b/examples/tools/styleplugin/styleplugin.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tools/styleplugin
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS styleplugin.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/tools/styleplugin
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tools/styleplugin/stylewindow/stylewindow.pro b/examples/tools/styleplugin/stylewindow/stylewindow.pro
index 7c5266d..df68168 100644
--- a/examples/tools/styleplugin/stylewindow/stylewindow.pro
+++ b/examples/tools/styleplugin/stylewindow/stylewindow.pro
@@ -15,3 +15,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tools/styleplugin
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS stylewindow.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/tools/styleplugin/stylewindow
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tools/tools.pro b/examples/tools/tools.pro
index c694dd8..b1509dc 100644
--- a/examples/tools/tools.pro
+++ b/examples/tools/tools.pro
@@ -21,3 +21,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tools
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS tools.pro README
sources.path = $$[QT_INSTALL_EXAMPLES]/tools
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tools/treemodelcompleter/treemodelcompleter.pro b/examples/tools/treemodelcompleter/treemodelcompleter.pro
index 8631e2b..ef5c0cb 100644
--- a/examples/tools/treemodelcompleter/treemodelcompleter.pro
+++ b/examples/tools/treemodelcompleter/treemodelcompleter.pro
@@ -10,3 +10,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tools/treemodelcompleter
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS treemodelcompleter.pro resources
sources.path = $$[QT_INSTALL_EXAMPLES]/tools/treemodelcompleter
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tools/undoframework/undoframework.pro b/examples/tools/undoframework/undoframework.pro
index 42010f5..f797eb5 100644
--- a/examples/tools/undoframework/undoframework.pro
+++ b/examples/tools/undoframework/undoframework.pro
@@ -14,3 +14,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tools/undoframework
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS undoframework.pro README images
sources.path = $$[QT_INSTALL_EXAMPLES]/tools/undoframework
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tutorials/addressbook/addressbook.pro b/examples/tutorials/addressbook/addressbook.pro
index 4607c25..8e98593 100644
--- a/examples/tutorials/addressbook/addressbook.pro
+++ b/examples/tutorials/addressbook/addressbook.pro
@@ -6,3 +6,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tutorials/addressbook
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS addressbook.pro README
sources.path = $$[QT_INSTALL_EXAMPLES]/tutorials/addressbook
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tutorials/addressbook/part1/part1.pro b/examples/tutorials/addressbook/part1/part1.pro
index bb181dd..505f814 100644
--- a/examples/tutorials/addressbook/part1/part1.pro
+++ b/examples/tutorials/addressbook/part1/part1.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tutorials/addressbook/part1
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS part1.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/tutorials/addressbook/part1
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tutorials/addressbook/part2/part2.pro b/examples/tutorials/addressbook/part2/part2.pro
index 01ce344..fdc0079 100644
--- a/examples/tutorials/addressbook/part2/part2.pro
+++ b/examples/tutorials/addressbook/part2/part2.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tutorials/addressbook/part2
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS part2.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/tutorials/addressbook/part2
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tutorials/addressbook/part3/part3.pro b/examples/tutorials/addressbook/part3/part3.pro
index 128c038..6e33cb8 100644
--- a/examples/tutorials/addressbook/part3/part3.pro
+++ b/examples/tutorials/addressbook/part3/part3.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tutorials/addressbook/part3
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS part3.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/tutorials/addressbook/part3
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tutorials/addressbook/part4/part4.pro b/examples/tutorials/addressbook/part4/part4.pro
index 23ce3e6..0cfb546 100644
--- a/examples/tutorials/addressbook/part4/part4.pro
+++ b/examples/tutorials/addressbook/part4/part4.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tutorials/addressbook/part4
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS part4.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/tutorials/addressbook/part4
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tutorials/addressbook/part5/part5.pro b/examples/tutorials/addressbook/part5/part5.pro
index 95123d0..92e3d51 100644
--- a/examples/tutorials/addressbook/part5/part5.pro
+++ b/examples/tutorials/addressbook/part5/part5.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tutorials/addressbook/part5
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS part5.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/tutorials/addressbook/part5
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tutorials/addressbook/part6/part6.pro b/examples/tutorials/addressbook/part6/part6.pro
index dc895613..1b57b16 100644
--- a/examples/tutorials/addressbook/part6/part6.pro
+++ b/examples/tutorials/addressbook/part6/part6.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tutorials/addressbook/part6
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS part6.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/tutorials/addressbook/part6
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tutorials/addressbook/part7/part7.pro b/examples/tutorials/addressbook/part7/part7.pro
index a726d91..fc47fae 100644
--- a/examples/tutorials/addressbook/part7/part7.pro
+++ b/examples/tutorials/addressbook/part7/part7.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/tutorials/addressbook/part7
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS part7.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/tutorials/addressbook/part7
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/tutorials/tutorials.pro b/examples/tutorials/tutorials.pro
index 8b3f41f..427dc03 100644
--- a/examples/tutorials/tutorials.pro
+++ b/examples/tutorials/tutorials.pro
@@ -6,3 +6,5 @@ SUBDIRS = \
sources.files = README *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/tutorials
INSTALLS += sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/uitools/multipleinheritance/multipleinheritance.pro b/examples/uitools/multipleinheritance/multipleinheritance.pro
index 92dda2e..5340ac5 100644
--- a/examples/uitools/multipleinheritance/multipleinheritance.pro
+++ b/examples/uitools/multipleinheritance/multipleinheritance.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/uitools/multipleinheritance
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/uitools/multipleinheritance
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/uitools/textfinder/textfinder.pro b/examples/uitools/textfinder/textfinder.pro
index 9d2a96d..f4f14e1 100644
--- a/examples/uitools/textfinder/textfinder.pro
+++ b/examples/uitools/textfinder/textfinder.pro
@@ -8,3 +8,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/uitools/textfinder
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro forms
sources.path = $$[QT_INSTALL_EXAMPLES]/uitools/textfinder
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/uitools/uitools.pro b/examples/uitools/uitools.pro
index ddec822..78c15fa 100644
--- a/examples/uitools/uitools.pro
+++ b/examples/uitools/uitools.pro
@@ -1,10 +1,12 @@
TEMPLATE = subdirs
SUBDIRS = multipleinheritance
-!wince*:contains(QT_BUILD_PARTS, tools): SUBDIRS += textfinder
+!wince*:!symbian:contains(QT_BUILD_PARTS, tools): SUBDIRS += textfinder
# install
target.path = $$[QT_INSTALL_EXAMPLES]/uitools
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS uitools.pro README
sources.path = $$[QT_INSTALL_EXAMPLES]/uitools
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/webkit/fancybrowser/fancybrowser.pro b/examples/webkit/fancybrowser/fancybrowser.pro
index 3de3036..e496241 100644
--- a/examples/webkit/fancybrowser/fancybrowser.pro
+++ b/examples/webkit/fancybrowser/fancybrowser.pro
@@ -1,4 +1,4 @@
-QT += webkit
+QT += webkit network
HEADERS = mainwindow.h
SOURCES = main.cpp \
mainwindow.cpp
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/webkit/fancybrowser
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/webkit/fancybrowser
INSTALLS += target sources
+
+symbian:TARGET.UID3 = 0xA000CF6C
diff --git a/examples/webkit/formextractor/formextractor.pro b/examples/webkit/formextractor/formextractor.pro
index d2cb240..33e2267 100644
--- a/examples/webkit/formextractor/formextractor.pro
+++ b/examples/webkit/formextractor/formextractor.pro
@@ -1,4 +1,4 @@
-QT += webkit
+QT += webkit network
TARGET = formExtractor
TEMPLATE = app
SOURCES += main.cpp \
@@ -14,3 +14,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/webkit/formextractor
sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.pro form.html images
sources.path = $$[QT_INSTALL_EXAMPLES]/webkit/formextractor
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000CF6D
diff --git a/examples/webkit/googlechat/googlechat.pro b/examples/webkit/googlechat/googlechat.pro
index 14b7085..8e4f9a6 100644
--- a/examples/webkit/googlechat/googlechat.pro
+++ b/examples/webkit/googlechat/googlechat.pro
@@ -1,4 +1,4 @@
-QT += webkit
+QT += webkit network
HEADERS = googlechat.h
SOURCES = main.cpp \
googlechat.cpp
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/webkit/googlechat
sources.files = $$SOURCES $$HEADERS $$FORMS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/webkit/googlechat
INSTALLS += target sources
+
+symbian:TARGET.UID3 = 0xA000CF6E
diff --git a/examples/webkit/previewer/previewer.pro b/examples/webkit/previewer/previewer.pro
index 75ab6fb..cc7fb73 100644
--- a/examples/webkit/previewer/previewer.pro
+++ b/examples/webkit/previewer/previewer.pro
@@ -1,4 +1,4 @@
-QT += webkit
+QT += webkit network
HEADERS = previewer.h \
mainwindow.h
SOURCES = main.cpp \
@@ -11,3 +11,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/webkit/previewer
sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.pro images
sources.path = $$[QT_INSTALL_EXAMPLES]/webkit/previewer
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000CF6F
diff --git a/examples/webkit/webkit.pro b/examples/webkit/webkit.pro
index 225816a..5c954c2 100644
--- a/examples/webkit/webkit.pro
+++ b/examples/webkit/webkit.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/webkit
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS webkit.pro README
sources.path = $$[QT_INSTALL_EXAMPLES]/webkit
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/widgets/analogclock/analogclock.pro b/examples/widgets/analogclock/analogclock.pro
index 62a1806..9865a11 100644
--- a/examples/widgets/analogclock/analogclock.pro
+++ b/examples/widgets/analogclock/analogclock.pro
@@ -7,3 +7,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/widgets/analogclock
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS analogclock.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/analogclock
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000A64F \ No newline at end of file
diff --git a/examples/widgets/calculator/calculator.pro b/examples/widgets/calculator/calculator.pro
index a9a50d6..178f43e 100644
--- a/examples/widgets/calculator/calculator.pro
+++ b/examples/widgets/calculator/calculator.pro
@@ -9,3 +9,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/widgets/calculator
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS calculator.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/calculator
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000C602 \ No newline at end of file
diff --git a/examples/widgets/calendarwidget/calendarwidget.pro b/examples/widgets/calendarwidget/calendarwidget.pro
index 9326989..63c154b 100644
--- a/examples/widgets/calendarwidget/calendarwidget.pro
+++ b/examples/widgets/calendarwidget/calendarwidget.pro
@@ -7,3 +7,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/widgets/calendarwidget
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS calendarwidget.pro resources
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/calendarwidget
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000C603 \ No newline at end of file
diff --git a/examples/widgets/charactermap/charactermap.pro b/examples/widgets/charactermap/charactermap.pro
index fe0733d..9763287 100644
--- a/examples/widgets/charactermap/charactermap.pro
+++ b/examples/widgets/charactermap/charactermap.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/widgets/charactermap
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS charactermap.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/charactermap
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/widgets/digitalclock/digitalclock.pro b/examples/widgets/digitalclock/digitalclock.pro
index b87b4a0..b7c8e09 100644
--- a/examples/widgets/digitalclock/digitalclock.pro
+++ b/examples/widgets/digitalclock/digitalclock.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/widgets/digitalclock
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS digitalclock.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/digitalclock
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/widgets/groupbox/groupbox.pro b/examples/widgets/groupbox/groupbox.pro
index 7175f66..8d09f5f 100644
--- a/examples/widgets/groupbox/groupbox.pro
+++ b/examples/widgets/groupbox/groupbox.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/widgets/groupbox
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS groupbox.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/groupbox
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/widgets/icons/icons.pro b/examples/widgets/icons/icons.pro
index 3b432d9..ea9c848 100644
--- a/examples/widgets/icons/icons.pro
+++ b/examples/widgets/icons/icons.pro
@@ -14,6 +14,8 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS icons.pro images
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/icons
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
wince*: {
imageFiles.sources = images/*
wincewm*: {
diff --git a/examples/widgets/imageviewer/imageviewer.pro b/examples/widgets/imageviewer/imageviewer.pro
index 31c9d47..597d95b 100644
--- a/examples/widgets/imageviewer/imageviewer.pro
+++ b/examples/widgets/imageviewer/imageviewer.pro
@@ -8,6 +8,8 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS imageviewer.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/imageviewer
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
wince*: {
DEPLOYMENT_PLUGIN += qjpeg qmng qgif
}
diff --git a/examples/widgets/lineedits/lineedits.pro b/examples/widgets/lineedits/lineedits.pro
index e963024..5347148 100644
--- a/examples/widgets/lineedits/lineedits.pro
+++ b/examples/widgets/lineedits/lineedits.pro
@@ -7,3 +7,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/widgets/lineedits
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS lineedits.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/lineedits
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000C604 \ No newline at end of file
diff --git a/examples/widgets/movie/movie.pro b/examples/widgets/movie/movie.pro
index 6aa5780..fe011d2 100644
--- a/examples/widgets/movie/movie.pro
+++ b/examples/widgets/movie/movie.pro
@@ -8,6 +8,8 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES movie.pro animation.mng
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/movie
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
wince*: {
addFiles.sources += *.mng
addFiles.path = .
diff --git a/examples/widgets/scribble/scribble.pro b/examples/widgets/scribble/scribble.pro
index 21f24cc..a9190f7 100644
--- a/examples/widgets/scribble/scribble.pro
+++ b/examples/widgets/scribble/scribble.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/widgets/scribble
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS scribble.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/scribble
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/widgets/shapedclock/shapedclock.pro b/examples/widgets/shapedclock/shapedclock.pro
index 6ef5dd0..c4d48f6 100644
--- a/examples/widgets/shapedclock/shapedclock.pro
+++ b/examples/widgets/shapedclock/shapedclock.pro
@@ -7,3 +7,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/widgets/shapedclock
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS shapedclock.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/shapedclock
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000C605 \ No newline at end of file
diff --git a/examples/widgets/sliders/sliders.pro b/examples/widgets/sliders/sliders.pro
index b845554..742fc27 100644
--- a/examples/widgets/sliders/sliders.pro
+++ b/examples/widgets/sliders/sliders.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/widgets/sliders
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS sliders.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/sliders
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/widgets/softkeys/main.cpp b/examples/widgets/softkeys/main.cpp
new file mode 100644
index 0000000..a0f6052
--- /dev/null
+++ b/examples/widgets/softkeys/main.cpp
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtGui>
+#include "softkeys.h"
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+ MainWindow mw;
+ mw.showMaximized();
+ return app.exec();
+}
diff --git a/examples/widgets/softkeys/softkeys.cpp b/examples/widgets/softkeys/softkeys.cpp
new file mode 100644
index 0000000..98ffd69
--- /dev/null
+++ b/examples/widgets/softkeys/softkeys.cpp
@@ -0,0 +1,161 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "softkeys.h"
+
+MainWindow::MainWindow(QWidget *parent)
+ : QMainWindow(parent)
+{
+ central = new QWidget(this);
+ central->setContextMenuPolicy(Qt::NoContextMenu); // explicitly forbid usage of context menu so actions item is not shown menu
+ setCentralWidget(central);
+
+ // Create text editor and set softkeys to it
+ textEditor= new QTextEdit(tr("Navigate in UI to see context sensitive softkeys in action"), this);
+ QAction* menu = new QAction(tr("Menu"), this);
+ menu->setSoftKeyRole(QAction::MenuSoftKey);
+ QAction* clear = new QAction(tr("Clear"), this);
+ clear->setSoftKeyRole(QAction::CancelSoftKey);
+
+ QList<QAction*> textEditorSoftKeys;
+ textEditorSoftKeys.append(menu);
+ textEditorSoftKeys.append(clear);
+ textEditor->setSoftKeys(textEditorSoftKeys);
+
+ infoLabel = new QLabel(tr(""), this);
+ infoLabel->setContextMenuPolicy(Qt::NoContextMenu);
+
+ toggleButton = new QPushButton(tr("Custom softkeys"), this);
+ toggleButton->setContextMenuPolicy(Qt::NoContextMenu);
+ toggleButton->setCheckable(true);
+
+ pushButton = new QPushButton(tr("Open File Dialog"), this);
+ pushButton->setContextMenuPolicy(Qt::NoContextMenu);
+
+ QComboBox* comboBox = new QComboBox(this);
+ comboBox->setContextMenuPolicy(Qt::NoContextMenu);
+ comboBox->insertItems(0, QStringList()
+ << QApplication::translate("MainWindow", "Selection1", 0, QApplication::UnicodeUTF8)
+ << QApplication::translate("MainWindow", "Selection2", 0, QApplication::UnicodeUTF8)
+ << QApplication::translate("MainWindow", "Selection3", 0, QApplication::UnicodeUTF8)
+ );
+
+ layout = new QVBoxLayout;
+ layout->addWidget(textEditor);
+ layout->addWidget(infoLabel);
+ layout->addWidget(toggleButton);
+ layout->addWidget(pushButton);
+ layout->addWidget(comboBox);
+ central->setLayout(layout);
+
+ fileMenu = menuBar()->addMenu(tr("&File"));
+ exit = new QAction(tr("&Exit"), this);
+ fileMenu->addAction(exit);
+
+ connect(clear, SIGNAL(triggered()), this, SLOT(clearTextEditor()));
+ connect(pushButton, SIGNAL(clicked()), this, SLOT(openDialog()));
+ connect(exit, SIGNAL(triggered()), this, SLOT(exitApplication()));
+ connect(toggleButton, SIGNAL(clicked()), this, SLOT(setCustomSoftKeys()));
+ pushButton->setFocus();
+}
+
+MainWindow::~MainWindow()
+{
+}
+
+void MainWindow::clearTextEditor()
+{
+ textEditor->setText(tr(""));
+}
+
+void MainWindow::openDialog()
+{
+ QFileDialog::getOpenFileName(this);
+}
+
+void MainWindow::addSoftKeys()
+{
+ ok = new QAction(tr("Ok"), this);
+ ok->setSoftKeyRole(QAction::OkSoftKey);
+ connect(ok, SIGNAL(triggered()), this, SLOT(okPressed()));
+
+ cancel = new QAction(tr("Cancel"), this);
+ cancel->setSoftKeyRole(QAction::CancelSoftKey);
+ connect(cancel, SIGNAL(triggered()), this, SLOT(cancelPressed()));
+
+ QList<QAction*> softkeys;
+ softkeys.append(ok);
+ softkeys.append(cancel);
+ QWidget* focusWidget = QApplication::focusWidget();
+ if (focusWidget)
+ focusWidget->setSoftKeys(softkeys);
+}
+
+void MainWindow::setCustomSoftKeys()
+{
+ if (toggleButton->isChecked()) {
+ infoLabel->setText(tr("Custom softkeys set"));
+ addSoftKeys();
+ }
+ else {
+ infoLabel->setText(tr("Custom softkeys removed"));
+ QWidget* focusWidget = QApplication::focusWidget();
+ if (focusWidget)
+ focusWidget->setSoftKey(0);
+ }
+}
+
+void MainWindow::exitApplication()
+{
+ qApp->exit();
+}
+
+void MainWindow::okPressed()
+{
+ infoLabel->setText(tr("OK pressed"));
+}
+
+void MainWindow::cancelPressed()
+{
+ infoLabel->setText(tr("Cancel pressed"));
+}
+
+
diff --git a/examples/widgets/softkeys/softkeys.h b/examples/widgets/softkeys/softkeys.h
new file mode 100644
index 0000000..e0ee89a
--- /dev/null
+++ b/examples/widgets/softkeys/softkeys.h
@@ -0,0 +1,86 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef SOFTKEYS_H
+#define SOFTKEYS_H
+
+#include <QtGui>
+
+class MainWindow : public QMainWindow
+{
+ Q_OBJECT
+public:
+
+private slots:
+ void clearTextEditor();
+ void openDialog();
+ void addSoftKeys();
+ void exitApplication();
+ void okPressed();
+ void cancelPressed();
+ void setCustomSoftKeys();
+public:
+ MainWindow(QWidget *parent = 0);
+ ~MainWindow();
+private:
+ QVBoxLayout *layout;
+ QWidget *central;
+ QTextEdit* textEditor;
+ QLabel *infoLabel;
+ QPushButton* toggleButton;
+ QPushButton* pushButton;
+ QMenu* fileMenu;
+ QAction* addSoftKeysAct;
+ QAction* exit;
+ QAction* ok;
+ QAction* cancel;
+};
+
+//! [0]
+class SoftKey : public QWidget
+{
+ Q_OBJECT
+public:
+ SoftKey(QWidget *parent = 0);
+};
+//! [0]
+
+#endif
diff --git a/examples/widgets/softkeys/softkeys.pro b/examples/widgets/softkeys/softkeys.pro
new file mode 100644
index 0000000..9a0feea
--- /dev/null
+++ b/examples/widgets/softkeys/softkeys.pro
@@ -0,0 +1,14 @@
+HEADERS = softkeys.h
+SOURCES += \
+ main.cpp \
+ softkeys.cpp
+
+# install
+target.path = $$[QT_INSTALL_EXAMPLES]/widgets/softkeys
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS softkeys.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/softkeys
+INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000CF6B
diff --git a/examples/widgets/spinboxes/spinboxes.pro b/examples/widgets/spinboxes/spinboxes.pro
index 4edb79a..b859ab7 100644
--- a/examples/widgets/spinboxes/spinboxes.pro
+++ b/examples/widgets/spinboxes/spinboxes.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/widgets/spinboxes
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS spinboxes.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/spinboxes
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/widgets/styles/styles.pro b/examples/widgets/styles/styles.pro
index 4c6c682..8918d21 100644
--- a/examples/widgets/styles/styles.pro
+++ b/examples/widgets/styles/styles.pro
@@ -12,3 +12,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/widgets/styles
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS styles.pro images
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/styles
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/widgets/stylesheet/stylesheet.pro b/examples/widgets/stylesheet/stylesheet.pro
index 9a64c00..71dfc6d 100644
--- a/examples/widgets/stylesheet/stylesheet.pro
+++ b/examples/widgets/stylesheet/stylesheet.pro
@@ -12,3 +12,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/widgets/stylesheet
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro images layouts qss
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/stylesheet
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/widgets/tablet/tablet.pro b/examples/widgets/tablet/tablet.pro
index 27d8d2c..ee25888 100644
--- a/examples/widgets/tablet/tablet.pro
+++ b/examples/widgets/tablet/tablet.pro
@@ -11,3 +11,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tablet
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS tablet.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/tablet
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/widgets/tetrix/tetrix.pro b/examples/widgets/tetrix/tetrix.pro
index 59392fa..2223b86 100644
--- a/examples/widgets/tetrix/tetrix.pro
+++ b/examples/widgets/tetrix/tetrix.pro
@@ -11,3 +11,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tetrix
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS tetrix.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/tetrix
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000C606 \ No newline at end of file
diff --git a/examples/widgets/tooltips/tooltips.pro b/examples/widgets/tooltips/tooltips.pro
index 9f0bf41..0eca4c8 100644
--- a/examples/widgets/tooltips/tooltips.pro
+++ b/examples/widgets/tooltips/tooltips.pro
@@ -10,3 +10,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tooltips
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS tooltips.pro images
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/tooltips
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/widgets/validators/validators.pro b/examples/widgets/validators/validators.pro
index 8e7884d..d7f9dde 100644
--- a/examples/widgets/validators/validators.pro
+++ b/examples/widgets/validators/validators.pro
@@ -19,3 +19,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/widgets/validators
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro *.png
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/validators
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/widgets/widgets.pro b/examples/widgets/widgets.pro
index 0af83c7..399a3ac 100644
--- a/examples/widgets/widgets.pro
+++ b/examples/widgets/widgets.pro
@@ -22,6 +22,16 @@ SUBDIRS = analogclock \
wiggly \
windowflags
+symbian: SUBDIRS = \
+ analogclock \
+ calculator \
+ calendarwidget \
+ lineedits \
+ shapedclock \
+ tetrix \
+ wiggly \
+ softkeys
+
contains(styles, motif): SUBDIRS += styles
# install
@@ -29,3 +39,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/widgets
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS widgets.pro README
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/widgets/wiggly/dialog.cpp b/examples/widgets/wiggly/dialog.cpp
index 36b26b2..3b02638 100644
--- a/examples/widgets/wiggly/dialog.cpp
+++ b/examples/widgets/wiggly/dialog.cpp
@@ -45,7 +45,7 @@
#include "wigglywidget.h"
//! [0]
-Dialog::Dialog(QWidget *parent)
+Dialog::Dialog(QWidget *parent, bool smallScreen)
: QDialog(parent)
{
WigglyWidget *wigglyWidget = new WigglyWidget;
@@ -58,9 +58,12 @@ Dialog::Dialog(QWidget *parent)
connect(lineEdit, SIGNAL(textChanged(QString)),
wigglyWidget, SLOT(setText(QString)));
-
- lineEdit->setText(tr("Hello world!"));
-
+ if (!smallScreen){
+ lineEdit->setText(tr("Hello world!"));
+ }
+ else{
+ lineEdit->setText(tr("Hello!"));
+ }
setWindowTitle(tr("Wiggly"));
resize(360, 145);
}
diff --git a/examples/widgets/wiggly/dialog.h b/examples/widgets/wiggly/dialog.h
index e74f646..1cae781 100644
--- a/examples/widgets/wiggly/dialog.h
+++ b/examples/widgets/wiggly/dialog.h
@@ -50,7 +50,7 @@ class Dialog : public QDialog
Q_OBJECT
public:
- Dialog(QWidget *parent = 0);
+ Dialog(QWidget *parent = 0, bool smallScreen = false);
};
//! [0]
diff --git a/examples/widgets/wiggly/main.cpp b/examples/widgets/wiggly/main.cpp
index 51fded2..c300911 100644
--- a/examples/widgets/wiggly/main.cpp
+++ b/examples/widgets/wiggly/main.cpp
@@ -46,8 +46,16 @@
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
-
- Dialog dialog;
- dialog.show();
+ bool smallScreen = false;
+ for (int i=0; i<argc; i++)
+ if (QString(argv[i]) == "-small-screen")
+ smallScreen = true;
+ Dialog dialog(0,smallScreen);
+ if (!smallScreen){
+ dialog.show();
+ }
+ else{
+ dialog.showFullScreen();
+ }
return app.exec();
}
diff --git a/examples/widgets/wiggly/wiggly.pro b/examples/widgets/wiggly/wiggly.pro
index 5288dd3..4240765 100644
--- a/examples/widgets/wiggly/wiggly.pro
+++ b/examples/widgets/wiggly/wiggly.pro
@@ -9,3 +9,7 @@ target.path = $$[QT_INSTALL_EXAMPLES]/widgets/wiggly
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS wiggly.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/wiggly
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000C607 \ No newline at end of file
diff --git a/examples/widgets/windowflags/windowflags.pro b/examples/widgets/windowflags/windowflags.pro
index fa8a567..007c10a 100644
--- a/examples/widgets/windowflags/windowflags.pro
+++ b/examples/widgets/windowflags/windowflags.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/widgets/windowflags
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS windowflags.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/windowflags
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/xml/dombookmarks/dombookmarks.pro b/examples/xml/dombookmarks/dombookmarks.pro
index e55754f..f38321f 100644
--- a/examples/xml/dombookmarks/dombookmarks.pro
+++ b/examples/xml/dombookmarks/dombookmarks.pro
@@ -11,6 +11,8 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS dombookmarks.pro *.xbel
sources.path = $$[QT_INSTALL_EXAMPLES]/xml/dombookmarks
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
wince*: {
addFiles.sources = frank.xbel jennifer.xbel
addFiles.path = \My Documents
diff --git a/examples/xml/htmlinfo/apache_org.html b/examples/xml/htmlinfo/apache_org.html
new file mode 100644
index 0000000..9e5e4d3
--- /dev/null
+++ b/examples/xml/htmlinfo/apache_org.html
@@ -0,0 +1,281 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <!--
+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ This file is generated from XML source: DO NOT EDIT!
+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ -->
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+ <link rel="stylesheet" href="./style/compressed.css" type="text/css" media="screen, projection"/>
+ <link rel="stylesheet" href="./style/style.css" type="text/css" media="screen, projection"/>
+ <!--[if IE]><link rel="stylesheet" href="./style/ie.css" type="text/css" media="screen, projection"/><![endif]-->
+<link rel="alternate" title="announce@apache.org Archives" type="application/atom+xml" href="http://mail-archives.apache.org/mod_mbox/www-announce/?format=atom" />
+ <meta name="author" content="The Apache Software Foundation" /><meta name="email" content="apache.AT.apache.DOT.org" />
+ <title>Welcome! - The Apache Software Foundation</title>
+ </head>
+ <body>
+ <div class="navigation">
+ <ul>
+ <li><a href="./foundation" title="About the Foundation">Foundation</a></li>
+ <li><a href="http://projects.apache.org" title="Apache Projects">Projects</a></li>
+ <li><a href="http://people.apache.org" title="Apache People">People</a></li>
+ <li><a href="./foundation/getinvolved.html" title="Get involved in Apache">Get Involved</a></li>
+ <li><a href="./foundation/sponsorship.html" title="Support the mission of Apache">Support Apache</a></li>
+ <li class="dlink"><a href="./dyn/closer.cgi" title="Download Apache projects">Download</a></li>
+ </ul>
+ </div>
+ <div class="container">
+ <hr class="space col"/>
+ <div class="block">
+ <div class="column span-24">
+ <div id="header">
+ <h1>The Apache Software Foundation<br />
+ <span class="alt"><small>Meritocracy in Action.</small></span></h1><p class="blurb">The Apache Software Foundation provides support for the Apache community of open-source software projects. The <a href="http://projects.apache.org/">Apache projects</a> are characterized by a collaborative, consensus based development process, an open and pragmatic software license, and a desire to create high quality software that leads the way in its field.</p><p class="highlight">We consider ourselves not simply a group of projects sharing a server, but rather a <em>community of developers and users</em>.</p>
+ </div>
+ </div>
+ </div>
+ <hr/>
+ <div class="block">
+ <div class="column span-15 first append-1">
+ <h3>
+ Latest News
+ </h3>
+ </div>
+ <div class="column span-8 las search">
+ <form action="http://www.google.com/search" method="get">
+ <input value="*.apache.org" name="sitesearch" type="hidden"/>
+ <input size="10" name="q" id="query" type="text"/>
+ <input name="Search" value="Go" type="submit"/>
+ </form>
+ </div>
+ </div>
+ <div class="block content">
+ <div class="column span-15 colborder">
+
+<div class="section-content">
+<p><em>If you would like to keep up with news and announcements from the
+foundation and all its projects, you can subscribe to the
+<a href="foundation/mailinglists.html#foundation-announce">Apache
+Announcements List</a></em>.</p>
+
+<h4 id="apachecon-eu">
+ Free Video Streams from ApacheCon Europe 2008
+</h4>
+<div class="section-content">
+<a href="http://www.eu.apachecon.com/"><img src="images/eu_2008_logo.jpg" alt="ApacheCon Europe 2008" title="ApacheCon Europe 2008" border="0" align="right" /></a>
+<p>
+ApacheCon Europe 2008 held in Amsterdam was a great success, and attracted higher
+than ever attendance figures, with about 500 registered attendees. This
+figure represents an increase of more than 40% over the previous year,
+demonstrating the rapidly growing interest in Apache and Open Source software
+amongst European businesses.
+
+If you have not been able to attend ApacheCon Europe, you can still watch
+<a href="http://streaming.linux-magazin.de/en/archive_apachecon08eu.htm">videos of all keynotes and select talks online</a>. Keynote sessions
+and the opening plenary are available <b>free of charge</b>:</p>
+<ul>
+<li><a href="http://streaming.linux-magazin.de/events/apacheconfree/archive/jjagielski/frames-java.htm" onclick="window.open(this.href, '_blank', 'width=1024, height=768'); return false;">State of the Feather</a>
+ by Jim Jagielski, Chairman of the Apache Software Foundation</li>
+<li><a href="http://streaming.linux-magazin.de/events/apacheconfree/archive/cschmidt/frames-java.htm" onclick="window.open(this.href, '_blank', 'width=1024, height=768'); return false;">Using Audio Technology and Open Content to Reduce Global Illiteracy, Poverty and Disease</a>
+ by Cliff Schmidt, Executive Director of Literacy Bridge</li>
+<li><a href="http://streaming.linux-magazin.de/events/apacheconfree/archive/rghosh/frames-java.htm" onclick="window.open(this.href, '_blank', 'width=1024, height=768'); return false;">Apache and Steam Engines: the Magic of Collaborative Innovation</a>
+ by Rishab Aiyer Ghosh, Open Source Initiative Board Member</li>
+<li><a href="http://streaming.linux-magazin.de/events/apacheconfree/archive/rfielding/frames-java.htm" onclick="window.open(this.href, '_blank', 'width=1024, height=768'); return false;">Apache 3.0 (a Tall Tale)</a>
+ by Roy Fielding, Co-founder of The Apache Software Foundation,
+ and Vice President, Apache HTTP Server</li>
+</ul>
+<p>The talks of the following select ApacheCon Europe tracks are
+available for just 49 Euro:
+<a href="http://streaming.linux-magazin.de/en/archive_apachecon08eu.htm#wednesday">System Administration</a>,
+<a href="http://streaming.linux-magazin.de/en/archive_apachecon08eu.htm#thursday">Web Security</a>,
+<a href="http://streaming.linux-magazin.de/en/archive_apachecon08eu.htm#friday">Web Services and Web 2.0</a>.
+</p>
+<hr />
+</div>
+
+<h4 id="apachecon-us">
+ ApacheCon US 2008 in New Orleans!
+</h4>
+<div class="section-content">
+<p>
+ ApacheCon US 2008 will be held 3 November through 7 November in
+ New Orleans, Louisiana.
+ The Call for Papers has already closed and the program and further
+ information will be made available soon on the ApacheCon US 2008
+ Web site <a href="http://www.us.apachecon.com/us2008/"><strong>www.us.apachecon.com</strong></a>.
+ If you would like to receive information about ApacheCon US 2008, please
+ <a href="mailto:announce-subscribe@apachecon.com">subscribe to
+ the ApacheCon announcement mailing list</a>.
+ </p>
+<hr />
+</div>
+
+<h4 id="sun_jck_letter">
+ Notice regarding open letter to Sun Microsystems
+</h4>
+<div class="section-content">
+<p>
+ The Apache Software Foundation has written an <a href="jcp/sunopenletter.html">open letter</a>
+ to Sun Microsystems regarding our inabillity to acquire an acceptable license for the test kit
+ for Java SE needed by <a href="http://harmony.apache.org">Apache Harmony</a>. For futher information
+ please see the <a href="jcp/sunopenletterfaq.html">FAQ</a> and direct all questions to Apache's VP
+ for JCP issues, geirm at apache dot org, or our regular press inquiry address, press at apache dot org.
+ </p>
+</div>
+</div>
+ </div>
+ <div class="column span-8 last">
+ <div class="block">
+ <div class="nav column span-11">
+ <div>
+ <div class="menuheader"><a
+href="http://projects.apache.org/">Apache Projects</a></div>
+ <ul>
+ <li><a href="http://httpd.apache.org/" title="Apache Web Server (httpd)">HTTP Server</a></li>
+ <li><a href="http://activemq.apache.org/" title="Distributed Messaging System">ActiveMQ</a></li>
+ <li><a href="http://ant.apache.org/" title="Java-based build tool">Ant</a></li>
+ <li><a href="http://apr.apache.org/" title="Apache Portable Runtime libraries">APR</a></li>
+ <li><a href="http://archiva.apache.org/" title="Build Artifact Repository Manager">Archiva</a></li>
+ <li><a href="http://beehive.apache.org/" title="Metadata frameworks for enterprise applications">Beehive</a></li>
+ <li><a href="http://cayenne.apache.org/" title="User-friendly Java ORM with Tools">Cayenne</a></li>
+ <li><a href="http://cocoon.apache.org/" title="Web development framework: separation of concerns, component-based">Cocoon</a></li>
+ <li><a href="http://commons.apache.org/" title="Reusable Java components">Commons</a></li>
+ <li><a href="http://continuum.apache.org/" title="Continuous Integration and Build Server">Continuum</a></li>
+ <li><a href="http://cxf.apache.org/" title="Service Framework">CXF</a></li>
+ <li><a href="http://db.apache.org/" title="Database access">DB</a></li>
+ <li><a href="http://directory.apache.org/" title="Apache Directory Server">Directory</a></li>
+ <li><a href="http://excalibur.apache.org/" title="Embeddable software libraries related to component and service management access">Excalibur</a></li>
+ <li><a href="http://felix.apache.org/" title="OSGi Framework and components.">Felix</a></li>
+ <li><a href="http://forrest.apache.org/" title="Aggregated multi-channel documentation, separation of concerns">Forrest</a></li>
+ <li><a href="http://geronimo.apache.org/" title="Java2, Enterprise Edition (J2EE) container">Geronimo</a></li>
+ <li><a href="http://gump.apache.org/" title="Continuous integration of open source projects">Gump</a></li>
+ <li><a href="http://hadoop.apache.org/" title="Distributed computing platform">Hadoop</a></li>
+ <li><a href="http://harmony.apache.org/" title="Open source implementation of Java SE">Harmony</a></li>
+ <li><a href="http://hivemind.apache.org/" title="A services and configuration microkernel">HiveMind</a></li>
+ <li><a href="http://hc.apache.org/" title="Java toolset of low level HTTP components">HttpComponents</a></li>
+ <li><a href="http://ibatis.apache.org/" title="SQL Data Mapper for Java and .NET">iBATIS</a></li>
+ <li><a href="http://incubator.apache.org/" title="Shepherd for new projects">Incubator</a></li>
+ <li><a href="http://jackrabbit.apache.org/" title="Content Repository for Java">Jackrabbit</a></li>
+ <li><a href="http://jakarta.apache.org/" title="Server-side Java">Jakarta</a></li>
+ <li><a href="http://james.apache.org/" title="Java Apache Mail Enterprise Server">James</a></li>
+ <li><a href="http://labs.apache.org/" title="The Innovation Laboratories of the Apache Software Foundation">Labs</a></li>
+ <li><a href="http://lenya.apache.org/" title="Content Management System">Lenya</a></li>
+ <li><a href="http://logging.apache.org/" title="Cross-language logging services">Logging</a></li>
+ <li><a href="http://lucene.apache.org/" title="Search engine library">Lucene</a></li>
+ <li><a href="http://maven.apache.org/" title="Java project management and comprehension tools">Maven</a></li>
+ <li><a href="http://mina.apache.org/" title="Multipurpose Infrastructure for Network Application">Mina</a></li>
+ <li><a href="http://myfaces.apache.org/" title="JavaServer(tm) Faces implementation and components">MyFaces</a></li>
+ <li><a href="http://ode.apache.org/" title="Orchestration Director Engine: Business Process Management (BPM), Process Orchestration and Workflow through service compositioni.">ODE</a></li>
+ <li><a href="http://ofbiz.apache.org/" title="Open for Business: enterprise automation software">OFBiz</a></li>
+ <li><a href="http://openejb.apache.org/" title="OpenEJB: a modular, configurable, and extendable EJB Container System and Server">OpenEJB</a></li>
+ <li><a href="http://openjpa.apache.org/" title="OpenJPA: Object Relational Mapping for Java">OpenJPA</a></li>
+ <li><a href="http://perl.apache.org/" title="Dynamic websites using Perl">Perl</a></li>
+ <li><a href="http://poi.apache.org/" title="Java API for OLE 2 Compound Documents">POI</a></li>
+ <li><a href="http://portals.apache.org/" title="Portal technology">Portals</a></li>
+ <li><a href="http://roller.apache.org/" title="Java blog server">Roller</a></li>
+ <li><a href="http://santuario.apache.org/" title="XML Security in Java and C++">Santuario</a></li>
+ <li><a href="http://servicemix.apache.org/" title="Enterprise Service Bus">ServiceMix</a></li>
+ <li><a href="http://shale.apache.org/" title="Web application framework based on JavaServer(tm) Faces">Shale</a></li>
+ <li><a href="http://spamassassin.apache.org/" title="Mail filter to identify spam">SpamAssassin</a></li>
+ <li><a href="http://stdcxx.apache.org/" title="Apache C++ Standard Library">STDCXX</a></li>
+ <li><a href="http://struts.apache.org/" title="Model 2 framework for building Java web applications">Struts</a></li>
+ <li><a href="http://synapse.apache.org/" title="Enterprise Service Bus and Mediation Framework">Synapse</a></li>
+ <li><a href="http://tapestry.apache.org/" title="Component-based Java Web Application Framework">Tapestry</a></li>
+ <li><a href="http://tcl.apache.org/" title="Dynamic websites using TCL">TCL</a></li>
+ <li><a href="http://tiles.apache.org/" title="A templating framework for web application user interfaces">Tiles</a></li>
+ <li><a href="http://tomcat.apache.org/" title="A Java Servlet and JSP Container">Tomcat</a></li>
+ <li><a href="http://turbine.apache.org/" title="A Java Servlet Web Application Framework and associated component library">
+ Turbine</a></li>
+ <li><a href="http://velocity.apache.org/" title="A Java Templating Engine">Velocity</a></li>
+ <li><a href="http://wicket.apache.org/" title="Component-based Java Web Application Framework.">Wicket</a></li>
+ <li><a href="http://ws.apache.org/">Web Services</a></li>
+ <li><a href="http://xalan.apache.org/" title="XSLT processors in Java and C++">Xalan</a></li>
+ <li><a href="http://xerces.apache.org/" title="XML parsers in Java, C++ and Perl">Xerces</a></li>
+ <li><a href="http://xml.apache.org/" title="XML solutions focused on the web">XML</a></li>
+ <li><a href="http://xmlbeans.apache.org/" title="XML-Java binding tool">XMLBeans</a></li>
+ <li><a href="http://xmlgraphics.apache.org/" title="Conversion from XML to graphical output">XML Graphics</a></li>
+ </ul>
+ </div>
+ </div>
+ <div class="nav column prepend-1 span-12 last">
+ <h6><a
+href="/foundation/">Foundation</a></h6>
+ <ul>
+ <li><a href="/foundation/faq.html">FAQ</a></li>
+ <li><a href="/licenses/">Licenses</a></li>
+ <li><a href="/foundation/news.html">News</a></li>
+ <li><a href="/foundation/records/">Public Records</a></li>
+ <li><a href="/foundation/sponsorship.html">Sponsorship</a></li>
+ <li><a href="/foundation/contributing.html">Donations</a></li>
+ <li><a href="/foundation/thanks.html">Thanks</a></li>
+ <li><a href="/foundation/contact.html">Contact</a></li>
+ </ul>
+ <h6>Foundation Projects</h6>
+ <ul>
+ <li><a href="/foundation/conferences.html" title="Meetings of developers and users">Conferences</a></li>
+ <li><a href="/dev/" title="ASF Infrastructure: Operations and howto documents for PMCs and contributors">Infrastructure</a></li>
+ <li><a href="/jcp/" title="Apache and the Java Community Process">JCP</a></li>
+ </ul>
+ <h6>How it works</h6>
+ <ul>
+ <li><a href="/foundation/how-it-works.html">Introduction</a></li>
+ <li><a href="/foundation/how-it-works.html#meritocracy">Meritocracy</a></li>
+ <li><a href="/foundation/how-it-works.html#structure">Structure</a></li>
+ <li><a href="/foundation/how-it-works.html#roles">Roles</a></li>
+ <li><a href="/foundation/how-it-works.html#management">Collaboration</a></li>
+ <li><a href="/foundation/how-it-works.html#infrastructure">Infrastructure</a></li>
+ <li><a href="/foundation/how-it-works.html#incubator">Incubator</a></li>
+ <li><a href="/foundation/how-it-works.html#other">Other entities</a></li>
+ <li><a href="/foundation/glossary.html">Glossary</a></li>
+ <li><a href="/foundation/voting.html">Voting</a></li>
+ </ul>
+ <h6><a
+href="/foundation/getinvolved.html">Get Involved</a></h6>
+ <ul>
+ <li><a href="/foundation/mailinglists.html">Mailing Lists</a></li>
+ <li><a href="/dev/version-control.html">Version Control</a></li>
+ <li><a href="/dev/">Developer Info</a></li>
+ </ul>
+ <h6>Download</h6>
+ <ul>
+ <li><a href="/dyn/closer.cgi">from a mirror</a></li>
+ </ul>
+ <h6>Related Sites</h6>
+ <ul>
+ <li><a href="http://apachecon.com/" title="Official Apache Conference">ApacheCon</a></li>
+ <li><a href="http://apachebookstore.com/" title="Apache Books">Bookstore</a></li>
+ <li><a href="http://feathercast.org/" title="Apache Podcasts">Feathercast</a></li>
+ <li><a href="http://planetapache.org/" title="Apache Community Blogs">PlanetApache</a></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ <div class="column span-24 footer">
+ <hr/>
+ <p>Copyright &#169; 2008 The Apache Software Foundation, Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+ </div>
+ </div>
+ </div>
+</body>
+</html>
+
diff --git a/examples/xml/htmlinfo/htmlinfo.pro b/examples/xml/htmlinfo/htmlinfo.pro
new file mode 100644
index 0000000..d828518
--- /dev/null
+++ b/examples/xml/htmlinfo/htmlinfo.pro
@@ -0,0 +1,18 @@
+SOURCES += main.cpp
+QT -= gui
+
+wince*|symbian:{
+ htmlfiles.sources = *.html
+ htmlfiles.path = .
+ DEPLOYMENT += htmlfiles
+}
+
+# install
+target.path = $$[QT_INSTALL_EXAMPLES]/xml/htmlinfo
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.html htmlinfo.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/xml/htmlinfo
+INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+symbian:TARGET.UID3 = 0xA000C609
diff --git a/examples/xml/htmlinfo/main.cpp b/examples/xml/htmlinfo/main.cpp
new file mode 100644
index 0000000..9831d36
--- /dev/null
+++ b/examples/xml/htmlinfo/main.cpp
@@ -0,0 +1,119 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore>
+
+void parseHtmlFile(QTextStream &out, const QString &fileName) {
+ QFile file(fileName);
+
+ out << "Analysis of HTML file: " << fileName << endl;
+
+ if (!file.open(QIODevice::ReadOnly)) {
+ out << " Couldn't open the file." << endl << endl << endl;
+ return;
+ }
+
+//! [0]
+ QXmlStreamReader reader(&file);
+//! [0]
+
+//! [1]
+ int paragraphCount = 0;
+ QStringList links;
+ QString title;
+ while (!reader.atEnd()) {
+ reader.readNext();
+ if (reader.isStartElement()) {
+ if (reader.name() == "title")
+ title = reader.readElementText();
+ else if(reader.name() == "a")
+ links.append(reader.attributes().value("href").toString());
+ else if(reader.name() == "p")
+ ++paragraphCount;
+ }
+ }
+//! [1]
+
+//! [2]
+ if (reader.hasError()) {
+ out << " The HTML file isn't well-formed: " << reader.errorString()
+ << endl << endl << endl;
+ return;
+ }
+//! [2]
+
+ out << " Title: \"" << title << "\"" << endl
+ << " Number of paragraphs: " << paragraphCount << endl
+ << " Number of links: " << links.size() << endl
+ << " Showing first few links:" << endl;
+
+ while(links.size() > 5)
+ links.removeLast();
+
+ foreach(QString link, links)
+ out << " " << link << endl;
+ out << endl << endl;
+}
+
+int main(int argc, char **argv)
+{
+ // intialize QtCore application
+ QCoreApplication app(argc, argv);
+
+ // get a list of all html files in the current directory
+ QStringList filter;
+ filter << "*.htm";
+ filter << "*.html";
+ QStringList htmlFiles = QDir::current().entryList(filter, QDir::Files);
+
+ QTextStream out(stdout);
+
+ if (htmlFiles.isEmpty()) {
+ out << "No html files available.";
+ return 1;
+ }
+
+ // parse each html file and write the result to file/stream
+ foreach(QString file, htmlFiles)
+ parseHtmlFile(out, file);
+
+ return 0;
+}
diff --git a/examples/xml/htmlinfo/nokia_com.html b/examples/xml/htmlinfo/nokia_com.html
new file mode 100644
index 0000000..46d4c95
--- /dev/null
+++ b/examples/xml/htmlinfo/nokia_com.html
@@ -0,0 +1,215 @@
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+<head>
+
+
+ <!--startindex-->
+ <title>Nokia - Nokia on the Web</title>
+
+
+ <meta name="description" content="Nokia is the world's leading mobile phone supplier and a leading supplier of mobile and fixed telecom networks including related customer services."/>
+ <meta name="keywords" content="Nokia,mobile phones,cellular,telecommunications,wireless networks,datacom,GSM,multimedia terminals,handsets,customer services,press releases,financial information,student exchange,open positions,employment opportunities,career opportunities"/>
+ <meta name="modified" content=""/>
+ <meta name="category" content="Landing Page Global Flash"/>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <meta name="siteid" content="101"/>
+
+ <!--stopindex-->
+ <link href="/css/style_46.css" rel="stylesheet" type="text/css">
+
+ <link href="/NOKIA_COM_1/Home/Landing_page_2007/wayfinder.css" rel="stylesheet" type="text/css"/>
+
+<script type="text/javascript">
+ var useHbx = true;
+</script>
+
+
+<!--WEBSIDESTORY CODE HBX1.0 (Universal)-->
+<!--COPYRIGHT 1997-2005 WEBSIDESTORY,INC. ALL RIGHTS RESERVED. U.S.PATENT No. 6,393,479B1. MORE INFO:http://websidestory.com/privacy-->
+<script language="javascript">
+var _hbEC=0,_hbE=new Array;function _hbEvent(a,b){b=_hbE[_hbEC++]=new Object();b._N=a;b._C=0;return b;}
+var hbx=_hbEvent("pv");hbx.vpc="HBX0100u";hbx.gn="ehg-nokiafin.hitbox.com";
+
+//BEGIN EDITABLE SECTION
+//CONFIGURATION VARIABLES
+hbx.acct="DM550514HPNZ";//ACCOUNT NUMBER(S)
+hbx.pn="Home";//PAGE NAME(S)
+hbx.mlc="/Home";//MULTI-LEVEL CONTENT CATEGORY
+hbx.pndef="title";//DEFAULT PAGE NAME
+hbx.ctdef="full";//DEFAULT CONTENT CATEGORY
+
+//OPTIONAL PAGE VARIABLES
+//ACTION SETTINGS
+hbx.fv="";//FORM VALIDATION MINIMUM ELEMENTS OR SUBMIT FUNCTION NAME
+hbx.lt="none";//LINK TRACKING
+hbx.dlf="n";//DOWNLOAD FILTER
+hbx.dft="n";//DOWNLOAD FILE NAMING
+hbx.elf="n";//EXIT LINK FILTER
+
+//SEGMENTS AND FUNNELS
+hbx.seg="";//VISITOR SEGMENTATION
+hbx.fnl="";//FUNNELS
+
+//CAMPAIGNS
+hbx.cmp="";//CAMPAIGN ID
+hbx.cmpn="";//CAMPAIGN ID IN QUERY
+hbx.dcmp="";//DYNAMIC CAMPAIGN ID
+hbx.dcmpn="";//DYNAMIC CAMPAIGN ID IN QUERY
+hbx.dcmpe="";//DYNAMIC CAMPAIGN EXPIRATION
+hbx.dcmpre="";//DYNAMIC CAMPAIGN RESPONSE EXPIRATION
+hbx.hra="";//RESPONSE ATTRIBUTE
+hbx.hqsr="";//RESPONSE ATTRIBUTE IN REFERRAL QUERY
+hbx.hqsp="";//RESPONSE ATTRIBUTE IN QUERY
+hbx.hlt="";//LEAD TRACKING
+hbx.hla="";//LEAD ATTRIBUTE
+hbx.gp="";//CAMPAIGN GOAL
+hbx.gpn="";//CAMPAIGN GOAL IN QUERY
+hbx.hcn="";//CONVERSION ATTRIBUTE
+hbx.hcv="";//CONVERSION VALUE
+hbx.cp="null";//LEGACY CAMPAIGN
+hbx.cpd="";//CAMPAIGN DOMAIN
+
+//CUSTOM VARIABLES
+hbx.ci="";//CUSTOMER ID
+hbx.hc1="";//CUSTOM 1
+hbx.hc2="";//CUSTOM 2
+hbx.hc3="";//CUSTOM 3
+hbx.hc4="";//CUSTOM 4
+hbx.hrf="";//CUSTOM REFERRER
+hbx.pec="";//ERROR CODES
+
+
+var cookieName = 'MyNokia';
+var nameEQ = cookieName + "=";
+var ca = document.cookie.split(';');
+for(var i=0;i < ca.length;i++) {
+ var c = ca[i];
+ while (c.charAt(0)==' ') c = c.substring(1,c.length);
+ if (c.indexOf(nameEQ) == 0) {
+ hbx.ci = c.substring(nameEQ.length,c.length);
+ }
+}
+
+//INSERT CUSTOM EVENTS
+hbx.acct="DM550514HPNZ";
+hbx.mlc="/Home";
+hbx.pn="Home";
+hbx.lt="auto";
+
+
+//END EDITABLE SECTION
+
+//REQUIRED SECTION. CHANGE "YOURSERVER" TO VALID LOCATION ON YOUR WEB SERVER (HTTPS IF FROM SECURE SERVER)
+</script><script language="javascript1.1" defer src="/Hitbox/hbx_5.js"></script>
+<script language="javascript">if(navigator.appName!='Netscape'&&parseInt(navigator.appVersion)==4)document.write("<\!"+"--")</script><noscript>
+<img src="http://ehg-nokiafin.hitbox.com/HG?hc=we88&cd=1&hv=6&ce=u&hb=DM550514HPNZ&n=Home&vcon=/Home&seg=&cmp=&gp=&fnl=&pec=&dcmp=&ra=&gn=&cv=&ld=&la=&c1=&c2=&c3=&c4=&vpc=090101rn" border="0" width="1" height="1">
+</noscript><!--//-->
+
+<!--END WEBSIDESTORY CODE-->
+
+
+
+
+
+</head>
+<body lang='en'
+ style="margin: 0 0 0 0;" bgcolor="#FFFFFF" link="#0033cc" text="#000000" alink="#0033cc" vlink="#800080">
+ <div class="pagecontainer">
+
+
+<!-- start page template [Generated JSP Servlet: class=jsp_servlet._templates._page.__template6layout] -->
+
+
+
+
+
+
+
+
+
+
+ <!--startindex-->
+
+
+
+<!-- Begin template '/templates/content/plain.jsp' -->
+
+<div id="wayfinderContainer">
+ <div id="branding">
+ <img src="/NOKIA_COM_1/Home/Landing_page_2007/noflash_img/nokia_connecting_people.png" alt="Nokia - Connecting people" />
+
+ </div>
+
+ <div id="flashcontent">
+
+ <!-- main page noflash content -->
+ <div id="mainContentGlobal">
+ <div id="mainHdr"><h1>Welcome to Nokia</h1></div>
+ <div id="selectContainer">
+ <h2>Where would you like to go?</h2>
+ <div id="selectLinks">
+ <ul class="mainpage">
+ <li><a href="/A4176248">Africa</a></li>
+ <li><a href="/A4138125">Asia Pacific</a></li>
+ <li><a href="/A4138121">Europe</a></li>
+ <li><a href="/A4138127">Latin America</a></li>
+ <li><a href="/A4176245">Middle East</a></li>
+ <li><a href="/A4138126">North America</a></li>
+ </ul>
+ </div>
+ </div>
+ <!-- <a id="banner" href="http://www.nokia.com/seasonsgreetings/">Seasons Greetings</a> -->
+ </div>
+ <div id="navi">
+ <ul>
+ <li><a href="http://www.nokiaforbusiness.com/">Nokia for Business</a></li>
+ <li><a href="http://www.nokia.com/aboutnokia">About Nokia</a></li>
+ <li><a href="http://www.nokia.com/developers">Developers</a></li>
+ <li><a href="http://www.nokia.com/press">Press</a></li>
+ <li class="lastitem"><a href="http://www.nokia.com/investors">Investors</a></li>
+ <!-- <li class="lastitem"><a href="http://www.nokia.com/environment">Environment</a></li> -->
+ </ul>
+ </div>
+ <!-- noflash content ends -->
+
+ </div>
+
+ <div id="footer">
+ <ul>
+ <li><a href="http://www.nokia.com/siteterms">Site Terms</a></li>
+ <li class="lastitem"><a href="http://www.nokia.com/privacypolicy">Privacy Policy</a></li>
+ <span>Copyright &copy; 2008 Nokia. All rights reserved</span>
+ </ul>
+ <br /><br />
+ </div>
+</div>
+
+<script type="text/javascript" src="/NOKIA_COM_1/javascript/flash_detection_main.js"></script> <!-- for redirection to mobile site -->
+<script type="text/javascript" src="/EUROPE_NOKIA_COM_3/flash/swfobject.js"></script>
+<script type="text/javascript" src="/NOKIA_COM_1/javascript/cookies.js"></script>
+<script type="text/javascript" >
+ // <![CDATA[
+ var so = new SWFObject("/NOKIA_COM_1/Home/Landing_page_2007/wayfinder_assets.swf", "wayfinder", "736", "560", "7");
+ so.addParam("allowscriptaccess", "always");
+ so.addParam("base", "/NOKIA_COM_1/Home/Landing_page_2007/");
+ so.write("flashcontent");
+ // ]]>
+</script>
+
+<!-- End template '/templates/content/plain.jsp' -->
+ <!--stopindex-->
+
+
+
+
+
+ </div>
+</body>
+
+
+ </html>
+
diff --git a/examples/xml/htmlinfo/simpleexample.html b/examples/xml/htmlinfo/simpleexample.html
new file mode 100644
index 0000000..83a55cf
--- /dev/null
+++ b/examples/xml/htmlinfo/simpleexample.html
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html>
+ <head>
+ <title>Qt is cute! Frans is too!</title>
+ </head>
+ <body>
+ <p>A paragraph.</p>
+ <p>A second paragraph. Check out our <a href="http://labs.qt.nokia.com/">developer blogs</a></p>
+ <p>And the last paragraph. Or our <a href="http://qt.nokia.com/doc/">online documentation</a>.</p>
+ </body>
+</html>
diff --git a/examples/xml/htmlinfo/trolltech_com.html b/examples/xml/htmlinfo/trolltech_com.html
new file mode 100644
index 0000000..180eb74
--- /dev/null
+++ b/examples/xml/htmlinfo/trolltech_com.html
@@ -0,0 +1,955 @@
+<!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>
+ <meta http-equiv="Content-Type"
+ content="text/html;charset=utf-8" />
+
+ <title>
+ Code Less. Create More. Deploy Everywhere.
+ &mdash;
+ Trolltech
+ </title>
+
+
+ <!-- ADD ON UPDATE -->
+
+ <meta name="author" content="Trolltech" />
+ <meta name="description"
+ content="Trolltech creates application development platforms for desktop and mobile device innovation." />
+ <meta name="keywords" content="" />
+
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"><!-- &nbsp;--></script>
+<script type="text/javascript">
+ <!-- Urchin script
+ _uacct = "UA-4457116-1";
+ urchinTracker();
+ -->
+ </script>
+
+ <base href="http://trolltech.com/homepage" />
+
+
+
+ <meta name="generator" content="Plone - http://plone.org" />
+
+
+ <!-- Plone ECMAScripts -->
+
+
+
+
+ <script type="text/javascript"
+ src="http://trolltech.com/portal_javascripts/TTSkin/ploneScripts2804.js">
+ </script>
+
+
+
+ <script type="text/javascript"
+ src="http://trolltech.com/portal_javascripts/TTSkin/ploneScripts0445.js">
+ </script>
+
+
+
+ <script type="text/javascript"
+ src="http://trolltech.com/portal_javascripts/TTSkin/ploneScripts5940.js">
+ </script>
+
+
+
+ <script type="text/javascript"
+ src="http://trolltech.com/portal_javascripts/TTSkin/linkpopper.js">
+ </script>
+
+
+
+ <script type="text/javascript"
+ src="http://trolltech.com/portal_javascripts/TTSkin/ploneScripts7743.js">
+ </script>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <style type="text/css"><!-- @import url(http://trolltech.com/portal_css/TTSkin/ploneStyles1145.css); --></style>
+
+
+
+
+
+
+
+
+ <style type="text/css"
+ media="screen"><!-- @import url(http://trolltech.com/portal_css/TTSkin/ploneStyles8707.css); --></style>
+
+
+
+
+
+
+
+
+
+
+ <!-- Internet Explorer CSS Fixes -->
+ <!--[if IE]>
+ <style type="text/css" media="all">@import url(http://trolltech.com/IEFixes.css);</style>
+ <![endif]-->
+
+ <link rel="shortcut icon" type="image/x-icon"
+ href="http://trolltech.com/favicon.ico" />
+
+ <link rel="home" href="http://trolltech.com"
+ title="Front page" />
+ <link rel="search"
+ href="http://trolltech.com/search_form"
+ title="Search this site" />
+ <link rel="author"
+ href="http://trolltech.com/author/admin"
+ title="Author information" />
+ <link rel="contents" href="http://trolltech.com/sitemap"
+ title="Site Map" />
+
+
+
+
+
+
+
+
+
+ <!-- Disable IE6 image toolbar -->
+ <meta http-equiv="imagetoolbar" content="no" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </head>
+
+ <body class="section-homepage" dir="ltr">
+ <div id="visual-portal-wrapper">
+ <div id="portal-top">
+
+ <div id="portal-header">
+ <a class="hiddenStructure" accesskey="2"
+ href="http://trolltech.com/#documentContent">Skip to content.</a>
+
+ <a class="hiddenStructure" accesskey="6"
+ href="http://trolltech.com/#portlet-navigation-tree">Skip to navigation</a>
+
+ <div class="middlesex">
+ <ul id="portal-siteactions">
+
+ <li id="siteaction-sitemap"><a
+ href="http://trolltech.com/sitemap" accesskey="3"
+ title="Site Map">Site Map</a></li>
+ <li id="siteaction-accessibility"><a
+ href="http://trolltech.com/accessibility-info"
+ accesskey="0" title="Accessibility">Accessibility</a></li>
+ <li id="siteaction-contact"><a
+ href="http://trolltech.com/contact" accesskey="9"
+ title="Contact">Contact</a></li>
+
+</ul>
+
+ <div id="portal-searchbox">
+ <form name="searchform"
+ action="http://trolltech.com/search"
+ style="white-space:nowrap"
+ onsubmit="return liveSearchSubmit()">
+
+ <label for="searchGadget" class="hiddenStructure">Search Site</label>
+
+ <div class="LSBox">
+ <input id="searchGadget" name="SearchableText"
+ type="text" size="15" title="Search Site"
+ accesskey="4" class="visibility:visible" />
+
+ <input class="searchButton" type="submit"
+ value="Search" />
+
+ <div class="LSResult" id="LSResult" style=""><div class="LSShadow" id="LSShadow"></div></div>
+ </div>
+ </form>
+
+ <div id="portal-advanced-search" class="hiddenStructure">
+ <a href="http://trolltech.com/search_form"
+ accesskey="5">
+ Advanced Search&hellip;
+ </a>
+ </div>
+
+</div>
+
+ <div id="country-flags">
+ <a href="/lang/cn/"><img class="flag"
+ border="0" width="30" height="20" src="chineseflag.png" /></a>
+ <a href="/lang/japanese/"><img
+ class="flag" border="0" width="30" height="20"
+ src="japaneseflag.png" /></a>
+ </div>
+ <h1 id="portal-logo">
+ <a href="http://trolltech.com" accesskey="1">Trolltech</a>
+</h1>
+
+ <div id="portal-skinswitcher">
+
+</div>
+ </div>
+
+
+ <h5 class="hiddenStructure">Sections</h5>
+ <div id="portal-globalnav">
+ <div class="middlesex">
+ <ul>
+ <li id="portaltab-index_html"
+ class="selected indextab"><a
+ href="http://trolltech.com">Home</a></li>
+
+ <li id="portaltab-products"
+ class="plain"><a
+ href="http://trolltech.com/products" title="">Products and Services</a></li>
+
+
+ <li id="portaltab-solutions"
+ class="plain"><a
+ href="http://trolltech.com/solutions" title="">Solutions</a></li>
+
+
+ <li id="portaltab-developer"
+ class="plain"><a
+ href="http://trolltech.com/developer" title="">Developer Resources</a></li>
+
+
+ <li id="portaltab-company" class="plain"><a
+ href="http://trolltech.com/company" title="">Company</a></li>
+
+
+ <li id="portaltab-downloads"
+ class="plain"><a
+ href="http://trolltech.com/downloads" title="">Downloads</a></li>
+
+
+
+
+ </ul>
+ </div>
+ </div>
+
+ </div>
+ <div id="portal-personaltools-wrapper">
+
+<h5 class="hiddenStructure">Personal tools</h5>
+
+
+</div>
+
+ <div class="middlesex">
+ <div id="portal-breadcrumbs">
+
+ <span id="breadcrumbs-you-are-here">You
+are here:</span>
+ <a href="http://trolltech.com">Home</a>
+
+
+</div>
+ </div>
+ </div>
+
+ <div class="visualClear"><!-- --></div>
+
+
+ <table id="portal-columns">
+ <tbody>
+ <tr>
+
+
+
+
+
+ <td id="portal-column-content">
+
+
+ <div id="content" class="">
+
+
+
+ <div class="documentContent" id="region-content">
+
+ <a name="documentContent"></a>
+
+
+
+
+
+
+
+
+
+
+
+ <!-- <table id="frontpagetable" cellpadding="0" cellspacing="0" tal:attributes="width pagew"> --> <!-- tal:on-error="string:replace with error template" Fetch image width here -->
+ <table id="frontpagetable" cellpadding="0"
+ cellspacing="0" width="712">
+ <tr>
+ <td colspan="2">
+
+ <h2>Trolltech provides cross-platform software solutions for:</h2>
+ <table id="fpSolutions" class="solutions" cellpadding="0" cellspacing="6" width="100%">
+ <tbody>
+ <tr>
+ <td>
+ <!-- GRANTHAM STYLE -->
+ <a class="roundedButton"
+ title=""
+ href="http://trolltech.com/solutions/managing-development">
+ <span class="buttonTop"><span class="roundedButtonTL"><span class="roundedButtonTR"></span></span></span>
+ <span class="buttonLeft">
+ <span class="buttonRight"><span
+ class="buttonArrow">Software Development Managers</span></span>
+ </span>
+ <span class="buttonBottom"><span class="roundedButtonBL"><span class="roundedButtonBR"></span></span></span>
+ </a>
+ <!-- OLD STYLE
+ <div class="roundedBlock"
+ tal:attributes="title python:solution.Description();
+ class python:test(repeat['solution'].odd(), 'roundedBlock odd', 'roundedBlock')">
+ <span class="portletTopLeft"></span>
+ <span class="portletTopRight"></span>
+ <div class="innerRoundedBlock">
+ <a href="#"
+ tal:attributes="href python:solution.absolute_url()">
+ <span class="arrow"></span>
+ <strong tal:content="python:solution.Title()">
+ Title
+ </strong>
+ </a>
+ </div>
+ <span class="portletBottomLeft"></span>
+ <span class="portletBottomRight"></span>
+ </div>
+ -->
+ </td>
+ <td>
+ <!-- GRANTHAM STYLE -->
+ <a class="roundedButton"
+ title=""
+ href="http://trolltech.com/solutions/industrial-embedded-development">
+ <span class="buttonTop"><span class="roundedButtonTL"><span class="roundedButtonTR"></span></span></span>
+ <span class="buttonLeft">
+ <span class="buttonRight"><span
+ class="buttonArrow">Embedded Developers</span></span>
+ </span>
+ <span class="buttonBottom"><span class="roundedButtonBL"><span class="roundedButtonBR"></span></span></span>
+ </a>
+ <!-- OLD STYLE
+ <div class="roundedBlock"
+ tal:attributes="title python:solution.Description();
+ class python:test(repeat['solution'].odd(), 'roundedBlock odd', 'roundedBlock')">
+ <span class="portletTopLeft"></span>
+ <span class="portletTopRight"></span>
+ <div class="innerRoundedBlock">
+ <a href="#"
+ tal:attributes="href python:solution.absolute_url()">
+ <span class="arrow"></span>
+ <strong tal:content="python:solution.Title()">
+ Title
+ </strong>
+ </a>
+ </div>
+ <span class="portletBottomLeft"></span>
+ <span class="portletBottomRight"></span>
+ </div>
+ -->
+ </td>
+
+ </tr>
+ <tr>
+ <td>
+ <!-- GRANTHAM STYLE -->
+ <a class="roundedButton"
+ title=""
+ href="http://trolltech.com/solutions/ce-mobile-vendors">
+ <span class="buttonTop"><span class="roundedButtonTL"><span class="roundedButtonTR"></span></span></span>
+ <span class="buttonLeft">
+ <span class="buttonRight"><span
+ class="buttonArrow">Consumer Electronics Vendors</span></span>
+ </span>
+ <span class="buttonBottom"><span class="roundedButtonBL"><span class="roundedButtonBR"></span></span></span>
+ </a>
+ <!-- OLD STYLE
+ <div class="roundedBlock"
+ tal:attributes="title python:solution.Description();
+ class python:test(repeat['solution'].odd(), 'roundedBlock odd', 'roundedBlock')">
+ <span class="portletTopLeft"></span>
+ <span class="portletTopRight"></span>
+ <div class="innerRoundedBlock">
+ <a href="#"
+ tal:attributes="href python:solution.absolute_url()">
+ <span class="arrow"></span>
+ <strong tal:content="python:solution.Title()">
+ Title
+ </strong>
+ </a>
+ </div>
+ <span class="portletBottomLeft"></span>
+ <span class="portletBottomRight"></span>
+ </div>
+ -->
+ </td>
+ <td>
+ <!-- GRANTHAM STYLE -->
+ <a class="roundedButton"
+ title=""
+ href="http://trolltech.com/solutions/mobile-application-development">
+ <span class="buttonTop"><span class="roundedButtonTL"><span class="roundedButtonTR"></span></span></span>
+ <span class="buttonLeft">
+ <span class="buttonRight"><span
+ class="buttonArrow">Mobile Application Developers</span></span>
+ </span>
+ <span class="buttonBottom"><span class="roundedButtonBL"><span class="roundedButtonBR"></span></span></span>
+ </a>
+ <!-- OLD STYLE
+ <div class="roundedBlock"
+ tal:attributes="title python:solution.Description();
+ class python:test(repeat['solution'].odd(), 'roundedBlock odd', 'roundedBlock')">
+ <span class="portletTopLeft"></span>
+ <span class="portletTopRight"></span>
+ <div class="innerRoundedBlock">
+ <a href="#"
+ tal:attributes="href python:solution.absolute_url()">
+ <span class="arrow"></span>
+ <strong tal:content="python:solution.Title()">
+ Title
+ </strong>
+ </a>
+ </div>
+ <span class="portletBottomLeft"></span>
+ <span class="portletBottomRight"></span>
+ </div>
+ -->
+ </td>
+
+ </tr>
+ <tr>
+ <td>
+ <!-- GRANTHAM STYLE -->
+ <a class="roundedButton"
+ title=""
+ href="http://trolltech.com/solutions/application-development">
+ <span class="buttonTop"><span class="roundedButtonTL"><span class="roundedButtonTR"></span></span></span>
+ <span class="buttonLeft">
+ <span class="buttonRight"><span
+ class="buttonArrow">Cross-Platform Developers</span></span>
+ </span>
+ <span class="buttonBottom"><span class="roundedButtonBL"><span class="roundedButtonBR"></span></span></span>
+ </a>
+ <!-- OLD STYLE
+ <div class="roundedBlock"
+ tal:attributes="title python:solution.Description();
+ class python:test(repeat['solution'].odd(), 'roundedBlock odd', 'roundedBlock')">
+ <span class="portletTopLeft"></span>
+ <span class="portletTopRight"></span>
+ <div class="innerRoundedBlock">
+ <a href="#"
+ tal:attributes="href python:solution.absolute_url()">
+ <span class="arrow"></span>
+ <strong tal:content="python:solution.Title()">
+ Title
+ </strong>
+ </a>
+ </div>
+ <span class="portletBottomLeft"></span>
+ <span class="portletBottomRight"></span>
+ </div>
+ -->
+ </td>
+ <td>
+ <!-- GRANTHAM STYLE -->
+ <a class="roundedButton"
+ title=""
+ href="http://trolltech.com/solutions/solutions-opensource">
+ <span class="buttonTop"><span class="roundedButtonTL"><span class="roundedButtonTR"></span></span></span>
+ <span class="buttonLeft">
+ <span class="buttonRight"><span
+ class="buttonArrow">Open Source Developers</span></span>
+ </span>
+ <span class="buttonBottom"><span class="roundedButtonBL"><span class="roundedButtonBR"></span></span></span>
+ </a>
+ <!-- OLD STYLE
+ <div class="roundedBlock"
+ tal:attributes="title python:solution.Description();
+ class python:test(repeat['solution'].odd(), 'roundedBlock odd', 'roundedBlock')">
+ <span class="portletTopLeft"></span>
+ <span class="portletTopRight"></span>
+ <div class="innerRoundedBlock">
+ <a href="#"
+ tal:attributes="href python:solution.absolute_url()">
+ <span class="arrow"></span>
+ <strong tal:content="python:solution.Title()">
+ Title
+ </strong>
+ </a>
+ </div>
+ <span class="portletBottomLeft"></span>
+ <span class="portletBottomRight"></span>
+ </div>
+ -->
+ </td>
+
+ </tr>
+ </tbody>
+ </table>
+
+ </td>
+ </tr>
+
+ <!-- BANNER -->
+
+ <tr class="minspacerow">
+ <td colspan="2">
+
+ <div id="flashcontent">
+
+
+ <!-- In case of no imagemap -->
+ <a
+ href="http://trolltech.com/products/qt/learnmore/whitepapers">
+ <img border="0"
+ src="http://trolltech.com/include/features/frontpage/whitepaper-feature/mainsplash"
+ alt="Code Less. Create More. Deploy Everywhere."
+ height="100" width="700" />
+ </a>
+
+
+ </div>
+
+
+
+ </td>
+ </tr>
+
+ <!-- Product Feature rows -->
+ <tr id="productfeatures" class="minspacerow">
+ <td style="width:350px;">
+ <div class="viewlet productviewlet">
+<p class="discreet"><a title="Downloads" href="downloads/index"><img class="image-right" src="images/frontpage/qt_download_90.png" alt="Download Qt Button: Grey BG" /></a></p>
+<h2>Qt</h2>
+<p>Qt is a cross-platform application framework.&nbsp; It includes:</p>
+<ul><li>An <a title="C++ Class Library" href="products/qt/features/library/index">intuitive class library</a></li><li>Integrated <a title="Development Tools" href="products/qt/features/tools/index">development tools</a></li><li>Support for <a title="C++ and Java Support" href="products/qt/features/language-support/index">C++ and Java development</a></li><li><a title="Cross-Platform Development" href="products/qt/features/platforms/index">Desktop and embedded</a> development support</li></ul>
+<p>&nbsp;</p>
+<p><strong><a title="Qt Cross-Platform Application Framework" href="products/qt/index"><span class="button">Learn More</span></a></strong> <strong><a title="How to order" href="products/qt/orderform"><span class="button">Buy Now</span></a></strong></p>
+<p>&nbsp;</p>
+<p>&nbsp;</p>
+<p>&nbsp;</p>
+</div>
+ </td>
+ <td style="width:350px;">
+ <div class="viewlet productviewlet">
+<p><a title="Qtopia" href="products/qtopia"><img class="image-right" src="images/frontpage/qtopia_learn_more_90.png" alt="Qtopia Learn More button 90px" /></a></p>
+<h2>Qtopia</h2>
+<p><a title="The Qtopia application platform for embedded Linux" href="products/qtopia/index">Qtopia</a> is an application platform and UI for Linux-based <a title="Qtopia Phone Edition" href="products/qtopia/qtopia-product-family/qtopia-phone-edition">mobile</a>, <a title="Qtopia Platform" href="products/qtopia/qtopia-product-family/qtopia-platform">consumer electronics</a> and <a title="Qtopia Platform" href="products/qtopia/qtopia-product-family/qtopia-platform">embedded devices</a>. Qtopia offers:</p>
+<ul><li>Rich <a href="products/qt/features/tools/index">toolkit</a> and intuitive API</li><li>Fully customizable user interface</li><li>Highly efficient development framework</li></ul>
+<p>&nbsp;</p>
+<p><strong><a title="Customer Devices" href="company/customers/customer-devices"><span class="button">Customer Devices</span></a></strong>&nbsp;<strong><a title="Purchasing Qtopia" href="products/qtopia/orderinfo"><span class="button">Buy Now</span></a></strong></p>
+</div>
+ </td>
+ </tr>
+ </table>
+
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+ </div>
+
+
+ </td>
+
+
+
+
+ <!-- News/events -->
+ <td id="frontpage-column-two">
+
+ <div class="viewlet">
+ <h3>Quick Links</h3>
+
+
+ <!-- Smart folders -->
+
+ <!-- Links -->
+
+ <p class="smallerExtendedLink">
+ <a href="http://trolltech.com/company/careers"
+ title="Quick Links">Careers at Trolltech</a>
+ </p>
+
+
+ <p class="smallerExtendedLink">
+ <a href="http://trolltech.com/products/qt/learnmore/whitepapers"
+ title="Quick Links">Whitepapers</a>
+ </p>
+
+
+ <p class="smallerExtendedLink">
+ <a href="http://trolltech.com/products/qt/learnmore/webinars-videos"
+ title="Quick Links">Webinars and Videos</a>
+ </p>
+
+ </div>
+
+
+ <div class="viewlet">
+ <h3>Nokia Acquisition</h3>
+
+ <div class="viewletBody">
+<p class="smallerExtendedLink"><a title="Nokia Acquires Trolltech" href="../../../28012008/28012008">Learn more about Nokia's acquisition of Trolltech<br /></a></p>
+</div>
+ <!-- Smart folders -->
+
+ <!-- Links -->
+
+
+
+ </div>
+
+
+ <div class="viewlet">
+ <h3>News</h3>
+
+
+ <!-- Smart folders -->
+
+ <p class="smallerFont">
+ <span>
+ <a href="http://trolltech.com/company/newsroom/announcements/press.2008-06-03.1419977468">Trolltech Releases Qt Jambi 4.3.5</a>
+ <!-- Dates for press release -->
+
+
+ (Jun&nbsp;03)
+ <!--(<tal:date tal:content="item_pressmonth"/>&nbsp;<tal:date tal:content="item_pressday"/>)-->
+
+
+ <!-- Dates for events -->
+
+ <!-- Dates for training -->
+
+ </span>
+ </p>
+ <p class="smallerFont">
+ <span>
+ <a href="http://trolltech.com/company/newsroom/announcements/press.2008-05-28.9662742780">Trolltech releases Qt 4.3.5</a>
+ <!-- Dates for press release -->
+
+
+ (May&nbsp;28)
+ <!--(<tal:date tal:content="item_pressmonth"/>&nbsp;<tal:date tal:content="item_pressday"/>)-->
+
+
+ <!-- Dates for events -->
+
+ <!-- Dates for training -->
+
+ </span>
+ </p>
+ <p class="smallerFont">
+ <span>
+ <a href="http://trolltech.com/company/newsroom/announcements/press.2008-05-14.1108908046">Award From Qt Developers Recognizes Best Open Source Development Tools</a>
+ <!-- Dates for press release -->
+
+
+ (May&nbsp;14)
+ <!--(<tal:date tal:content="item_pressmonth"/>&nbsp;<tal:date tal:content="item_pressday"/>)-->
+
+
+ <!-- Dates for events -->
+
+ <!-- Dates for training -->
+
+ </span>
+ </p>
+ <p class="smallerFont">
+ <span>
+ <a href="http://trolltech.com/company/newsroom/announcements/press.2008-05-08.1819339587">Trolltech Delivered Revenues of NOK 55.6 Million</a>
+ <!-- Dates for press release -->
+
+
+ (May&nbsp;08)
+ <!--(<tal:date tal:content="item_pressmonth"/>&nbsp;<tal:date tal:content="item_pressday"/>)-->
+
+
+ <!-- Dates for events -->
+
+ <!-- Dates for training -->
+
+ </span>
+ </p>
+
+ <!-- Links -->
+
+
+
+ </div>
+
+
+ <div class="viewlet">
+ <h3>Events</h3>
+
+ <div class="viewletBody">
+<p>&nbsp;</p>
+</div>
+ <!-- Smart folders -->
+
+ <p class="smallerFont">
+ <span>
+ <a href="http://trolltech.com/company/newsroom/events/allevents/event.2008-05-15.0963129132">Qt Open Enrollment Training Class</a>
+ <!-- Dates for press release -->
+
+ <!-- Dates for events -->
+
+
+ (Jun&nbsp;09&nbsp;-&nbsp;Jun&nbsp;13)
+
+
+ <!-- Dates for training -->
+
+ </span>
+ </p>
+ <p class="smallerFont">
+ <span>
+ <a href="http://trolltech.com/company/newsroom/events/allevents/event.2008-02-22.1032431617">Israel Qt User Group</a>
+ <!-- Dates for press release -->
+
+ <!-- Dates for events -->
+
+
+ (Jun&nbsp;16)
+
+
+ <!-- Dates for training -->
+
+ </span>
+ </p>
+ <p class="smallerFont">
+ <span>
+ <a href="http://trolltech.com/company/newsroom/events/allevents/event.2008-05-19.5707721007">Webinar: Building Tomorrow’s Virtual Driver Control Center</a>
+ <!-- Dates for press release -->
+
+ <!-- Dates for events -->
+
+
+ (Jun&nbsp;24)
+
+
+ <!-- Dates for training -->
+
+ </span>
+ </p>
+
+ <!-- Links -->
+
+ <p class="smallerExtendedLink">
+ <a href="http://trolltech.com/company/newsroom/events"
+ title="Events">More events</a>
+ </p>
+
+
+
+ </div>
+
+ </td>
+
+
+ </tr>
+ </tbody>
+ </table>
+
+
+ <div class="visualClear"><!-- --></div>
+
+
+ <hr class="netscape4" />
+
+
+
+ <div id="portal-footer">
+
+
+<p id="bottom-navigation">
+ Trolltech&reg; - Code Less. Create More. Deploy Everywhere.
+
+ <br />
+
+ <a href="http://trolltech.com/company/contact-us/locations"
+ title="Trolltech ASA">
+ Trolltech ASA
+ </a>
+ <a href="http://trolltech.com/company/contact-us/locations"
+ title="Address: Sandakerveien 116, Oslo">
+ Sandakerveien 116, Oslo
+ </a>
+ <a href="http://trolltech.com/company/contact-us/locations"
+ class="lastNavItem" title="Phone: +47 21 60 48 00">
+ +47 21 60 48 00
+ </a>
+
+ <br />
+
+ <a href="http://trolltech.com/company/contact-us/locations"
+ title="International locations">
+ International locations
+ </a>
+ <a href="/trolltech/privacypolicy" title="Privacy policy">
+ Privacy Policy
+ </a>
+ <a href="/trolltech/copyright" title="Trolltech" class="lastNavItem"><span>2008</span> &copy; Trolltech ASA</a>
+</p>
+
+
+</div>
+
+ <div id="portal-colophon">
+
+
+ <a href="http://plone.org"
+ class="colophonIcon colophonIconPlone"
+ title="This Plone site was built using Plone CMS, the Open Source Content Management System. Click for more information.">
+ Powered by Plone CMS, the Open Source Content Management System
+ </a>
+
+
+
+ <p class="discreet">
+ This site conforms to the following standards:
+ </p>
+
+ <div class="colophonWrapper">
+ <ul>
+ <li>
+ <a href="http://www.section508.gov"
+ class="colophonIcon colophonIcon508"
+ title="This Plone site conforms to the US Government Section 508 Accessibility Guidelines.">
+ Section 508
+ </a>
+ </li>
+ <li>
+ <a href="http://www.w3.org/WAI/WCAG1AA-Conformance"
+ class="colophonIcon colophonIconWAI"
+ title="This Plone site conforms to the W3C-WAI Web Content Accessibility Guidelines.">
+ WCAG
+ </a>
+ </li>
+ <li>
+ <a href="http://validator.w3.org/check/referer"
+ class="colophonIcon colophonIconXHTML"
+ title="This Plone site is valid XHTML.">
+ Valid XHTML
+ </a>
+ </li>
+ <li>
+ <a href="http://jigsaw.w3.org/css-validator/check/referer&amp;warning=no&amp;profile=css3&amp;usermedium=all"
+ class="colophonIcon colophonIconCSS"
+ title="This Plone site was built with valid CSS.">
+ Valid CSS
+ </a>
+ </li>
+ <li>
+ <a href="http://plone.org/browsersupport"
+ class="colophonIcon colophonIconAnyBrowser"
+ title="This Plone site is usable in any web browser.">
+ Usable in any browser
+ </a>
+ </li>
+ </ul>
+ </div>
+
+ </div>
+
+ </div>
+<!-- ProspectXtractor tracker script -->
+<script type="text/javascript"><!--
+function _pxPar()
+{
+var p="";
+p+="&ref="+escape(top.document.referrer);
+p+="&dt="+escape(document.title);
+p+="&sr="+screen.width+"x"+screen.height;
+p+="&sd="+screen.colorDepth;
+p+="&fv="+_pxFV();
+return p;
+}
+function _pxFV()
+{
+var f=0,n=navigator;
+if (n.plugins && n.mimeTypes.length) {
+var x=n.plugins["Shockwave Flash"];
+if(x && x.description) {
+var y=x.description;
+f=y.charAt(y.indexOf('.')-1);
+}
+} else {
+r=false;
+for(var i=15;i>=3&&r!=true;i-=1){
+execScript('on error resume next: r=IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.'+i+'"))','VBScript');
+f=i;
+}
+}
+return f;
+}
+document.write('<img src="http://pxreg.onlineservicesas.com/pxreg/?id=50C9FD2F-61D5-4824-B726-50D6B1F89999'+_pxPar()+'" width="1" heigth="1" />');
+//-->
+</script>
+<noscript>
+<div><img src="http://pxreg.onlineservicesas.com/pxreg/?id=50C9FD2F-61D5-4824-B726-50D6B1F89999" width="1" height="1" alt="" /></div>
+</noscript>
+<!-- END ProspectXtractor tracker script -->
+</body>
+</html>
+
diff --git a/examples/xml/htmlinfo/w3c_org.html b/examples/xml/htmlinfo/w3c_org.html
new file mode 100644
index 0000000..0fcce48
--- /dev/null
+++ b/examples/xml/htmlinfo/w3c_org.html
@@ -0,0 +1,507 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!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-US" lang="en-US">
+<head profile="http://www.w3.org/2000/08/w3c-synd/#"><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="generator" content="HTML Tidy for Mac OS X (vers 1st March 2004), see www.w3.org" />
+
+<meta name="keywords" content="W3C, World Wide Web, Web, WWW, Consortium, computer, access, accessibility, semantic, worldwide, W3, HTML, XML, standard, language, technology, link, CSS, RDF, XSL, Berners-Lee, Berners, Lee, style sheet, cascading, schema, XHTML, mobile, SVG, PNG, PICS, DOM, SMIL, MathML, markup, Amaya, Jigsaw, free, open source, software" />
+<meta name="description" content="The World Wide Web Consortium (W3C) is an international consortium where Member organizations, a full-time staff, and the public work together to develop Web standards. W3C primarily pursues its mission through the creation of Web standards and guidelines designed to ensure long-term growth for the Web. Over 400 organizations are Members of the Consortium. W3C is jointly run by the MIT Computer Science and Artificial Intelligence Laboratory (MIT CSAIL) in the USA, the European Research Consortium for Informatics and Mathematics (ERCIM) headquartered in France, Keio University in Japan, and has additional Offices worldwide." />
+
+<title>World Wide Web Consortium - Web Standards</title>
+<link rel="meta" href="/Overview-about.rdf" />
+<link rel="stylesheet" type="text/css" href="/StyleSheets/home.css" />
+<link rel="bookmark" href="#technologies" title="Technologies |" />
+<link rel="bookmark" href="#news" title="News |" />
+<link rel="bookmark" href="#search" title="Search |" />
+<link rel="contents" href="#contents" title="Contents |" />
+<link rel="bookmark" href="#Offices" title="Offices |" />
+<link rel="bookmark" href="#systems" title="Systems |" />
+<link rel="bookmark" href="#donors" title="Supporters |" />
+<link rel="bookmark" href="#footnotes" title="Footnotes |" />
+<link rel="alternate" type="application/rss+xml" title="W3C Home Page News RSS Channel" href="http://www.w3.org/2000/08/w3c-synd/home.rss" />
+
+<style type="text/css">
+/**/
+ div.spot-image img {
+ margin-bottom: 20px;
+ }
+/**/
+</style>
+</head>
+
+<body>
+<h1 id="logo"><img alt="The World Wide Web Consortium (W3C)" height="48" width="315" src="/Icons/w3c_main" /></h1>
+
+<h2 id="slogan">Leading the Web to Its Full Potential...</h2>
+
+<div>
+<map name="introLinks" id="introLinks" title="Introductory Links">
+<div class="banner">
+<span class="invisible"><a class="bannerLink" title="Skip introductory links and the mission statement" href="#technologies">Skip to Technologies</a> |</span> <a class="bannerLink" title="W3C Activities" accesskey="A" href="/Consortium/activities">Activities</a> | <a class="bannerLink" title="Technical Reports and Recommendations" accesskey="T" href="/TR/">Technical Reports</a> | <a class="bannerLink" title="Alphabetical Site Index" accesskey="S" href="/Consortium/siteindex">Site Index</a> | <a class="bannerLink" title="Help for new visitors" accesskey="N" href="/Consortium/new-to-w3c">New
+Visitors</a> | <a class="bannerLink" title="About W3C" accesskey="B" href="/Consortium/">About W3C</a> | <a class="bannerLink" title="Join W3C" accesskey="J" href="/Consortium/join">Join W3C</a> |
+<a class="bannerLink" title="Contact W3C" accesskey="C" href="/Consortium/contact">Contact W3C</a>
+</div>
+</map>
+</div>
+
+<p class="small">The World Wide Web Consortium (<acronym title="World Wide Web Consortium">W3C</acronym>) develops interoperable
+technologies (specifications, guidelines, software, and tools) to lead
+the Web to its full potential. W3C is a forum for information,
+commerce, communication, and collective understanding. On this page,
+you'll find <a href="#news">W3C news</a>, links to <a href="#technologies">W3C technologies</a> and ways to <a href="#contents">get involved</a>. New visitors can find help in
+<cite><a href="/Consortium/new-to-w3c">Finding Your Way at
+W3C</a></cite>. We encourage organizations to learn more <a href="/Consortium/">about W3C</a> and <a href="/Consortium/membership">about
+W3C Membership</a>.</p>
+
+<div class="navBlock">
+<h2 class="spot-head">XML10</h2>
+
+<div class="spot">
+<div class="spot-image">
+<a href="/2008/xml10/">
+<img src="/2008/xml10/xml-10.png" width="106" height="48" alt="XML 10" />
+</a>
+</div>
+<p class="spot-block">
+To celebrate
+<a href="/2008/xml10/">ten years of XML</a>,
+W3C invites you to
+<a href="/2008/xml10/card/greeting-form">send a greeting</a>
+and tell us about an XML-related blog or article.
+Many thanks to the FLWOR Foundation for their
+generous sponsorship of XML10.
+</p>
+</div>
+
+<h2 class="spot-head">W3C Supporters</h2>
+<div class="spot">
+<p class="spot-block">Help W3C by making a donation through the
+<a href="/Consortium/sup">W3C Supporters Program</a>.</p>
+</div>
+
+
+
+<h2 class="spot-head">Employment</h2>
+
+<div class="spot">
+<p class="spot-block">Current <a href="/Consortium/Recruitment/">job
+opportunities</a> at W3C: <a href="http://www.ercim.org/jobs/wai_consultant.html">Web Accessibility and Ageing Consultant</a>. Current <a href="/Consortium/Recruitment/Fellows#openings">W3C Fellows Program
+openings</a> are <a href="/2007/01/comm-fellow1">Business and
+Technology Communications Specialist</a>, <a href="/2007/01/comm-fellow2">Web / Graphic Designer</a>, and <a href="/2007/01/SysteamFellowsPosition">Software Engineer</a>.</p>
+</div>
+
+<h2 class="navhead"><a name="technologies" id="technologies">W3C A to
+Z</a></h2>
+
+<ul>
+<li class="invisible"><a class="navlink" title="Skip W3C A-Z" href="#news">Skip to News</a></li>
+
+<li><a href="/WAI/" class="navlink">Accessibility</a></li>
+
+<li><a href="/Amaya/" class="navlink">Amaya</a></li>
+
+<li><a href="/Mobile/CCPP/" class="navlink"><abbr title="Composite Capability/Preference Profiles">CC/PP</abbr></a></li>
+
+<li><a href="/2004/CDF/" class="navlink">Compound Document Formats
+(CDF)</a></li>
+
+<li><a href="/Style/CSS/" class="navlink"><abbr title="Cascading Style Sheets">CSS</abbr></a></li>
+
+<li><a href="http://jigsaw.w3.org/css-validator/" class="navlink"><abbr title="Cascading Style Sheets">CSS</abbr>
+Validator</a></li>
+
+<li><a href="/2002/ws/databinding/" class="navlink">Databinding</a></li>
+
+<li><a href="/DOM/" class="navlink"><acronym title="Document Object Model">DOM</acronym></a></li>
+
+<li><a href="/XML/EXI" class="navlink">Efficient XML
+Interchange</a></li>
+
+<li><a href="/2007/eGov/" class="navlink">eGovernment</a></li>
+
+<li><a href="/2001/sw/grddl-wg/" class="navlink"><acronym title="Gleaning Resource Descriptions from Dialects of Languages">GRDDL</acronym></a></li>
+
+<li><a href="/2001/sw/hcls/" class="navlink">Health Care and Life
+Sciences</a></li>
+
+<li><a href="/html/" class="navlink"><abbr title="HyperText Markup Language">HTML</abbr></a></li>
+
+<li><a href="/People/Raggett/tidy/" class="navlink"><abbr title="HyperText Markup Language">HTML</abbr> Tidy</a></li>
+
+<li><a href="http://validator.w3.org/" class="navlink"><abbr title="HyperText Markup Language">HTML</abbr> Validator</a></li>
+
+<li><a href="/Protocols/" class="navlink"><abbr title="Hypertext Transfer Protocol">HTTP</abbr></a></li>
+
+<li><a href="/2005/Incubator/" class="navlink">Incubator</a></li>
+
+<li><a href="/2002/mmi/ink" class="navlink">InkML</a></li>
+
+<li><a href="/International/" class="navlink">Internationalization</a></li>
+
+<li><a href="/Jigsaw/" class="navlink">Jigsaw</a></li>
+
+<li><a href="/Library/" class="navlink">Libwww</a></li>
+
+<li><a href="/Math/" class="navlink">MathML</a></li>
+
+<li><a href="/Mobile/" class="navlink">Mobile Web Initiative
+(W3C-MWI)</a></li>
+
+<li><a href="/2002/mmi/" class="navlink">Multimodal
+Interaction</a></li>
+
+<li><a href="/2004/OWL/" class="navlink"><acronym title="OWL Web Ontology Language">OWL</acronym></a></li>
+
+<li><a href="/2004/pp/" class="navlink">Patent Policy</a></li>
+
+<li><a href="/PICS/" class="navlink"><acronym title="Platform for Internet Content Selection">PICS</acronym></a></li>
+
+<li><a href="/Graphics/PNG/" class="navlink"><acronym title="Portable Network Graphics">PNG</acronym></a></li>
+
+<li><a href="/2007/powder/" class="navlink"><acronym title="Protocol for Web Description Resources">POWDER</acronym></a></li>
+
+<li><a href="/P3P/" class="navlink">Privacy and <abbr title="Platform for Privacy Preferences">P3P</abbr></a></li>
+
+<li><a href="/RDF/" class="navlink"><abbr title="Resource Description Framework">RDF</abbr></a></li>
+
+<li><a href="/2006/rwc/" class="navlink">Rich Web Clients</a></li>
+
+<li><a href="/2005/rules/" class="navlink">Rules</a></li>
+
+<li><a href="/Security/" class="navlink">Security</a></li>
+
+<li><a href="/2001/sw/" class="navlink">Semantic Web</a></li>
+
+<li><a href="/XML/SML" class="navlink">Service Modeling Language
+(<abbr title="Service Modeling Language">SML</abbr>)</a></li>
+
+<li><a href="/AudioVideo/" class="navlink"><acronym title="Synchronized Multimedia Integration Language">SMIL</acronym></a></li>
+
+<li><a href="/2000/xp/Group/" class="navlink"><acronym title="Soap">SOAP</acronym>/<abbr title="XML Protocol">XMLP</abbr></a></li>
+
+<li><a href="/2002/ws/soapjms/" class="navlink"><acronym title="Soap">SOAP-JMS</acronym></a></li>
+
+<li><a href="/2001/sw/DataAccess/" class="navlink"><acronym title="Simple Protocol and RDF Query Language">SPARQL</acronym></a></li>
+
+<li><a href="/Style/" class="navlink">Style</a></li>
+
+<li><a href="/Graphics/SVG/" class="navlink"><abbr title="Scalable Vector Graphics">SVG</abbr></a></li>
+
+<li><a href="/2001/tag/" class="navlink"><abbr title="Technical Architecture Group">TAG</abbr></a></li>
+
+<li><a href="/AudioVideo/TT/" class="navlink">Timed Text</a></li>
+
+<li><a href="/Addressing/" class="navlink"><abbr title="Uniform Resource Identifiers">URI/URL</abbr></a></li>
+
+<li><a href="/QA/Tools/#validators" class="navlink">Validators</a></li>
+
+<li><a href="/Voice/" class="navlink">Voice</a></li>
+
+<li><a href="/2007/uwa/" class="navlink">Ubiquitous Web
+Applications</a></li>
+
+<li><a href="/WAI/" class="navlink"><acronym title="Web Accessibility Initiative">WAI</acronym></a></li>
+
+<li><a href="/2006/webapi/" class="navlink">Web API</a></li>
+
+<li><a href="/2006/appformats/" class="navlink">Web Application
+Formats</a></li>
+
+<li><a href="/2001/tag/" class="navlink">Web Architecture
+(<acronym title="Technical Architecture Group">TAG</acronym>)</a></li>
+
+<li><a href="/Graphics/WebCGM/WG/" class="navlink"><abbr title="Web Computer Graphics Metafile">WebCGM</abbr></a></li>
+
+<li><a href="/2002/ws/" class="navlink">Web Services</a></li>
+
+<li><a href="/2002/ws/addr/" class="navlink"><abbr title="Web Services">WS</abbr>-Addressing</a></li>
+
+<li><a href="/2002/ws/chor/" class="navlink"><abbr title="Web Services Choreography Description Language">WS-CDL</abbr></a></li>
+
+<li><a href="/2002/ws/desc/" class="navlink"><acronym title="Web Services Description Language">WSDL</acronym></a></li>
+
+<li><a href="/2002/ws/policy/" class="navlink"><abbr title="Web Services">WS</abbr>-Policy</a></li>
+
+<li><a href="/MarkUp/Forms/" class="navlink"><acronym title="Next Generation Web Forms">XForms</acronym></a></li>
+
+<li><a href="/MarkUp/" class="navlink"><abbr title="Extensible HyperText Markup Language">XHTML</abbr></a></li>
+
+<li><a href="/MarkUp/" class="navlink"><abbr title="Extensible HyperText Markup Language">XHTML2</abbr></a></li>
+
+<li><a href="/XML/Linking" class="navlink"><acronym title="XML Link">XLink</acronym></a></li>
+
+<li><a href="/XML/" class="navlink"><abbr title="Extensible Markup Language">XML</abbr></a></li>
+
+<li><a href="/TR/xmlbase/" class="navlink"><abbr title="Extensible Markup Language">XML</abbr> Base</a></li>
+
+<li><a href="/2001/XKMS/" class="navlink"><abbr title="Extensible Markup Language">XML</abbr> Key Management</a></li>
+
+<li><a href="/XML/Processing/" class="navlink"><abbr title="Extensible Markup Language">XML</abbr> Processing</a></li>
+
+<li><a href="/XML/Query" class="navlink"><abbr title="Extensible Markup Language">XML</abbr> Query</a></li>
+
+<li><a href="/XML/Schema" class="navlink"><abbr title="Extensible Markup Language">XML</abbr> Schema</a></li>
+
+<li><a href="/2008/xmlsec/" class="navlink"><abbr title="Extensible Markup Language">XML</abbr> Signature
+and Encryption</a></li>
+
+<li><a href="/Style/XSL/" class="navlink">XPath</a></li>
+
+<li><a href="/XML/Linking" class="navlink">XPointer</a></li>
+
+<li><a href="/Style/XSL/" class="navlink"><acronym title="Extensible Stylesheet Language">XSL</acronym> and <acronym title="XSL Transformations">XSLT</acronym></a></li>
+</ul>
+
+<p><a href="/Consortium/siteindex" class="navlink">More
+topics...</a></p>
+</div>
+
+<div class="newsBlock">
+<h2 class="newsHeading"><a name="news" id="news">News</a></h2>
+
+<p class="invisible"><a title="Skip News" href="#search">Skip to
+Search</a></p>
+
+<div id="item103" class="item"><h3 class="headline">New eGovernment Activity to Help Improve Government through Better Use of the Web</h3>
+<p><a href="/2007/eGov/"><img class="newsImage" width="300" height="75" src="/2008/06/03-egov" alt="Crowd scene" /></a></p>
+<p><span class="date">2008-06-03:</span> W3C launches today a <a href="/2007/eGov/">new forum</a> for governments, citizens, researchers, and other stakeholders to investigate how best to use Web technology for good governance and citizen participation. "Open Standards, and in particular Semantic Web Standards, can help lower the cost of government, make it easier for independent agencies to work together, and increase flexibility in the face of change," said Tim Berners-Lee, W3C Director. W3C invites participation in the new <a href="/2007/eGov/IG/">eGovernment Interest Group</a>, which is open to the public. The group will identify best practices and guidelines in this area, document where current technology does not adequately address stakeholder needs, and suggest improvements via the standards process. Read the <a href="/2007/eGov/IG/faq">W3C eGovernment FAQ</a> and <a href="/2008/06/egov-pressrelease">press release</a>, and learn more about the <a href="/2007/eGov/">W3C eGovernment Activity</a>.<span class="archive"> (<a title="New eGovernment Activity to Help Improve Government through Better Use of the Web" href="/News/2008#item103" rel="details">Permalink</a>) </span></p></div>
+
+<div id="item105" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />Two Group Notes Published About Semantic Web and Life Sciences</h3><p><span class="date">2008-06-05:</span> The <a href="/2001/sw/hcls/">Semantic Web Health Care and Life Sciences Interest Group</a> has published two Group Notes: <a href="/TR/2008/NOTE-hcls-kb-20080604/">A Prototype Knowledge Base for the Life Sciences</a> and <a href="/TR/2008/NOTE-hcls-senselab-20080604/">Experiences with the conversion of SenseLab databases to RDF/OWL</a>. The former describes a prototype of a biomedical knowledge base that integrates 15 distinct data sources using currently available Semantic Web technologies including RDF and OWL. The Note outlines which resources were integrated, how the knowledge base was constructed using free and open source triple store technology, how it can be queried using SPARQL, and what resources and inferences are involved in answering complex queries. While the utility of the knowledge base is illustrated by identifying a set of genes involved in Alzheimer's Disease, the approach described here can be applied to any use case that integrates data from multiple domains. The second document describe the experience of converting SenseLab databases into OWL, an important step towards realizing the benefits of Semantic Web in integrative neuroscience research. Learn more about the <a href="/2001/sw/">Semantic Web Activity</a>.<span class="archive"> (<a title="Two Group Notes Published About Semantic Web and Life Sciences" href="/News/2008#item105" rel="details">Permalink</a>) </span></p></div>
+
+<div id="item104" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />Offline Web Applications Published as W3C Note</h3><p><span class="date">2008-06-03:</span> The <a href="/html/wg/">HTML Working Group</a> has published the <a href="/TR/2008/NOTE-offline-webapps-20080530/">Offline Web Applications</a> Group Note. <a href="/TR/html5/">HTML 5</a> contains several features that address the challenge of building Web applications that work while offline. This document highlights these features (SQL, offline application caching APIs as well as online/offline events, status, and the localStorage API) from HTML 5 and provides brief tutorials on how these features might be used to create Web applications that work offline. Learn more about the <a href="/MarkUp/Activity">HTML Activity</a>.<span class="archive"> (<a title="Offline Web Applications Published as W3C Note" href="/News/2008#item104" rel="details">Permalink</a>) </span></p></div>
+
+<div id="item102" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />W3C Advisory Committee Elects Advisory Board</h3><p><span class="date">2008-06-02:</span> The W3C Advisory Committee has filled six open seats on the <a href="/2002/ab/">W3C Advisory Board</a>. Created in 1998, the Advisory Board provides guidance to the Team on issues of strategy, management, legal matters, process, and conflict resolution. Beginning 1 July, the nine Advisory Board participants are Jean-François Abramatic (ILOG), Ann Bassetti (The Boeing Company), Jim Bell (HP), Don Deutsch (Oracle), Eduardo Gutentag (Sun Microsystems), Steve Holbrook (IBM), Ken Laskey (MITRE), Ora Lassila (Nokia), and Arun Ranganathan (Mozilla Foundation). Steve Zilles continues as interim Advisory Board Chair. Read more about the <a href="/2002/ab/">Advisory Board</a>.<span class="archive"> (<a title="W3C Advisory Committee Elects Advisory Board" href="/News/2008#item102" rel="details">Permalink</a>) </span></p></div>
+
+<div id="item101" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />W3C Talks in June</h3><p><span class="date">2008-06-02:</span> Browse <a href="/Talks/">W3C presentations and events</a> also available as an <abbr title="RDF Site Summary"><a href="/2004/08/TalkFiles/Talks.rss">RSS channel</a></abbr>. <span class="archive"> (<a title="W3C Talks in June" href="/News/2008#item101" rel="details">Permalink</a>) </span></p><ul><li><span class="talkstart">2 June, Västerås, Sweden: </span><span class="talktitle" lang="sv" xml:lang="sv">Framtidssäkra eFörvaltningen<span class="hide noprint">.</span></span><span class="talkdesc">Olle Olsson participates in a panel at <a href="http://www.offentligarummet.se/" lang="sv" xml:lang="sv">Offentliga Rummet 2008</a>. </span></li><li><span class="talkstart">4 June, Sao Paulo, Brazil: </span><span class="talktitle">Towards eGovernment 2.0 through better use of the Web<span class="hide noprint">.</span></span><span class="talkdesc">José Manuel Alonso presents at <a href="http://www.w3c.br/2008/launch/">W3C Brazil Office Public Launch</a>. </span></li><li><span class="talkstart">4 June, Sao Paolo, Brazil: </span><span class="talktitle">W3C - Web Open Standards<span class="hide noprint">.</span></span><span class="talkdesc">Daniel Dardailler presents at <a href="http://www.w3c.br/2008/lancamento/">W3C Brazil Office Launch event </a>. </span></li><li><span class="talkstart">10 June, Buenos Aires, Argentina: </span><span class="talktitle">Web Accessibility: People with Disabilities and Elderly Citizens<span class="hide noprint">.</span></span><span class="talkdesc">Shadi Abou-Zahra presents at <a href="http://www.isoc.org.ar/accesibilidad.html" lang="es" xml:lang="es">Web Sin Barreras</a>. </span></li><li><span class="talkstart">11 June, Nashville, TN, USA: </span><span class="talktitle">Color for the Global Web<span class="hide noprint">.</span></span><span class="talkdesc">Molly E Holzschlag presents at <a href="http://www.voicesthatmatter.com/webdesign2008/index.aspx">Voices That Matter</a>. </span></li><li><span class="talkstart">12 June, Nashville, TN, USA: </span><span class="talktitle">Designing for Today's Browsers<span class="hide noprint">.</span></span><span class="talkdesc">Molly E Holzschlag presents at <a href="http://www.voicesthatmatter.com/webdesign2008/index.aspx">Voices That Matter</a>. </span></li><li><span class="talkstart">17 June, New York, NY, USA: </span><span class="talktitle">Web of Data<span class="hide noprint">.</span></span><span class="talkdesc">Tim Berners-Lee presents at <a href="http://www.linkeddataplanet.com/index.php">LinkedData Planet Conference: exploring the new web of linked data</a>. </span></li><li><span class="talkstart">19 June, Tokyo, Japan: </span><span class="talktitle">Update on W3C/WAI Guidelines including WCAG 2.0<span class="hide noprint">.</span></span><span class="talkdesc">Judy Brewer presents at <a>Open Seminar of Information Accessibility</a>. </span></li><li><span class="talkstart">19 June, Nancy, France: </span><span class="talktitle" lang="fr" xml:lang="fr">États des lieux du Web sémantique<span class="hide noprint">.</span></span><span class="talkdesc">Ivan Herman gives a keynote at <a href="http://ic2008.loria.fr/" lang="fr" xml:lang="fr">19èmes Journées Francophones d'Ingénierie des Connaissances (IC2008)</a>. </span></li><li><span class="talkstart">19 June, Baltimore, Maryland, USA: </span><span class="talktitle">How New Web Accessibility Standards Impact User Experience Design<span class="hide noprint">.</span></span><span class="talkdesc">Shawn Henry presents at <a href="http://www.usabilityprofessionals.org/conference/2008/">Usability Professionals' Association International Conference 2008</a>. </span></li><li><span class="talkstart">26 June, Frankfurt, Germany: </span><span class="talktitle">Mobile Internet - the Way Forward<span class="hide noprint">.</span></span><span class="talkdesc">Steve Bratt participates in a panel at <a href="http://www.amiando.com/ngmn-2008">2nd NGMN Industry Conference 2008</a>. </span></li><li class="noprint showuris">View <a href="http://www.w3.org/2004/08/W3CTalks?date=Recent+and+upcoming&amp;countryListing=yes&amp;submit=Submit">upcoming talks by country</a></li><li class="noprint showuris"><a href="/Talks/">More talks...</a></li></ul></div>
+
+<div id="item100" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />W3C Launches Group to Help Bridge the Digital Divide</h3><p><a href="/2008/MW4D/"><img class="newsImage" alt="Phone bikes" src="/2008/05/voiturette-sb.png" /></a><span class="date">2008-05-27:</span> As part of the growing set of W3C initiatives related to social development, W3C invites participation in the new <a href="/2008/MW4D/">Mobile Web for Development (MW4D) interest Group</a>, chartered to explore the potential of mobile technology to help bridge the digital divide. "We need to solve important challenges, such as lack of standards in end-user devices, network constraints, service cost, issues of literacy, and an understanding of the real information needs of rural communities," said Ken Banks, kiwanja.net, who Chairs the group. "To do so requires an multidisciplinary approach, a step we take through the creation of this new group." Read more in the <a href="/2008/05/mw4dig-pressrelease">press release</a>. This launch is part of <a href="/Mobile">W3C's Mobile Web Initiative (MWI)</a>, which aims to identify and resolve challenges and issues of accessing the Web when on the move. This work takes place under the auspices of the <a href="http://cordis.europa.eu/fp7/ict/">European Union's 7th Research Framework Programme (FP7)</a>, part of the <a href="http://digitalworld.ercim.org/">Digital World Forum</a> project.<span class="archive"> (Photo credit: Stéphane Boyera. <a title="W3C Launches Group to Help Bridge the Digital Divide" href="/News/2008#item100" rel="details">Permalink</a>) </span></p></div>
+
+<div id="item99" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />Last Call: XHTML Access Module</h3><p><span class="date">2008-05-26:</span> The <a href="/MarkUp/">XHTML 2 Working Group</a> has published the Last Call Working Draft of <a href="/TR/2008/WD-xhtml-access-20080526/">XHTML Access Module</a>. This document is intended to help make XHTML-family markup languages more effective at supporting the needs of the accessibility community. It does so by providing a generic mechanism for defining the relationship between document components and well-known accessibility taxonomies. Comments are welcome through 16 June. Learn more about the <a href="/MarkUp/Activity">HTML Activity</a>. <span class="archive"> (<a title="Last Call: XHTML Access Module" href="/News/2008#item99" rel="details">Permalink</a>) </span></p></div>
+
+<div id="item98" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />W3C Invites Implementations of CSS Namespaces Module (Candidate Recommendation)</h3><p><span class="date">2008-05-23:</span> The <a href="/Style/CSS/members">Cascading Style Sheets (CSS) Working Group</a> has published the Candidate Recommendation of <a href="/TR/2008/CR-css3-namespace-20080523/">CSS Namespaces Module</a>. This CSS Namespaces module defines the syntax for using namespaces in CSS. It defines the @namespace rule for declaring the default namespace and binding namespaces to namespace prefixes, and it also defines a syntax that other specifications can adopt for using those prefixes in namespace-qualified names. Learn more about the <a href="/Style/">Style Activity</a>.<span class="archive"> (<a title="W3C Invites Implementations of CSS Namespaces Module (Candidate Recommendation)" href="/News/2008#item98" rel="details">Permalink</a>) </span></p></div>
+
+<div id="item97" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />Progress Events 1.0</h3><p><span class="date">2008-05-22:</span> The <a href="/2006/webapi/">Web API Working Group</a> has published a Working Draft of <a href="/TR/2008/WD-progress-events-20080521/">Progress Events 1.0</a>.This document describes event types that can be used for monitoring the progress of an operation. It is primarily intended for contexts such as data transfer operations specified by <a href="/TR/XMLHttpRequest">XMLHTTPRequest</a>, or <a href="/TR/MediaAccessEvents/">Media Access Events</a>. Learn more about the <a href="/2006/rwc/">Rich Web Client Activity</a>.<span class="archive"> (<a title="Progress Events 1.0" href="/News/2008#item97" rel="details">Permalink</a>) </span></p></div>
+
+<div id="item96" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />XML Security Working Group to Take Next Steps on XML Signature, Encryption</h3><p><span class="date">2008-05-21:</span> W3C is pleased to announce the creation of the <a href="/2008/xmlsec/">XML Security Working Group</a>, whose mission is to evaluate and act on <a href="/2007/xmlsec/ws/report">recommendations</a> from the <a href="/2007/xmlsec/ws/agenda.html">September 2007 Workshop on XML Signature and XML Encryption</a> regarding next steps for XML Security specifications. The group's <a href="/2008/02/xmlsec-charter.html#deliverables">deliverables</a> include new work on XML Signature Syntax and Processing and XML Encryption Syntax and Processing, as well as maintenance of related specifications. Frederick Hirsch (Nokia) will Chair the group, with Thomas Roessler (W3C) as Team Contact. Learn more about the <a href="/Security/">W3C Security Activity</a>. <span class="archive"> (<a title="XML Security Working Group to Take Next Steps on XML Signature, Encryption" href="/News/2008#item96" rel="details">Permalink</a>) </span></p></div>
+
+<div id="item94" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />Last Call: Cascading Style Sheets (CSS) Snapshot 2007</h3><p><span class="date">2008-05-16:</span> The <a href="/Style/CSS/members">Cascading Style Sheets (CSS) Working Group</a> has published the Last Call Working Draft of <a href="/TR/2008/WD-css-beijing-20080516/">Cascading Style Sheets (CSS) Snapshot 2007</a>. This document collects together into one definition all the specifications that together form the current state of Cascading Style Sheets (CSS). The primary audience is CSS implementors, not CSS authors, as this definition includes modules by specification stability, not Web browser adoption rate. Comments are welcome through 09 June. Learn more about the <a href="/Style/">Style Activity</a>.<span class="archive"> (<a title="Last Call: Cascading Style Sheets (CSS) Snapshot 2007" href="/News/2008#item94" rel="details">Permalink</a>) </span></p></div>
+
+<div id="item93" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />W3C Invites Implementations of XQuery and XPath Full Text 1.0 (Candidate Recommendation); Requirements and Use Cases Drafts Available</h3><p><span class="date">2008-05-16:</span> The W3C <a href="http://www.w3.org/XML/Query/">XML Query Working Group</a> and the W3C <a href="http://www.w3.org/Style/XSL/">XSL Working Group</a> jointly published today a Candidate Recommendation of <a href="/TR/2008/CR-xpath-full-text-10-20080516/">XQuery and XPath Full Text 1.0</a>. This document defines the syntax and formal semantics of XQuery and XPath Full Text 1.0 which is a language that extends XQuery 1.0 [XQuery 1.0: An XML Query Language] and XPath 2.0 [XML Path Language (XPath) 2.0] with full-text search capabilities. Implementors are encouraged to run the groups' <a href="http://dev.w3.org:/cvsweb/2007/xpath-full-text-10-test-suite/">test suite</a> and report their results. The Groups also published Working Drafts of <a href="/TR/2008/WD-xpath-full-text-10-requirements-20080516/">XQuery and XPath Full Text 1.0 Requirements</a> and <a href="/TR/2008/WD-xpath-full-text-10-use-cases-20080516/">Use Cases</a>. Learn more about the <a href="/XML/">XML Activity</a>.<span class="archive"> (<a title="W3C Invites Implementations of XQuery and XPath Full Text 1.0 (Candidate Recommendation); Requirements and Use Cases Drafts Available" href="/News/2008#item93" rel="details">Permalink</a>) </span></p></div>
+
+<div id="item95" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />State Chart XML (SCXML) Working Draft Published</h3><p><span class="date">2008-05-16:</span> The <a href="/Voice/">Voice Browser Working Group</a> has published an updated Working Draft of <a href="/TR/2008/WD-scxml-20080516/">State Chart XML (SCXML): State Machine Notation for Control Abstraction</a>. <abbr title="State Chart eXtensible Markup Language">SCXML</abbr> is an execution environment based on <a href="http://www.uml.org/#UML1.5"><abbr title="Unified Modeling Language">UML</abbr></a> Harel State Tables and <a href="/TR/ccxml/"><abbr title="Call Control eXtensible Markup Language">CCXML</abbr></a>. The main differences from the previous draft are (1) the modularization of the language, (2) the introduction of profiles and (3) a revision of the algorithm for document interpretation; the document as a whole has changed significantly and the group welcomes review. Learn more about the <a href="/Voice/">Voice Browser Activity</a>.<span class="archive"> (<a title="State Chart XML (SCXML) Working Draft Published" href="/News/2008#item95" rel="details">Permalink</a>) </span></p></div>
+
+<div id="item92" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />"Web Accessibility for Older Users: A Literature Review"; Comments Welcome on First Public Draft</h3><p><span class="date">2008-05-14:</span> The Web Accessibility Initiative (WAI) <a href="/WAI/EO/">Education and Outreach Working Group Working Group (EOWG)</a> has published <a href="/TR/2008/WD-wai-age-literature-20080514/">Web Accessibility for Older Users: A Literature Review</a> as a First Public Working Draft. The document includes reviews and analysis of guidelines and articles covering the requirements of people with Web accessibility needs related to ageing. This literature review will inform WAI efforts to promote accessibility solutions for older Web users and potentially to develop profiles or extensions to WAI guidelines. The literature review is a deliverable of the <a href="/WAI/WAI-AGE/">WAI-AGE Project</a> (Ageing Education and Harmonisation). See the <a href="http://lists.w3.org/Archives/Public/w3c-wai-ig/2008AprJun/0083.html">call for review and participation</a> for an introduction to the project and an invitation to contribute to the literature review and other WAI-AGE work; and about the <a href="/WAI/">Web Accessibility Initiative</a>.<span class="archive"> (<a title="Web Accessibility for Older Users: A Literature Review; Comments Welcome on First Public Draft" href="/News/2008#item92" rel="details">Permalink</a>) </span></p></div>
+
+<div id="item91" class="item"><h3><img alt="" width="17" height="11" src="/Icons/right" />Last Call: CURIE Syntax 1.0</h3><p><span class="date">2008-05-08:</span> The <a href="/MarkUp/">XHTML2 Working Group</a> has published the Last Call Working Draft of <a href="/TR/2008/WD-curie-20080506">CURIE Syntax 1.0</a>, which outlines a syntax for expressing URIs in a generic, abbreviated syntax ("Compact URI"). The specification targets language designers who need a mechanism to permit the use of extensible value collections. Any language designer considering the use of QNames in attribute values should consider instead using CURIEs, since CURIEs are designed for this purpose, while QNames are not. Comments are welcome through 10 June. Learn more about the <a href="/MarkUp/Activity">HTML Activity</a>.<span class="archive"> (<a title="Last Call: CURIE Syntax 1.0" href="/News/2008#item91" rel="details">Permalink</a>) </span></p></div>
+
+
+
+<h3 class="pastNews"><a href="/News/2008">Past News</a></h3>
+</div>
+
+<div class="navBlock">
+<h2 class="navhead"><a name="search" id="search">Search</a></h2>
+
+<p class="invisible"><a class="navlink" title="Skip search" href="#contents">Skip to Contents</a></p>
+
+<form method="get" action="http://www.google.com/custom" enctype="application/x-www-form-urlencoded">
+<div>
+<a class="navlink" href="http://www.google.com"><img src="/Icons/Logo_25wht.gif" width="75" height="32" alt="Google" /></a><br />
+<label for="inputField">Search W3C<br />
+<input type="text" size="15" id="inputField" name="q" accesskey="E" maxlength="255" /></label> <input type="submit" value="Go" id="goButton" name="sa" accesskey="G" /><br />
+<input type="hidden" name="cof" value="T:black;LW:72;ALC:#ff3300;L:http://www.w3.org/Icons/w3c_home;LC:#000099;LH:48;BGC:white;AH:left;VLC:#660066;GL:0;AWFID:0b9847e42caf283e;" />
+ <input type="hidden" id="searchW3C" name="sitesearch" checked="checked" value="www.w3.org" /><input type="hidden" name="domains" value="www.w3.org" />
+</div>
+</form>
+
+<p><a class="navlink" href="/Search/Mail/Public/">Search W3C Mailing
+Lists</a></p>
+
+<h2 class="navhead"><a name="contents" id="contents">Testimonials</a></h2>
+
+<div class="hpmt"><div class="hpmt-name">Fraunhofer Gesellschaft</div><div class="hpmt-logo"><a rel="nofollow" href="http://www.fraunhofer.de/"><img alt="Fraunhofer Gesellschaft" src="http://www.w3.org/Consortium/Member/Testimonial/Logo/119" /></a></div><p class="hpmt-testimonial">The Fraunhofer-Gesellschaft undertakes applied contract research in all fields of engineering sciences. Fraunhofer works with W3C to contribute to the development of Web technologies which are the base of many of our research activities. Fraunhofer hosts the W3C Office in Germany and Austria. <a class="hpmt-more" href="http://www.w3.org/Consortium/Member/Testimonial/List">(Member testimonials)</a></p></div>
+
+<h2 class="navhead">Members</h2>
+
+<ul>
+<li><a href="/Member/" class="navlink">Member Home Page</a></li>
+
+<li><a href="/Submission/" class="navlink">Member Submissions</a></li>
+
+<li><a href="/Consortium/Member/List" class="navlink">Current
+Members</a></li>
+
+<li><a href="/Consortium/meetings" class="navlink">Meetings</a></li>
+
+<li><a href="/Consortium/Recruitment/Fellows" class="navlink">Fellows</a> (<a href="/Consortium/Recruitment/Fellows#openings">New Openings</a>)</li>
+</ul>
+
+<h2 class="navhead">Get Involved</h2>
+
+<ul>
+<li><a href="/Consortium/membership-benefits" class="navlink">W3C
+Membership Benefits</a></li>
+
+<li><a href="/Consortium/membership#bizcase" class="navlink">Reasons to
+Join W3C</a></li>
+
+<li><a href="/Mail/" class="navlink">Mailing Lists</a></li>
+
+<li><a href="http://lists.w3.org/Archives/Public/public-new-work/latest">Potential
+New Work</a></li>
+
+<li><a href="/Consortium/Translation/" class="navlink">Translations</a></li>
+
+<li><a href="/2003/08/Workshops/" class="navlink">Workshops</a></li>
+
+<li><a href="/2001/11/StdLiaison" class="navlink">Liaisons</a></li>
+
+<li><a href="/Status" class="navlink">Open Source Software</a></li>
+
+<li><a href="/QA/" class="navlink">Q&amp;A Blog</a></li>
+
+<li><a href="/Consortium/Recruitment/" class="navlink">Employment</a></li>
+
+<li><span class="navText">More ways to</span> <a href="/Consortium/org#public" class="navlink">participate</a></li>
+</ul>
+
+<h2 class="navhead">Introduction</h2>
+
+<ul>
+<li><a href="/Consortium/" class="navlink">About W3C</a></li>
+
+<li><a href="/Consortium/faq" class="navlink">Frequently Asked
+Questions (FAQ)</a></li>
+
+<li><a href="/2003/glossary/" class="navlink">Glossary</a></li>
+
+<li><a href="/Consortium/Process/" class="navlink">Process
+Document</a></li>
+
+<li><a href="/2002/03/tutorials" class="navlink">Tutorials</a></li>
+
+<li><a href="/2002/03/new-to-w3c" class="navlink">More...</a></li>
+</ul>
+
+<h2 class="navhead">W3C Team</h2>
+
+<ul>
+<li><a href="/People/" class="navlink">People</a></li>
+
+<li><a href="/TeamSubmission/" class="navlink">Team
+Submissions</a></li>
+</ul>
+
+<h2 class="navhead">Presentations</h2>
+
+<ul>
+<li><a href="/Talks/" class="navlink">Public Presentations</a></li>
+</ul>
+
+<h2 class="navhead">News Room</h2>
+
+<ul>
+<li><a href="/News/" class="navlink">W3C News Archive</a> <span class="navText">(</span><a href="/2000/08/w3c-synd/home.rss" class="navlink">RSS</a><span class="navText">)</span></li>
+
+<li><a href="/News/Public/" class="navlink">Weekly Public Newsletter</a></li>
+
+<li><a href="/Press/" class="navlink">Press Releases</a></li>
+
+<li><a href="/Press/#rss" class="navlink">Multilingual Press Release
+RSS</a></li>
+
+<li><a href="/Press/Articles" class="navlink">W3C in the Press</a></li>
+</ul>
+
+<h2 class="navhead"><a name="Offices" id="Offices">World
+Offices</a></h2>
+
+<p class="navPara">The <a href="/Consortium/Offices/" class="navlink">W3C Offices</a>, part of the <a href="/2007/IntlRel.html">W3C
+International Relations team</a> translate many W3C home page news
+items. W3C Offices are located in these parts of the world:</p>
+
+<ul>
+<li><a href="http://www.w3c.org.au/" class="navlink" title="Australia">Australia</a></li>
+
+<li><a href="http://www.w3c.nl/index.shtml.nl" class="navlink" hreflang="nl" title="Benelux"><span xml:lang="nl" lang="nl">Benelux</span></a>/<a href="http://www.w3c.nl/index.shtml.fr" class="navlink" title="Benelux" hreflang="fr"><span xml:lang="fr" lang="fr">Bénélux</span></a></li>
+
+<li><a href="http://www.w3c.br/" class="navlink" title="Brazil" hreflang="pt-br"><span xml:lang="pt-br" lang="pt-br">Brasil</span>
+(Brazil)</a></li>
+
+<li><a href="http://www.chinaw3c.org/" class="navlink" title="China" hreflang="zh-hans"><span xml:lang="zh-hans" lang="zh-hans">中国</span>
+(China)</a></li>
+
+<li><a href="http://www.w3c.tut.fi/" class="navlink" title="Finland" hreflang="fi"><span xml:lang="fi" lang="fi">Suomi</span>
+(Finland)</a></li>
+
+<li><a href="http://www.w3c.de/" class="navlink" title="German and Austria" hreflang="de"><span xml:lang="de" lang="de">Deutschland und Österreich</span> (Germany and Austria)</a></li>
+
+<li><a href="http://www.w3c.gr/" class="navlink" title="Greece" hreflang="el"><span xml:lang="el" lang="el">Ελλάδα</span>
+(Greece)</a></li>
+
+<li><a href="http://www.w3c.hu/" class="navlink" title="Hungary" hreflang="hu"><span xml:lang="hu" lang="hu">Magyarország</span>
+(Hungary)</a></li>
+
+<li><a href="http://www.w3cindia.in/" class="navlink" title="India" hreflang="en"><span xml:lang="hi" lang="hi">भारत</span>
+(India)</a></li>
+
+<li><a href="http://www.w3c.org.il/" class="navlink" title="Israel" hreflang="he"><span xml:lang="he" lang="he">ישראל</span>
+(Israel)</a></li>
+
+<li><a href="http://www.w3c.it/" class="navlink" title="Italy" hreflang="it"><span xml:lang="it" lang="it">Italia</span>
+(Italy)</a></li>
+
+<li><a href="http://www.w3c.or.kr/" class="navlink" title="Korea" hreflang="ko"><span xml:lang="ko" lang="ko">한국</span> (Korea)</a></li>
+
+<li><a href="http://www.w3c.org.ma/" class="navlink" title="Morocco" hreflang="ar"><span xml:lang="ar" lang="ar">المغرب</span>
+(Morocco)</a></li>
+
+<li><a href="http://www.w3c.org.za/" class="navlink" title="Southern Africa" hreflang="en">Southern Africa</a></li>
+
+<li><a href="http://www.w3c.es/" class="navlink" title="Spain" hreflang="es"><span xml:lang="es" lang="es">España</span>
+(Spain)</a></li>
+
+<li><a href="http://www.w3c.se" class="navlink" title="Sweden" hreflang="sv"><span xml:lang="sv" lang="sv">Sverige</span>
+(Sweden)</a></li>
+
+<li><a href="http://www.w3c.rl.ac.uk/" class="navlink" title="UK and Ireland" hreflang="en-uk">United Kingdom and Ireland</a></li>
+</ul>
+
+<h2 class="navhead"><a name="systems" id="systems">Systems</a></h2>
+
+<ul>
+<li><a href="/Help/Account/" class="navlink">Get Password</a></li>
+
+<li><a href="/2003/08/system-status" class="navlink">System
+Status</a></li>
+</ul>
+</div>
+<hr class="hide" />
+
+<p class="small">W3C would like to thank the <a name="donors" id="donors" href="/Consortium/sup">Supporters</a> who have contributed
+financially or through a donation of goods to W3C.</p>
+
+<p class="small"><a name="footnotes" id="footnotes">Read</a> <a href="/2002/11/homepage">about the layout</a> and <a href="http://lists.w3.org/Archives/Public/site-comments/">send comments</a>
+about this page. <a href="/2000/08/w3c-synd/home.rss">Syndicate</a>
+this page with <a href="http://purl.org/rss/1.0/">RSS 1.0</a>, an
+<a href="/RDF/">RDF</a> vocabulary used for <a href="/2000/08/w3c-synd/#">site summaries</a>. </p>
+
+<address class="small">
+<a href="/Help/Webmaster">Webmaster</a> · Last modified:
+ $Date: 2008/06/05 17:06:19 $
+ <span class="whiteout">|</span><br />
+<a href="http://validator.w3.org/check?uri=referer"><img src="/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a> <span class="whiteout">|</span> <a href="http://jigsaw.w3.org/css-validator/"><img src="/Icons/valid-css" alt="Valid CSS!" height="31" width="88" /></a> <span class="whiteout">|</span> <a href="/WAI/WCAG1AA-Conformance" title="Explanation of Level Double-A Conformance"><img class="conform" height="31" width="88" src="/WAI/wcag1AA" alt="Level Double-A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0" />
+</a> <span class="whiteout">|</span>
+</address>
+
+<p class="copyright"><a rel="Copyright" href="/Consortium/Legal/ipr-notice#Copyright">Copyright</a> © 1994-2007
+<a href="/"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>®</sup> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>, <a href="http://www.ercim.org/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
+<a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C
+<a href="/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
+<a href="/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>,
+<a rel="Copyright" href="/Consortium/Legal/copyright-documents">document use</a> and <a rel="Copyright" href="/Consortium/Legal/copyright-software">software
+licensing</a> rules apply. Your interactions with this site are in
+accordance with our <a href="/Consortium/Legal/privacy-statement#Public">public</a> and <a href="/Consortium/Legal/privacy-statement#Members">Member</a> privacy
+statements.</p>
+</body>
+</html>
diff --git a/examples/xml/htmlinfo/youtube_com.html b/examples/xml/htmlinfo/youtube_com.html
new file mode 100644
index 0000000..1de65a3
--- /dev/null
+++ b/examples/xml/htmlinfo/youtube_com.html
@@ -0,0 +1,1585 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
+
+
+ <html lang="en">
+
+<!-- machid: 519 -->
+<head>
+
+ <title>YouTube - Broadcast Yourself.</title>
+
+ <link rel="stylesheet" href="http://s.ytimg.com/yt/css/base_all-vfl42327.css" type="text/css">
+
+ <link rel="search" type="application/opensearchdescription+xml" href="/opensearch?locale=en_US" title="YouTube Video Search">
+ <link rel="icon" href="http://s.ytimg.com/yt/favicon-vfl1123.ico" type="image/x-icon">
+ <link rel="shortcut icon" href="http://s.ytimg.com/yt/favicon-vfl1123.ico" type="image/x-icon">
+
+
+ <meta name="description" content="Share your videos with friends and family">
+ <meta name="keywords" content="video,sharing,camera phone,video phone,free">
+
+ <link rel="alternate" type="application/rss+xml" title="YouTube - [RSS]" href="/rssls">
+
+ <link rel="alternate" media="handheld" href="http://m.youtube.com/index?desktop_uri=%2F&">
+
+ <script type="text/javascript">
+ window.google={kHL:"en"};
+ </script>
+
+ <script type="text/javascript" src="http://s.ytimg.com/yt/js/base_all_with_bidi-vfl42302.js"></script>
+
+ <script type="text/javascript">
+
+ function _hbLink (a,b) { return false; }
+ function urchinTracker (a,b) { }
+
+
+ var gXSRF_token = '';
+ var gXSRF_field_name = '';
+ var gXSRF_ql_pair = '';
+
+ gXSRF_token = 'fZg-xPKpfj11aUrz_5__moOGiAp8MTIxMjg1OTQ4OA==';
+ gXSRF_field_name = 'session_token';
+ onLoadFunctionList.push(populate_session_token);
+
+ gXSRF_ql_pair = 'session_token=kVjpl8qnfp7RPuqnTrIu6Q8BT5d8MA==';
+
+
+ var gQuickListTooltipText = 'Add Video to QuickList';
+ var gPartnerVideoText = 'Partner Video';
+ var gGoogleSuggest = true;
+ var gPixelGif = 'http://s.ytimg.com/yt/img/pixel-vfl73.gif';
+
+ var gInQuickListText = 'in <a href="/watch_queue?all">QuickList</a>';
+ var gIsResultsPage = false;
+ </script>
+
+
+
+<script type="text/javascript">
+
+function swapVideoList(linkObj)
+{
+ var linkId = linkObj.id;
+ var queryData = '';
+ var newDivId = '';
+ var headlineObj = document.getElementById('hpVideoListHead');
+ var moreLinkObj = document.getElementById('homepage-featured-more-top');
+ var bottomMoreLinkObj = document.getElementById('homepage-featured-more-bottom');
+
+ if (linkId == 'hpMostViewedLink') {
+ queryData = 'videoListType=mostViewed';
+ newDivId = 'hpMostViewed';
+ headlineObj.innerHTML = "Most Viewed Videos";
+ moreLinkObj.innerHTML = "<a href=\"/browse?s=mp\">See More Most Viewed Videos</a>";
+ bottomMoreLinkObj.innerHTML = "<a href=\"/browse?s=mp\">See More Most Viewed Videos</a>";
+ }
+ else if (linkId == 'hpMostDiscussedLink') {
+ queryData = 'videoListType=mostDiscussed';
+ newDivId = 'hpMostDiscussed';
+ headlineObj.innerHTML = "Most Discussed Videos";
+ moreLinkObj.innerHTML = "<a href=\"/browse?s=md\">See More Most Discussed Videos</a>";
+ bottomMoreLinkObj.innerHTML = "<a href=\"/browse?s=md\">See More Most Discussed Videos</a>";
+ }
+ else if (linkId == 'hpTopFavoritesLink') {
+ queryData = 'videoListType=topFavorites';
+ newDivId = 'hpTopFavorites';
+ headlineObj.innerHTML = "Top Favorites";
+ moreLinkObj.innerHTML = "<a href=\"/browse?s=mf\">See More Top Favorites</a>";
+ bottomMoreLinkObj.innerHTML = "<a href=\"/browse?s=mf\">See More Top Favorites</a>";
+ }
+ else if (linkId == 'hpFeaturedLink') {
+ newDivId = 'hpFeatured';
+ headlineObj.innerHTML = "Featured Videos";
+ moreLinkObj.innerHTML = "<a href=\"/browse?s=rf\">See More Featured Videos</a>";
+ bottomMoreLinkObj.innerHTML = "<a href=\"/browse?s=rf\">See More Featured Videos</a>";
+ }
+ self.containerDiv = 'homepage-video-list'
+ self.fillDiv = fillDiv
+ self.linkId = linkId
+ self.newDivId = newDivId
+ addClass(_gel(newDivId + 'Link'), 'hilite');
+ if (newDivId != 'hpMostViewed') {
+ removeClass(_gel('hpMostViewedLink'), 'hilite');
+ }
+ if (newDivId != 'hpMostDiscussed') {
+ removeClass(_gel('hpMostDiscussedLink'), 'hilite');
+ }
+ if (newDivId != 'hpTopFavorites') {
+ removeClass(_gel('hpTopFavoritesLink'), 'hilite');
+ }
+ if (newDivId != 'hpFeatured') {
+ removeClass(_gel('hpFeaturedLink'), 'hilite');
+ }
+ if (document.getElementById(newDivId))
+ {
+ document.getElementById(newDivId).style.display = 'block';
+ if (newDivId != 'hpMostViewed' && document.getElementById('hpMostViewed')) document.getElementById('hpMostViewed').style.display = 'none';
+ if (newDivId != 'hpMostDiscussed' && document.getElementById('hpMostDiscussed')) document.getElementById('hpMostDiscussed').style.display = 'none';
+ if (newDivId != 'hpTopFavorites' && document.getElementById('hpTopFavorites')) document.getElementById('hpTopFavorites').style.display = 'none';
+ if (newDivId != 'hpFeatured' && document.getElementById('hpFeatured')) document.getElementById('hpFeatured').style.display = 'none';
+ }
+ else if (queryData != '') {
+ postUrlXMLResponse('/ajax_video_list',queryData,self.fillDiv);
+ }
+}
+function fillDiv(req)
+{
+ if (document.getElementById('hpMostViewed')) document.getElementById('hpMostViewed').style.display = 'none';
+ if (document.getElementById('hpMostDiscussed')) document.getElementById('hpMostDiscussed').style.display = 'none';
+ if (document.getElementById('hpTopFavorites')) document.getElementById('hpTopFavorites').style.display = 'none';
+ if (document.getElementById('hpFeatured')) document.getElementById('hpFeatured').style.display = 'none';
+ var newContent = getNodeValue(req.responseXML, "html_content");
+ var newdiv = document.createElement('div');
+ newdiv.setAttribute("id",self.newDivId);
+ newdiv.innerHTML = newContent;
+ var container = document.getElementById(self.containerDiv);
+ container.appendChild(newdiv);
+ addQLIcons(container);
+}
+
+function hide_active_sharing() {
+ hideDiv("active_sharing_div");
+}
+</script>
+
+</head>
+
+
+<body onload="performOnLoadFunctions();" class="en_US is-english">
+
+<div id="baseDiv" class="date-20080606">
+
+ <div id="masthead">
+ <a href="/" class="logo"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" width="132" height="63" border="0" alt=""/></a>
+ <div class="user-info">
+
+ <div id="loginBoxZ">
+ <div class="contentBox">
+ <div>
+ <div id="loginBoxZ-signup">
+ <a href="/signup">Sign Up</a>
+ | <a href="http://help.youtube.com/support/youtube/bin/topic.py?topic=10546&amp;hl=en_US">Help</a>
+ </div>
+ <div id="loginBoxZ-login">
+ Login
+ </div>
+ <div class="clear"></div>
+ </div>
+
+ <form method="post" name="loginForm" id="loginFormZ" action="/signup">
+ <input type="hidden" name="next" value="/" id="loginNextZ"/>
+ <input type="hidden" name="current_form" value="loginForm" />
+ <input type="hidden" name="action_login" value="1">
+ <div id="loginBoxZ-container">
+ <div id="loginBoxZ-labels" class="floatL">
+ <label for="loginUserZ" class="nowrap">Username:</label>
+ <label for="loginPassZ" class="nowrap">Password:</label>
+ </div>
+ <div class="floatL">
+ <input id="loginUserZ" class="loginBoxZ-input" type="text" size="16" name="username" value=""><br/>
+ <input id="loginPassZ" class="loginBoxZ-input" type="password" size="16" name="password"><br/>
+ <input type="submit" class="smallText" value="Login">
+ </div>
+ <div class="clearL"></div>
+ </div>
+ </form>
+ <div id="loginBoxZ-forgot">
+ <a href="/forgot_username?next=/">Forgot Username</a>
+ | <wbr><nobr><a href="/forgot?next=/">Forgot Password</a></nobr>
+ </div>
+ <div id="loginBoxZ-gaia">
+ <a href="https://www.google.com/accounts/ServiceLogin?service=youtube&amp;hl=en_US&amp;continue=http%3A//www.youtube.com/signup%3Fhl%3Den_US&amp;passive=true">Login with your Google account</a>&nbsp;
+ <a href="#" onClick="window.open('/t/help_gaia','login_help','width=580,height=480,resizable=yes,scrollbars=yes,status=0').focus();" rel="nofollow"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" border="0" class="alignMid gaiaHelpBtn" alt=""></a>
+ </div>
+ </div>
+ </div>
+
+ <div id="localePickerBox">
+ <div id="flagDiv">
+ <script type="text/javascript">
+ var gLocales = [
+ ['ru_RU','&#x420;&#x43E;&#x441;&#x441;&#x438;&#x44F;'] , ['zh_TW','&#x53F0;&#x7063;'] , ['ja_JP','&#x65E5;&#x672C;'] , ['zh_HK','&#x9999;&#x6E2F;'] , ['ko_KR','&#xD55C;&#xAD6D;'] , ['en_AU','Australia'] , ['pt_BR','Brasil'] , ['en_CA','Canada'] , ['de_DE','Deutschland'] , ['es_ES','Espa&#xF1;a'] , ['fr_FR','France'] , ['en_US','Global'] , ['en_IN','India'] , ['en_IE','Ireland'] , ['it_IT','Italia'] , ['es_MX','M&#xE9;xico'] , ['nl_NL','Nederland'] , ['en_NZ','New Zealand'] , ['pl_PL','Polska'] , ['en_GB','United Kingdom']
+ ];
+ </script>
+ <div id="flagDivInner">
+ </div>
+
+ <div class="alignR smallText"><a href="#" onclick="closeLocalePicker(); return false;">Close</a></div>
+ </div>
+ </div>
+
+
+
+
+
+
+ <div id="util-links" class="normal-utility-links">
+
+ <span class="util-item first"><b><a href="/signup" onclick="_hbLink('SignUp','UtilityLinks');">Sign Up</a></b></span>
+ <span class="util-item"><a href="/watch_queue?all">QuickList</a> (<span id="quicklist-utility">0</span>)</span>
+ <span class="util-item"><a href="http://help.youtube.com/support/youtube/bin/static.py?page=start.cs&amp;hl=en_US">Help</a></span>
+ <span class="util-item"><a href="#" class="loginBoxZ eLink" onclick="return openLoginBox(event);">Log In</a></span>
+ <span class="util-item"><a href="#" class="localePickerLink eLink" onclick="loadFlagImgs();toggleDisplay('localePickerBox');return false;">Site:</a></span>
+ <span class="util-item first">&nbsp;<a href="#" class="localePickerLink" onclick="loadFlagImgs();toggleDisplay('localePickerBox');return false;"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="currentFlag globalFlag" alt="Site:"></a></span>
+ </div>
+
+ <form name="logoutForm" method="post" target="_top" action="/index">
+ <input type="hidden" name="action_logout" value="1">
+ </form>
+
+
+ </div>
+ <div class="nav">
+ <div class="nav-item first selected" id="nav-item-home">
+ <span class="leftcap"></span>
+ <a class="content" href="/">Home</a>
+ <span class="rightcap"></span>
+ </div>
+ <div class="nav-item" id="nav-item-videos">
+ <div class="nav-tab">
+ <span class="leftcap"></span>
+ <a class="content" href="/browse?s=mp">Videos</a>
+ <span class="rightcap"></span>
+ </div>
+ </div>
+ <div class="nav-item" id="nav-item-channels">
+ <div class="nav-tab">
+ <span class="leftcap"></span>
+ <a class="content" href="/members">Channels</a>
+ <span class="rightcap"></span>
+ </div>
+ </div>
+ <div class="nav-item" id="nav-item-community">
+ <div class="nav-tab">
+ <span class="leftcap"></span>
+ <a class="content" href="/community">Community</a>
+ <span class="rightcap"></span>
+ </div>
+ </div>
+ </div>
+
+ <form autocomplete="off" action="/results" method="get" name="searchForm" onsubmit="return submitRegularSearchRequest()">
+
+ <div class="bar">
+ <span class="leftcap"></span>
+ <div class="search-bar">
+ <a href="/my_videos_upload" id="upload-button" class="action-button">
+ <span class="action-button-leftcap"></span>
+ <span class="action-button-text">Upload</span>
+ <span class="action-button-rightcap"></span>
+ </a>
+ <div id="search-form">
+ <input id="search-term" name="search_query" type="text" tabindex="1" onkeyup="goog.i18n.bidi.setDirAttribute(event,this)" value="" maxlength="128" />
+ <select class="search-type" name="search_type">
+ <option value="">Videos</option>
+ <option value="search_users" >Channels</option>
+ </select>
+ <input id="search-button" type="submit" value="Search" />
+ </div>
+ <div class="search-settings-link">
+ <a href="#" class="eLink" onClick="return toggleAdvSearch('', '', '', '', '', '')">
+ advanced
+ </a></div>
+ </div>
+ <span class="rightcap"></span>
+ </div>
+
+ </form>
+
+ <div id="search-advanced-form" class="hid">
+ <div class="search-setting-inner alignC">Loading...</div>
+ </div>
+
+ <div class="clear"></div>
+ </div>
+ <div id="search-settings-clr" class="hid"></div>
+
+
+
+
+
+
+<div id="homepage-main-content">
+ <div>
+ <div id="active_sharing_div" name="active_sharing_div" style="display:block"></div>
+ <script type="text/javascript">
+ // <![CDATA[
+ var fo = new SWFObject("active_sharing.swf", "active_sharing", "550", "115", 7, "#FFFFFF");
+ var showstr = "Videos being watched right now...";
+ fo.addParam('wmode', 'opaque');
+ fo.addVariable("t", showstr);
+ fo.write("active_sharing_div");
+ // ]]>
+ </script>
+</div>
+
+ <div class="homepage-content-block" style="margin-left:18px; border:0px #CCC solid;">
+ <div class="homepage-block-heading homepage-block-heading-gray">Promoted Videos</div>
+ <div>
+ <div class="homepage-sponsored-video marB0">
+ <div class="videoIconWrapperOuter">
+ <div class="videoIconWrapperInner">
+ <div class="vstill"><a href="/cthru?key=YSqt3w6VDhuNgxUzVZsryt0JX30ll7tCIrBT--_pvAtRC3KmvsBYFaUNR1qT0d0BnBJYjHz_G7LIr21ufG7W6gJL7zPdHNbcmuIxaafL1yry8cdcqeEOTitWLXkpm2q2QnTAlp4chC1jus7JLVCnCdacl0xUeDk4Vk8e6q9htmGbDZPN9QMnHsrX2RZnvDMx-3Im14C3GKi4jI8ee-jnOQ==" name="&lid=DV+-+BasiaBulatInTheNight+-+beggars&lpos=hp-s0"><img src="http://i.ytimg.com/vi/CebHAvPHyyU/default.jpg" class="vimg120"></a></div>
+ </div>
+ </div>
+
+ <div class="vtitle smallText">
+ <a href="/cthru?key=YSqt3w6VDhuNgxUzVZsryt0JX30ll7tCIrBT--_pvAtRC3KmvsBYFaUNR1qT0d0BnBJYjHz_G7LIr21ufG7W6gJL7zPdHNbcmuIxaafL1yry8cdcqeEOTitWLXkpm2q2QnTAlp4chC1jus7JLVCnCdacl0xUeDk4Vk8e6q9htmGbDZPN9QMnHsrX2RZnvDMx-3Im14C3GKi4jI8ee-jnOQ==" name="&lid=DV+-+BasiaBulatInTheNight+-+beggars&lpos=hp-s0">Basia Bulat - In Th...</a>
+ </div>
+ <div class="vfacets" style="margin-bottom: 0px;">
+ <a href="/user/beggars" class="dg">beggars</a>
+ </div>
+ </div>
+ <div class="homepage-sponsored-video marB0">
+ <div class="videoIconWrapperOuter">
+ <div class="videoIconWrapperInner">
+ <div class="vstill"><a href="/cthru?key=FIUXMxdvOKhDw2_wpR7bE9L-XUsHMZBHRpS_s21B0Kq0RTWlGXSqQ8bjw6tBQOUczUtO8b6_mktukdd5ChseYAl10dE5JQrlpiOQE6HNMOAsszaA0M9qhzFnOkWPrkFGMDW5vvaAOkIwas6ksi4e_R8wkiIhlNYPDiqi2f4LpVzB2jpe0LobjIEF9czWjFx9ymrPg8wx2x6w00jF-BzRfQ==" name="&lid=DV+-+Perfection+-+corporalcadet&lpos=hp-s1"><img src="http://i.ytimg.com/vi/Np4bhsmr3iE/default.jpg" class="vimg120"></a></div>
+ </div>
+ </div>
+
+ <div class="vtitle smallText">
+ <a href="/cthru?key=FIUXMxdvOKhDw2_wpR7bE9L-XUsHMZBHRpS_s21B0Kq0RTWlGXSqQ8bjw6tBQOUczUtO8b6_mktukdd5ChseYAl10dE5JQrlpiOQE6HNMOAsszaA0M9qhzFnOkWPrkFGMDW5vvaAOkIwas6ksi4e_R8wkiIhlNYPDiqi2f4LpVzB2jpe0LobjIEF9czWjFx9ymrPg8wx2x6w00jF-BzRfQ==" name="&lid=DV+-+Perfection+-+corporalcadet&lpos=hp-s1">Perfection</a>
+ </div>
+ <div class="vfacets" style="margin-bottom: 0px;">
+ <a href="/user/corporalcadet" class="dg">corporalcadet</a>
+ </div>
+ </div>
+ <div class="homepage-sponsored-video marB0">
+ <div class="videoIconWrapperOuter">
+ <div class="videoIconWrapperInner">
+ <div class="vstill"><a href="/cthru?key=1W2J508g9g7Bjsvodsvq3GHZo25JkqX7Js5JSHnyP1yZYB96KDh2LTC2pCKjeHc7LEiTUU4uhuwsrTzZfns_IR2dsA7leCUYMtvgq3noBHy-G0jTHmgiQtFUVTDU3jT2EkS39J6Ur2qxtHwAmybMcU83hK1guqpPdryKOfcbHovo-Kbwglzbbl28LrK1iNdz5E6NZ5CZCVZrYxldbWyjEA==" name="&lid=DV+-+WhatmatterstoyoumeVFS+-+Jr0canest&lpos=hp-s2"><img src="http://i.ytimg.com/vi/KExoP97KUnY/default.jpg" class="vimg120"></a></div>
+ </div>
+ </div>
+
+ <div class="vtitle smallText">
+ <a href="/cthru?key=1W2J508g9g7Bjsvodsvq3GHZo25JkqX7Js5JSHnyP1yZYB96KDh2LTC2pCKjeHc7LEiTUU4uhuwsrTzZfns_IR2dsA7leCUYMtvgq3noBHy-G0jTHmgiQtFUVTDU3jT2EkS39J6Ur2qxtHwAmybMcU83hK1guqpPdryKOfcbHovo-Kbwglzbbl28LrK1iNdz5E6NZ5CZCVZrYxldbWyjEA==" name="&lid=DV+-+WhatmatterstoyoumeVFS+-+Jr0canest&lpos=hp-s2">What matters to you...</a>
+ </div>
+ <div class="vfacets" style="margin-bottom: 0px;">
+ <a href="/user/Jr0canest" class="dg">Jr0canest</a>
+ </div>
+ </div>
+ <div class="homepage-sponsored-video marB0">
+ <div class="videoIconWrapperOuter">
+ <div class="videoIconWrapperInner">
+ <div class="vstill"><a href="/cthru?key=idL1slcMKbuzX2MFZaS-nifq5PWrCKLUZMXEPqCthRVET6PQSkxlmKQVMNmQvlYpQlFISkRprfO113rH-ER0ytYh0zSMWI4XbaO74zcrIZiSpB3oISku9zIGUwS5WI03Y0ZiHbGAC9GIYziEcRcgzcEYuizlUwNvTWDgNSvrCJHcyPYokMUjLjcwqD2wEEAe7jfIfcJRNl3sW7ODuiN_MA==" name="&lid=DV+-+LIfeisaMasquerade+-+bananaruthy&lpos=hp-s3"><img src="http://i.ytimg.com/vi/l9gjk5hHiGM/default.jpg" class="vimg120"></a></div>
+ </div>
+ </div>
+
+ <div class="vtitle smallText">
+ <a href="/cthru?key=idL1slcMKbuzX2MFZaS-nifq5PWrCKLUZMXEPqCthRVET6PQSkxlmKQVMNmQvlYpQlFISkRprfO113rH-ER0ytYh0zSMWI4XbaO74zcrIZiSpB3oISku9zIGUwS5WI03Y0ZiHbGAC9GIYziEcRcgzcEYuizlUwNvTWDgNSvrCJHcyPYokMUjLjcwqD2wEEAe7jfIfcJRNl3sW7ODuiN_MA==" name="&lid=DV+-+LIfeisaMasquerade+-+bananaruthy&lpos=hp-s3">LIfe is a Masquerade.</a>
+ </div>
+ <div class="vfacets" style="margin-bottom: 0px;">
+ <a href="/user/bananaruthy" class="dg">bananaruthy</a>
+ </div>
+ </div>
+ <div class="clearL" style="height: 1px;"></div>
+ </div>
+ </div>
+
+
+ <div id="homepage-featured-heading">
+ <div id="homepage-featured-more-top"><a id="hpVideoListMoreLink" href="/browse?s=rf">See More Featured Videos</a></div>
+ <h1 id="hpVideoListHead">Featured Videos</h1>
+ </div>
+
+ <div id="homepage-featured-tabs">
+ <a href="#" id="hpTopFavoritesLink" name="&lid=hpTopFavoritesTab&lpos=hpTabs" onclick="swapVideoList(this); return false;">Top Favorites</a>
+ <a href="#" id="hpMostDiscussedLink" name="&lid=hpMostDiscussedTab&lpos=hpTabs" onclick="swapVideoList(this); return false;">Most Discussed</a>
+ <a href="#" id="hpMostViewedLink" name="&lid=hpMostViewedTab&lpos=hpTabs" onclick="swapVideoList(this); return false;">Most Viewed</a>
+ <a href="#" id="hpFeaturedLink" name="&lid=hpFeaturedTab&lpos=hpTabs" onclick="swapVideoList(this); return false;" class="first hilite">Featured</a>
+ <div class="clear"></div>
+ </div>
+
+
+
+ <div id="homepage-video-list" class="browseListView">
+ <div id="hpFeatured">
+
+
+
+
+ <div class="vlentry" >
+
+ <div class="vlcontainer"><div class="v120WideEntry"><div class="v120WrapperOuter"><div class="v120WrapperInner"><a href="/watch?v=uu-NTSZ27b0"><img src="http://i.ytimg.com/vi/uu-NTSZ27b0/default.jpg" class="vimg120" title="Caribbean PVC Marimba Children's Orchestra" qliconalt="uu-NTSZ27b0" alt="video"></a></div></div> </div>
+
+ <div class="vldescbox">
+ <div class="vltitle">
+ <div class="vlshortTitle">
+ <a href="/watch?v=uu-NTSZ27b0" title="Caribbean PVC Marimba Children's Orchestra" onclick="_hbLink('CaribbeanPVCMarimbaChildrensOrchestra','VidVert');">Caribbean PVC Marimba Children's...</a>
+ </div>
+ <div class="vllongTitle">
+ <a href="/watch?v=uu-NTSZ27b0" title="Caribbean PVC Marimba Children's Orchestra" onclick="_hbLink('CaribbeanPVCMarimbaChildrensOrchestra','VidVert');">Caribbean PVC Marimba Children's Orchestra</a>
+ </div>
+ </div>
+
+ <div class="vldesc">
+
+
+ <span id="BeginvidDescuuNTSZ27b0">
+ Michael Greiner who is a neighbor and good friend of mine asked me to upload several Marim
+ </span>
+
+ <span id="RemainvidDescuuNTSZ27b0" style="display: none">Michael Greiner who is a neighbor and good friend of mine asked me to upload several Marimba videos for him (that's him on the left in the middle row). He currently teaches the music program at Aveson Charter School http://aveson.org/ and constructs musical instruments in classes with students' participation.<br/><br/>Michael Greiner created this set of plastic pipe marimbas. On this clip are three generations of prototypes designed to be low cost for use by childrens' programming. The top one bass version costs around $200 in materials. The mallets are home made using foam flip-flops mounted to sticks. Filmed at Norma Coombs primary school in Altadena CA in 2007.<br/><br/>*** Edited to Add ****<br/>Wow, it looks like this video's hit YouTube's front page. Thank you for all the wonderfully kind and supportive comments!</span>
+ <span id="MorevidDescuuNTSZ27b0" class="smallText">(<a href="#" class="eLink" onclick="showDiv('RemainvidDescuuNTSZ27b0'); hideDiv('MorevidDescuuNTSZ27b0'); hideDiv('BeginvidDescuuNTSZ27b0'); showDiv('LessvidDescuuNTSZ27b0'); return false;">more</a>)</span>
+ <span id="LessvidDescuuNTSZ27b0" style="display: none" class="smallText">(<a href="#" class="eLink" onclick="hideDiv('RemainvidDescuuNTSZ27b0'); hideDiv('LessvidDescuuNTSZ27b0'); showDiv('BeginvidDescuuNTSZ27b0'); showDiv('MorevidDescuuNTSZ27b0'); return false;">less</a>)</span>
+
+
+
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+ </div>
+
+ <div class="vlfacets">
+ <div class="vladded">
+ </div>
+ <div><span class="grayText vlfromlbl">From:</span><span class="vlfrom"><a href="/user/PlayHanghang">PlayHanghang</a></span></div>
+ <div class="clearL"></div>
+ <span class="grayText">Views:</span> 3,853<br/>
+
+ <div class="video-thumb-duration-rating">
+
+
+ <div>
+
+ <img class="ratingVS ratingVS-5.0" alt="4.84814814815" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" />
+
+
+
+ </div>
+
+
+
+ <div class="runtime">01:46</div>
+ </div>
+
+ <div class="clear"></div>
+ <div class="vlcategory">
+ <span class="smgrayText">More in</span> <a href="/results?search_query=None&search_category=24">Entertainment</a>
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+
+ </div> <!-- end vEntry -->
+
+
+
+
+
+
+ <div class="vlentry" >
+
+ <div class="vlcontainer"><div class="v120WideEntry"><div class="v120WrapperOuter"><div class="v120WrapperInner"><a href="/watch?v=CFJRn7akXeQ"><img src="http://i.ytimg.com/vi/CFJRn7akXeQ/default.jpg" class="vimg120" title="&quot;Sharp Teeth&quot; Excerpt #1" qliconalt="CFJRn7akXeQ" alt="video"></a></div></div> </div>
+
+ <div class="vldescbox">
+ <div class="vltitle">
+ <div class="vlshortTitle">
+ <a href="/watch?v=CFJRn7akXeQ" title="&quot;Sharp Teeth&quot; Excerpt #1" onclick="_hbLink('SharpTeethExcerpt1','VidVert');">&quot;Sharp Teeth&quot; Excerpt #1</a>
+ </div>
+ <div class="vllongTitle">
+ <a href="/watch?v=CFJRn7akXeQ" title="&quot;Sharp Teeth&quot; Excerpt #1" onclick="_hbLink('SharpTeethExcerpt1','VidVert');">&quot;Sharp Teeth&quot; Excerpt #1</a>
+ </div>
+ </div>
+
+ <div class="vldesc">
+
+
+ <span id="BeginvidDescCFJRn7akXeQ">
+ Check out the book "Sharp Teeth" on Amazon:<br/>http://www.amazon.com/Sharp-Teeth-Toby-Barlow
+ </span>
+
+ <span id="RemainvidDescCFJRn7akXeQ" style="display: none">Check out the book "Sharp Teeth" on Amazon:<br/>http://www.amazon.com/Sharp-Teeth-Toby-Barlow/dp/0061430226/ ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1212767529&sr=8-1<br/><br/>Animation directed by Limbert Fabian. Produced by Matt Thunell. For more information go to sharpteeththebook.com</span>
+ <span id="MorevidDescCFJRn7akXeQ" class="smallText">(<a href="#" class="eLink" onclick="showDiv('RemainvidDescCFJRn7akXeQ'); hideDiv('MorevidDescCFJRn7akXeQ'); hideDiv('BeginvidDescCFJRn7akXeQ'); showDiv('LessvidDescCFJRn7akXeQ'); return false;">more</a>)</span>
+ <span id="LessvidDescCFJRn7akXeQ" style="display: none" class="smallText">(<a href="#" class="eLink" onclick="hideDiv('RemainvidDescCFJRn7akXeQ'); hideDiv('LessvidDescCFJRn7akXeQ'); showDiv('BeginvidDescCFJRn7akXeQ'); showDiv('MorevidDescCFJRn7akXeQ'); return false;">less</a>)</span>
+
+
+
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+ </div>
+
+ <div class="vlfacets">
+ <div class="vladded">
+ </div>
+ <div><span class="grayText vlfromlbl">From:</span><span class="vlfrom"><a href="/user/tobybarlowny">tobybarlowny</a></span></div>
+ <div class="clearL"></div>
+ <span class="grayText">Views:</span> 67,438<br/>
+
+ <div class="video-thumb-duration-rating">
+
+
+ <div>
+
+ <img class="ratingVS ratingVS-4.5" alt="4.39928057554" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" />
+
+
+
+ </div>
+
+
+
+ <div class="runtime">01:33</div>
+ </div>
+
+ <div class="clear"></div>
+ <div class="vlcategory">
+ <span class="smgrayText">More in</span> <a href="/results?search_query=None&search_category=1">Film & Animation</a>
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+
+ </div> <!-- end vEntry -->
+
+
+
+
+
+
+ <div class="vlentry" >
+
+ <div class="vlcontainer"><div class="v120WideEntry"><div class="v120WrapperOuter"><div class="v120WrapperInner"><a href="/watch?v=sNROaXA6OSI"><img src="http://i.ytimg.com/vi/sNROaXA6OSI/default.jpg" class="vimg120" title="Touring to Alaska on Vegetable Oil!" qliconalt="sNROaXA6OSI" alt="video"></a></div></div> </div>
+
+ <div class="vldescbox">
+ <div class="vltitle">
+ <div class="vlshortTitle">
+ <a href="/watch?v=sNROaXA6OSI" title="Touring to Alaska on Vegetable Oil!" onclick="_hbLink('TouringtoAlaskaonVegetableOil','VidVert');">Touring to Alaska on Vegetable Oil!</a>
+ </div>
+ <div class="vllongTitle">
+ <a href="/watch?v=sNROaXA6OSI" title="Touring to Alaska on Vegetable Oil!" onclick="_hbLink('TouringtoAlaskaonVegetableOil','VidVert');">Touring to Alaska on Vegetable Oil!</a>
+ </div>
+ </div>
+
+ <div class="vldesc">
+
+
+ <span id="BeginvidDescsNROaXA6OSI">
+ This video is for Mrs. Aderman's 1st Period Environmental Science Class.<br/><br/>We are Mose Gi
+ </span>
+
+ <span id="RemainvidDescsNROaXA6OSI" style="display: none">This video is for Mrs. Aderman's 1st Period Environmental Science Class.<br/><br/>We are Mose Giganticus and The Emotron and this year we are touring to Alaska on Vegetable Oil.</span>
+ <span id="MorevidDescsNROaXA6OSI" class="smallText">(<a href="#" class="eLink" onclick="showDiv('RemainvidDescsNROaXA6OSI'); hideDiv('MorevidDescsNROaXA6OSI'); hideDiv('BeginvidDescsNROaXA6OSI'); showDiv('LessvidDescsNROaXA6OSI'); return false;">more</a>)</span>
+ <span id="LessvidDescsNROaXA6OSI" style="display: none" class="smallText">(<a href="#" class="eLink" onclick="hideDiv('RemainvidDescsNROaXA6OSI'); hideDiv('LessvidDescsNROaXA6OSI'); showDiv('BeginvidDescsNROaXA6OSI'); showDiv('MorevidDescsNROaXA6OSI'); return false;">less</a>)</span>
+
+
+
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+ </div>
+
+ <div class="vlfacets">
+ <div class="vladded">
+ </div>
+ <div><span class="grayText vlfromlbl">From:</span><span class="vlfrom"><a href="/user/kylemotron">kylemotron</a></span></div>
+ <div class="clearL"></div>
+ <span class="grayText">Views:</span> 122,748<br/>
+
+ <div class="video-thumb-duration-rating">
+
+
+ <div>
+
+ <img class="ratingVS ratingVS-4.5" alt="4.44329896907" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" />
+
+
+
+ </div>
+
+
+
+ <div class="runtime">04:02</div>
+ </div>
+
+ <div class="clear"></div>
+ <div class="vlcategory">
+ <span class="smgrayText">More in</span> <a href="/results?search_query=None&search_category=27">Education</a>
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+
+ </div> <!-- end vEntry -->
+
+
+
+
+
+
+ <div class="vlentry" >
+
+ <div class="vlcontainer"><div class="v120WideEntry"><div class="v120WrapperOuter"><div class="v120WrapperInner"><a href="/watch?v=6iC3b5JnSIE"><img src="http://i.ytimg.com/vi/6iC3b5JnSIE/default.jpg" class="vimg120" title="JCJC" qliconalt="6iC3b5JnSIE" alt="video"></a></div></div> </div>
+
+ <div class="vldescbox">
+ <div class="vltitle">
+ <div class="vlshortTitle">
+ <a href="/watch?v=6iC3b5JnSIE" title="JCJC" onclick="_hbLink('JCJC','VidVert');">JCJC</a>
+ </div>
+ <div class="vllongTitle">
+ <a href="/watch?v=6iC3b5JnSIE" title="JCJC" onclick="_hbLink('JCJC','VidVert');">JCJC</a>
+ </div>
+ </div>
+
+ <div class="vldesc">
+
+
+ <span id="BeginvidDesc6iC3b5JnSIE">
+ His name is Okotanpe. <br/>His mail addless is fuseloopa@hotmail.com <br/><br/>The name of this son
+ </span>
+
+ <span id="RemainvidDesc6iC3b5JnSIE" style="display: none">His name is Okotanpe. <br/>His mail addless is fuseloopa@hotmail.com <br/><br/>The name of this song is 300ml(milk).<br/>An artist name is Rei harakami. <br/>Check it out!</span>
+ <span id="MorevidDesc6iC3b5JnSIE" class="smallText">(<a href="#" class="eLink" onclick="showDiv('RemainvidDesc6iC3b5JnSIE'); hideDiv('MorevidDesc6iC3b5JnSIE'); hideDiv('BeginvidDesc6iC3b5JnSIE'); showDiv('LessvidDesc6iC3b5JnSIE'); return false;">more</a>)</span>
+ <span id="LessvidDesc6iC3b5JnSIE" style="display: none" class="smallText">(<a href="#" class="eLink" onclick="hideDiv('RemainvidDesc6iC3b5JnSIE'); hideDiv('LessvidDesc6iC3b5JnSIE'); showDiv('BeginvidDesc6iC3b5JnSIE'); showDiv('MorevidDesc6iC3b5JnSIE'); return false;">less</a>)</span>
+
+
+
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+ </div>
+
+ <div class="vlfacets">
+ <div class="vladded">
+ </div>
+ <div><span class="grayText vlfromlbl">From:</span><span class="vlfrom"><a href="/user/YoneyaYu">YoneyaYu</a></span></div>
+ <div class="clearL"></div>
+ <span class="grayText">Views:</span> 532,447<br/>
+
+ <div class="video-thumb-duration-rating">
+
+
+ <div>
+
+ <img class="ratingVS ratingVS-5.0" alt="4.83995523223" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" />
+
+
+
+ </div>
+
+
+
+ <div class="runtime">05:26</div>
+ </div>
+
+ <div class="clear"></div>
+ <div class="vlcategory">
+ <span class="smgrayText">More in</span> <a href="/results?search_query=None&search_category=24">Entertainment</a>
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+
+ </div> <!-- end vEntry -->
+
+
+
+
+
+
+ <div class="vlentry" >
+
+ <div class="vlcontainer"><div class="v120WideEntry"><div class="v120WrapperOuter"><div class="v120WrapperInner"><a href="/watch?v=L9Wu1V1JAHw"><img src="http://i.ytimg.com/vi/L9Wu1V1JAHw/default.jpg" class="vimg120" title="Certainty In Freedom ~ A Song for Burma (Original Song)" qliconalt="L9Wu1V1JAHw" partner="true" alt="video"></a></div></div> </div>
+
+ <div class="vldescbox">
+ <div class="vltitle">
+ <div class="vlshortTitle">
+ <a href="/watch?v=L9Wu1V1JAHw" title="Certainty In Freedom ~ A Song for Burma (Original Song)" onclick="_hbLink('CertaintyInFreedomASongforBurmaOriginalSong','VidVert');">Certainty In Freedom ~ A Song fo...</a>
+ </div>
+ <div class="vllongTitle">
+ <a href="/watch?v=L9Wu1V1JAHw" title="Certainty In Freedom ~ A Song for Burma (Original Song)" onclick="_hbLink('CertaintyInFreedomASongforBurmaOriginalSong','VidVert');">Certainty In Freedom ~ A Song for Burma (Original Song)</a>
+ </div>
+ </div>
+
+ <div class="vldesc">
+
+
+ <span id="BeginvidDescL9Wu1V1JAHw">
+ I'm not a particularly political person, by which I mean I'd sooner just not get involved
+ </span>
+
+ <span id="RemainvidDescL9Wu1V1JAHw" style="display: none">I'm not a particularly political person, by which I mean I'd sooner just not get involved in conflict, but I realise that, at times, things happen outside your control which will you to say something or do something.<br/><br/>I got a comment on my last song from 'gersing' asking me if I'd sing a song for the monks and people of Burma. At first I misunderstood the comment but then it clicked and I felt compelled to offer something.. anything. <br/><br/>I know this song is going to change nothing; and I'm cautious calling it a protest song as I don't understand the situation fully (and I wouldn't want to upset anyone), but this is a tune I wrote in response to being repressed (I'm whatever guise) and how beautiful 'freedom' really is. I don't think anyone will ever understand that term fully but by singing and writing and thinking and speaking we can come somewhere close I'm sure. <br/><br/>As a disclaimer, I'd say that, personally, the chords and melody are arbitrary; merely the carrier of the sentiment...<br/><br/>Changing the subject ever so slightly I just wanted to say a big thank you to everyone that's shown support; it's overwhelming. An apology to anyone I've not yet responded to.. I've never been very good at juggling my time but I will be in touch.<br/><br/>Thanks again...<br/><br/>_________________<br/>Certainty In Freedom<br/><br/>If I had the will to talk<br/>I wonder if you'd give a thought <br/>To what I had to say - help make it go away<br/><br/>Cos there's certainty in freedom<br/>And in that we must believe in<br/>Cos I saw on the news today<br/><br/>If I saw you in the street now<br/>Would I look the other way?<br/>I hope I'm strong enough to say - help make it go away<br/><br/>When all you see is hatred<br/>Spirits crushed and souls deflated<br/>Easy to leave it for another day<br/><br/>Peace is pushing for love<br/>Love is leading the way<br/>You should follow its path<br/>Darkness leads you astray<br/>Peace is pushing for love<br/>Love is leading the way<br/><br/>So this, my only voice to speak<br/>My message strong, my tone is weak<br/>I find it hard to say - help make it go away<br/><br/>And if I come across obtuse<br/>I urge you now to cut the noose<br/>Don't leave it for another day<br/><br/>Peace is pushing for love<br/>Love is leading the way<br/>You should follow its path<br/>Darkness leads you astray<br/>Peace is pushing for love<br/>Love is leading the way<br/><br/>If I had the will to talk<br/>I wonder if you'd give a thought <br/>To what I had to say - help make it go away<br/><br/>Cos there's certainty in freedom<br/>And in that we must believe in<br/>Cos I saw on the news today<br/><br/>Peace is pushing for love<br/>Love is leading the way<br/>You should follow its path<br/>Darkness leads you astray<br/>Peace is pushing for love<br/>Love is leading the way<br/><br/>_____________________<br/>Peace<br/><br/>Available on the 'Unequal Measures', available through http://www.krisrowley.com<br/>© Kris Rowley 2007</span>
+ <span id="MorevidDescL9Wu1V1JAHw" class="smallText">(<a href="#" class="eLink" onclick="showDiv('RemainvidDescL9Wu1V1JAHw'); hideDiv('MorevidDescL9Wu1V1JAHw'); hideDiv('BeginvidDescL9Wu1V1JAHw'); showDiv('LessvidDescL9Wu1V1JAHw'); return false;">more</a>)</span>
+ <span id="LessvidDescL9Wu1V1JAHw" style="display: none" class="smallText">(<a href="#" class="eLink" onclick="hideDiv('RemainvidDescL9Wu1V1JAHw'); hideDiv('LessvidDescL9Wu1V1JAHw'); showDiv('BeginvidDescL9Wu1V1JAHw'); showDiv('MorevidDescL9Wu1V1JAHw'); return false;">less</a>)</span>
+
+
+
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+ </div>
+
+ <div class="vlfacets">
+ <div class="vladded">
+ </div>
+ <div><span class="grayText vlfromlbl">From:</span><span class="vlfrom"><a href="/user/zzzzzzzzap">zzzzzzzzap</a></span></div>
+ <div class="clearL"></div>
+ <span class="grayText">Views:</span> 136,222<br/>
+
+ <div class="video-thumb-duration-rating">
+
+
+ <div>
+
+ <img class="ratingVS ratingVS-4.5" alt="4.65044814341" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" />
+
+
+
+ </div>
+
+
+
+ <div class="runtime">03:55</div>
+ </div>
+
+ <div class="clear"></div>
+ <div class="vlcategory">
+ <span class="smgrayText">More in</span> <a href="/results?search_query=None&search_category=10">Music</a>
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+
+ </div> <!-- end vEntry -->
+
+
+
+
+
+
+ <div class="vlentry" >
+
+ <div class="vlcontainer"><div class="v120WideEntry"><div class="v120WrapperOuter"><div class="v120WrapperInner"><a href="/watch?v=gQNY7Sti8FY"><img src="http://s4.ytimg.com/vi/gQNY7Sti8FY/default.jpg" class="vimg120" title="the world is at your fingertips" qliconalt="gQNY7Sti8FY" partner="true" alt="video"></a></div></div> </div>
+
+ <div class="vldescbox">
+ <div class="vltitle">
+ <div class="vlshortTitle">
+ <a href="/watch?v=gQNY7Sti8FY" title="the world is at your fingertips" onclick="_hbLink('theworldisatyourfingertips','VidVert');">the world is at your fingertips</a>
+ </div>
+ <div class="vllongTitle">
+ <a href="/watch?v=gQNY7Sti8FY" title="the world is at your fingertips" onclick="_hbLink('theworldisatyourfingertips','VidVert');">the world is at your fingertips</a>
+ </div>
+ </div>
+
+ <div class="vldesc">
+
+
+ <span id="BeginvidDescgQNY7Sti8FY">
+ for the taking.
+ </span>
+
+
+
+
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+ </div>
+
+ <div class="vlfacets">
+ <div class="vladded">
+ </div>
+ <div><span class="grayText vlfromlbl">From:</span><span class="vlfrom"><a href="/user/SupaDupaFlyGirl">SupaDupaFlyGirl</a></span></div>
+ <div class="clearL"></div>
+ <span class="grayText">Views:</span> 509,825<br/>
+
+ <div class="video-thumb-duration-rating">
+
+
+ <div>
+
+ <img class="ratingVS ratingVS-4.0" alt="3.91057134971" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" />
+
+
+
+ </div>
+
+
+
+ <div class="runtime">05:15</div>
+ </div>
+
+ <div class="clear"></div>
+ <div class="vlcategory">
+ <span class="smgrayText">More in</span> <a href="/results?search_query=None&search_category=28">Science & Technology</a>
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+
+ </div> <!-- end vEntry -->
+
+
+
+
+
+
+ <div class="vlentry" >
+
+ <div class="vlcontainer"><div class="v120WideEntry"><div class="v120WrapperOuter"><div class="v120WrapperInner"><a href="/watch?v=rGUt7ropzNA"><img src="http://i.ytimg.com/vi/rGUt7ropzNA/default.jpg" class="vimg120" title="Aimee Mann Freeway Video Contest" qliconalt="rGUt7ropzNA" alt="video"></a></div></div> </div>
+
+ <div class="vldescbox">
+ <div class="vltitle">
+ <div class="vlshortTitle">
+ <a href="/watch?v=rGUt7ropzNA" title="Aimee Mann Freeway Video Contest" onclick="_hbLink('AimeeMannFreewayVideoContest','VidVert');">Aimee Mann Freeway Video Contest</a>
+ </div>
+ <div class="vllongTitle">
+ <a href="/watch?v=rGUt7ropzNA" title="Aimee Mann Freeway Video Contest" onclick="_hbLink('AimeeMannFreewayVideoContest','VidVert');">Aimee Mann Freeway Video Contest</a>
+ </div>
+ </div>
+
+ <div class="vldesc">
+
+
+ <span id="BeginvidDescrGUt7ropzNA">
+ Want a chance to sing with Aimee Mann live? Go to http://www.youtube.com/group/aimeemannco
+ </span>
+
+ <span id="RemainvidDescrGUt7ropzNA" style="display: none">Want a chance to sing with Aimee Mann live? Go to http://www.youtube.com/group/aimeemanncontest and upload a video of yourself singing Aimee Mann's new song "Freeway."<br/><br/>Aimee Mann and SuperEgo Records will pick their favorite entry to be featured on YouTube and www.aimeemann.com. The winner will have an opportunity to sing live with Aimee at one of her upcoming shows. Ten runners-up will receive an autographed copy of Aimee's new CD, @#%&*! Smilers.<br/><br/>Entrants can get the lyrics, the instrumental version of "Freeway" and contest details at: http://www.aimeemann.com/freewaycontest/<br/>Submissions must be received by July 7th 2008</span>
+ <span id="MorevidDescrGUt7ropzNA" class="smallText">(<a href="#" class="eLink" onclick="showDiv('RemainvidDescrGUt7ropzNA'); hideDiv('MorevidDescrGUt7ropzNA'); hideDiv('BeginvidDescrGUt7ropzNA'); showDiv('LessvidDescrGUt7ropzNA'); return false;">more</a>)</span>
+ <span id="LessvidDescrGUt7ropzNA" style="display: none" class="smallText">(<a href="#" class="eLink" onclick="hideDiv('RemainvidDescrGUt7ropzNA'); hideDiv('LessvidDescrGUt7ropzNA'); showDiv('BeginvidDescrGUt7ropzNA'); showDiv('MorevidDescrGUt7ropzNA'); return false;">less</a>)</span>
+
+
+
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+ </div>
+
+ <div class="vlfacets">
+ <div class="vladded">
+ </div>
+ <div><span class="grayText vlfromlbl">From:</span><span class="vlfrom"><a href="/user/aimeemann">aimeemann</a></span></div>
+ <div class="clearL"></div>
+ <span class="grayText">Views:</span> 283,776<br/>
+
+ <div class="video-thumb-duration-rating">
+
+
+ <div>
+
+ <img class="ratingVS ratingVS-4.0" alt="3.79036827195" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" />
+
+
+
+ </div>
+
+
+
+ <div class="runtime">02:22</div>
+ </div>
+
+ <div class="clear"></div>
+ <div class="vlcategory">
+ <span class="smgrayText">More in</span> <a href="/results?search_query=None&search_category=10">Music</a>
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+
+ </div> <!-- end vEntry -->
+
+
+
+
+
+
+ <div class="vlentry" >
+
+ <div class="vlcontainer"><div class="v120WideEntry"><div class="v120WrapperOuter"><div class="v120WrapperInner"><a href="/watch?v=tbEei0I3kMQ"><img src="http://i.ytimg.com/vi/tbEei0I3kMQ/default.jpg" class="vimg120" title="Interactive card trick" qliconalt="tbEei0I3kMQ" alt="video"></a></div></div> </div>
+
+ <div class="vldescbox">
+ <div class="vltitle">
+ <div class="vlshortTitle">
+ <a href="/watch?v=tbEei0I3kMQ" title="Interactive card trick" onclick="_hbLink('Interactivecardtrick','VidVert');">Interactive card trick</a>
+ </div>
+ <div class="vllongTitle">
+ <a href="/watch?v=tbEei0I3kMQ" title="Interactive card trick" onclick="_hbLink('Interactivecardtrick','VidVert');">Interactive card trick</a>
+ </div>
+ </div>
+
+ <div class="vldesc">
+
+
+ <span id="BeginvidDesctbEei0I3kMQ">
+ This is the first interactive video on YouTube!<br/>Have fun and enjoy the show<br/>you can see
+ </span>
+
+ <span id="RemainvidDesctbEei0I3kMQ" style="display: none">This is the first interactive video on YouTube!<br/>Have fun and enjoy the show<br/>you can see our magician site:<br/>orenshalom.co.il</span>
+ <span id="MorevidDesctbEei0I3kMQ" class="smallText">(<a href="#" class="eLink" onclick="showDiv('RemainvidDesctbEei0I3kMQ'); hideDiv('MorevidDesctbEei0I3kMQ'); hideDiv('BeginvidDesctbEei0I3kMQ'); showDiv('LessvidDesctbEei0I3kMQ'); return false;">more</a>)</span>
+ <span id="LessvidDesctbEei0I3kMQ" style="display: none" class="smallText">(<a href="#" class="eLink" onclick="hideDiv('RemainvidDesctbEei0I3kMQ'); hideDiv('LessvidDesctbEei0I3kMQ'); showDiv('BeginvidDesctbEei0I3kMQ'); showDiv('MorevidDesctbEei0I3kMQ'); return false;">less</a>)</span>
+
+
+
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+ </div>
+
+ <div class="vlfacets">
+ <div class="vladded">
+ </div>
+ <div><span class="grayText vlfromlbl">From:</span><span class="vlfrom"><a href="/user/werneroi">werneroi</a></span></div>
+ <div class="clearL"></div>
+ <span class="grayText">Views:</span> 3,155,063<br/>
+
+ <div class="video-thumb-duration-rating">
+
+
+ <div>
+
+ <img class="ratingVS ratingVS-3.5" alt="3.41263230956" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" />
+
+
+
+ </div>
+
+
+
+ <div class="runtime">01:10</div>
+ </div>
+
+ <div class="clear"></div>
+ <div class="vlcategory">
+ <span class="smgrayText">More in</span> <a href="/results?search_query=None&search_category=22">People & Blogs</a>
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+
+ </div> <!-- end vEntry -->
+
+
+
+
+
+
+ <div class="vlentry" >
+
+ <div class="vlcontainer"><div class="v120WideEntry"><div class="v120WrapperOuter"><div class="v120WrapperInner"><a href="/watch?v=irDEzQovftM"><img src="http://i.ytimg.com/vi/irDEzQovftM/default.jpg" class="vimg120" title="Biggest drawing in the world" qliconalt="irDEzQovftM" alt="video"></a></div></div> </div>
+
+ <div class="vldescbox">
+ <div class="vltitle">
+ <div class="vlshortTitle">
+ <a href="/watch?v=irDEzQovftM" title="Biggest drawing in the world" onclick="_hbLink('Biggestdrawingintheworld','VidVert');">Biggest drawing in the world</a>
+ </div>
+ <div class="vllongTitle">
+ <a href="/watch?v=irDEzQovftM" title="Biggest drawing in the world" onclick="_hbLink('Biggestdrawingintheworld','VidVert');">Biggest drawing in the world</a>
+ </div>
+ </div>
+
+ <div class="vldesc">
+
+
+ <span id="BeginvidDescirDEzQovftM">
+ making the biggest drawing in the world
+ </span>
+
+
+
+
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+ </div>
+
+ <div class="vlfacets">
+ <div class="vladded">
+ </div>
+ <div><span class="grayText vlfromlbl">From:</span><span class="vlfrom"><a href="/user/erikbjgn">erikbjgn</a></span></div>
+ <div class="clearL"></div>
+ <span class="grayText">Views:</span> 971,773<br/>
+
+ <div class="video-thumb-duration-rating">
+
+
+ <div>
+
+ <img class="ratingVS ratingVS-4.5" alt="4.54770783066" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" />
+
+
+
+ </div>
+
+
+
+ <div class="runtime">04:04</div>
+ </div>
+
+ <div class="clear"></div>
+ <div class="vlcategory">
+ <span class="smgrayText">More in</span> <a href="/results?search_query=None&search_category=1">Film & Animation</a>
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+
+ </div> <!-- end vEntry -->
+
+
+
+
+
+
+ <div class="vlentry" >
+
+ <div class="vlcontainer"><div class="v120WideEntry"><div class="v120WrapperOuter"><div class="v120WrapperInner"><a href="/watch?v=iAKJKBCyPUY"><img src="http://i.ytimg.com/vi/iAKJKBCyPUY/default.jpg" class="vimg120" title="Checkmate" qliconalt="iAKJKBCyPUY" alt="video"></a></div></div> </div>
+
+ <div class="vldescbox">
+ <div class="vltitle">
+ <div class="vlshortTitle">
+ <a href="/watch?v=iAKJKBCyPUY" title="Checkmate" onclick="_hbLink('Checkmate','VidVert');">Checkmate</a>
+ </div>
+ <div class="vllongTitle">
+ <a href="/watch?v=iAKJKBCyPUY" title="Checkmate" onclick="_hbLink('Checkmate','VidVert');">Checkmate</a>
+ </div>
+ </div>
+
+ <div class="vldesc">
+
+
+ <span id="BeginvidDesciAKJKBCyPUY">
+ The Internets Celebrities Dallas Penn and Rafi Kam go in for an investigative report on Ch
+ </span>
+
+ <span id="RemainvidDesciAKJKBCyPUY" style="display: none">The Internets Celebrities Dallas Penn and Rafi Kam go in for an investigative report on Check-Cashing. Themes explored include usury, economic instability, commercial banks and their profit line, and the cycle of poverty. <br/><br/>Oh yeah, it's a comedy.<br/><br/>The video is shot on location in Bushwick and Carroll Gardens in Brooklyn, New York. Also stars special guest Internets Celebrity Ben Popken of Consumerist.com.<br/><br/>Directed by Casimir Nozkowski<br/>Shot by Ian Savage, Josh Weisbrot<br/>Music by El Keter; instrumental from song "The Bottom Line" off Sankofa's album The Tortoise Hustle. Used with full permission.<br/><br/>http://www.internetscelebrities.com</span>
+ <span id="MorevidDesciAKJKBCyPUY" class="smallText">(<a href="#" class="eLink" onclick="showDiv('RemainvidDesciAKJKBCyPUY'); hideDiv('MorevidDesciAKJKBCyPUY'); hideDiv('BeginvidDesciAKJKBCyPUY'); showDiv('LessvidDesciAKJKBCyPUY'); return false;">more</a>)</span>
+ <span id="LessvidDesciAKJKBCyPUY" style="display: none" class="smallText">(<a href="#" class="eLink" onclick="hideDiv('RemainvidDesciAKJKBCyPUY'); hideDiv('LessvidDesciAKJKBCyPUY'); showDiv('BeginvidDesciAKJKBCyPUY'); showDiv('MorevidDesciAKJKBCyPUY'); return false;">less</a>)</span>
+
+
+
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+ </div>
+
+ <div class="vlfacets">
+ <div class="vladded">
+ </div>
+ <div><span class="grayText vlfromlbl">From:</span><span class="vlfrom"><a href="/user/InternetsCelebrities">InternetsCel...</a></span></div>
+ <div class="clearL"></div>
+ <span class="grayText">Views:</span> 412,830<br/>
+
+ <div class="video-thumb-duration-rating">
+
+
+ <div>
+
+ <img class="ratingVS ratingVS-4.5" alt="4.52936962751" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" />
+
+
+
+ </div>
+
+
+
+ <div class="runtime">09:45</div>
+ </div>
+
+ <div class="clear"></div>
+ <div class="vlcategory">
+ <span class="smgrayText">More in</span> <a href="/results?search_query=None&search_category=25">News & Politics</a>
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+
+ </div> <!-- end vEntry -->
+
+
+
+
+
+
+ <div class="vlentry" >
+
+ <div class="vlcontainer"><div class="v120WideEntry"><div class="v120WrapperOuter"><div class="v120WrapperInner"><a href="/watch?v=yLCl0xIg5-0"><img src="http://i.ytimg.com/vi/yLCl0xIg5-0/default.jpg" class="vimg120" title="Stories from the Front lines, Part 1" qliconalt="yLCl0xIg5-0" alt="video"></a></div></div> </div>
+
+ <div class="vldescbox">
+ <div class="vltitle">
+ <div class="vlshortTitle">
+ <a href="/watch?v=yLCl0xIg5-0" title="Stories from the Front lines, Part 1" onclick="_hbLink('StoriesfromtheFrontlinesPart1','VidVert');">Stories from the Front lines, Pa...</a>
+ </div>
+ <div class="vllongTitle">
+ <a href="/watch?v=yLCl0xIg5-0" title="Stories from the Front lines, Part 1" onclick="_hbLink('StoriesfromtheFrontlinesPart1','VidVert');">Stories from the Front lines, Part 1</a>
+ </div>
+ </div>
+
+ <div class="vldesc">
+
+
+ <span id="BeginvidDescyLCl0xIg50">
+ Stories from the men and women of the miltary, stationed in the Al Anbar Province. Right f
+ </span>
+
+ <span id="RemainvidDescyLCl0xIg50" style="display: none">Stories from the men and women of the miltary, stationed in the Al Anbar Province. Right from the mouths of the troops themselves. Part 1 of 4</span>
+ <span id="MorevidDescyLCl0xIg50" class="smallText">(<a href="#" class="eLink" onclick="showDiv('RemainvidDescyLCl0xIg50'); hideDiv('MorevidDescyLCl0xIg50'); hideDiv('BeginvidDescyLCl0xIg50'); showDiv('LessvidDescyLCl0xIg50'); return false;">more</a>)</span>
+ <span id="LessvidDescyLCl0xIg50" style="display: none" class="smallText">(<a href="#" class="eLink" onclick="hideDiv('RemainvidDescyLCl0xIg50'); hideDiv('LessvidDescyLCl0xIg50'); showDiv('BeginvidDescyLCl0xIg50'); showDiv('MorevidDescyLCl0xIg50'); return false;">less</a>)</span>
+
+
+
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+ </div>
+
+ <div class="vlfacets">
+ <div class="vladded">
+ </div>
+ <div><span class="grayText vlfromlbl">From:</span><span class="vlfrom"><a href="/user/3rdID8487">3rdID8487</a></span></div>
+ <div class="clearL"></div>
+ <span class="grayText">Views:</span> 367,189<br/>
+
+ <div class="video-thumb-duration-rating">
+
+
+ <div>
+
+ <img class="ratingVS ratingVS-4.0" alt="4.2188365651" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" />
+
+
+
+ </div>
+
+
+
+ <div class="runtime">10:35</div>
+ </div>
+
+ <div class="clear"></div>
+ <div class="vlcategory">
+ <span class="smgrayText">More in</span> <a href="/results?search_query=None&search_category=25">News & Politics</a>
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+
+ </div> <!-- end vEntry -->
+
+
+
+
+
+
+ <div class="vlentry" >
+
+ <div class="vlcontainer"><div class="v120WideEntry"><div class="v120WrapperOuter"><div class="v120WrapperInner"><a href="/watch?v=rFItE14EeSU"><img src="http://i.ytimg.com/vi/rFItE14EeSU/default.jpg" class="vimg120" title="Amazing video of multiple tornadoes in Northwest Kansas" qliconalt="rFItE14EeSU" partner="true" alt="video"></a></div></div> </div>
+
+ <div class="vldescbox">
+ <div class="vltitle">
+ <div class="vlshortTitle">
+ <a href="/watch?v=rFItE14EeSU" title="Amazing video of multiple tornadoes in Northwest Kansas" onclick="_hbLink('AmazingvideoofmultipletornadoesinNorthwestKansas','VidVert');">Amazing video of multiple tornad...</a>
+ </div>
+ <div class="vllongTitle">
+ <a href="/watch?v=rFItE14EeSU" title="Amazing video of multiple tornadoes in Northwest Kansas" onclick="_hbLink('AmazingvideoofmultipletornadoesinNorthwestKansas','VidVert');">Amazing video of multiple tornadoes in Northwest Kansas</a>
+ </div>
+ </div>
+
+ <div class="vldesc">
+
+
+ <span id="BeginvidDescrFItE14EeSU">
+ Video from TornadoVideos.net Live Stream Unit 3 of several tornadoes from close range.. In
+ </span>
+
+ <span id="RemainvidDescrFItE14EeSU" style="display: none">Video from TornadoVideos.net Live Stream Unit 3 of several tornadoes from close range.. Including one beautiful but strong rope and a large wedge tornado from within 1/2 mile. Check out TornadoVdeos.net for live streaming video, breaking weather news, and more extreme tornado footage.</span>
+ <span id="MorevidDescrFItE14EeSU" class="smallText">(<a href="#" class="eLink" onclick="showDiv('RemainvidDescrFItE14EeSU'); hideDiv('MorevidDescrFItE14EeSU'); hideDiv('BeginvidDescrFItE14EeSU'); showDiv('LessvidDescrFItE14EeSU'); return false;">more</a>)</span>
+ <span id="LessvidDescrFItE14EeSU" style="display: none" class="smallText">(<a href="#" class="eLink" onclick="hideDiv('RemainvidDescrFItE14EeSU'); hideDiv('LessvidDescrFItE14EeSU'); showDiv('BeginvidDescrFItE14EeSU'); showDiv('MorevidDescrFItE14EeSU'); return false;">less</a>)</span>
+
+
+
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+ </div>
+
+ <div class="vlfacets">
+ <div class="vladded">
+ </div>
+ <div><span class="grayText vlfromlbl">From:</span><span class="vlfrom"><a href="/user/TornadoVideosdotnet">TornadoVideo...</a></span></div>
+ <div class="clearL"></div>
+ <span class="grayText">Views:</span> 797,370<br/>
+
+ <div class="video-thumb-duration-rating">
+
+
+ <div>
+
+ <img class="ratingVS ratingVS-4.5" alt="4.28912552436" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" />
+
+
+
+ </div>
+
+
+
+ <div class="runtime">07:10</div>
+ </div>
+
+ <div class="clear"></div>
+ <div class="vlcategory">
+ <span class="smgrayText">More in</span> <a href="/results?search_query=None&search_category=25">News & Politics</a>
+ </div>
+ </div>
+
+ <div class="vlclearaltl"></div>
+
+
+
+ </div> <!-- end vEntry -->
+
+
+ </div>
+ </div> <!-- end Video List -->
+ <div id="homepage-featured-more-bottom">
+ <div class="floatR"><a href="/browse?s=rf">See More Featured Videos</a></div>
+ <div class="clear"></div>
+ </div>
+</div>
+
+
+<div id="homepage-side-content" style="white-space: normal;">
+ <div>
+
+
+
+
+ <!-- Begin ad tag -->
+
+ <input type="hidden" id="pvaHl" value="en"/>
+ <input type="hidden" id="pvaTag" value="http://n4061ad.doubleclick.net/adj/com.ythome/_default;sz=399x299;kl=N;kga=-1;kgg=-1;tile=1;dcopt=ist;"/>
+ <input type="hidden" id="burl" value="http://www.youtube.com/pva/"/>
+ <input type="hidden" id="canv" value="False"/>
+ <div id="myAd_banner" style="visibility:hidden;height:35px;"></div>
+ <div id="myAd_pva">
+
+
+
+
+ <script type="text/javascript">
+ ord=Math.random()*10000000000000000 + 3;
+ if (false) {
+ ord = 1234567890;
+ }
+ document.write('<script language="JavaScript" src="http://n4061ad.doubleclick.net/adj/com.ythome/_default;sz=399x299;kl=N;kga=-1;kgg=-1;tile=1;dcopt=ist;ord=' + ord + '?" type="text/javascript"><\/script>');
+ </script>
+ <noscript><a
+ href="http://n4061ad.doubleclick.net/jump/_default;sz=399x299;ord=123456789?" target="_blank"><img
+ src="http://n4061ad.doubleclick.net/ad/_default;sz=399x299;ord=123456789?" width="399" height="299" border="0" alt=""></a>
+ </noscript>
+
+ </div>
+
+
+ <!-- End ad tag -->
+
+ </div>
+
+ <div class="homepage-content-block">
+ <div class="contentBox">
+ <div>
+ <div class="floatR"><span class="smallText"><b><a href="/signup">Sign Up</a> | <a href="http://help.youtube.com/support/youtube/bin/topic.py?topic=10546&amp;hl=en_US">Help</a></b></div>
+ <div class="floatL">
+ <span class="headerTitle homepage-block-heading-gray"> Login </span>
+ </div>
+ <div class="clear"></div>
+ </div>
+
+ <form method="post" name="loginForm" id="loginForm" action="signup">
+ <input type="hidden" name="action_login" value="1">
+ <table width="270">
+ <tr>
+ <td align="right"><label for="homeUsername"><span class="smallText"><b>Username:</b></span></label></td>
+ <td align="left"><input id="homeUsername" tabindex="101" class="smallText" type="text" size="16" name="username" value=""></td>
+ </tr>
+ <tr>
+ <td align="right"><label for="homePassword"><span class="smallText"><b>Password:</b></span></label></td>
+ <td align="left"><input id="homePassword" tabindex="102" class="smallText" type="password" size="16" name="password">
+ </tr>
+ <tr>
+ <td></td>
+ <td align="left">
+ <span><input type="submit" class="smallText" value="Login"></span>
+ </td>
+ </tr>
+ </table>
+ </form>
+ <div class="padT10 smallText">
+ <p align="center" class="marT0 marB0"><a href="/forgot_username?next=/">Forgot Username</a> | <a href="/forgot?next=/">Forgot Password</a></p>
+ </div>
+ <div class="homepage-border-dotted"></div>
+ <div class="alignC"><span class="smallText"><b><a href="
+https://www.google.com/accounts/ServiceLogin?service=youtube&hl=en_US&continue=http%3A//www.youtube.com/signup%3Fhl%3Den_US&passive=true">Login with your Google account</a>&nbsp; <a href="#" onClick="window.open('/t/help_gaia','login_help','width=580,height=480,resizable=yes,scrollbars=yes,status=0').focus();" rel="nofollow"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" border="0" class="alignMid gaiaHelpBtn" alt=""></a></b></span></div>
+ </div>
+ </div> <!-- end homepage-content-block -->
+
+
+ <div class="homepage-content-block padT10">
+
+
+
+
+ <!-- Begin ad tag -->
+
+
+
+ <script type="text/javascript">
+ ord=Math.random()*10000000000000000 + 6;
+ if (false) {
+ ord = 1234567890;
+ }
+ document.write('<script language="JavaScript" src="http://n4061ad.doubleclick.net/adj/com.ythome/promo1;sz=300x50;kl=N;kga=-1;kgg=-1;tile=2;ord=' + ord + '?" type="text/javascript"><\/script>');
+ </script>
+ <noscript><a
+ href="http://n4061ad.doubleclick.net/jump/promo1;sz=300x50;ord=123456789?" target="_blank"><img
+ src="http://n4061ad.doubleclick.net/ad/promo1;sz=300x50;ord=123456789?" width="300" height="50" border="0" alt=""></a>
+ </noscript>
+
+
+ <!-- End ad tag -->
+
+ </div>
+
+ <div class="homepage-content-block padT10">
+
+
+
+
+ <!-- Begin ad tag -->
+
+
+
+ <script type="text/javascript">
+ ord=Math.random()*10000000000000000 + 6;
+ if (false) {
+ ord = 1234567890;
+ }
+ document.write('<script language="JavaScript" src="http://n4061ad.doubleclick.net/adj/com.ythome/promo3;sz=300x50;kl=N;kga=-1;kgg=-1;tile=4;ord=' + ord + '?" type="text/javascript"><\/script>');
+ </script>
+ <noscript><a
+ href="http://n4061ad.doubleclick.net/jump/promo3;sz=300x50;ord=123456789?" target="_blank"><img
+ src="http://n4061ad.doubleclick.net/ad/promo3;sz=300x50;ord=123456789?" width="300" height="50" border="0" alt=""></a>
+ </noscript>
+
+
+ <!-- End ad tag -->
+
+ </div>
+
+ <div class="homepage-side-block padT10">
+ <div class="homepage-yellow-block">
+ <div class="homepage-block-heading" style="color:#CC6600">What's New</div>
+
+ <div class="homepage-whatsnew-entry">
+ <div class="homepage-whatsnew-image"><a href="/t/annotations_about"><img src="http://s.ytimg.com/yt/img/whats_new/annotation-vfl42087.gif" border="0" width="30" height="37"/></a></div>
+ <div class="homepage-whatsnew-desc">
+ <b><a href="/t/annotations_about">Video Annotations</a></b><br/>Add interactive commentary and links to your videos
+ </div>
+ </div><div class="clear"></div>
+
+ <div class="homepage-whatsnew-entry">
+ <div class="homepage-whatsnew-image"><a href="/address_book"><img src="http://s.ytimg.com/yt/img/whats_new/addybook-vfl39351.gif" border="0" width="30" height="37"/></a></div>
+ <div class="homepage-whatsnew-desc">
+ <b><a href="/address_book">New Address Book</a></b><br/>Organizing your YouTube friends and contacts just got a lot simpler
+ </div>
+ </div><div class="clear"></div>
+
+ <div class="homepage-whatsnew-entry">
+ <div class="homepage-whatsnew-image"><a href="/inbox"><img src="http://s.ytimg.com/yt/img/whats_new/inbox-vfl39351.gif" border="0" width="30" height="37"/></a></div>
+ <div class="homepage-whatsnew-desc">
+ <b><a href="/inbox">Updated Inbox</a></b><br/>Manage your messages and invites with ease
+ </div>
+ </div><div class="clear"></div>
+
+
+ <div class="homepage-whatsnew-entry">
+ <div class="homepage-whatsnew-image"><a href="/mobile"><img src="http://s.ytimg.com/yt/img/whats_new/pic_home_mobile_30x37-vfl37458.gif" border="0" width="30" height="37"/></a></div>
+ <div class="homepage-whatsnew-desc">
+ <b><a href="/mobile">YouTube Mobile</a></b><br/> Watch and upload YouTube videos on your mobile device.
+ </div>
+ </div><div class="clear"></div>
+
+ <div class="bottomBorderDotted"></div>
+ <b><a href="/blog" style="color:#CC6600">Hear Ye, Hear Ye: Calling all Reporters</a></b><br>
+ Today we announce the launch of a new type of YouTube account: the Reporter. Reporter channels are just like the other YouTube channel types, but are specifically intended for citizens and profess...
+ <div class="alignR padT5">
+ <a href="/blog" style="color:#CC6600">Read more in our Blog</a>
+ </div>
+ <div style="font-size: 1px; height: 1px;"><br/></div>
+ </div><img class="homepage-yellow-block-bot" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" />
+</div>
+
+
+ <div class="homepage-side-block">
+
+
+
+
+ <!-- Begin ad tag -->
+
+
+
+ <script type="text/javascript">
+ ord=Math.random()*10000000000000000 + 6;
+ if (false) {
+ ord = 1234567890;
+ }
+ document.write('<script language="JavaScript" src="http://n4061ad.doubleclick.net/adj/com.ythome/promo2;sz=300x50;kl=N;kga=-1;kgg=-1;tile=3;ord=' + ord + '?" type="text/javascript"><\/script>');
+ </script>
+ <noscript><a
+ href="http://n4061ad.doubleclick.net/jump/promo2;sz=300x50;ord=123456789?" target="_blank"><img
+ src="http://n4061ad.doubleclick.net/ad/promo2;sz=300x50;ord=123456789?" width="300" height="50" border="0" alt=""></a>
+ </noscript>
+
+
+ <!-- End ad tag -->
+
+ </div>
+
+
+</div> <!-- end homepage-side-content -->
+
+<div class="clear"></div>
+
+
+
+ <div class="clear"></div>
+ <div id="footer">
+ <div class="search">
+ <div class="promo">
+ <a href="/youchoose" onclick="_hbLink('FooterPromo','Footer');"><img id="debates_footer_img" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" alt="footer-promo" /></a>
+ <a href="/youchoose" onclick="_hbLink('FooterPromo','Footer');">Face The Candidates</a>
+ </div>
+ <form autocomplete="off" name="footer-search-form" method="get" action="/results" style="width: 73.5%;">
+ <a href="http://www.google.com/webmasters/igoogle/youtube.html"><img id="igoogle_footer_img" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" alt=""/> <em id="igoogle_footer_text">Add to iGoogle</em></a>
+ <input type="text" name="search_query" maxlength="128" class="query" onkeyup="goog.i18n.bidi.setDirAttribute(event,this)" value="" id="footer-search-term">
+ <select class="search-type" name="search_type">
+ <option value="">Videos</option>
+ <option value="search_users" >Channels</option>
+ </select>
+ <input type="submit" name="search" value="Search" class="submit-button">
+ </form>
+ </div>
+ <div class="links">
+ <table cellpadding="0" cellspacing="0">
+ <tr>
+ <th colspan="2">Your Account</th>
+ <th class="separator" colspan="2">Help &amp; Info</th>
+ <th class="separator" colspan="2">YouTube</th>
+ </tr>
+ <tr>
+ <td><a href="/my_videos">Videos</a></td>
+ <td><a href="/inbox">Inbox</a></td>
+ <td class="separator"><a href="http://help.youtube.com/support/youtube/bin/static.py?page=start.cs&amp;hl=en_US">Help Resources</a></td>
+ <td><a href="/t/safety">Safety Tips</a></td>
+ <td class="separator"><a href="/t/about">Company Info</a></td>
+ <td><a href="/press_room">Press</a></td>
+ </tr>
+ <tr>
+ <td><a href="/my_favorites">Favorites</a></td>
+ <td><a href="/subscription_center">Subscriptions</a></td>
+ <td class="separator"><a href="/t/video_toolbox">Video Toolbox</a></td>
+ <td><a href="/t/dmca_policy">Copyright Notices</a></td>
+ <td class="separator"><a href="/testtube">TestTube</a></td>
+ <td><a href="/t/contact_us">Contact</a></td>
+ </tr>
+ <tr>
+ <td><a href="/my_playlists">Playlists</a></td>
+ <td><a href="/my_account">more...</a></td>
+ <td class="separator"><a href="/dev">Developer APIs</a></td>
+ <td><a href="/t/community_guidelines">Community Guidelines</a></td>
+ <td class="separator"><a href="/t/terms">Terms of Use</a></td>
+ <td>
+ <a href="/blog">Blog</a>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">&nbsp;</td>
+ <td class="separator"><a href="/advertise">Advertising</a></td>
+ <td><a href="/youtubeonyoursite">YouTube On Your Site</a></td>
+ <td class="separator"><a href="/t/privacy">Privacy Policy</a></td>
+ <td>
+ <a href="http://www.google.com/jobs/youtube">Jobs</a><br/>
+ </td>
+ </tr>
+
+
+
+ </table>
+ </div>
+ </div>
+ <div id="copyright">
+ &copy; 2008 YouTube, LLC
+ </div>
+
+
+</div> <!-- end baseDiv -->
+
+</body>
+<script type="text/javascript">
+ window.setTimeout('window.google.ac.install(document.searchForm,document.searchForm.search_query,"yt",true,"close",true,"Suggestions")',100);
+</script>
+
+
+
+</html> \ No newline at end of file
diff --git a/examples/xml/rsslisting/rsslisting.pro b/examples/xml/rsslisting/rsslisting.pro
index 95a23e9..c0a1ad3 100644
--- a/examples/xml/rsslisting/rsslisting.pro
+++ b/examples/xml/rsslisting/rsslisting.pro
@@ -8,3 +8,5 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS rsslisting.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/xml/rsslisting
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
diff --git a/examples/xml/saxbookmarks/main.cpp b/examples/xml/saxbookmarks/main.cpp
index cfcd38e..4e66da9 100644
--- a/examples/xml/saxbookmarks/main.cpp
+++ b/examples/xml/saxbookmarks/main.cpp
@@ -47,7 +47,11 @@ int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow mainWin;
+#if defined(Q_OS_SYMBIAN)
+ mainWin.showFullScreen();
+#else
mainWin.show();
+#endif
mainWin.open();
return app.exec();
}
diff --git a/examples/xml/saxbookmarks/mainwindow.cpp b/examples/xml/saxbookmarks/mainwindow.cpp
index 03e235f..dbcdd1c 100644
--- a/examples/xml/saxbookmarks/mainwindow.cpp
+++ b/examples/xml/saxbookmarks/mainwindow.cpp
@@ -66,6 +66,9 @@ MainWindow::MainWindow()
void MainWindow::open()
{
+#if defined(Q_OS_SYMBIAN)
+ QDir::setCurrent("/Data/qt/saxbookmarks");
+#endif
QString fileName =
QFileDialog::getOpenFileName(this, tr("Open Bookmark File"),
QDir::currentPath(),
diff --git a/examples/xml/saxbookmarks/saxbookmarks.pro b/examples/xml/saxbookmarks/saxbookmarks.pro
index d0eec44..3556c11 100644
--- a/examples/xml/saxbookmarks/saxbookmarks.pro
+++ b/examples/xml/saxbookmarks/saxbookmarks.pro
@@ -13,8 +13,17 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS saxbookmarks.pro *.xbel
sources.path = $$[QT_INSTALL_EXAMPLES]/xml/saxbookmarks
INSTALLS += target sources
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
wince*: {
addFiles.sources = frank.xbel jennifer.xbel
addFiles.path = \My Documents
DEPLOYMENT += addFiles
}
+
+symbian: {
+ TARGET.UID3 = 0xA000C60A
+ addFiles.sources = frank.xbel jennifer.xbel
+ addFiles.path = /data/qt/saxbookmarks
+ DEPLOYMENT += addFiles
+} \ No newline at end of file
diff --git a/examples/xml/streambookmarks/streambookmarks.pro b/examples/xml/streambookmarks/streambookmarks.pro
index e66b95a..f16a02e 100644
--- a/examples/xml/streambookmarks/streambookmarks.pro
+++ b/examples/xml/streambookmarks/streambookmarks.pro
@@ -12,3 +12,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/xml/streambookmarks
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS streambookmarks.pro *.xbel
sources.path = $$[QT_INSTALL_EXAMPLES]/xml/streambookmarks
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/xml/xml.pro b/examples/xml/xml.pro
index 866b0cc..2b6415c 100644
--- a/examples/xml/xml.pro
+++ b/examples/xml/xml.pro
@@ -1,12 +1,17 @@
TEMPLATE = subdirs
SUBDIRS = dombookmarks \
+ htmlinfo \
rsslisting \
saxbookmarks \
streambookmarks \
xmlstreamlint
+symbian: SUBDIRS = htmlinfo saxbookmarks
+
# install
target.path = $$[QT_INSTALL_EXAMPLES]/xml
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS xml.pro README
sources.path = $$[QT_INSTALL_EXAMPLES]/xml
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/xml/xmlstreamlint/xmlstreamlint.pro b/examples/xml/xmlstreamlint/xmlstreamlint.pro
index 7034e7b..4f97387 100644
--- a/examples/xml/xmlstreamlint/xmlstreamlint.pro
+++ b/examples/xml/xmlstreamlint/xmlstreamlint.pro
@@ -8,3 +8,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/xml/xmlstreamlint
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS xmlstreamlint.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/xml/xmlstreamlint
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/xmlpatterns/filetree/filetree.pro b/examples/xmlpatterns/filetree/filetree.pro
index 469ee8d..e30f2cf 100644
--- a/examples/xmlpatterns/filetree/filetree.pro
+++ b/examples/xmlpatterns/filetree/filetree.pro
@@ -11,3 +11,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/xmlpatterns/filetree
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro *.xq *.html
sources.path = $$[QT_INSTALL_EXAMPLES]/xmlpatterns/filetree
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/xmlpatterns/recipes/recipes.pro b/examples/xmlpatterns/recipes/recipes.pro
index 87708a9..cee7b6d 100644
--- a/examples/xmlpatterns/recipes/recipes.pro
+++ b/examples/xmlpatterns/recipes/recipes.pro
@@ -9,3 +9,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/xmlpatterns/recipes
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.xq *.html forms files
sources.path = $$[QT_INSTALL_EXAMPLES]/xmlpatterns/recipes
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/xmlpatterns/xmlpatterns.pro b/examples/xmlpatterns/xmlpatterns.pro
index 3ff3e35..d5b3498 100644
--- a/examples/xmlpatterns/xmlpatterns.pro
+++ b/examples/xmlpatterns/xmlpatterns.pro
@@ -13,3 +13,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/xmlpatterns
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS xmlpatterns.pro README
sources.path = $$[QT_INSTALL_EXAMPLES]/xmlpatterns
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/xmlpatterns/xquery/globalVariables/globalVariables.pro b/examples/xmlpatterns/xquery/globalVariables/globalVariables.pro
index 8ca900b..0016c41 100644
--- a/examples/xmlpatterns/xquery/globalVariables/globalVariables.pro
+++ b/examples/xmlpatterns/xquery/globalVariables/globalVariables.pro
@@ -7,3 +7,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/xmlpatterns/xquery/globalVariables
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.cpp *.pro *.xq *.html globals.gccxml
sources.path = $$[QT_INSTALL_EXAMPLES]/xmlpatterns/xquery/globalVariables
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/examples/xmlpatterns/xquery/xquery.pro b/examples/xmlpatterns/xquery/xquery.pro
index f7ac5ef..2a91188 100644
--- a/examples/xmlpatterns/xquery/xquery.pro
+++ b/examples/xmlpatterns/xquery/xquery.pro
@@ -6,3 +6,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/xmlpatterns/xquery
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS xquery.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/xmlpatterns/xquery
INSTALLS += target sources
+
+include($$QT_SOURCE_TREE/examples/examplebase.pri)
diff --git a/mkspecs/common/symbian/fixed_stdlib.h b/mkspecs/common/symbian/fixed_stdlib.h
new file mode 100644
index 0000000..f8dc138
--- /dev/null
+++ b/mkspecs/common/symbian/fixed_stdlib.h
@@ -0,0 +1,64 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the makespecs of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef FIXED_STDLIB_H
+#define FIXED_STDLIB_H
+
+// This hack fixes defect in Symbian stdlib.h. The original file
+// does not work correctly when intermixing C and C++ (STL). Remove the hack
+// when Open C / C++ team has fixed the defect.
+
+// If _WCHAR_T_DECLARED is defined, undef it and store information that we
+// need to revert the _WCHAR_T_DECLARED define after include
+# ifdef _WCHAR_T_DECLARED
+# define QT_REVERT_WCHAR_T_DECLARED
+# undef _WCHAR_T_DECLARED
+# endif //_WCHAR_T_DECLARED
+
+#include <stdlib.h>
+
+// Revert _WCHAR_T_DECLARED if necessary
+# ifdef QT_REVERT_WCHAR_T_DECLARED
+# define _WCHAR_T_DECLARED
+# undef QT_REVERT_WCHAR_T_DECLARED
+# endif //QT_REVERT_WCHAR_T_DECLARED
+
+#endif
diff --git a/mkspecs/common/symbian/qplatformdefs.h b/mkspecs/common/symbian/qplatformdefs.h
new file mode 100644
index 0000000..b459cef
--- /dev/null
+++ b/mkspecs/common/symbian/qplatformdefs.h
@@ -0,0 +1,166 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the qmake spec of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QPLATFORMDEFS_H
+#define QPLATFORMDEFS_H
+
+// Get Qt defines/settings
+
+#include "qglobal.h"
+
+// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
+
+// 1) need to reset default environment if _BSD_SOURCE is defined
+// 2) need to specify POSIX thread interfaces explicitly in glibc 2.0
+// 3) it seems older glibc need this to include the X/Open stuff
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE
+#endif
+
+#include <unistd.h>
+
+
+// We are hot - unistd.h should have turned on the specific APIs we requested
+
+//#include <features.h>
+#include <pthread.h>
+#include <dirent.h>
+#include <fcntl.h>
+#include <grp.h>
+#include <pwd.h>
+//#include <signal.h>
+#include <dlfcn.h>
+#include <sys/select.h>
+
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/ipc.h>
+#include <sys/time.h>
+#include <sys/shm.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#include <netinet/in.h>
+#ifndef QT_NO_IPV6IFNAME
+#include <net/if.h>
+#endif
+#include <arpa/inet.h>
+
+#ifdef QT_LARGEFILE_SUPPORT
+#define QT_STATBUF struct stat64
+#define QT_STATBUF4TSTAT struct stat64
+#define QT_STAT ::stat64
+#define QT_FSTAT ::fstat64
+#define QT_LSTAT ::lstat64
+#define QT_OPEN ::open64
+#define QT_TRUNCATE ::truncate64
+#define QT_FTRUNCATE ::ftruncate64
+#define QT_LSEEK ::lseek64
+#else
+#define QT_STATBUF struct stat
+#define QT_STATBUF4TSTAT struct stat
+#define QT_STAT ::stat
+#define QT_FSTAT ::fstat
+#define QT_LSTAT ::lstat
+#define QT_OPEN ::open
+#define QT_TRUNCATE ::truncate
+#define QT_FTRUNCATE ::ftruncate
+#define QT_LSEEK ::lseek
+#endif
+
+#ifdef QT_LARGEFILE_SUPPORT
+#define QT_FOPEN ::fopen64
+#define QT_FSEEK ::fseeko64
+#define QT_FTELL ::ftello64
+#define QT_FGETPOS ::fgetpos64
+#define QT_FSETPOS ::fsetpos64
+#define QT_FPOS_T fpos64_t
+#define QT_OFF_T off64_t
+#else
+#define QT_FOPEN ::fopen
+#define QT_FSEEK ::fseek
+#define QT_FTELL ::ftell
+#define QT_FGETPOS ::fgetpos
+#define QT_FSETPOS ::fsetpos
+#define QT_FPOS_T fpos_t
+#define QT_OFF_T long
+#endif
+
+#define QT_STAT_REG S_IFREG
+#define QT_STAT_DIR S_IFDIR
+#define QT_STAT_MASK S_IFMT
+#define QT_STAT_LNK S_IFLNK
+#define QT_SOCKET_CONNECT ::connect
+#define QT_SOCKET_BIND ::bind
+#define QT_FILENO fileno
+#define QT_CLOSE ::close
+#define QT_READ ::read
+#define QT_WRITE ::write
+#define QT_ACCESS ::access
+#define QT_GETCWD ::getcwd
+#define QT_CHDIR ::chdir
+#define QT_MKDIR ::mkdir
+#define QT_RMDIR ::rmdir
+#define QT_OPEN_RDONLY O_RDONLY
+#define QT_OPEN_WRONLY O_WRONLY
+#define QT_OPEN_RDWR O_RDWR
+#define QT_OPEN_CREAT O_CREAT
+#define QT_OPEN_TRUNC O_TRUNC
+#define QT_OPEN_APPEND O_APPEND
+
+#define QT_SIGNAL_RETTYPE void
+#define QT_SIGNAL_ARGS int
+#define QT_SIGNAL_IGNORE SIG_IGN
+
+#if (defined(__GLIBC__) && (__GLIBC__ >= 2)) || defined(Q_OS_SYMBIAN)
+#define QT_SOCKLEN_T socklen_t
+#else
+#define QT_SOCKLEN_T int
+#endif
+
+
+#if defined(__ISO_C_VISIBLE) && (__ISO_C_VISIBLE >= 1999)
+#define QT_SNPRINTF ::snprintf
+#define QT_VSNPRINTF ::vsnprintf
+#endif
+
+
+#endif // QPLATFORMDEFS_H
diff --git a/mkspecs/common/symbian/stl-off/new b/mkspecs/common/symbian/stl-off/new
new file mode 100644
index 0000000..8584ba3
--- /dev/null
+++ b/mkspecs/common/symbian/stl-off/new
@@ -0,0 +1,5 @@
+// 'new' implemented in symbian libs, so do nothing here; just keep Qt happy
+#ifndef __NEW_SYMB_ADDON
+#define __NEW_SYMB_ADDON
+#include <e32base.h>
+#endif //__NEW_SYMB_ADDON
diff --git a/mkspecs/common/symbian/symbian.conf b/mkspecs/common/symbian/symbian.conf
new file mode 100644
index 0000000..af2be8f
--- /dev/null
+++ b/mkspecs/common/symbian/symbian.conf
@@ -0,0 +1,140 @@
+#
+# qmake configuration for symbian-*
+#
+
+TEMPLATE = app
+CONFIG += qt warn_on release incremental
+QT += core gui
+QMAKE_INCREMENTAL_STYLE = sublib
+
+DEFINES += UNICODE QT_KEYPAD_NAVIGATION
+QMAKE_COMPILER_DEFINES += SYMBIAN
+
+QMAKE_EXT_OBJ = .o
+QMAKE_EXT_RES = _res.o
+
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = byacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS =
+QMAKE_CFLAGS_DEPS =
+QMAKE_CFLAGS_WARN_ON =
+QMAKE_CFLAGS_WARN_OFF =
+QMAKE_CFLAGS_RELEASE =
+QMAKE_CFLAGS_DEBUG =
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS.CW =
+QMAKE_CXXFLAGS.ARMCC = --visibility_inlines_hidden
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+QMAKE_CXXFLAGS_RTTI_ON =
+QMAKE_CXXFLAGS_RTTI_OFF =
+QMAKE_CXXFLAGS_EXCEPTIONS_ON =
+QMAKE_CXXFLAGS_EXCEPTIONS_OFF =
+
+QMAKE_INCDIR =
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+
+QMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH) -o $obj $src
+QMAKE_RUN_CC_IMP = $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
+QMAKE_RUN_CXX = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $obj $src
+QMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
+
+QMAKE_LINK = g++
+QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
+QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads -Wl
+QMAKE_LFLAGS_EXCEPTIONS_OFF =
+QMAKE_LFLAGS_RELEASE = -Wl,-s
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_CONSOLE = -Wl,-subsystem,console
+QMAKE_LFLAGS_WINDOWS = -Wl,-subsystem,windows
+QMAKE_LFLAGS_DLL = -shared
+QMAKE_LINK_OBJECT_MAX = 10
+QMAKE_LINK_OBJECT_SCRIPT= object_script
+
+QMAKE_LIBS = -llibc -llibm -leuser -llibdl
+QMAKE_LIBS_CORE = $$QMAKE_LIBS -llibpthread -lefsrv
+QMAKE_LIBS_GUI = $$QMAKE_LIBS_CORE -lfbscli -lbitgdi -lhal -lgdi -lws32 -lapgrfx -lcone -leikcore -lmediaclientaudio
+QMAKE_LIBS_NETWORK =
+QMAKE_LIBS_EGL = -llibEGL
+QMAKE_LIBS_OPENGL =
+QMAKE_LIBS_OPENVG = -llibOpenVG
+QMAKE_LIBS_COMPAT =
+QMAKE_LIBS_QT_ENTRY = -llibcrt0.lib
+QMAKE_LIBS_S60 = -lavkon -leikcoctl
+
+!isEmpty(QMAKE_SH) {
+ QMAKE_COPY = cp
+ QMAKE_COPY_DIR = cp -r
+ QMAKE_MOVE = mv
+ QMAKE_DEL_FILE = rm -f
+ QMAKE_MKDIR = mkdir
+ QMAKE_DEL_DIR = rmdir
+ QMAKE_CHK_DIR_EXISTS = test -d
+} else {
+ QMAKE_COPY = copy /y
+ QMAKE_COPY_DIR = xcopy /s /q /y /i
+ QMAKE_MOVE = move
+ QMAKE_DEL_FILE = del
+ QMAKE_MKDIR = mkdir
+ QMAKE_DEL_DIR = rmdir
+ QMAKE_CHK_DIR_EXISTS = if not exist
+}
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}moc.exe
+QMAKE_UIC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}uic.exe
+QMAKE_IDC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}idc.exe
+
+QMAKE_IDL = midl
+QMAKE_LIB = ar -ru
+QMAKE_RC = windres
+QMAKE_ZIP = zip -r -9
+
+QMAKE_STRIP = strip
+QMAKE_STRIPFLAGS_LIB += --strip-unneeded
+
+load(qt_config)
+load(platform_paths)
+
+MMP_RULES += EXPORTUNFROZEN PAGED
+SYMBIAN_PLATFORMS = WINSCW GCCE ARMV5 ARMV6
+
+# Legacy support requires some hardcoded stdapis paths.
+INCLUDEPATH = \
+ $$[QT_INSTALL_PREFIX]/mkspecs/common/symbian/stl-off \
+ $$[QT_INSTALL_PREFIX]/mkspecs/common/symbian \
+ $${EPOCROOT}epoc32/include \
+ $$OS_LAYER_LIBC_SYSTEMINCLUDE \
+ $$INCLUDEPATH
+
+# Supports S60 3.0, 3.1, 3.2 and 5.0 by default
+default_deployment.pkg_prerules = \
+ "; Default HW/platform dependencies" \
+ "[0x101F7961],0,0,0,{\"S60ProductID\"}" \
+ "[0x102032BE],0,0,0,{\"S60ProductID\"}" \
+ "[0x102752AE],0,0,0,{\"S60ProductID\"}" \
+ "[0x1028315F],0,0,0,{\"S60ProductID\"}" \
+ " "
+
+DEPLOYMENT += default_deployment
+
+exists($${EPOCROOT}epoc32/release/winscw/udeb/z/system/install/Series60v5.0.sis )|exists($${EPOCROOT}epoc32/data/z/system/install/Series60v5.0.sis) {
+ S60_VERSION = 5.0
+} else {
+ exists($${EPOCROOT}epoc32/release/winscw/udeb/z/system/install/Series60v3.2.sis )|exists($${EPOCROOT}epoc32/data/z/system/install/Series60v3.2.sis) {
+ S60_VERSION = 3.2
+ } else {
+ S60_VERSION = 3.1
+ MMP_RULES -= PAGED
+ }
+}
diff --git a/mkspecs/features/debug_and_release.prf b/mkspecs/features/debug_and_release.prf
index 8b89321..19031ef 100644
--- a/mkspecs/features/debug_and_release.prf
+++ b/mkspecs/features/debug_and_release.prf
@@ -1 +1 @@
-!macx-xcode:addExclusiveBuilds(debug, Debug, release, Release)
+!macx-xcode:!symbian-abld:addExclusiveBuilds(debug, Debug, release, Release)
diff --git a/mkspecs/features/moc.prf b/mkspecs/features/moc.prf
index c5af298..42ce1bc 100644
--- a/mkspecs/features/moc.prf
+++ b/mkspecs/features/moc.prf
@@ -1,7 +1,7 @@
#global defaults
isEmpty(QMAKE_MOC) {
- win32:QMAKE_MOC = $$[QT_INSTALL_BINS]\moc.exe
+ contains(QMAKE_HOST.os,Windows):QMAKE_MOC = $$[QT_INSTALL_BINS]\moc.exe
else:QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
}
isEmpty(MOC_DIR):MOC_DIR = .
@@ -85,7 +85,7 @@ INCREDIBUILD_XGE += moc_source
#make sure we can include these files
moc_dir_short = $$MOC_DIR
-win32:moc_dir_short ~= s,^.:,/,
+contains(QMAKE_HOST.os,Windows):moc_dir_short ~= s,^.:,/,
contains(moc_dir_short, ^[/\\\\].*):INCLUDEPATH += $$MOC_DIR
else:INCLUDEPATH += $$OUT_PWD/$$MOC_DIR
diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf
index a03a313..6de19c3 100644
--- a/mkspecs/features/qt.prf
+++ b/mkspecs/features/qt.prf
@@ -118,6 +118,14 @@ for(QT_CURRENT_VERIFY, $$list($$QT_PLUGIN_VERIFY)) {
DEPLOYMENT *= qt_additional_plugin_$${QTPLUG}
}
+ isEqual(QT_CURRENT_VERIFY, DEPLOYMENT_PLUGIN):shared:symbian: {
+ QT_ITEM = $${QTPLUG}.dll
+
+ eval(qt_additional_plugin_$${QTPLUG}.sources = $${QT_ITEM})
+ eval(qt_additional_plugin_$${QTPLUG}.path = $${QT_PLUGINPATH})
+
+ DEPLOYMENT *= qt_additional_plugin_$${QTPLUG}
+ }
}
}
#specific module settings
diff --git a/mkspecs/features/qttest_p4.prf b/mkspecs/features/qttest_p4.prf
index e9d79b0..4ab5ac2 100644
--- a/mkspecs/features/qttest_p4.prf
+++ b/mkspecs/features/qttest_p4.prf
@@ -3,6 +3,13 @@ CONFIG += qt warn_on console depend_includepath
qtAddLibrary(QtTest)
+symbian:{
+# qt.prf sets TARGET.EPOCSTACKSIZE and TARGET.EPOCHEAPSIZE
+# DEFINES += QTEST_NO_SPECIALIZATIONS
+ TARGET.CAPABILITY="ALL -TCB"
+ RSS_RULES ="group_name=\"QtTests\";"
+}
+
# prefix test binary with tst_
!contains(TARGET, ^tst_.*):TARGET = $$join(TARGET,,"tst_")
diff --git a/mkspecs/features/symbian/application_icon.prf b/mkspecs/features/symbian/application_icon.prf
new file mode 100644
index 0000000..97b99a5
--- /dev/null
+++ b/mkspecs/features/symbian/application_icon.prf
@@ -0,0 +1,39 @@
+load(data_caging_paths)
+
+# If no_icon keyword exist, the S60 UI app is just made hidden. This because S60 app FW
+# requires the registration resource file to exist always
+contains( CONFIG, no_icon ) {
+ symbian:RSS_RULES ="hidden = KAppIsHidden;"
+ CONFIG -= no_icon
+} else {
+# There is no sense to compile MIF icon is no_icon CONFIGS is set
+ !isEmpty(ICON) {
+
+ !count(ICON, $$size(TRANSLATIONS)):!count(ICON, 1) {
+ message("ICON keyword must have one or the same amout of items as in TRANSLATIONS keyword")
+ }
+
+ # MIF files will have UID in their names, if TARGET.UID3 is not set, remind the user
+ isEmpty(TARGET.UID3):error("TARGET.UID3 must be explicitly defined for ICON generation")
+
+ # Note: symbian-sbsv2 builds can't utilize extra compiler for mifconv, so ICON handling is done in code
+ symbian-abld {
+ #Makefile: requires paths with backslash
+ ICON = $$replace( ICON, /, \\)
+
+ # Extra compiler rules for mifconv
+ mifconv.output = ${ZDIR}$$APP_RESOURCE_DIR/$${TARGET.UID3}.mif
+ # Based on: http://www.forum.nokia.com/document/Cpp_Developers_Library
+ # svg-t icons should always use /c32 depth
+ mifconv.commands = mifconv ${QMAKE_FILE_OUT} $$join(ICON, " /c32 ", "/c32 ",)
+ mifconv.input = ICON
+ mifconv.CONFIG = no_link combine
+ # target_predeps together with combine seems not to work correctly, lets define it by ourselves
+ PRE_TARGETDEPS += $$mifconv.output
+ QMAKE_EXTRA_COMPILERS += mifconv
+ }
+ # Rules to use generated MIF file from symbian resources
+ RSS_RULES.number_of_icons = $$size(ICON)
+ RSS_RULES.icon_file = $$replace( APP_RESOURCE_DIR, /, \\\\ )\\\\$${TARGET.UID3}.mif
+ }
+} \ No newline at end of file
diff --git a/mkspecs/features/symbian/armcc_warnings.prf b/mkspecs/features/symbian/armcc_warnings.prf
new file mode 100644
index 0000000..95b3bc0
--- /dev/null
+++ b/mkspecs/features/symbian/armcc_warnings.prf
@@ -0,0 +1,10 @@
+# 111: Statement is unreachable
+# 185: Dynamic initialization in unreachable code
+# 191: Type qualifier is meaningless on cast type
+# 368: class "<class>" defines no constructor to initialize the following: <member>
+# (Disabled because there are other ways of assigning besides constructors)
+# 1293: Assignment in condition
+# 1294: pre-ANSI C style functions declarations (used a lot in 3rd party code)
+# 2874: <variable> may be used before being set (this one sounds useful, but
+# it's output also for class instances, making it useless in practice)
+QMAKE_CFLAGS.ARMCC += --diag_suppress 111,185,191,368,1293,1294,2874
diff --git a/mkspecs/features/symbian/data_caging_paths.prf b/mkspecs/features/symbian/data_caging_paths.prf
new file mode 100644
index 0000000..3ed5661
--- /dev/null
+++ b/mkspecs/features/symbian/data_caging_paths.prf
@@ -0,0 +1,80 @@
+#
+# ==============================================================================
+# Name : data_caging_paths.prf
+# Part of :
+# Interface : Data Caging Path Definitions API for Qt/S60
+# Description : Predefined include paths to be used in the pro-files for the
+# paths related to data caging.
+#
+# Usage examples:
+#
+# # Load these definitions on pro-file if needed:
+# load(data_caging_paths)
+#
+# # These variables are mostly useful when specifying deployment
+#
+# myLib.sources = myLib.dll
+# myLib.path = $$SHARED_LIB_DIR
+# DEPLOYMENT += myLib
+#
+# # Note: Do not use $$PLUGINS_DIR or $$PLUGINS_1_DIR to deploy Qt plugins.
+# # $$QT_PUBLIC_PLUGINS_BASE specifies the public base directory for Qt
+# # plugin stubs:
+#
+# myPublicImageFormatPlugin.sources = myImageFormat.dll
+# myPublicImageFormatPlugin.path = $$QT_PLUGINS_BASE_DIR/imageformats
+# DEPLOYMENT += myPublicImageFormatPlugin
+#
+# ==============================================================================
+
+exists($${EPOCROOT}epoc32/include/data_caging_paths.prf) {
+
+ # Load platform specific paths
+ load($${EPOCROOT}epoc32/include/data_caging_paths.prf)
+
+} else {
+ # No platform specific paths provided, use default paths
+
+ APPARC_RECOGNISER_RESOURCES_DIR = /resource/apps/registrationresourcefiles
+ APP_BITMAP_DIR = /resource/apps
+ APP_RESOURCE_DIR = /resource/apps
+ BITMAP_DIR = /resource/apps
+ BIOFILE_DIR = /resource/messaging/bif
+ CHARCONV_PLUGIN_DIR = /resource/charconv
+ CONTACTS_RESOURCE_DIR = /resource/cntmodel
+ CTRL_PANEL_RESOURCE_DIR = /resource/controls
+ CONVERTER_PLUGIN_RESOURCE_DIR = /resource/convert
+ ECOM_RESOURCE_DIR = /resource/plugins
+ ERROR_RESOURCE_DIR = /resource/errors
+ PROGRAMS_DIR = /sys/bin
+ FEP_RESOURCES_DIR = /resource/fep
+ HELP_FILE_DIR = /resource/help
+ LOG_ENGINE_RESOURCE_DIR = /resource/logengine
+ MTM_RESOURCE_DIR = /resource/messaging
+ MTM_INFO_FILE_DIR = /resource/messaging/mtm
+ PRINTER_DRIVER_DIR = /resource/printers
+ SHARED_LIB_DIR = /sys/bin
+ UIKLAF_RESOURCE_DIR = /resource/uiklaf
+ WAPPUSH_PLUGIN_RESOURCE_DIR = /resource/messaging/wappush
+ WATCHER_PLUGIN_RESOURCE_DIR = /resource/messaging/watchers
+ RECOGNISERS_DIR = /sys/bin
+ PARSERS_DIR = /sys/bin
+ NOTIFIERS_DIR = /sys/bin
+ PLUGINS_DIR = /sys/bin
+ PLUGINS_1_DIR = /sys/bin
+ RESOURCE_FILES_DIR = /resource
+
+ CA_CERTIFICATES_DIR = /private/101f72a6
+ COMMDB_DIR = /private/100012a5
+ SS_CONFIG_FILE_DIR = /private/101f7989/esock
+ TRUSTED_FONTS_DIR = /private/10003a16/fonts
+ UNTRUSTED_FONT_DIR = /private/10003a16/import/fonts
+ WINDOW_SERVER_INI_DIR = /private/10003b20
+ SKINS_DIR = /private/10207114
+ BOOTDATA_DIR = /resource/bootdata
+}
+
+isEmpty(QT_PLUGINS_BASE_DIR): QT_PLUGINS_BASE_DIR = /$$RESOURCE_FILES_DIR/qt/plugins
+isEmpty(HW_ZDIR): HW_ZDIR = epoc32/data/z
+isEmpty(REG_RESOURCE_DIR): REG_RESOURCE_DIR = /private/10003a3f/apps
+isEmpty(REG_RESOURCE_IMPORT_DIR): REG_RESOURCE_IMPORT_DIR = /private/10003a3f/import/apps \ No newline at end of file
diff --git a/mkspecs/features/symbian/default_post.prf b/mkspecs/features/symbian/default_post.prf
new file mode 100644
index 0000000..3c2944c
--- /dev/null
+++ b/mkspecs/features/symbian/default_post.prf
@@ -0,0 +1,31 @@
+load(default_post)
+
+contains(TEMPLATE, ".*app") {
+ contains(CONFIG, stdbinary) {
+ QMAKE_LIBS +=
+ } else:contains(QT, gui):contains(CONFIG,qt) {
+ S60MAIN_LIBS = -leuser -lavkon -leikcore -leiksrv -lws32 -lapparc -lcone -leikcoctl -lbafl -lefsrv
+ QMAKE_LIBS += -lqtmain.lib $$S60MAIN_LIBS
+ } else {
+ QMAKE_LIBS += $$QMAKE_LIBS_QT_ENTRY
+ }
+}
+contains(TEMPLATE, lib): {
+ contains(CONFIG, staticlib)|contains(CONFIG, static): {
+ # Static libs should not have LIBRARY statements in S60
+ QMAKE_LIBS =
+ # Static libs do not need def files
+ MMP_RULES -= EXPORTUNFROZEN
+ }
+ contains(CONFIG, plugin):!contains(CONFIG, stdbinary): {
+ # Plugins based on normal libraries have predefined def file
+ MMP_RULES -= EXPORTUNFROZEN
+ }
+} else {
+ # Applications don't need this
+ MMP_RULES -= EXPORTUNFROZEN
+}
+
+contains(TEMPLATE, ".*app"):contains(QT, gui):contains(CONFIG,qt) {
+ load(application_icon.prf)
+} \ No newline at end of file
diff --git a/mkspecs/features/symbian/default_pre.prf b/mkspecs/features/symbian/default_pre.prf
new file mode 100644
index 0000000..ddb23b3
--- /dev/null
+++ b/mkspecs/features/symbian/default_pre.prf
@@ -0,0 +1,2 @@
+CONFIG = stl_off $$CONFIG
+load(default_pre)
diff --git a/mkspecs/features/symbian/epocallowdlldata.prf b/mkspecs/features/symbian/epocallowdlldata.prf
new file mode 100644
index 0000000..b336f48
--- /dev/null
+++ b/mkspecs/features/symbian/epocallowdlldata.prf
@@ -0,0 +1 @@
+TARGET.EPOCALLOWDLLDATA=1
diff --git a/mkspecs/features/symbian/moc.prf b/mkspecs/features/symbian/moc.prf
new file mode 100644
index 0000000..089dddc
--- /dev/null
+++ b/mkspecs/features/symbian/moc.prf
@@ -0,0 +1,16 @@
+load(moc)
+
+RET = $$find(MOC_DIR, "\.[a-z]")
+!isEmpty(RET):{
+ error("Symbian does not support directories starting with a dot. Please set MOC_DIR to a different value in your profile.")
+}
+
+RET = $$find(RCC_DIR, "\.[a-z]")
+!isEmpty(RET):{
+ error("Symbian does not support directories starting with a dot. Please set RCC_DIR to a different value in your profile.")
+}
+
+RET = $$find(OBJECTS_DIR, "\.[a-z]")
+!isEmpty(RET):{
+ error("Symbian does not support directories starting with a dot. Please set OBJECTS_DIR to a different value in your profile.")
+}
diff --git a/mkspecs/features/symbian/platform_paths.prf b/mkspecs/features/symbian/platform_paths.prf
new file mode 100644
index 0000000..bec9811
--- /dev/null
+++ b/mkspecs/features/symbian/platform_paths.prf
@@ -0,0 +1,480 @@
+#
+# ==============================================================================
+# Name : platform_paths.prf
+# Part of :
+# Interface : Platform Path Definitions API for Qt/S60
+# Description : Predefined include paths to be used in the pro-files for the
+# components in the layered model. There is one definition for
+# each layer. The pro-file should use the statement that is
+# intended for the same layer as where the pro-file resides.
+#
+# Usage examples:
+#
+# Note: this file gets automatically added to all Qt/S60 projects
+#
+# Variable usages to add the system include paths
+#
+# The include paths has to be related to the layer in which your SW
+# resides. Thus as an example: a component residing in middleware
+# layer should use the MW specific macro.
+#
+# INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+# INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+# INCLUDEPATH += $$OS_LAYER_SYSTEMINCLUDE
+#
+# If there is a need to include public headers of some S60 component,
+# various *_EXPORT_PATH macros can be utilized:
+#
+# INCLUDEPATH += $$OS_LAYER_PUBLIC_EXPORT_PATH(somecomponent)
+#
+# Variables related to using various parts of stdapis:
+#
+# To use STLLIB you need to have this in your pro-file:
+#
+# QMAKE_CXXFLAGS.CW *= $$STLLIB_USAGE_CW_FLAGS
+# DEFINES *= $$STLLIB_USAGE_DEFINES
+#
+# Depending on what module you are using from stdapis you need to have
+# one or more of the following variables in your pro-file.
+#
+# INCLUDEPATH += $$OS_LAYER_LIBC_SYSTEMINCLUDE
+# INCLUDEPATH += $$OS_LAYER_GLIB_SYSTEMINCLUDE
+# INCLUDEPATH += $$OS_LAYER_SSL_SYSTEMINCLUDE
+# INCLUDEPATH += $$OS_LAYER_STDCPP_SYSTEMINCLUDE
+# INCLUDEPATH += $$OS_LAYER_BOOST_SYSTEMINCLUDE
+# INCLUDEPATH += $$OS_LAYER_DBUS_SYSTEMINCLUDE
+# INCLUDEPATH += $$OS_LAYER_LIBUTILITY_SYSTEMINCLUDE
+#
+#
+#
+#
+# ==============================================================================
+
+exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
+
+ # Load platform specific paths
+ load($${EPOCROOT}epoc32/include/platform_paths.prf)
+
+} else {
+
+ # No platform specific paths provided, use default paths
+
+ exists($${EPOCROOT}epoc32/include/platform) { # New SF structure
+
+ # ---------------------------------------
+ # Location, where the applications layer specific public headers are exported
+ # ---------------------------------------
+
+ defineReplace(APP_LAYER_SDK_EXPORT_PATH) {
+ return (/epoc32/include/app/$$1)
+ }
+ defineReplace(APP_LAYER_PUBLIC_EXPORT_PATH) {
+ return (/epoc32/include/app/$$1)
+ }
+
+ # ---------------------------------------
+ # Location, where the applications layer specific platform headers are exported
+ # ---------------------------------------
+
+ defineReplace(APP_LAYER_DOMAIN_EXPORT_PATH) {
+ return (/epoc32/include/platform/app/$$1)
+ }
+ defineReplace(APP_LAYER_PLATFORM_EXPORT_PATH) {
+ return (/epoc32/include/platform/app/$$1)
+ }
+
+ # ---------------------------------------
+ # Location, where the middleware layer specific public headers are exported
+ # ---------------------------------------
+
+ defineReplace(MW_LAYER_SDK_EXPORT_PATH) {
+ return (/epoc32/include/mw/$$1)
+ }
+ defineReplace(MW_LAYER_PUBLIC_EXPORT_PATH) {
+ return (/epoc32/include/mw/$$1)
+ }
+
+ # ---------------------------------------
+ # Location, where the middleware layer specific platform headers are exported
+ # ---------------------------------------
+
+ defineReplace(MW_LAYER_DOMAIN_EXPORT_PATH) {
+ return (/epoc32/include/platform/mw/$$1)
+ }
+ defineReplace(MW_LAYER_PLATFORM_EXPORT_PATH) {
+ return (/epoc32/include/platform/mw/$$1)
+ }
+
+ # ---------------------------------------
+ # Location, where the os layer specific public headers are exported
+ # ---------------------------------------
+
+ defineReplace(OSEXT_LAYER_SDK_EXPORT_PATH) {
+ return (/epoc32/include/$$1)
+ }
+ # WARNING: If the following path changes see the exists() function around line 219
+ defineReplace(OS_LAYER_PUBLIC_EXPORT_PATH) {
+ return (/epoc32/include/$$1)
+ }
+
+ # ---------------------------------------
+ # Location, where the os specific platform headers are exported
+ # ---------------------------------------
+
+ defineReplace(OSEXT_LAYER_DOMAIN_EXPORT_PATH) {
+ return (/epoc32/include/platform/$$1)
+ }
+ defineReplace(OS_LAYER_PLATFORM_EXPORT_PATH) {
+ return (/epoc32/include/platform/$$1)
+ }
+
+ # ---------------------------------------
+ # General comments about the 3 define statements related to include paths:
+ # 1) the /epoc32/include/oem is now defined there for backward compability.
+ # Once the directory is empty, the directory will be removed. However this
+ # enables us to ensure that if you use these define statements => you do
+ # not have to remove the statements later on, when the directory no longer
+ # exists.
+ # 2) These statements should be enough in normal cases. For certain specific
+ # cases you might need to add some specific directory from /epoc32/include
+ # (for instance /epoc32/include/ecom).
+ # In normal cases the include staments in code should be relative to one of
+ # the system include paths, but in certain cases, the included files requires
+ # that the subdirectory is also part of the system include paths.
+ # ---------------------------------------
+
+ # This variable defines the include paths, which are intended to be
+ # used in the pro-files that are part of the applications-layer. It includes all
+ # the needed directories from the /epoc32/include, that are valid ones for the
+ # application-layer components.
+ #
+ # Applications layer is the last one in the list, since most likely the most of
+ # the headers come from middleware or os-layer => thus they are first.
+
+ APP_LAYER_SYSTEMINCLUDE = \
+ /epoc32/include \
+ /epoc32/include/mw \
+ /epoc32/include/platform/mw \
+ /epoc32/include/platform \
+ /epoc32/include/app \
+ /epoc32/include/platform/app \
+ /epoc32/include/platform/loc \
+ /epoc32/include/platform/mw/loc \
+ /epoc32/include/platform/app/loc \
+ /epoc32/include/platform/loc/sc \
+ /epoc32/include/platform/mw/loc/sc \
+ /epoc32/include/platform/app/loc/sc
+
+ # This define statements defines the include paths, which are intended to be
+ # used in the pro-files that are part of the middleware-layer. It includes all
+ # the needed directories from the /epoc32/include, that are valid ones for the
+ # middleware-layer components.
+
+ MW_LAYER_SYSTEMINCLUDE = \
+ /epoc32/include \
+ /epoc32/include/mw \
+ /epoc32/include/platform/mw \
+ /epoc32/include/platform \
+ /epoc32/include/platform/loc \
+ /epoc32/include/platform/mw/loc \
+ /epoc32/include/platform/loc/sc \
+ /epoc32/include/platform/mw/loc/sc
+
+ # This define statements defines the include paths, which are intended to be
+ # used in the pro-files that are part of the osextensions-layer. It includes all
+ # the needed directories from the /epoc32/include, that are valid ones for the
+ # os-layer components.
+
+ OS_LAYER_SYSTEMINCLUDE = \
+ /epoc32/include \
+ /epoc32/include/platform \
+ /epoc32/include/platform/loc \
+ /epoc32/include/platform/loc/sc
+
+ # This define statements defines the include paths, which are intended to be
+ # used in the pro-files that are part of the os-layer. This is intended
+ # to be only used by those components which need to use in their mmp-file either
+ # kern_ext.mmh or nkern_ext.mmh. Reason is that those
+ # 2 files already contain the /epoc32/include as system include path.
+
+ OS_LAYER_KERNEL_SYSTEMINCLUDE = \
+ /epoc32/include/platform
+
+
+ # ---------------------------------------
+ # Definitions that also define the systeminclude paths for various
+ # part of stdapis. Append to INCLUDEPATH in pro-file.
+ # ---------------------------------------
+
+ OS_LAYER_LIBC_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis) \
+ $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/sys)
+
+ OS_LAYER_GLIB_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0) \
+ $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/glib) \
+ $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/gObject)
+
+ OS_LAYER_SSL_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/openssl)
+
+ # stlportv5 is preferred over stlport as it has the throwing version of operator new
+ exists($${EPOCROOT}epoc32/include/stdapis/stlportv5) {
+ OS_LAYER_STDCPP_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlportv5)
+ } else {
+ OS_LAYER_STDCPP_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlport)
+ }
+
+ OS_LAYER_BOOST_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/boost)
+
+ OS_LAYER_DBUS_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0) \
+ $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0/dbus)
+
+ OS_LAYER_LIBUTILITY_SYSTEMINCLUDE = $$OS_LAYER_PLATFORM_EXPORT_PATH(stdapis/utility)
+
+ # ---------------------------------------
+ # Definitions to export IBY files to different folders where they will be taken
+ # to ROM image
+ # ---------------------------------------
+
+ defineReplace(CORE_APP_LAYER_IBY_EXPORT_PATH) {
+ return(/epoc32/rom/include/core/app/$$1)
+ }
+ defineReplace(CORE_MW_LAYER_IBY_EXPORT_PATH) {
+ return(/epoc32/rom/include/core/mw/$$1)
+ }
+ defineReplace(CORE_OSEXT_LAYER_IBY_EXPORT_PATH) {
+ return(/epoc32/rom/include/core/os/$$1)
+ }
+ defineReplace(CORE_OS_LAYER_IBY_EXPORT_PATH) {
+ return(/epoc32/rom/include/core/os/$$1)
+ }
+ defineReplace(CORE_ADAPT_LAYER_IBY_EXPORT_PATH) {
+ return(/epoc32/rom/include/$$1)
+ }
+
+ # You need to define the following in pro-file, if you are using the stllib:
+ # QMAKE_CXXFLAGS.CW *= $$STLLIB_USAGE_CW_FLAGS
+ # DEFINES *= $$STLLIB_USAGE_DEFINES
+ STLLIB_USAGE_CW_FLAGS = "-wchar_t on"
+ STLLIB_USAGE_DEFINES = _WCHAR_T_DECLARED
+
+ } else { # Old pre-SF structure
+
+ # ---------------------------------------
+ # Location, where the applications layer specific public headers are exported
+ # ---------------------------------------
+
+ defineReplace(APP_LAYER_SDK_EXPORT_PATH) {
+ return (/epoc32/include/applications/$$1)
+ }
+ defineReplace(APP_LAYER_PUBLIC_EXPORT_PATH) {
+ return (/epoc32/include/applications/$$1)
+ }
+
+ # ---------------------------------------
+ # Location, where the applications layer specific platform headers are exported
+ # ---------------------------------------
+
+ defineReplace(APP_LAYER_DOMAIN_EXPORT_PATH) {
+ return (/epoc32/include/domain/applications/$$1)
+ }
+ defineReplace(APP_LAYER_PLATFORM_EXPORT_PATH) {
+ return (/epoc32/include/domain/applications/$$1)
+ }
+
+ # ---------------------------------------
+ # Location, where the middleware layer specific public headers are exported
+ # ---------------------------------------
+
+ defineReplace(MW_LAYER_SDK_EXPORT_PATH) {
+ return (/epoc32/include/middleware/$$1)
+ }
+ defineReplace(MW_LAYER_PUBLIC_EXPORT_PATH) {
+ return (/epoc32/include/middleware/$$1)
+ }
+
+ # ---------------------------------------
+ # Location, where the middleware layer specific platform headers are exported
+ # ---------------------------------------
+
+ defineReplace(MW_LAYER_DOMAIN_EXPORT_PATH) {
+ return (/epoc32/include/domain/middleware/$$1)
+ }
+ defineReplace(MW_LAYER_PLATFORM_EXPORT_PATH) {
+ return (/epoc32/include/domain/middleware/$$1)
+ }
+
+ # ---------------------------------------
+ # Location, where the os layer specific public headers are exported
+ # ---------------------------------------
+
+ defineReplace(OSEXT_LAYER_SDK_EXPORT_PATH) {
+ return (/epoc32/include/osextensions/$$1)
+ }
+ # WARNING: If the following path changes see the exists() function around line 430
+ defineReplace(OS_LAYER_PUBLIC_EXPORT_PATH) {
+ return (/epoc32/include/osextensions/$$1)
+ }
+
+ # ---------------------------------------
+ # Location, where the os specific platform headers are exported
+ # ---------------------------------------
+
+ defineReplace(OSEXT_LAYER_DOMAIN_EXPORT_PATH) {
+ return (/epoc32/include/domain/osextensions/$$1)
+ }
+ defineReplace(OS_LAYER_PLATFORM_EXPORT_PATH) {
+ return (/epoc32/include/domain/osextensions/$$1)
+ }
+
+ # ---------------------------------------
+ # General comments about the 3 define statements related to include paths:
+ # 1) the /epoc32/include/oem is now defined there for backward compability.
+ # Once the directory is empty, the directory will be removed. However this
+ # enables us to ensure that if you use these define statements => you do
+ # not have to remove the statements later on, when the directory no longer
+ # exists.
+ # 2) These statements should be enough in normal cases. For certain specific
+ # cases you might need to add some specific directory from /epoc32/include
+ # (for instance /epoc32/include/ecom).
+ # In normal cases the include staments in code should be relative to one of
+ # the system include paths, but in certain cases, the included files requires
+ # that the subdirectory is also part of the system include paths.
+ # ---------------------------------------
+
+ # This variable defines the include paths, which are intended to be
+ # used in the pro-files that are part of the applications-layer. It includes all
+ # the needed directories from the /epoc32/include, that are valid ones for the
+ # application-layer components.
+ #
+ # Applications layer is the last one in the list, since most likely the most of
+ # the headers come from middleware or os-layer => thus they are first.
+
+ APP_LAYER_SYSTEMINCLUDE = \
+ /epoc32/include \
+ /epoc32/include/oem \
+ /epoc32/include/middleware \
+ /epoc32/include/domain/middleware \
+ /epoc32/include/osextensions \
+ /epoc32/include/domain/osextensions \
+ /epoc32/include/applications \
+ /epoc32/include/domain/applications \
+ /epoc32/include/domain/osextensions/loc \
+ /epoc32/include/domain/middleware/loc \
+ /epoc32/include/domain/applications/loc \
+ /epoc32/include/domain/osextensions/loc/sc \
+ /epoc32/include/domain/middleware/loc/sc \
+ /epoc32/include/domain/applications/loc/sc
+
+ # This define statements defines the include paths, which are intended to be
+ # used in the pro-files that are part of the middleware-layer. It includes all
+ # the needed directories from the /epoc32/include, that are valid ones for the
+ # middleware-layer components.
+
+ MW_LAYER_SYSTEMINCLUDE = \
+ /epoc32/include \
+ /epoc32/include/oem \
+ /epoc32/include/middleware \
+ /epoc32/include/domain/middleware \
+ /epoc32/include/osextensions \
+ /epoc32/include/domain/osextensions \
+ /epoc32/include/domain/osextensions/loc \
+ /epoc32/include/domain/middleware/loc \
+ /epoc32/include/domain/osextensions/loc/sc \
+ /epoc32/include/domain/middleware/loc/sc
+
+ # This define statements defines the include paths, which are intended to be
+ # used in the pro-files that are part of the osextensions-layer. It includes all
+ # the needed directories from the /epoc32/include, that are valid ones for the
+ # os-layer components.
+
+ OS_LAYER_SYSTEMINCLUDE = \
+ /epoc32/include \
+ /epoc32/include/oem \
+ /epoc32/include/osextensions \
+ /epoc32/include/domain/osextensions \
+ /epoc32/include/domain/osextensions/loc \
+ /epoc32/include/domain/osextensions/loc/sc
+
+ # This define statements defines the include paths, which are intended to be
+ # used in the pro-files that are part of the os-layer. This is intended
+ # to be only used by those components which need to use in their mmp-file either
+ # kern_ext.mmh or nkern_ext.mmh. Reason is that those
+ # 2 files already contain the /epoc32/include as system include path.
+
+ OS_LAYER_KERNEL_SYSTEMINCLUDE = \
+ /epoc32/include/oem \
+ /epoc32/include/osextensions \
+ /epoc32/include/domain/osextensions
+
+
+ # ---------------------------------------
+ # Definitions that also define the systeminclude paths for various
+ # part of stdapis. Append to INCLUDEPATH in pro-file.
+ # ---------------------------------------
+
+ OS_LAYER_LIBC_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis) \
+ $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/sys) \
+ /epoc32/include/stdapis \
+ /epoc32/include/stdapis/sys
+
+ OS_LAYER_GLIB_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0) \
+ $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/glib) \
+ $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/gObject) \
+ /epoc32/include/stdapis/glib-2.0 \
+ /epoc32/include/stdapis/glib-2.0/glib \
+ /epoc32/include/stdapis/glib-2.0/gObject
+
+ OS_LAYER_SSL_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/openssl) \
+ /epoc32/include/stdapis/openssl
+
+ # stlportv5 is preferred over stlport as it has the throwing version of operator new
+ exists($${EPOCROOT}epoc32/include/osextensions/stdapis/stlportv5)|exists($${EPOCROOT}epoc32/include/stdapis/stlportv5) {
+ OS_LAYER_STDCPP_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlportv5) \
+ /epoc32/include/stdapis/stlportv5
+ } else {
+ OS_LAYER_STDCPP_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlport) \
+ /epoc32/include/stdapis/stlport
+ }
+
+ OS_LAYER_BOOST_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/boost) \
+ /epoc32/include/stdapis/boost
+
+ OS_LAYER_DBUS_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0) \
+ $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0/dbus) \
+ /epoc32/include/stdapis/dbus-1.0 \
+ /epoc32/include/stdapis/dbus-1.0/dbus
+
+ OS_LAYER_LIBUTILITY_SYSTEMINCLUDE = $$OS_LAYER_PLATFORM_EXPORT_PATH(stdapis/utility) \
+ /epoc32/include/stdapis/utility
+
+ # ---------------------------------------
+ # Definitions to export IBY files to different folders where they will be taken
+ # to ROM image
+ # ---------------------------------------
+
+ defineReplace(CORE_APP_LAYER_IBY_EXPORT_PATH) {
+ return(/epoc32/rom/include/core/app/$$1)
+ }
+ defineReplace(CORE_MW_LAYER_IBY_EXPORT_PATH) {
+ return(/epoc32/rom/include/core/mw/$$1)
+ }
+ defineReplace(CORE_OSEXT_LAYER_IBY_EXPORT_PATH) {
+ return(/epoc32/rom/include/core/osext/$$1)
+ }
+ defineReplace(CORE_OS_LAYER_IBY_EXPORT_PATH) {
+ return(/epoc32/rom/include/core/osext/$$1)
+ }
+ defineReplace(CORE_ADAPT_LAYER_IBY_EXPORT_PATH) {
+ return(/epoc32/rom/include/$$1)
+ }
+
+ # You need to define the following in pro-file, if you are using the stllib:
+ # QMAKE_CXXFLAGS.CW *= $$STLLIB_USAGE_CW_FLAGS
+ # DEFINES *= $$STLLIB_USAGE_DEFINES
+ STLLIB_USAGE_CW_FLAGS = "-wchar_t on"
+ STLLIB_USAGE_DEFINES = _WCHAR_T_DECLARED
+
+ }
+}
+
+
+
diff --git a/mkspecs/features/symbian/qt.prf b/mkspecs/features/symbian/qt.prf
new file mode 100644
index 0000000..dd4a4d5
--- /dev/null
+++ b/mkspecs/features/symbian/qt.prf
@@ -0,0 +1,19 @@
+contains(DEFINES, QT_MAKEDLL)|contains(DEFINES, QT_DLL) {
+ CONFIG *= epocallowdlldata
+}
+
+CONFIG += qtmain
+
+load(qt)
+
+# Add dependency to QtLibs package to all other projects besides QtLibs.
+# Note: QtLibs with full capabilities has UID3 of 0x2001E61C,
+# while self-signed version typically has temporary UID3 of 0xE001E61C.
+contains(CONFIG, qt):!contains(TARGET.UID3, 0x2001E61C):!contains(TARGET.UID3, 0xE001E61C) {
+ default_deployment.pkg_prerules += \
+ "; Default dependency to Qt libraries" \
+ "(0x2001E61C), $${QT_MAJOR_VERSION}, $${QT_MINOR_VERSION}, $${QT_PATCH_VERSION}, {\"QtLibs pre-release\"}"
+}
+
+isEmpty(TARGET.EPOCSTACKSIZE):TARGET.EPOCSTACKSIZE = 0x14000
+isEmpty(TARGET.EPOCHEAPSIZE):TARGET.EPOCHEAPSIZE = 0x020000 0x800000
diff --git a/mkspecs/features/symbian/stl.prf b/mkspecs/features/symbian/stl.prf
new file mode 100644
index 0000000..b4dbc9c
--- /dev/null
+++ b/mkspecs/features/symbian/stl.prf
@@ -0,0 +1,36 @@
+CONFIG -= stl_off
+
+# STL usage in S60 requires the "OPTION CW -wchar_t on" mmp statement to be used.
+# This statement is added via $$STLLIB_USAGE_CW_FLAGS variable below.
+# S60 STL documentation instructs to use also "MACRO _WCHAR_T_DECLARED" statement,
+# but QtS60 will not compile if that statement is set.
+
+QMAKE_CXXFLAGS.CW *= $$STLLIB_USAGE_CW_FLAGS
+
+# Path to stlport headers
+INCLUDEPATH += $$OS_LAYER_STDCPP_SYSTEMINCLUDE
+
+# Remove mkspecs/common/symbian/stl-off from beginning of includepath
+# in order to use new and delete operators from STL
+INCLUDEPATH -= $$[QT_INSTALL_PREFIX]/mkspecs/common/symbian/stl-off
+
+# libstdcppv5 is preferred over libstdcpp as it has/uses the throwing version of operator new
+exists($${EPOCROOT}epoc32/release/armv5/urel/libstdcppv5.dll ) {
+ LIBS *= -llibstdcppv5.dll
+
+ # STDCPP turns on standard C++ new behaviour in SBSv2
+ MMP_RULES += "STDCPP"
+
+ # defining __SYMBIAN_STDCPP_SUPPORT__ turns on standard C++ new behaviour pre SBSv2
+ DEFINES += "__SYMBIAN_STDCPP_SUPPORT__"
+
+ # operator new is actually supplied in stdnew.lib for hardware builds
+ eabiStdNewLibBlock = \
+ "$${LITERAL_HASH}ifdef EABI" \
+ "LIBRARY stdnew.lib" \
+ "$${LITERAL_HASH}endif"
+
+ MMP_RULES += eabiStdNewLibBlock
+} else {
+ LIBS *= -llibstdcpp.dll
+}
diff --git a/mkspecs/features/symbian/stl_off.prf b/mkspecs/features/symbian/stl_off.prf
new file mode 100644
index 0000000..d5d1c7c
--- /dev/null
+++ b/mkspecs/features/symbian/stl_off.prf
@@ -0,0 +1,2 @@
+CONFIG -= stl
+
diff --git a/mkspecs/features/uic.prf b/mkspecs/features/uic.prf
index e768d0f..eaf373a 100644
--- a/mkspecs/features/uic.prf
+++ b/mkspecs/features/uic.prf
@@ -1,11 +1,11 @@
isEmpty(QMAKE_UIC3) {
- win32:QMAKE_UIC3 = $$[QT_INSTALL_BINS]\uic3.exe
+ contains(QMAKE_HOST.os,Windows):QMAKE_UIC3 = $$[QT_INSTALL_BINS]\uic3.exe
else:QMAKE_UIC3 = $$[QT_INSTALL_BINS]/uic3
}
isEmpty(QMAKE_UIC) {
- win32:QMAKE_UIC = $$[QT_INSTALL_BINS]\uic.exe
+ contains(QMAKE_HOST.os,Windows):QMAKE_UIC = $$[QT_INSTALL_BINS]\uic.exe
else:QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
}
@@ -36,7 +36,7 @@ isEmpty(QMAKE_MOD_UIC):QMAKE_MOD_UIC = ui_
!isEmpty(FORMS)|!isEmpty(FORMS3) {
ui_dir_short = $$UI_HEADERS_DIR
- win32:ui_dir_short ~= s,^.:,/,
+ contains(QMAKE_HOST.os,Windows):ui_dir_short ~= s,^.:,/,
contains(ui_dir_short, ^[/\\\\].*):INCLUDEPATH += $$UI_HEADERS_DIR
else:INCLUDEPATH += $$OUT_PWD/$$UI_HEADERS_DIR
}
diff --git a/mkspecs/symbian-abld/qmake.conf b/mkspecs/symbian-abld/qmake.conf
new file mode 100644
index 0000000..499bf63
--- /dev/null
+++ b/mkspecs/symbian-abld/qmake.conf
@@ -0,0 +1,9 @@
+#
+# qmake configuration for symbian-abld
+#
+# Written for SYMBIAN_ABLD
+#
+
+MAKEFILE_GENERATOR = SYMBIAN_ABLD
+
+include(../common/symbian/symbian.conf)
diff --git a/mkspecs/symbian-sbsv2/flm/qt/qmake_emulator_deployment.flm b/mkspecs/symbian-sbsv2/flm/qt/qmake_emulator_deployment.flm
new file mode 100644
index 0000000..b4f39f5
--- /dev/null
+++ b/mkspecs/symbian-sbsv2/flm/qt/qmake_emulator_deployment.flm
@@ -0,0 +1,39 @@
+# /****************************************************************************
+# **
+# ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# ** Contact: Nokia Corporation (qt-info@nokia.com)
+# **
+# ** This file is part of symbian-sbsv2 mkspec.
+# **
+# ****************************************************************************/
+
+include $(FLMHOME)/metaflm.mk
+
+SINGLETON:=$(call sanitise,TARGET_$(DEPLOY_TARGET))
+CLEAN_TARGET:=
+
+define qmake_emulator_deployment
+$(ALLTARGET):: $(1)
+FINAL::$(1)
+
+# Prevent duplicate targets from being created
+$(SINGLETON):=1
+
+CLEAN_TARGET:=$(1)
+
+$(1): $(2)
+ $(call startrule,qmake_emulator_deployment) \
+ $(GNUCP) --no-preserve=mode $(2) "$$@" && \
+ $(GNUCHMOD) a+rw "$$@" \
+ $(call endrule,qmake_emulator_deployment)
+endef
+
+ifeq ($($(SINGLETON)),)
+$(eval $(call qmake_emulator_deployment, $(subst $(CHAR_SPACE),\$(CHAR_SPACE),$(DEPLOY_TARGET)), $(subst $(CHAR_SPACE),\$(CHAR_SPACE),$(DEPLOY_SOURCE))))
+$(call makepath,$(dir $(DEPLOY_TARGET)))
+$(eval $(call GenerateStandardCleanTarget,$(CLEAN_TARGET),''))
+endif
+
+
+
+
diff --git a/mkspecs/symbian-sbsv2/flm/qt/qmake_extra_pre_targetdep.flm b/mkspecs/symbian-sbsv2/flm/qt/qmake_extra_pre_targetdep.flm
new file mode 100644
index 0000000..cc57bf4
--- /dev/null
+++ b/mkspecs/symbian-sbsv2/flm/qt/qmake_extra_pre_targetdep.flm
@@ -0,0 +1,35 @@
+# /****************************************************************************
+# **
+# ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# ** Contact: Nokia Corporation (qt-info@nokia.com)
+# **
+# ** This file is part of symbian-sbsv2 mkspec.
+# **
+# ****************************************************************************/
+
+include $(FLMHOME)/metaflm.mk
+
+SINGLETON:=$(call sanitise,TARGET_$(PREDEP_TARGET))
+
+define qmake_extra_pre_targetdep
+$(ALLTARGET):: $(PREDEP_TARGET)
+EXPORT:: $(PREDEP_TARGET)
+LIBRARY:: $(PREDEP_TARGET)
+TARGET:: $(PREDEP_TARGET)
+
+# Prevent duplicate targets from being created
+$(SINGLETON):=1
+
+$(PREDEP_TARGET): $(DEPS)
+ $(call startrule,qmake_extra_pre_targetdep) \
+ $(COMMAND) \
+ $(call endrule,qmake_extra_pre_targetdep)
+endef
+
+ifeq ($($(SINGLETON)),)
+$(eval $(qmake_extra_pre_targetdep))
+$(eval $(call GenerateStandardCleanTarget,$(PREDEP_TARGET),''))
+endif
+
+
+
diff --git a/mkspecs/symbian-sbsv2/flm/qt/qmake_generate_temp_dirs.flm b/mkspecs/symbian-sbsv2/flm/qt/qmake_generate_temp_dirs.flm
new file mode 100644
index 0000000..ca6cca9
--- /dev/null
+++ b/mkspecs/symbian-sbsv2/flm/qt/qmake_generate_temp_dirs.flm
@@ -0,0 +1,22 @@
+# /****************************************************************************
+# **
+# ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# ** Contact: Nokia Corporation (qt-info@nokia.com)
+# **
+# ** This file is part of symbian-sbsv2 mkspec.
+# **
+# ****************************************************************************/
+
+include $(FLMHOME)/metaflm.mk
+
+SINGLETON:=$(call sanitise,TEMP_DIRS_$(EXTENSION_ROOT))
+
+ifeq ($($(SINGLETON)),)
+$(SINGLETON):=1
+$(call makepath,$(DIRS))
+$(eval $(call GenerateStandardCleanTarget,'',$(DIRS)))
+endif
+
+
+
+
diff --git a/mkspecs/symbian-sbsv2/flm/qt/qmake_post_link.flm b/mkspecs/symbian-sbsv2/flm/qt/qmake_post_link.flm
new file mode 100644
index 0000000..a3e0f4a
--- /dev/null
+++ b/mkspecs/symbian-sbsv2/flm/qt/qmake_post_link.flm
@@ -0,0 +1,34 @@
+# /****************************************************************************
+# **
+# ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# ** Contact: Nokia Corporation (qt-info@nokia.com)
+# **
+# ** This file is part of symbian-sbsv2 mkspec.
+# **
+# ****************************************************************************/
+
+include $(FLMHOME)/metaflm.mk
+
+POST_LINK_TARGET:=POST_LINK_$(PLATFORM_PATH)_$(CFG_PATH)_$(call sanitise,$(LINK_TARGET))
+POST_LINK_DEP:=$(EPOCROOT)/epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/$(LINK_TARGET)
+
+# Passing $(PLATFORM_PATH) etc. variables in FLM options makes sbsv2 toolchain to double the dollar signs,
+# requiring evaluating them twice in order to get desired values,
+# so do an extra evaluation before using the command.
+define command_fixer
+ THE_COMMAND:=$(POST_LINK_CMD)
+endef
+
+define qmake_post_link
+$(ALLTARGET):: $(POST_LINK_TARGET)
+FINAL:: $(POST_LINK_TARGET)
+
+$(POST_LINK_TARGET): $(POST_LINK_DEP)
+ $(call startrule,qmake_post_link) \
+ $(THE_COMMAND) \
+ $(call endrule,qmake_post_link)
+endef
+
+$(eval $(command_fixer))
+$(eval $(qmake_post_link))
+
diff --git a/mkspecs/symbian-sbsv2/flm/qt/qt.xml b/mkspecs/symbian-sbsv2/flm/qt/qt.xml
new file mode 100644
index 0000000..ad08bd8
--- /dev/null
+++ b/mkspecs/symbian-sbsv2/flm/qt/qt.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+# /****************************************************************************
+# **
+# ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# ** Contact: Nokia Corporation (qt-info@nokia.com)
+# **
+# ** This file is part of symbian-sbsv2 mkspec.
+# **
+# ****************************************************************************/
+-->
+
+<build xmlns="http://symbian.com/xml/build"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://symbian.com/xml/build http://symbian.com/xml/build/1_0.xsd">
+
+ <!-- Extension interfaces : replacements for Template Extension Makefiles -->
+
+ <interface name="qt.qmake_extra_pre_targetdep" extends="Symbian.UserFLM"
+ flm="qmake_extra_pre_targetdep.flm">
+ <param name='PREDEP_TARGET' />
+ <param name='DEPS' default = '' />
+ <param name='COMMAND' default = '' />
+ </interface>
+
+ <interface name="qt.qmake_emulator_deployment" extends="Symbian.UserFLM"
+ flm="qmake_emulator_deployment.flm">
+ <param name='DEPLOY_SOURCE' />
+ <param name='DEPLOY_TARGET' />
+ </interface>
+
+ <interface name="qt.qmake_post_link" extends="Symbian.UserFLM"
+ flm="qmake_post_link.flm">
+ <param name='POST_LINK_CMD' />
+ <param name='LINK_TARGET' />
+ </interface>
+
+ <interface name="qt.qmake_generate_temp_dirs" extends="Symbian.UserFLM"
+ flm="qmake_generate_temp_dirs.flm">
+ <param name='DIRS' />
+ </interface>
+</build>
diff --git a/mkspecs/symbian-sbsv2/qmake.conf b/mkspecs/symbian-sbsv2/qmake.conf
new file mode 100644
index 0000000..0a5e878
--- /dev/null
+++ b/mkspecs/symbian-sbsv2/qmake.conf
@@ -0,0 +1,9 @@
+#
+# qmake configuration for symbian-sbsv2
+#
+# Written for SYMBIAN_SBSV2
+#
+
+MAKEFILE_GENERATOR = SYMBIAN_SBSV2
+
+include(../common/symbian/symbian.conf)
diff --git a/mkspecs/win32-mwc/qmake.conf b/mkspecs/win32-mwc/qmake.conf
new file mode 100644
index 0000000..8ebe4ff
--- /dev/null
+++ b/mkspecs/win32-mwc/qmake.conf
@@ -0,0 +1,110 @@
+#
+# qmake configuration for win32-mwc
+#
+# Written for mwc
+#
+
+MAKEFILE_GENERATOR = MINGW
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl copy_dir_files debug_and_release debug_and_release_target
+QT += core gui
+DEFINES += UNICODE QT_NO_PROCESS QT_NO_SHAREDMEMORY QT_NO_CONCURRENT QT_NO_SYSTEMSEMAPHORE
+QMAKE_COMPILER_DEFINES += __GNUC__ WIN32
+
+QMAKE_EXT_OBJ = .o
+QMAKE_EXT_RES = _res.o
+
+QMAKE_CC = mwccsym2
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = byacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -gccinc -stackcommit 1024000 -stackreserve 1024000
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -w on -w nonotused -w nonotinlined -w noimplicit -w nopadding -w noemptydecl -w nounusedexpr -w nopossible
+QMAKE_CFLAGS_WARN_OFF = -w off
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g -O1
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+
+QMAKE_CXX = mwccsym2
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+QMAKE_CXXFLAGS_RTTI_ON = -RTTI on
+QMAKE_CXXFLAGS_RTTI_OFF = -RTTI off
+QMAKE_CXXFLAGS_EXCEPTIONS_ON = "-Cpp_exceptions on"
+QMAKE_CXXFLAGS_EXCEPTIONS_OFF = "-Cpp_exceptions off"
+
+QMAKE_INCDIR =
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+
+QMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH) -o $obj $src
+QMAKE_RUN_CC_IMP = $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
+QMAKE_RUN_CXX = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $obj $src
+QMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
+
+QMAKE_LINK = mwldsym2
+#QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_EXCEPTIONS_ON =
+QMAKE_LFLAGS_EXCEPTIONS_OFF =
+#QMAKE_LFLAGS_RELEASE = -Wl,-s
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+#QMAKE_LFLAGS_CONSOLE = -Wl,-subsystem,console
+#QMAKE_LFLAGS_WINDOWS = -Wl,-subsystem,windows
+QMAKE_LFLAGS_CONSOLE =
+QMAKE_LFLAGS_WINDOWS =
+QMAKE_LFLAGS_DLL = -runtime dm
+QMAKE_LINK_OBJECT_MAX = 99999999
+QMAKE_LINK_OBJECT_SCRIPT= object_script
+
+
+QMAKE_LIBS =
+QMAKE_LIBS_CORE = -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32
+QMAKE_LIBS_GUI = -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lws2_32 -lole32 -luuid -luser32 -ladvapi32
+QMAKE_LIBS_NETWORK = -lws2_32
+QMAKE_LIBS_OPENGL = -lopengl32 -lglu32 -lgdi32 -luser32
+QMAKE_LIBS_COMPAT = -ladvapi32 -lshell32 -lcomdlg32 -luser32 -lgdi32 -lws2_32
+#QMAKE_LIBS_QT_ENTRY = -lmingw32 -lqtmain
+QMAKE_LIBS_QT_ENTRY = -lqtmain
+
+!isEmpty(QMAKE_SH) {
+ MINGW_IN_SHELL = 1
+ QMAKE_DIR_SEP = /
+ QMAKE_COPY = cp
+ QMAKE_COPY_DIR = xcopy /s /q /y /i
+ QMAKE_MOVE = mv
+ QMAKE_DEL_FILE = rm
+ QMAKE_MKDIR = mkdir
+ QMAKE_DEL_DIR = rmdir
+ QMAKE_CHK_DIR_EXISTS = test -d
+} else {
+ QMAKE_COPY = copy /y
+ QMAKE_COPY_DIR = xcopy /s /q /y /i
+ QMAKE_MOVE = move
+ QMAKE_DEL_FILE = del
+ QMAKE_MKDIR = mkdir
+ QMAKE_DEL_DIR = rmdir
+ QMAKE_CHK_DIR_EXISTS = if not exist
+}
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}moc.exe
+QMAKE_UIC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}uic.exe
+QMAKE_IDC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}idc.exe
+
+QMAKE_IDL = midl
+QMAKE_LIB = $$QMAKE_LINK -library -o
+QMAKE_RC = windres
+QMAKE_ZIP = zip -r -9
+
+QMAKE_STRIP = strip
+QMAKE_STRIPFLAGS_LIB += --strip-unneeded
+load(qt_config)
diff --git a/mkspecs/win32-mwc/qplatformdefs.h b/mkspecs/win32-mwc/qplatformdefs.h
new file mode 100644
index 0000000..a96b4db
--- /dev/null
+++ b/mkspecs/win32-mwc/qplatformdefs.h
@@ -0,0 +1,164 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the qmake spec of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QPLATFORMDEFS_H
+#define QPLATFORMDEFS_H
+
+#ifdef UNICODE
+#ifndef _UNICODE
+#define _UNICODE
+#endif
+#endif
+
+// Get Qt defines/settings
+
+#include "qglobal.h"
+
+#include <tchar.h>
+#include <io.h>
+#include <direct.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <sys/stat.h>
+#include <stdlib.h>
+#include <windows.h>
+#include <limits.h>
+
+#if !defined(_WIN32_WINNT) || (_WIN32_WINNT-0 < 0x0500)
+typedef enum {
+ NameUnknown = 0,
+ NameFullyQualifiedDN = 1,
+ NameSamCompatible = 2,
+ NameDisplay = 3,
+ NameUniqueId = 6,
+ NameCanonical = 7,
+ NameUserPrincipal = 8,
+ NameCanonicalEx = 9,
+ NameServicePrincipal = 10,
+ NameDnsDomain = 12
+} EXTENDED_NAME_FORMAT, *PEXTENDED_NAME_FORMAT;
+#endif
+
+#define Q_FS_FAT
+#ifdef QT_LARGEFILE_SUPPORT
+#define QT_STATBUF struct _stati64 // non-ANSI defs
+#define QT_STATBUF4TSTAT struct _stati64 // non-ANSI defs
+#define QT_STAT _stati64
+#define QT_FSTAT _fstati64
+#else
+#define QT_STATBUF struct _stat // non-ANSI defs
+#define QT_STATBUF4TSTAT struct _stat // non-ANSI defs
+#define QT_STAT _stat
+#define QT_FSTAT _fstat
+#endif
+#define QT_STAT_REG _S_IFREG
+#define QT_STAT_DIR _S_IFDIR
+#define QT_STAT_MASK _S_IFMT
+#if defined(_S_IFLNK)
+# define QT_STAT_LNK _S_IFLNK
+#endif
+#define QT_FILENO _fileno
+#define QT_OPEN _open
+#define QT_CLOSE _close
+#ifdef QT_LARGEFILE_SUPPORT
+#define QT_LSEEK _lseeki64
+#ifndef UNICODE
+#define QT_TSTAT _stati64
+#else
+#define QT_TSTAT _wstati64
+#endif
+#else
+#define QT_LSEEK _lseek
+#ifndef UNICODE
+#define QT_TSTAT _stat
+#else
+#define QT_TSTAT _wstat
+#endif
+#endif
+#define QT_READ _read
+#define QT_WRITE _write
+#define QT_ACCESS _access
+#define QT_GETCWD _getcwd
+#define QT_CHDIR _chdir
+#define QT_MKDIR _mkdir
+#define QT_RMDIR _rmdir
+#define QT_OPEN_LARGEFILE 0
+#define QT_OPEN_RDONLY _O_RDONLY
+#define QT_OPEN_WRONLY _O_WRONLY
+#define QT_OPEN_RDWR _O_RDWR
+#define QT_OPEN_CREAT _O_CREAT
+#define QT_OPEN_TRUNC _O_TRUNC
+#define QT_OPEN_APPEND _O_APPEND
+#if defined(O_TEXT)
+# define QT_OPEN_TEXT _O_TEXT
+# define QT_OPEN_BINARY _O_BINARY
+#endif
+
+#define QT_FOPEN fopen
+#ifdef QT_LARGEFILE_SUPPORT
+#define QT_FSEEK fseeko64
+#define QT_FTELL ftello64
+#else
+#define QT_FSEEK fseek
+#define QT_FTELL ftell
+#endif
+#define QT_FGETPOS fgetpos
+#define QT_FSETPOS fsetpos
+#define QT_FPOS_T fpos_t
+#ifdef QT_LARGEFILE_SUPPORT
+#define QT_OFF_T off64_t
+#else
+#define QT_OFF_T long
+#endif
+
+#define QT_SIGNAL_ARGS int
+
+#define QT_VSNPRINTF _vsnprintf
+#define QT_SNPRINTF _snprintf
+
+# define F_OK 0
+# define X_OK 1
+# define W_OK 2
+# define R_OK 4
+
+#define PATH_MAX 1024
+#endif // QPLATFORMDEFS_H
diff --git a/projects.pro b/projects.pro
index 953eae8..a1f2dd1 100644
--- a/projects.pro
+++ b/projects.pro
@@ -28,6 +28,10 @@ isEmpty(QT_BUILD_PARTS) { #defaults
}
}
+symbian {
+ QT_BUILD_PARTS = libs tools examples demos
+}
+
#process the projects
for(PROJECT, $$list($$lower($$unique(QT_BUILD_PARTS)))) {
isEqual(PROJECT, tools) {
@@ -49,9 +53,9 @@ for(PROJECT, $$list($$lower($$unique(QT_BUILD_PARTS)))) {
}
}
-confclean.depends += clean
+!symbian: confclean.depends += clean
confclean.commands =
-unix {
+unix:!symbian {
confclean.commands += (cd config.tests/unix/stl && $(MAKE) distclean); \
(cd config.tests/unix/endian && $(MAKE) distclean); \
(cd config.tests/unix/ipv6 && $(MAKE) distclean); \
@@ -101,6 +105,19 @@ win32 {
-$(DEL_FILE) .qmake.cache $$escape_expand(\n\t) \
(cd qmake && $(MAKE) distclean)
}
+symbian {
+ confclean.depends += distclean
+ confclean.commands += \
+ (cd src\tools\moc && $(MAKE) distclean) $$escape_expand(\n\t) \
+ (cd src\tools\rcc && $(MAKE) distclean) $$escape_expand(\n\t) \
+ (cd src\tools\uic && $(MAKE) distclean) $$escape_expand(\n\t) \
+ -$(DEL_FILE) src\corelib\global\qconfig.h $$escape_expand(\n\t) \
+ -$(DEL_FILE) src\corelib\global\qconfig.cpp $$escape_expand(\n\t) \
+ -$(DEL_FILE) mkspecs\qconfig.pri $$escape_expand(\n\t) \
+ -$(DEL_FILE) .qmake.cache $$escape_expand(\n\t) \
+ (cd qmake && $(MAKE) distclean)
+
+}
QMAKE_EXTRA_TARGETS += confclean
qmakeclean.commands += (cd qmake && $(MAKE) clean)
QMAKE_EXTRA_TARGETS += qmakeclean
diff --git a/qmake/Makefile.unix b/qmake/Makefile.unix
index 0d07cc3..fcf43c8 100644
--- a/qmake/Makefile.unix
+++ b/qmake/Makefile.unix
@@ -9,7 +9,8 @@ LFLAGS = @QMAKE_LFLAGS@
OBJS=project.o property.o main.o makefile.o unixmake2.o unixmake.o \
mingw_make.o option.o winmakefile.o projectgenerator.o \
meta.o makefiledeps.o metamakefile.o xmloutput.o pbuilder_pbx.o \
- borland_bmake.o msvc_dsp.o msvc_vcproj.o msvc_nmake.o msvc_objectmodel.o
+ borland_bmake.o msvc_dsp.o msvc_vcproj.o msvc_nmake.o msvc_objectmodel.o \
+ symmake.o initprojectdeploy_symbian.o symmake_abld.o symmake_sbsv2.o
#qt code
QOBJS=qtextcodec.o qutfcodec.o qstring.o qtextstream.o qiodevice.o qmalloc.o qglobal.o \
@@ -18,7 +19,7 @@ QOBJS=qtextcodec.o qutfcodec.o qstring.o qtextstream.o qiodevice.o qmalloc.o qgl
qfsfileengine_iterator.o qregexp.o qvector.o qbitarray.o qdir.o qdiriterator.o quuid.o qhash.o \
qfileinfo.o qdatetime.o qstringlist.o qabstractfileengine.o qtemporaryfile.o \
qmap.o qmetatype.o qsettings.o qlibraryinfo.o qvariant.o qvsnprintf.o \
- qlocale.o qlinkedlist.o qurl.o qnumeric.o qcryptographichash.o \
+ qlocale.o qlinkedlist.o qurl.o qnumeric.o qcryptographichash.o qxmlstream.o qxmlutils.o \
$(QTOBJS)
@@ -30,6 +31,8 @@ DEPEND_SRC=project.cpp property.cpp meta.cpp main.cpp generators/makefile.cpp ge
generators/mac/pbuilder_pbx.cpp generators/mac/xmloutput.cpp generators/metamakefile.cpp \
generators/makefiledeps.cpp option.cpp generators/win32/mingw_make.cpp generators/makefile.cpp \
generators/win32/msvc_objectmodel.cpp generators/win32/msvc_nmake.cpp generators/win32/borland_bmake.cpp \
+ generators/symbian/symmake.cpp generators/symbian/initprojectdeploy_symbian.cpp \
+ generators/symbian/symmake_abld.cpp generators/symbian/symmake_sbsv2.cpp \
$(SOURCE_PATH)/src/corelib/codecs/qtextcodec.cpp $(SOURCE_PATH)/src/corelib/codecs/qutfcodec.cpp \
$(SOURCE_PATH)/src/corelib/tools/qstring.cpp $(SOURCE_PATH)/src/corelib/io/qfile.cpp \
$(SOURCE_PATH)/src/corelib/io/qtextstream.cpp $(SOURCE_PATH)/src/corelib/io/qiodevice.cpp \
@@ -52,11 +55,13 @@ DEPEND_SRC=project.cpp property.cpp meta.cpp main.cpp generators/makefile.cpp ge
$(SOURCE_PATH)/src/corelib/io/qsettings.cpp $(SOURCE_PATH)/src/corelib/kernel/qvariant.cpp \
$(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp $(SOURCE_PATH)/src/corelib/tools/qcryptographichash.cpp \
$(SOURCE_PATH)/src/corelib/tools/qvsnprintf.cpp $(SOURCE_PATH)/src/corelib/global/qnumeric.cpp \
+ $(SOURCE_PATH)/src/corelib/xml/qxmlstream.cpp \
+ $(SOURCE_PATH)/src/corelib/xml/qxmlutils.cpp \
$(QTSRCS)
-CPPFLAGS = -I. -Igenerators -Igenerators/unix -Igenerators/win32 -Igenerators/mac \
+CPPFLAGS = -I. -Igenerators -Igenerators/unix -Igenerators/win32 -Igenerators/mac -Igenerators/symbian \
-I$(BUILD_PATH)/include -I$(BUILD_PATH)/include/QtCore \
- -I$(BUILD_PATH)/src/corelib/global \
+ -I$(BUILD_PATH)/src/corelib/global -I$(BUILD_PATH)/src/corelib/xml \
-DQT_NO_PCRE \
-DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED \
-DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_STL \
@@ -264,9 +269,26 @@ pbuilder_pbx.o: generators/mac/pbuilder_pbx.cpp
msvc_dsp.o: generators/win32/msvc_dsp.cpp
$(CXX) -c -o $@ $(CXXFLAGS) generators/win32/msvc_dsp.cpp
+symmake.o: generators/symbian/symmake.cpp
+ $(CXX) -c -o $@ $(CXXFLAGS) generators/symbian/symmake.cpp
+
+symmake_abld.o: generators/symbian/symmake_abld.cpp
+ $(CXX) -c -o $@ $(CXXFLAGS) generators/symbian/symmake_abld.cpp
+
+symmake_sbsv2.o: generators/symbian/symmake_sbsv2.cpp
+ $(CXX) -c -o $@ $(CXXFLAGS) generators/symbian/symmake_sbsv2.cpp
+
+initprojectdeploy_symbian.o: generators/symbian/initprojectdeploy_symbian.cpp
+ $(CXX) -c -o $@ $(CXXFLAGS) generators/symbian/initprojectdeploy_symbian.cpp
+
projectgenerator.o: generators/projectgenerator.cpp
$(CXX) -c -o $@ $(CXXFLAGS) generators/projectgenerator.cpp
+qxmlstream.o: $(SOURCE_PATH)/src/corelib/xml/qxmlstream.cpp
+ $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/xml/qxmlstream.cpp
+
+qxmlutils.o: $(SOURCE_PATH)/src/corelib/xml/qxmlutils.cpp
+ $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/xml/qxmlutils.cpp
#default rules
.cpp.o:
$(CXX) -c -o $@ $(CXXFLAGS) $<
diff --git a/qmake/Makefile.win32 b/qmake/Makefile.win32
index 3aa3ea2..e6bbcd5 100644
--- a/qmake/Makefile.win32
+++ b/qmake/Makefile.win32
@@ -28,10 +28,11 @@ CFLAGS = /Zc:wchar_t-
CFLAGS = -c -Fo$@ \
-W3 -nologo -O2 \
- -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac \
+ -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -Igenerators\symbian \
-I$(BUILD_PATH)\include -I$(BUILD_PATH)\include\QtCore \
-I$(SOURCE_PATH)\include -I$(SOURCE_PATH)\include\QtCore \
-I$(BUILD_PATH)\src\corelib\global \
+ -I$(BUILD_PATH)\src\corelib\xml \
-I$(SOURCE_PATH)\mkspecs\$(QMAKESPEC) \
-DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL \
-DQT_NO_COMPRESS -DUNICODE -DHAVE_QCONFIG_CPP -DQT_BUILD_QMAKE -DQT_NO_THREAD \
@@ -53,7 +54,7 @@ BCB = $(MAKEDIR)\..
CXX = bcc32
CFLAGS = -c -o$@ \
-tWR -w -w-hid -w-use -O1 \
- -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac \
+ -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -Igenerators\symbian \
-I$(BUILD_PATH)\include -I$(BUILD_PATH)\include\QtCore \
-I$(SOURCE_PATH)\include -I$(SOURCE_PATH)\include\QtCore \
-I$(BUILD_PATH)\src\corelib\global \
@@ -73,7 +74,8 @@ OBJS = project.obj main.obj makefile.obj unixmake.obj unixmake2.obj mingw
option.obj winmakefile.obj projectgenerator.obj property.obj meta.obj \
makefiledeps.obj metamakefile.obj xmloutput.obj pbuilder_pbx.obj \
borland_bmake.obj msvc_nmake.obj msvc_dsp.obj msvc_vcproj.obj \
- msvc_objectmodel.obj
+ msvc_objectmodel.obj symmake.obj initprojectdeploy_symbian.obj \
+ symmake_abld.obj symmake_sbsv2.obj
!IFDEF QMAKE_OPENSOURCE_EDITION
CFLAGS = $(CFLAGS) -DQMAKE_OPENSOURCE_EDITION
@@ -83,11 +85,11 @@ CFLAGS = $(CFLAGS) -DQMAKE_OPENSOURCE_EDITION
QTOBJS= \
qbitarray.obj \
qbuffer.obj \
- qcryptographichash.obj \
+ qcryptographichash.obj \
qfsfileengine.obj \
qfsfileengine_iterator.obj \
qbytearray.obj \
- qvsnprintf.obj \
+ qvsnprintf.obj \
qbytearraymatcher.obj \
qdatetime.obj \
qdir.obj \
@@ -104,7 +106,7 @@ QTOBJS= \
qlist.obj \
qlinkedlist.obj \
qlocale.obj \
- qmalloc.obj \
+ qmalloc.obj \
qmap.obj \
qregexp.obj \
qtextcodec.obj \
@@ -118,9 +120,11 @@ QTOBJS= \
qsettings.obj \
qlibraryinfo.obj \
qvariant.obj \
- qurl.obj \
+ qurl.obj \
qsettings_win.obj \
- qmetatype.obj \
+ qmetatype.obj \
+ qxmlstream.obj \
+ qxmlutils.obj \
qnumeric.obj
@@ -138,7 +142,7 @@ clean::
-del qfsfileengine.obj
-del qfsfileengine_iterator.obj
-del qbytearray.obj
- -del qvsnprintf.obj
+ -del qvsnprintf.obj
-del qbytearraymatcher.obj
-del qdatetime.obj
-del qdir.obj
@@ -168,9 +172,9 @@ clean::
-del qsettings.obj
-del qlibraryinfo.obj
-del qvariant.obj
- -del qurl.obj
+ -del qurl.obj
-del qsettings_win.obj
- -del qmetatype.obj
+ -del qmetatype.obj
-del project.obj
-del main.obj
-del makefile.obj
@@ -190,7 +194,13 @@ clean::
-del msvc_dsp.obj
-del msvc_vcproj.obj
-del msvc_objectmodel.obj
+ -del symmake.obj
+ -del symmake_abld.obj
+ -del symmake_sbsv2.obj
+ -del initprojectdeploy_symbian.obj
-del pbuilder_pbx.obj
+ -del qxmlstream.obj
+ -del qxmlutils.obj
-del qnumeric.obj
-del vc60.pdb
-del vc70.pdb
@@ -344,6 +354,7 @@ qmap.obj: $(SOURCE_PATH)\src\corelib\tools\qmap.cpp
qunicodetables.obj: $(SOURCE_PATH)\src\corelib\tools\qunicodetables.cpp
$(CXX) $(CXXFLAGS) $(SOURCE_PATH)\src\corelib\tools\qunicodetables.cpp
+
makefile.obj: $(SOURCE_PATH)/qmake/generators\makefile.cpp
$(CXX) $(CXXFLAGS) generators\makefile.cpp
@@ -374,8 +385,21 @@ msvc_vcproj.obj: $(SOURCE_PATH)/qmake/generators/win32/msvc_vcproj.cpp
msvc_objectmodel.obj: $(SOURCE_PATH)/qmake/generators/win32/msvc_objectmodel.cpp
$(CXX) $(CXXFLAGS) generators/win32/msvc_objectmodel.cpp
+symmake.obj: $(SOURCE_PATH)/qmake/generators/symbian/symmake.cpp
+ $(CXX) $(CXXFLAGS) generators/symbian/symmake.cpp
+
+symmake_abld.obj: $(SOURCE_PATH)/qmake/generators/symbian/symmake_abld.cpp
+ $(CXX) $(CXXFLAGS) generators/symbian/symmake_abld.cpp
+
+symmake_sbsv2.obj: $(SOURCE_PATH)/qmake/generators/symbian/symmake_sbsv2.cpp
+ $(CXX) $(CXXFLAGS) generators/symbian/symmake_sbsv2.cpp
+
+initprojectdeploy_symbian.obj: $(SOURCE_PATH)/qmake/generators/symbian/initprojectdeploy_symbian.cpp
+ $(CXX) $(CXXFLAGS) generators/symbian/initprojectdeploy_symbian.cpp
+
md5.obj: $(SOURCE_PATH)\src\3rdparty\md5\md5.cpp
$(CXX) $(CXXFLAGS) $(SOURCE_PATH)\src\3rdparty\md5\md5.cpp
+
project.obj: $(SOURCE_PATH)/qmake/project.cpp $(SOURCE_PATH)/qmake/project.h $(SOURCE_PATH)/qmake/option.h
$(CXX) $(CXXFLAGS) project.cpp
@@ -405,3 +429,9 @@ metamakefile.obj: $(SOURCE_PATH)/qmake/generators/metamakefile.cpp
xmloutput.obj: $(SOURCE_PATH)/qmake/generators/xmloutput.cpp
$(CXX) $(CXXFLAGS) generators/xmloutput.cpp
+
+qxmlstream.obj: $(SOURCE_PATH)\src\corelib\xml\qxmlstream.cpp
+ $(CXX) $(CXXFLAGS) $(SOURCE_PATH)\src\corelib\xml\qxmlstream.cpp
+
+qxmlutils.obj: $(SOURCE_PATH)\src\corelib\xml\qxmlutils.cpp
+ $(CXX) $(CXXFLAGS) $(SOURCE_PATH)\src\corelib\xml\qxmlutils.cpp
diff --git a/qmake/Makefile.win32-g++ b/qmake/Makefile.win32-g++
index 9ef17d1..ade379b 100644
--- a/qmake/Makefile.win32-g++
+++ b/qmake/Makefile.win32-g++
@@ -15,13 +15,16 @@ CXX = g++
CFLAGS = -c -o$@ -O \
-I. -Igenerators -Igenerators/unix \
-Igenerators/win32 -Igenerators/mac \
+ -Igenerators/symbian \
-I$(BUILD_PATH)/include -I$(BUILD_PATH)/include/QtCore \
-I$(SOURCE_PATH)/include -I$(SOURCE_PATH)/include/QtCore \
-I$(BUILD_PATH)/src/corelib/global \
+ -I$(BUILD_PATH)/src/corelib/xml \
-I$(SOURCE_PATH)/mkspecs/win32-g++ \
-DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NO_PCRE \
- -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -DUNICODE -DHAVE_QCONFIG_CPP \
- -DQT_BUILD_QMAKE -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM
+ -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -DUNICODE -DHAVE_QCONFIG_CPP \
+ -DQT_BUILD_QMAKE -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM \
+ -DQT_BOOTSTRAPPED
CXXFLAGS = $(CFLAGS)
LFLAGS =
LIBS = -lole32 -luuid
@@ -34,7 +37,8 @@ OBJS = project.o main.o makefile.o unixmake.o unixmake2.o mingw_make.o \
option.o winmakefile.o projectgenerator.o property.o meta.o \
makefiledeps.o metamakefile.o xmloutput.o pbuilder_pbx.o \
borland_bmake.o msvc_nmake.o msvc_dsp.o msvc_vcproj.o \
- msvc_objectmodel.o
+ msvc_objectmodel.o symmake.o initprojectdeploy_symbian.o \
+ symmake_abld.o symmake_sbsv2.o
ifdef QMAKE_OPENSOURCE_EDITION
CFLAGS += -DQMAKE_OPENSOURCE_EDITION
@@ -45,7 +49,7 @@ QTOBJS= \
qbitarray.o \
qbuffer.o \
qbytearray.o \
- qcryptographichash.o \
+ qcryptographichash.o \
qvsnprintf.o \
qbytearraymatcher.o \
qconfig.o \
@@ -82,6 +86,8 @@ QTOBJS= \
qsettings_win.o \
qvariant.o \
qmetatype.o \
+ qxmlstream.o \
+ qxmlutils.o \
qnumeric.o
@@ -260,6 +266,18 @@ msvc_vcproj.o: $(SOURCE_PATH)/qmake/generators/win32/msvc_vcproj.cpp
msvc_objectmodel.o: $(SOURCE_PATH)/qmake/generators/win32/msvc_objectmodel.cpp
$(CXX) $(CXXFLAGS) generators/win32/msvc_objectmodel.cpp
+symmake.o: $(SOURCE_PATH)/qmake/generators/symbian/symmake.cpp
+ $(CXX) $(CXXFLAGS) generators/symbian/symmake.cpp
+
+symmake_abld.o: $(SOURCE_PATH)/qmake/generators/symbian/symmake_abld.cpp
+ $(CXX) $(CXXFLAGS) generators/symbian/symmake_abld.cpp
+
+symmake_sbsv2.o: $(SOURCE_PATH)/qmake/generators/symbian/symmake_sbsv2.cpp
+ $(CXX) $(CXXFLAGS) generators/symbian/symmake_sbsv2.cpp
+
+initprojectdeploy_symbian.o: $(SOURCE_PATH)/qmake/generators/symbian/initprojectdeploy_symbian.cpp
+ $(CXX) $(CXXFLAGS) generators/symbian/initprojectdeploy_symbian.cpp
+
project.o: $(SOURCE_PATH)/qmake/project.cpp $(SOURCE_PATH)/qmake/project.h $(SOURCE_PATH)/qmake/option.h
$(CXX) $(CXXFLAGS) project.cpp
@@ -289,3 +307,9 @@ metamakefile.o: $(SOURCE_PATH)/qmake/generators/metamakefile.cpp
xmloutput.o: $(SOURCE_PATH)/qmake/generators/xmloutput.cpp
$(CXX) $(CXXFLAGS) generators/xmloutput.cpp
+
+qxmlstream.o: $(SOURCE_PATH)/src/corelib/xml/qxmlstream.cpp
+ $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/xml/qxmlstream.cpp
+
+qxmlutils.o: $(SOURCE_PATH)/src/corelib/xml/qxmlutils.cpp
+ $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/xml/qxmlutils.cpp
diff --git a/qmake/Makefile.win32-g++-sh b/qmake/Makefile.win32-g++-sh
index 00e61a3..8d2723c 100644
--- a/qmake/Makefile.win32-g++-sh
+++ b/qmake/Makefile.win32-g++-sh
@@ -15,13 +15,16 @@ CXX = g++
CFLAGS = -c -o$@ -O \
-I. -Igenerators -Igenerators/unix \
-Igenerators/win32 -Igenerators/mac \
+ -Igenerators/symbian \
-I$(BUILD_PATH)/include -I$(BUILD_PATH)/include/QtCore \
-I$(SOURCE_PATH)/include -I$(SOURCE_PATH)/include/QtCore \
-I$(BUILD_PATH)/src/corelib/global \
+ -I$(BUILD_PATH)/src/corelib/xml \
-I$(SOURCE_PATH)/mkspecs/win32-g++ \
-DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NO_PCRE \
- -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -DUNICODE -DHAVE_QCONFIG_CPP \
- -DQT_BUILD_QMAKE -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM
+ -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -DUNICODE -DHAVE_QCONFIG_CPP \
+ -DQT_BUILD_QMAKE -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM \
+ -DQT_BOOTSTRAPPED
CXXFLAGS = $(CFLAGS)
LFLAGS =
LIBS = -lole32 -luuid
@@ -34,7 +37,8 @@ OBJS = project.o main.o makefile.o unixmake.o unixmake2.o mingw_make.o \
option.o winmakefile.o projectgenerator.o property.o meta.o \
makefiledeps.o metamakefile.o xmloutput.o pbuilder_pbx.o \
borland_bmake.o msvc_nmake.o msvc_dsp.o msvc_vcproj.o \
- msvc_objectmodel.o
+ msvc_objectmodel.o symmake.o initprojectdeploy_symbian.o \
+ symmake_abld.o symmake_sbsv2.o
ifdef QMAKE_OPENSOURCE_EDITION
CFLAGS += -DQMAKE_OPENSOURCE_EDITION
@@ -82,6 +86,8 @@ QTOBJS= \
qsettings_win.o \
qvariant.o \
qmetatype.o \
+ qxmlstream.o \
+ qxmlutils.o \
qnumeric.o
qmake.exe: $(OBJS) $(QTOBJS)
@@ -259,6 +265,18 @@ msvc_vcproj.o: $(SOURCE_PATH)/qmake/generators/win32/msvc_vcproj.cpp
msvc_objectmodel.o: $(SOURCE_PATH)/qmake/generators/win32/msvc_objectmodel.cpp
$(CXX) $(CXXFLAGS) generators/win32/msvc_objectmodel.cpp
+symmake.o: $(SOURCE_PATH)/qmake/generators/symbian/symmake.cpp
+ $(CXX) $(CXXFLAGS) generators/symbian/symmake.cpp
+
+symmake_abld.o: $(SOURCE_PATH)/qmake/generators/symbian/symmake_abld.cpp
+ $(CXX) $(CXXFLAGS) generators/symbian/symmake_abld.cpp
+
+symmake_sbsv2.o: $(SOURCE_PATH)/qmake/generators/symbian/symmake_sbsv2.cpp
+ $(CXX) $(CXXFLAGS) generators/symbian/symmake_sbsv2.cpp
+
+initprojectdeploy_symbian.o: $(SOURCE_PATH)/qmake/generators/symbian/initprojectdeploy_symbian.cpp
+ $(CXX) $(CXXFLAGS) generators/symbian/initprojectdeploy_symbian.cpp
+
project.o: $(SOURCE_PATH)/qmake/project.cpp $(SOURCE_PATH)/qmake/project.h $(SOURCE_PATH)/qmake/option.h
$(CXX) $(CXXFLAGS) project.cpp
@@ -288,3 +306,9 @@ metamakefile.o: $(SOURCE_PATH)/qmake/generators/metamakefile.cpp
xmloutput.o: $(SOURCE_PATH)/qmake/generators/xmloutput.cpp
$(CXX) $(CXXFLAGS) generators/xmloutput.cpp
+
+qxmlstream.o: $(SOURCE_PATH)/src/corelib/xml/qxmlstream.cpp
+ $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/xml/qxmlstream.cpp
+
+qxmlutils.o: $(SOURCE_PATH)/src/corelib/xml/qxmlutils.cpp
+ $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/xml/qxmlutils.cpp
diff --git a/qmake/generators/mac/pbuilder_pbx.cpp b/qmake/generators/mac/pbuilder_pbx.cpp
index 67b3a6f..16eb30a 100644
--- a/qmake/generators/mac/pbuilder_pbx.cpp
+++ b/qmake/generators/mac/pbuilder_pbx.cpp
@@ -156,7 +156,7 @@ ProjectBuilderMakefileGenerator::writeSubDirs(QTextStream &t)
QString profile = tmp;
if(!profile.endsWith(Option::dir_sep))
profile += Option::dir_sep;
- profile += fi.baseName() + ".pro";
+ profile += fi.baseName() + Option::pro_ext;
fi = QFileInfo(profile);
}
QMakeProject tmp_proj;
diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp
index bf0e6df..5d9178e 100644
--- a/qmake/generators/makefile.cpp
+++ b/qmake/generators/makefile.cpp
@@ -275,10 +275,12 @@ MakefileGenerator::initOutPaths()
int slash = path.lastIndexOf(Option::dir_sep);
if(slash != -1) {
path = path.left(slash);
- if(path != "." &&
- !mkdir(fileFixify(path, qmake_getpwd(), Option::output_dir)))
- warn_msg(WarnLogic, "%s: Cannot access directory '%s'",
- (*it).toLatin1().constData(), path.toLatin1().constData());
+ // Make out path only if it does not contain makefile variables
+ if(!path.contains("${"))
+ if(path != "." &&
+ !mkdir(fileFixify(path, qmake_getpwd(), Option::output_dir)))
+ warn_msg(WarnLogic, "%s: Cannot access directory '%s'",
+ (*it).toLatin1().constData(), path.toLatin1().constData());
}
}
}
@@ -1581,8 +1583,11 @@ MakefileGenerator::verifyExtraCompiler(const QString &comp, const QString &file_
if(project->values(comp + ".CONFIG").indexOf("moc_verify") != -1) {
if(!file.isNull()) {
QMakeSourceFileInfo::addSourceFile(file, QMakeSourceFileInfo::SEEK_MOCS);
- if(!mocable(file))
+ if(!mocable(file)) {
return false;
+ } else {
+ project->values("MOCABLES").append(file);
+ }
}
} else if(project->values(comp + ".CONFIG").indexOf("function_verify") != -1) {
QString tmp_out = project->values(comp + ".output").first();
@@ -1699,6 +1704,10 @@ MakefileGenerator::writeExtraTargets(QTextStream &t)
if(!cmd.isEmpty())
t << "\n\t" << cmd;
t << endl << endl;
+
+ project->values(QLatin1String("QMAKE_INTERNAL_ET_PARSED_TARGETS.") + (*it)) << escapeDependencyPath(targ);
+ project->values(QLatin1String("QMAKE_INTERNAL_ET_PARSED_DEPS.") + (*it) + escapeDependencyPath(targ)) << deps.split(" ", QString::SkipEmptyParts);
+ project->values(QLatin1String("QMAKE_INTERNAL_ET_PARSED_CMD.") + (*it) + escapeDependencyPath(targ)) << cmd;
}
}
@@ -1786,6 +1795,8 @@ MakefileGenerator::writeExtraCompilerTargets(QTextStream &t)
tmp_clean = tmp_out;
if(tmp_clean.indexOf("${QMAKE_") == -1) {
t << "\n\t" << "-$(DEL_FILE) " << tmp_clean;
+ if (isForSymbian())
+ t << " 2> NUL"; // Eliminate unnecessary warnings
wrote_clean = true;
}
if(!wrote_clean_cmds || !wrote_clean) {
@@ -1814,7 +1825,10 @@ MakefileGenerator::writeExtraCompilerTargets(QTextStream &t)
}
}
if(!cleans.isEmpty())
- t << valGlue(cleans, "\n\t" + del_statement, "\n\t" + del_statement, "");
+ if (isForSymbian())
+ t << valGlue(cleans, "\n\t" + del_statement, " 2> NUL\n\t" + del_statement, " 2> NUL");
+ else
+ t << valGlue(cleans, "\n\t" + del_statement, "\n\t" + del_statement, "");
if(!wrote_clean_cmds) {
for(QStringList::ConstIterator input = tmp_inputs.begin(); input != tmp_inputs.end(); ++input) {
t << "\n\t" << replaceExtraCompilerVariables(tmp_clean_cmds, (*input),
@@ -1889,15 +1903,28 @@ MakefileGenerator::writeExtraCompilerTargets(QTextStream &t)
if (inputs.isEmpty())
continue;
- QString cmd = replaceExtraCompilerVariables(tmp_cmd, escapeFilePaths(inputs), QStringList(tmp_out));
+ QString cmd;
+ if (isForSymbianSbsv2()) {
+ // In sbsv2 the command inputs and outputs need to use absolute paths
+ cmd = replaceExtraCompilerVariables(tmp_cmd,
+ fileFixify(escapeFilePaths(inputs), FileFixifyAbsolute),
+ fileFixify(QStringList(tmp_out), FileFixifyAbsolute));
+ } else {
+ cmd = replaceExtraCompilerVariables(tmp_cmd, escapeFilePaths(inputs), QStringList(tmp_out));
+ }
+
t << escapeDependencyPath(tmp_out) << ":";
+ project->values(QLatin1String("QMAKE_INTERNAL_ET_PARSED_TARGETS.") + (*it)) << escapeDependencyPath(tmp_out);
// compiler.CONFIG+=explicit_dependencies means that ONLY compiler.depends gets to cause Makefile dependencies
if(project->values((*it) + ".CONFIG").indexOf("explicit_dependencies") != -1) {
t << " " << valList(escapeDependencyPaths(fileFixify(tmp_dep, Option::output_dir, Option::output_dir)));
+ project->values(QLatin1String("QMAKE_INTERNAL_ET_PARSED_DEPS.") + (*it) + escapeDependencyPath(tmp_out)) << tmp_dep;
} else {
t << " " << valList(escapeDependencyPaths(inputs)) << " " << valList(escapeDependencyPaths(deps));
+ project->values(QLatin1String("QMAKE_INTERNAL_ET_PARSED_DEPS.") + (*it) + escapeDependencyPath(tmp_out)) << inputs << deps;
}
t << "\n\t" << cmd << endl << endl;
+ project->values(QLatin1String("QMAKE_INTERNAL_ET_PARSED_CMD.") + (*it) + escapeDependencyPath(tmp_out)) << cmd;
continue;
}
for(QStringList::ConstIterator input = tmp_inputs.begin(); input != tmp_inputs.end(); ++input) {
@@ -1912,6 +1939,14 @@ MakefileGenerator::writeExtraCompilerTargets(QTextStream &t)
}
QString cmd = replaceExtraCompilerVariables(tmp_cmd, (*input), out);
// NOTE: The var -> QMAKE_COMP_var replace feature is unsupported, do not use!
+ if (isForSymbianSbsv2()) {
+ // In sbsv2 the command inputs and outputs need to use absolute paths
+ cmd = replaceExtraCompilerVariables(tmp_cmd,
+ fileFixify((*input), FileFixifyAbsolute),
+ fileFixify(out, FileFixifyAbsolute));
+ } else {
+ cmd = replaceExtraCompilerVariables(tmp_cmd, (*input), out);
+ }
for(QStringList::ConstIterator it3 = vars.constBegin(); it3 != vars.constEnd(); ++it3)
cmd.replace("$(" + (*it3) + ")", "$(QMAKE_COMP_" + (*it3)+")");
if(!tmp_dep_cmd.isEmpty() && doDepends()) {
@@ -2001,6 +2036,9 @@ MakefileGenerator::writeExtraCompilerTargets(QTextStream &t)
}
t << escapeDependencyPath(out) << ": " << valList(escapeDependencyPaths(deps)) << "\n\t"
<< cmd << endl << endl;
+ project->values(QLatin1String("QMAKE_INTERNAL_ET_PARSED_TARGETS.") + (*it)) << escapeDependencyPath(out);
+ project->values(QLatin1String("QMAKE_INTERNAL_ET_PARSED_DEPS.") + (*it) + escapeDependencyPath(out)) << deps;
+ project->values(QLatin1String("QMAKE_INTERNAL_ET_PARSED_CMD.") + (*it) + escapeDependencyPath(out)) << cmd;
}
}
t << "compiler_clean: " << clean_targets << endl << endl;
@@ -2172,8 +2210,8 @@ MakefileGenerator::writeHeader(QTextStream &t)
t << endl;
}
-void
-MakefileGenerator::writeSubDirs(QTextStream &t)
+QList<MakefileGenerator::SubTarget*>
+MakefileGenerator::findSubDirsSubTargets() const
{
QList<SubTarget*> targets;
{
@@ -2270,6 +2308,13 @@ MakefileGenerator::writeSubDirs(QTextStream &t)
}
}
}
+ return targets;
+}
+
+void
+MakefileGenerator::writeSubDirs(QTextStream &t)
+{
+ QList<SubTarget*> targets = findSubDirsSubTargets();
t << "first: make_default" << endl;
int flags = SubTargetInstalls;
if(project->isActiveConfig("ordered"))
@@ -2286,39 +2331,43 @@ MakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::SubT
for(QStringList::Iterator qeui_it = qeui.begin(); qeui_it != qeui.end(); ++qeui_it)
t << "include " << (*qeui_it) << endl;
- QString ofile = Option::fixPathToTargetOS(Option::output.fileName());
- if(ofile.lastIndexOf(Option::dir_sep) != -1)
- ofile.remove(0, ofile.lastIndexOf(Option::dir_sep) +1);
- t << "MAKEFILE = " << ofile << endl;
- /* Calling Option::fixPathToTargetOS() is necessary for MinGW/MSYS, which requires
- * back-slashes to be turned into slashes. */
- t << "QMAKE = " << Option::fixPathToTargetOS(var("QMAKE_QMAKE")) << endl;
- t << "DEL_FILE = " << var("QMAKE_DEL_FILE") << endl;
- t << "CHK_DIR_EXISTS= " << var("QMAKE_CHK_DIR_EXISTS") << endl;
- t << "MKDIR = " << var("QMAKE_MKDIR") << endl;
- t << "COPY = " << var("QMAKE_COPY") << endl;
- t << "COPY_FILE = " << var("QMAKE_COPY_FILE") << endl;
- t << "COPY_DIR = " << var("QMAKE_COPY_DIR") << endl;
- t << "INSTALL_FILE = " << var("QMAKE_INSTALL_FILE") << endl;
- t << "INSTALL_PROGRAM = " << var("QMAKE_INSTALL_PROGRAM") << endl;
- t << "INSTALL_DIR = " << var("QMAKE_INSTALL_DIR") << endl;
- t << "DEL_FILE = " << var("QMAKE_DEL_FILE") << endl;
- t << "SYMLINK = " << var("QMAKE_SYMBOLIC_LINK") << endl;
- t << "DEL_DIR = " << var("QMAKE_DEL_DIR") << endl;
- t << "MOVE = " << var("QMAKE_MOVE") << endl;
- t << "CHK_DIR_EXISTS= " << var("QMAKE_CHK_DIR_EXISTS") << endl;
- t << "MKDIR = " << var("QMAKE_MKDIR") << endl;
+ if (!(flags & SubTargetSkipDefaultVariables)) {
+ QString ofile = Option::fixPathToTargetOS(Option::output.fileName());
+ if(ofile.lastIndexOf(Option::dir_sep) != -1)
+ ofile.remove(0, ofile.lastIndexOf(Option::dir_sep) +1);
+ t << "MAKEFILE = " << ofile << endl;
+ /* Calling Option::fixPathToTargetOS() is necessary for MinGW/MSYS, which requires
+ * back-slashes to be turned into slashes. */
+ t << "QMAKE = " << Option::fixPathToTargetOS(var("QMAKE_QMAKE")) << endl;
+ t << "DEL_FILE = " << var("QMAKE_DEL_FILE") << endl;
+ t << "CHK_DIR_EXISTS= " << var("QMAKE_CHK_DIR_EXISTS") << endl;
+ t << "MKDIR = " << var("QMAKE_MKDIR") << endl;
+ t << "COPY = " << var("QMAKE_COPY") << endl;
+ t << "COPY_FILE = " << var("QMAKE_COPY_FILE") << endl;
+ t << "COPY_DIR = " << var("QMAKE_COPY_DIR") << endl;
+ t << "INSTALL_FILE = " << var("QMAKE_INSTALL_FILE") << endl;
+ t << "INSTALL_PROGRAM = " << var("QMAKE_INSTALL_PROGRAM") << endl;
+ t << "INSTALL_DIR = " << var("QMAKE_INSTALL_DIR") << endl;
+ t << "DEL_FILE = " << var("QMAKE_DEL_FILE") << endl;
+ t << "SYMLINK = " << var("QMAKE_SYMBOLIC_LINK") << endl;
+ t << "DEL_DIR = " << var("QMAKE_DEL_DIR") << endl;
+ t << "MOVE = " << var("QMAKE_MOVE") << endl;
+ t << "CHK_DIR_EXISTS= " << var("QMAKE_CHK_DIR_EXISTS") << endl;
+ t << "MKDIR = " << var("QMAKE_MKDIR") << endl;
+ t << "SUBTARGETS = "; // subtargets are sub-directory
+ for(int target = 0; target < targets.size(); ++target)
+ t << " \\\n\t\t" << targets.at(target)->target;
+ t << endl << endl;
+ }
writeExtraVariables(t);
- t << "SUBTARGETS = "; // subtargets are sub-directory
- for(int target = 0; target < targets.size(); ++target)
- t << " \\\n\t\t" << targets.at(target)->target;
- t << endl << endl;
QStringList targetSuffixes;
const QString abs_source_path = project->first("QMAKE_ABSOLUTE_SOURCE_PATH");
- targetSuffixes << "make_default" << "make_first" << "all" << "clean" << "distclean"
- << QString((flags & SubTargetInstalls) ? "install_subtargets" : "install")
- << QString((flags & SubTargetInstalls) ? "uninstall_subtargets" : "uninstall");
+ if (!(flags & SubTargetSkipDefaultTargets)) {
+ targetSuffixes << "make_default" << "make_first" << "all" << "clean" << "distclean"
+ << QString((flags & SubTargetInstalls) ? "install_subtargets" : "install")
+ << QString((flags & SubTargetInstalls) ? "uninstall_subtargets" : "uninstall");
+ }
// generate target rules
for(int target = 0; target < targets.size(); ++target) {
@@ -2438,23 +2487,25 @@ MakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::SubT
}
t << endl;
- if(project->values("QMAKE_INTERNAL_QMAKE_DEPS").indexOf("qmake_all") == -1)
- project->values("QMAKE_INTERNAL_QMAKE_DEPS").append("qmake_all");
+ if (!(flags & SubTargetSkipDefaultTargets)) {
+ if(project->values("QMAKE_INTERNAL_QMAKE_DEPS").indexOf("qmake_all") == -1)
+ project->values("QMAKE_INTERNAL_QMAKE_DEPS").append("qmake_all");
- writeMakeQmake(t);
+ writeMakeQmake(t);
- t << "qmake_all:";
- if(!targets.isEmpty()) {
- for(QList<SubTarget*>::Iterator it = targets.begin(); it != targets.end(); ++it) {
- if(!(*it)->profile.isEmpty())
- t << " " << (*it)->target << "-" << "qmake_all";
+ t << "qmake_all:";
+ if(!targets.isEmpty()) {
+ for(QList<SubTarget*>::Iterator it = targets.begin(); it != targets.end(); ++it) {
+ if(!(*it)->profile.isEmpty())
+ t << " " << (*it)->target << "-" << "qmake_all";
+ }
}
+ if(project->isEmpty("QMAKE_NOFORCE"))
+ t << " FORCE";
+ if(project->isActiveConfig("no_empty_targets"))
+ t << "\n\t" << "@cd .";
+ t << endl << endl;
}
- if(project->isEmpty("QMAKE_NOFORCE"))
- t << " FORCE";
- if(project->isActiveConfig("no_empty_targets"))
- t << "\n\t" << "@cd .";
- t << endl << endl;
for(int s = 0; s < targetSuffixes.size(); ++s) {
QString suffix = targetSuffixes.at(s);
diff --git a/qmake/generators/makefile.h b/qmake/generators/makefile.h
index 0c1b5f1..2f33969 100644
--- a/qmake/generators/makefile.h
+++ b/qmake/generators/makefile.h
@@ -116,9 +116,12 @@ protected:
enum SubTargetFlags {
SubTargetInstalls=0x01,
SubTargetOrdered=0x02,
+ SubTargetSkipDefaultVariables=0x04,
+ SubTargetSkipDefaultTargets=0x08,
SubTargetsNoFlags=0x00
};
+ QList<MakefileGenerator::SubTarget*> findSubDirsSubTargets() const;
void writeSubTargets(QTextStream &t, QList<SubTarget*> subtargets, int flags);
//extra compiler interface
diff --git a/qmake/generators/metamakefile.cpp b/qmake/generators/metamakefile.cpp
index ee22805..229035a 100644
--- a/qmake/generators/metamakefile.cpp
+++ b/qmake/generators/metamakefile.cpp
@@ -60,8 +60,8 @@ MetaMakefileGenerator::~MetaMakefileGenerator()
class BuildsMetaMakefileGenerator : public MetaMakefileGenerator
{
- bool init_flag;
private:
+ bool init_flag;
struct Build {
QString name, build;
MakefileGenerator *makefile;
@@ -263,8 +263,8 @@ MakefileGenerator
class SubdirsMetaMakefileGenerator : public MetaMakefileGenerator
{
+protected:
bool init_flag;
-private:
struct Subdir {
Subdir() : makefile(0), indent(0) { }
~Subdir() { delete makefile; }
@@ -375,6 +375,7 @@ SubdirsMetaMakefileGenerator::init()
self->makefile = new BuildsMetaMakefileGenerator(project, name, false);
self->makefile->init();
subs.append(self);
+
return true;
}
@@ -418,6 +419,269 @@ SubdirsMetaMakefileGenerator::~SubdirsMetaMakefileGenerator()
subs.clear();
}
+class SymbianSubdirsMetaMakefileGenerator : public SubdirsMetaMakefileGenerator
+{
+public:
+ SymbianSubdirsMetaMakefileGenerator(QMakeProject *p, const QString &n, bool op) : SubdirsMetaMakefileGenerator(p, n, op) { }
+ virtual ~SymbianSubdirsMetaMakefileGenerator();
+
+ virtual bool init();
+ virtual bool write(const QString &);
+
+protected:
+
+ static QMap<QString, QString> mmpPaths;
+
+ static QMultiMap<QString, QString> mmpDependency;
+
+ static QStringList getDependencyList(QString mmpFilename, int recursionDepth);
+
+ static QStringList calculateRelativePaths(QString mmpParent, QStringList mmpChildren);
+
+private:
+ QString cleanFromSpecialCharacters(QString& str);
+};
+
+QMap<QString, QString> SymbianSubdirsMetaMakefileGenerator::mmpPaths;
+
+QMultiMap<QString, QString> SymbianSubdirsMetaMakefileGenerator::mmpDependency;
+
+QStringList SymbianSubdirsMetaMakefileGenerator::getDependencyList(QString mmpFilename, int recursionDepth)
+{
+ QStringList list;
+
+ QList<QString> values = mmpDependency.values(mmpFilename);
+ if (recursionDepth < 0) {
+ // special case; just first dependency level
+ list = values;
+ return list;
+ }
+ if (values.size() == 0) {
+ //reached recursion END condition
+ if (recursionDepth == 0) {
+ --recursionDepth;
+ return list; // empty list // no dependencies / return
+ } else {
+ list.append(mmpFilename);
+ recursionDepth--;
+ return list; // leaf // return
+ }
+ } else {
+ recursionDepth++;
+ for (int i = 0; i < values.size(); ++i) {
+ QString current = values.at(i);
+ QStringList tailList = getDependencyList(current, recursionDepth);
+ for (int j = 0; j < tailList.size(); ++j) {
+ QString path = tailList.at(j);
+ list.append(path);
+ }
+ }
+
+ if (recursionDepth > 0) {
+ //for mmp somewhere in middle
+ list.append(mmpFilename);
+ }
+ recursionDepth--;
+ return list;
+ }
+}
+
+SymbianSubdirsMetaMakefileGenerator::~SymbianSubdirsMetaMakefileGenerator() { }
+
+bool SymbianSubdirsMetaMakefileGenerator::write(const QString &oldpwd)
+{
+ return SubdirsMetaMakefileGenerator::write(oldpwd);
+}
+
+QString SymbianSubdirsMetaMakefileGenerator::cleanFromSpecialCharacters(QString& str)
+{
+ QString tmp = str;
+
+ tmp.replace(QString("/"), QString("_"));
+ tmp.replace(QString("\\"), QString("_"));
+ tmp.replace(QString("-"), QString("_"));
+ tmp.replace(QString(":"), QString("_"));
+ tmp.replace(QString("."), QString("_"));
+
+ return tmp;
+}
+
+bool SymbianSubdirsMetaMakefileGenerator::init()
+{
+ if (init_flag)
+ return false;
+
+ init_flag = true;
+
+ // If we are here then we have template == subdirs
+
+ Option::recursive = true;
+
+ if (Option::recursive) {
+ QString old_output_dir = QDir::cleanPath(Option::output_dir);
+ if (!old_output_dir.endsWith('/'))
+ old_output_dir += '/';
+ QString old_output = Option::output.fileName();
+ QString oldpwd = QDir::cleanPath(qmake_getpwd());
+
+ if (!oldpwd.endsWith('/'))
+ oldpwd += '/';
+
+ // find the parent mmp filename
+ int end = oldpwd.size() - 1;
+ int start = oldpwd.lastIndexOf("/", end - 2);
+ QString parentMmpFilename = oldpwd.mid(start + 1, end - start - 1);
+ parentMmpFilename.prepend(oldpwd);
+ parentMmpFilename = parentMmpFilename.append(Option::mmp_ext);
+
+
+ const QStringList &subdirs = project->values("SUBDIRS");
+ static int recurseDepth = -1;
+ ++recurseDepth;
+ for (int i = 0; i < subdirs.size(); ++i) {
+ Subdir *sub = new Subdir;
+ sub->indent = recurseDepth;
+
+ QFileInfo subdir(subdirs.at(i));
+ // childMmpFielname should be derived from subdirName
+ QString subdirName = subdirs.at(i);
+ if (!project->isEmpty(subdirs.at(i) + ".file"))
+ subdir = project->first(subdirs.at(i) + ".file");
+ else if (!project->isEmpty(subdirs.at(i) + ".subdir"))
+ subdir = project->first(subdirs.at(i) + ".subdir");
+ QString sub_name;
+
+ QString childMmpFilename;
+
+ if (subdir.isDir()) {
+ subdir = QFileInfo(subdir.filePath() + "/" + subdir.fileName() + Option::pro_ext);
+ childMmpFilename = subdir.fileName();
+ childMmpFilename = subdir.absoluteFilePath();
+ childMmpFilename.replace(Option::pro_ext, QString(""));
+ childMmpFilename.append(Option::mmp_ext);
+ } else {
+ childMmpFilename = subdir.absoluteFilePath();
+ childMmpFilename.replace(Option::pro_ext, Option::mmp_ext);
+ sub_name = childMmpFilename;
+ sub_name.replace(Option::mmp_ext, QString(""));
+ sub_name.replace(0, sub_name.lastIndexOf("/") + 1, QString(""));
+ project->values("SHADOW_BLD_INFS").append(QString("bld.inf.") + sub_name);
+ }
+
+ //handle sub project
+ QMakeProject *sub_proj = new QMakeProject(project->properties());
+ for (int ind = 0; ind < sub->indent; ++ind)
+ printf(" ");
+ sub->input_dir = subdir.absolutePath();
+ if (subdir.isRelative() && old_output_dir != oldpwd) {
+ sub->output_dir = old_output_dir + "/" + subdir.path();
+ printf("Reading %s [%s]\n", subdir.absoluteFilePath().toLatin1().constData(), sub->output_dir.toLatin1().constData());
+ } else {
+ sub->output_dir = sub->input_dir;
+ printf("Reading %s\n", subdir.absoluteFilePath().toLatin1().constData());
+ }
+
+ // find the child mmp filename
+ qmake_setpwd(sub->input_dir);
+
+ QString newpwd = qmake_getpwd();
+
+ Option::output_dir = sub->output_dir;
+ if (Option::output_dir.at(Option::output_dir.length() - 1) != QLatin1Char('/'))
+ Option::output_dir += QLatin1Char('/');
+ sub_proj->read(subdir.fileName());
+ if (!sub_proj->variables()["QMAKE_FAILED_REQUIREMENTS"].isEmpty()) {
+ fprintf(stderr, "Project file(%s) not recursed because all requirements not met:\n\t%s\n",
+ subdir.fileName().toLatin1().constData(),
+ sub_proj->values("QMAKE_FAILED_REQUIREMENTS").join(" ").toLatin1().constData());
+ delete sub;
+ delete sub_proj;
+ //continue;
+ } else {
+ // map mmpfile to its absolut filepath
+ mmpPaths.insert(childMmpFilename, newpwd);
+
+ // update mmp files dependency map
+ mmpDependency.insert(parentMmpFilename, childMmpFilename);
+
+ sub->makefile = MetaMakefileGenerator::createMetaGenerator(sub_proj, sub_name);
+ if (0 && sub->makefile->type() == SUBDIRSMETATYPE) {
+ subs.append(sub);
+ } else {
+ const QString output_name = Option::output.fileName();
+ Option::output.setFileName(sub->output_file);
+ sub->makefile->write(sub->output_dir);
+ delete sub;
+ qmakeClearCaches();
+ sub = 0;
+ Option::output.setFileName(output_name);
+ }
+ }
+
+ Option::output_dir = old_output_dir;
+ qmake_setpwd(oldpwd);
+
+ }
+ --recurseDepth;
+ Option::output.setFileName(old_output);
+ Option::output_dir = old_output_dir;
+ qmake_setpwd(oldpwd);
+ }
+
+ Subdir *self = new Subdir;
+ self->input_dir = qmake_getpwd();
+
+ // To fully expand find all dependencies:
+ // Do as recursion, then insert result as subdirs data in project
+ QString newpwd = qmake_getpwd();
+ if (!newpwd.endsWith('/'))
+ newpwd += '/';
+ int end = newpwd.size() - 1;
+ int start = newpwd.lastIndexOf("/", end - 2);
+ QString mmpFilename = newpwd.mid(start + 1, end - start - 1);
+ mmpFilename.prepend(newpwd);
+ mmpFilename = mmpFilename.append(Option::mmp_ext);
+
+ // map mmpfile to its absolute filepath
+ mmpPaths.insert(mmpFilename, newpwd);
+
+ QStringList directDependencyList = getDependencyList(mmpFilename, -1);
+ for (int i = 0; i < directDependencyList.size(); ++i) {
+ project->values("MMPFILES_DIRECT_DEPENDS").append(directDependencyList.at(i));
+ }
+
+ QStringList dependencyList = getDependencyList(mmpFilename, 0);
+
+ self->output_dir = Option::output_dir;
+ if (!Option::recursive || (!Option::output.fileName().endsWith(Option::dir_sep) && !QFileInfo(Option::output).isDir()))
+ self->output_file = Option::output.fileName();
+ self->makefile = new BuildsMetaMakefileGenerator(project, name, false);
+ self->makefile->init();
+ subs.append(self);
+
+ return true;
+}
+
+QStringList SymbianSubdirsMetaMakefileGenerator::calculateRelativePaths(QString mmpParent, QStringList mmpChildren)
+{
+ QStringList mmpRelativePaths;
+ QString parentDir = mmpPaths.value(mmpParent);
+ QDir directory(parentDir);
+ for (int i = 0; i < mmpChildren.size(); ++i) {
+ QString childDir = mmpPaths.value(mmpChildren.at(i));
+ if (mmpChildren.at(i) == mmpParent)
+ mmpRelativePaths.append(mmpChildren.at(i));
+ else {
+ QString relativePath = directory.relativeFilePath(childDir);
+ if (relativePath.startsWith(".."))
+ mmpRelativePaths.append(childDir);
+ else
+ directory.relativeFilePath(relativePath);
+ }
+ }
+ return mmpRelativePaths;
+}
+
//Factory things
QT_BEGIN_INCLUDE_NAMESPACE
#include "unixmake.h"
@@ -428,6 +692,8 @@ QT_BEGIN_INCLUDE_NAMESPACE
#include "borland_bmake.h"
#include "msvc_dsp.h"
#include "msvc_vcproj.h"
+#include "symmake_abld.h"
+#include "symmake_sbsv2.h"
QT_END_INCLUDE_NAMESPACE
MakefileGenerator *
@@ -464,6 +730,10 @@ MetaMakefileGenerator::createMakefileGenerator(QMakeProject *proj, bool noIO)
mkfile = new NmakeMakefileGenerator;
} else if(gen == "BMAKE") {
mkfile = new BorlandMakefileGenerator;
+ } else if(gen == "SYMBIAN_ABLD") {
+ mkfile = new SymbianAbldMakefileGenerator;
+ } else if(gen == "SYMBIAN_SBSV2") {
+ mkfile = new SymbianSbsv2MakefileGenerator;
} else {
fprintf(stderr, "Unknown generator specified: %s\n", gen.toLatin1().constData());
}
@@ -478,12 +748,15 @@ MetaMakefileGenerator *
MetaMakefileGenerator::createMetaGenerator(QMakeProject *proj, const QString &name, bool op)
{
MetaMakefileGenerator *ret = 0;
- if((Option::qmake_mode == Option::QMAKE_GENERATE_MAKEFILE ||
- Option::qmake_mode == Option::QMAKE_GENERATE_PRL)) {
- if(proj->first("TEMPLATE").endsWith("subdirs"))
+ if ((Option::qmake_mode == Option::QMAKE_GENERATE_MAKEFILE ||
+ Option::qmake_mode == Option::QMAKE_GENERATE_PRL)) {
+ if (proj->first("MAKEFILE_GENERATOR").startsWith("SYMBIAN") && proj->values("TEMPLATE").contains("subdirs")) {
+ // new metamakefilegenerator type to support subdirs for symbian related projects
+ ret = new SymbianSubdirsMetaMakefileGenerator(proj, name, op);
+ } else if (proj->first("TEMPLATE").endsWith("subdirs"))
ret = new SubdirsMetaMakefileGenerator(proj, name, op);
}
- if(!ret)
+ if (!ret)
ret = new BuildsMetaMakefileGenerator(proj, name, op);
ret->init();
return ret;
diff --git a/qmake/generators/symbian/epocroot.h b/qmake/generators/symbian/epocroot.h
new file mode 100644
index 0000000..02884b1
--- /dev/null
+++ b/qmake/generators/symbian/epocroot.h
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the qmake application of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://www.qtsoftware.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef EPOCROOT_H
+#define EPOCROOT_H
+
+#include <qstring.h>
+
+// Implementation of epocRoot method is in initprojectdeploy_symbian.cpp
+// Defined in separate header for inclusion clarity
+extern QString epocRoot();
+
+#endif // EPOCROOT_H
diff --git a/qmake/generators/symbian/initprojectdeploy_symbian.cpp b/qmake/generators/symbian/initprojectdeploy_symbian.cpp
new file mode 100644
index 0000000..e903fc1
--- /dev/null
+++ b/qmake/generators/symbian/initprojectdeploy_symbian.cpp
@@ -0,0 +1,380 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the qmake application of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "initprojectdeploy_symbian.h"
+#include <QDirIterator>
+#include <project.h>
+#include <qxmlstream.h>
+#include <qsettings.h>
+#include <qdebug.h>
+
+#define PLUGIN_STUB_DIR "qmakepluginstubs"
+#define SYSBIN_DIR "\\sys\\bin"
+
+#define SUFFIX_DLL "dll"
+#define SUFFIX_EXE "exe"
+#define SUFFIX_QTPLUGIN "qtplugin"
+
+static void fixEpocRootStr(QString& path)
+{
+ path.replace("\\", "/");
+
+ if (path.size() > 1 && path[1] == QChar(':')) {
+ path = path.mid(2);
+ }
+
+ if (!path.size() || path[path.size()-1] != QChar('/')) {
+ path += QChar('/');
+ }
+}
+
+#define SYMBIAN_SDKS_KEY "HKEY_LOCAL_MACHINE\\Software\\Symbian\\EPOC SDKs"
+
+static QString epocRootStr;
+
+QString epocRoot()
+{
+ if (!epocRootStr.isEmpty()) {
+ return epocRootStr;
+ }
+
+ // First, check the env variable
+ epocRootStr = qgetenv("EPOCROOT");
+
+ if (epocRootStr.isEmpty()) {
+ // No EPOCROOT set, check the default device
+ // First check EPOCDEVICE env variable
+ QString defaultDevice = qgetenv("EPOCDEVICE");
+
+ // Check the windows registry via QSettings for devices.xml path
+ QSettings settings(SYMBIAN_SDKS_KEY, QSettings::NativeFormat);
+ QString devicesXmlPath = settings.value("CommonPath").toString();
+
+ if (!devicesXmlPath.isEmpty()) {
+ // Parse xml for correct device
+ devicesXmlPath += "/devices.xml";
+ QFile devicesFile(devicesXmlPath);
+ if (devicesFile.open(QIODevice::ReadOnly)) {
+ QXmlStreamReader xml(&devicesFile);
+ while (!xml.atEnd()) {
+ xml.readNext();
+ if (xml.isStartElement() && xml.name() == "devices") {
+ if (xml.attributes().value("version") == "1.0") {
+ // Look for correct device
+ while (!(xml.isEndElement() && xml.name() == "devices") && !xml.atEnd()) {
+ xml.readNext();
+ if (xml.isStartElement() && xml.name() == "device") {
+ if ((defaultDevice.isEmpty() && xml.attributes().value("default") == "yes") ||
+ (!defaultDevice.isEmpty() && (xml.attributes().value("id").toString() + QString(":") + xml.attributes().value("name").toString()) == defaultDevice)) {
+ // Found the correct device
+ while (!(xml.isEndElement() && xml.name() == "device") && !xml.atEnd()) {
+ xml.readNext();
+ if (xml.isStartElement() && xml.name() == "epocroot") {
+ epocRootStr = xml.readElementText();
+ fixEpocRootStr(epocRootStr);
+ return epocRootStr;
+ }
+ }
+ xml.raiseError("No epocroot element found");
+ }
+ }
+ }
+ } else {
+ xml.raiseError("Invalid 'devices' element version");
+ }
+ }
+ }
+ if (xml.hasError()) {
+ fprintf(stderr, "ERROR: \"%s\" when parsing devices.xml\n", qPrintable(xml.errorString()));
+ }
+ } else {
+ fprintf(stderr, "Could not open devices.xml (%s)\n", qPrintable(devicesXmlPath));
+ }
+ } else {
+ fprintf(stderr, "Could not retrieve " SYMBIAN_SDKS_KEY " setting\n");
+ }
+
+ fprintf(stderr, "Failed to determine epoc root.\n");
+ if (!defaultDevice.isEmpty())
+ fprintf(stderr, "The device indicated by EPOCDEVICE environment variable (%s) could not be found.\n", qPrintable(defaultDevice));
+ fprintf(stderr, "Either set EPOCROOT or EPOCDEVICE environment variable to a valid value, or provide a default Symbian device.\n");
+
+ // No valid device found; set epocroot to "/"
+ epocRootStr = QLatin1String("/");
+ }
+
+ fixEpocRootStr(epocRootStr);
+ return epocRootStr;
+}
+
+
+static bool isPlugin(const QFileInfo& info, const QString& devicePath)
+{
+ // Libraries are plugins if deployment path is something else than
+ // SYSBIN_DIR with or without drive letter
+ if (0 == info.suffix().compare(QLatin1String(SUFFIX_DLL), Qt::CaseInsensitive) &&
+ (devicePath.size() < 8 ||
+ (0 != devicePath.compare(QLatin1String(SYSBIN_DIR), Qt::CaseInsensitive) &&
+ 0 != devicePath.mid(1).compare(QLatin1String(":" SYSBIN_DIR), Qt::CaseInsensitive)))) {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+static bool isBinary(const QFileInfo& info)
+{
+ if (0 == info.suffix().compare(QLatin1String(SUFFIX_DLL), Qt::CaseInsensitive) ||
+ 0 == info.suffix().compare(QLatin1String(SUFFIX_EXE), Qt::CaseInsensitive)) {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+static void createPluginStub(const QFileInfo& info,
+ const QString& devicePath,
+ DeploymentList &deploymentList,
+ QStringList& generatedDirs,
+ QStringList& generatedFiles)
+{
+ QDir().mkpath(QLatin1String(PLUGIN_STUB_DIR "\\"));
+ if (!generatedDirs.contains(PLUGIN_STUB_DIR))
+ generatedDirs << PLUGIN_STUB_DIR;
+ // Plugin stubs must have different name from the actual plugins, because
+ // the toolchain for creating ROM images cannot handle non-binary .dll files properly.
+ QFile stubFile(QLatin1String(PLUGIN_STUB_DIR "\\") + info.completeBaseName() + "." SUFFIX_QTPLUGIN);
+ if (stubFile.open(QIODevice::WriteOnly)) {
+ if (!generatedFiles.contains(stubFile.fileName()))
+ generatedFiles << stubFile.fileName();
+ QTextStream t(&stubFile);
+ // Add note to stub so that people will not wonder what it is.
+ // Creation date is added to make new stub to deploy always to
+ // force plugin cache miss when loading plugins.
+ t << "This file is a Qt plugin stub file. The real Qt plugin is located in " SYSBIN_DIR ". Created:" << QDateTime::currentDateTime().toString(Qt::ISODate) << "\n";
+ } else {
+ fprintf(stderr, "cannot deploy \"%s\" because of plugin stub file creation failed\n", info.fileName().toLatin1().constData());
+ }
+ QFileInfo stubInfo(stubFile);
+ deploymentList.append(CopyItem(Option::fixPathToLocalOS(stubInfo.absoluteFilePath()),
+ Option::fixPathToLocalOS(devicePath + "\\" + stubInfo.fileName())));
+}
+
+QString generate_uid(const QString& target)
+{
+ static QMap<QString, QString> targetToUid;
+
+ QString tmp = targetToUid[target];
+
+ if (!tmp.isEmpty()) {
+ return tmp;
+ }
+
+ unsigned long hash = 5381;
+ int c;
+
+ for (int i = 0; i < target.size(); ++i) {
+ c = target.at(i).toAscii();
+ hash ^= c + ((c - i) << i % 20) + ((c + i) << (i + 5) % 20) + ((c - 2 * i) << (i + 10) % 20) + ((c + 2 * i) << (i + 15) % 20);
+ }
+
+ tmp.setNum(hash, 16);
+ for (int i = tmp.size(); i < 8; ++i)
+ tmp.prepend("0");
+
+ targetToUid[target] = tmp;
+
+ return tmp;
+}
+
+// UIDs starting with 0xE are test UIDs in symbian
+QString generate_test_uid(const QString& target)
+{
+ QString tmp = generate_uid(target);
+ tmp.replace(0, 1, "E");
+ tmp.prepend("0x");
+
+ return tmp;
+}
+
+
+void initProjectDeploySymbian(QMakeProject* project,
+ DeploymentList &deploymentList,
+ const QString &testPath,
+ bool deployBinaries,
+ const QString &platform,
+ const QString &build,
+ QStringList& generatedDirs,
+ QStringList& generatedFiles)
+{
+ QString targetPath = project->values("deploy.path").join(" ");
+ if (targetPath.isEmpty())
+ targetPath = testPath;
+ if (targetPath.endsWith("/") || targetPath.endsWith("\\"))
+ targetPath = targetPath.mid(0, targetPath.size() - 1);
+
+ bool targetPathHasDriveLetter = false;
+ if (targetPath.size() > 1) {
+ targetPathHasDriveLetter = targetPath.at(1) == QLatin1Char(':');
+ }
+ QString deploymentDrive = targetPathHasDriveLetter ? targetPath.left(2) : QLatin1String("c:");
+
+ foreach(QString item, project->values("DEPLOYMENT")) {
+ QString devicePath = project->first(item + ".path");
+ if (!deployBinaries
+ && !devicePath.isEmpty()
+ && (0 == devicePath.compare(project->values("APP_RESOURCE_DIR").join(""), Qt::CaseInsensitive)
+ || 0 == devicePath.compare(project->values("REG_RESOURCE_IMPORT_DIR").join(""), Qt::CaseInsensitive))) {
+ // Do not deploy resources in emulator builds, as that seems to cause conflicts
+ // If there is ever a real need to deploy pre-built resources for emulator,
+ // BLD_INF_RULES.prj_exports can be used as a workaround.
+ continue;
+ }
+
+ bool devicePathHasDriveLetter = false;
+ if (devicePath.size() > 1) {
+ devicePathHasDriveLetter = devicePath.at(1) == QLatin1Char(':');
+ }
+
+ if (devicePath.isEmpty() || devicePath == QLatin1String(".")) {
+ devicePath = targetPath;
+ }
+ // check if item.path is relative (! either / or \)
+ else if (!(devicePath.at(0) == QLatin1Char('/')
+ || devicePath.at(0) == QLatin1Char('\\')
+ || devicePathHasDriveLetter)) {
+ // create output path
+ devicePath = Option::fixPathToLocalOS(QDir::cleanPath(targetPath + QLatin1Char('\\') + devicePath));
+ } else {
+ if (0 == platform.compare(QLatin1String("winscw"), Qt::CaseInsensitive)) {
+ if (devicePathHasDriveLetter) {
+ devicePath = epocRoot() + "epoc32\\winscw\\" + devicePath.remove(1, 1);
+ } else {
+ devicePath = epocRoot() + "epoc32\\winscw\\c" + devicePath;
+ }
+ } else {
+ // Drive letter needed if targetpath contains one and it is not already in
+ if (targetPathHasDriveLetter && !devicePathHasDriveLetter) {
+ devicePath = deploymentDrive + devicePath;
+ }
+ }
+ }
+
+ devicePath.replace(QLatin1String("/"), QLatin1String("\\"));
+
+ if (!deployBinaries &&
+ 0 == devicePath.right(8).compare(QLatin1String(SYSBIN_DIR), Qt::CaseInsensitive)) {
+ // Skip deploying to SYSBIN_DIR for anything but binary deployments
+ // Note: Deploying pre-built binaries also follow this rule, so emulator builds
+ // will not get those deployed. Since there is no way to differentiate currently
+ // between pre-built binaries for emulator and HW anyway, this is not a major issue.
+ continue;
+ }
+
+ foreach(QString source, project->values(item + ".sources")) {
+ source = Option::fixPathToLocalOS(source);
+ QString nameFilter;
+ QFileInfo info(source);
+ QString searchPath;
+ bool dirSearch = false;
+
+ if (info.isDir()) {
+ nameFilter = QLatin1String("*");
+ searchPath = info.absoluteFilePath();
+ dirSearch = true;
+ } else {
+ if (info.exists() || source.indexOf('*') != -1) {
+ nameFilter = source.split('\\').last();
+ searchPath = info.absolutePath();
+ } else {
+ // Entry was not found. That is ok if it is a binary, since those do not necessarily yet exist.
+ // Dlls need to be processed even when not deploying binaries for the stubs
+ if (isBinary(info)) {
+ if (deployBinaries) {
+ // Executables and libraries are deployed to \sys\bin
+ QFileInfo releasePath(epocRoot() + "epoc32\\release\\" + platform + "\\" + build + "\\");
+ deploymentList.append(CopyItem(Option::fixPathToLocalOS(releasePath.absolutePath() + "\\" + info.fileName()),
+ Option::fixPathToLocalOS(deploymentDrive + QLatin1String(SYSBIN_DIR "\\") + info.fileName())));
+ }
+ if (isPlugin(info, devicePath)) {
+ createPluginStub(info, devicePath, deploymentList, generatedDirs, generatedFiles);
+ continue;
+ }
+ } else {
+ // Generate deployment even if file doesn't exist, as this may be the case
+ // when generating .pkg files.
+ deploymentList.append(CopyItem(Option::fixPathToLocalOS(info.absoluteFilePath()),
+ Option::fixPathToLocalOS(devicePath + "\\" + info.fileName())));
+ continue;
+ }
+ }
+ }
+
+ int pathSize = info.absolutePath().size();
+ QDirIterator iterator(searchPath, QStringList() << nameFilter
+ , QDir::Files | QDir::NoDotAndDotDot | QDir::NoSymLinks
+ , dirSearch ? QDirIterator::Subdirectories : QDirIterator::NoIteratorFlags);
+
+ while (iterator.hasNext()) {
+ iterator.next();
+ QFileInfo iteratorInfo(iterator.filePath());
+ QString absoluteItemPath = Option::fixPathToLocalOS(iteratorInfo.absolutePath());
+ int diffSize = absoluteItemPath.size() - pathSize;
+
+ if (!iteratorInfo.isDir()) {
+ if (isPlugin(iterator.fileInfo(), devicePath)) {
+ // This deploys pre-built plugins. Other pre-built binaries will deploy normally,
+ // as they have SYSBIN_DIR target path.
+ if (deployBinaries) {
+ deploymentList.append(CopyItem(Option::fixPathToLocalOS(absoluteItemPath + "\\" + iterator.fileName()),
+ Option::fixPathToLocalOS(deploymentDrive + QLatin1String(SYSBIN_DIR "\\") + iterator.fileName())));
+ }
+ createPluginStub(info, devicePath + "\\" + absoluteItemPath.right(diffSize), deploymentList, generatedDirs, generatedFiles);
+ continue;
+ } else {
+ deploymentList.append(CopyItem(Option::fixPathToLocalOS(absoluteItemPath + "\\" + iterator.fileName()),
+ Option::fixPathToLocalOS(devicePath + "\\" + absoluteItemPath.right(diffSize) + "\\" + iterator.fileName())));
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/qmake/generators/symbian/initprojectdeploy_symbian.h b/qmake/generators/symbian/initprojectdeploy_symbian.h
new file mode 100644
index 0000000..029a897
--- /dev/null
+++ b/qmake/generators/symbian/initprojectdeploy_symbian.h
@@ -0,0 +1,75 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the qmake application of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef INITPROJECTDEPLOYSYMBIAN_H
+#define INITPROJECTDEPLOYSYMBIAN_H
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qdatetime.h>
+#include <option.h>
+#include <qdir.h>
+#include <qfile.h>
+#include <stdlib.h>
+
+#include "epocroot.h"
+
+struct CopyItem
+{
+ CopyItem(const QString& f, const QString& t) : from(f) , to(t) { }
+ QString from;
+ QString to;
+};
+typedef QList<CopyItem> DeploymentList;
+
+extern QString generate_uid(const QString& target);
+extern QString generate_test_uid(const QString& target);
+
+extern void initProjectDeploySymbian(QMakeProject* project,
+ DeploymentList &deploymentList,
+ const QString &testPath,
+ bool deployBinaries,
+ const QString &platform,
+ const QString &build,
+ QStringList& generatedDirs,
+ QStringList& generatedFiles);
+
+#endif // INITPROJECTDEPLOYSYMBIAN_H
diff --git a/qmake/generators/symbian/symmake.cpp b/qmake/generators/symbian/symmake.cpp
new file mode 100644
index 0000000..c20ecf3
--- /dev/null
+++ b/qmake/generators/symbian/symmake.cpp
@@ -0,0 +1,1691 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the qmake application of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "symmake.h"
+#include "initprojectdeploy_symbian.h"
+
+#include <qstring.h>
+#include <qhash.h>
+#include <qstringlist.h>
+#include <qdir.h>
+#include <qdatetime.h>
+#include <stdlib.h>
+#include <qdebug.h>
+
+#define RESOURCE_DIRECTORY_MMP "/resource/apps"
+#define RESOURCE_DIRECTORY_RESOURCE "\\\\resource\\\\apps\\\\"
+#define REGISTRATION_RESOURCE_DIRECTORY_HW "/private/10003a3f/import/apps"
+#define PLUGIN_COMMON_DEF_FILE_FOR_MMP "./plugin_common.def"
+#define PLUGIN_COMMON_DEF_FILE_ACTUAL "plugin_commonU.def"
+#define BLD_INF_FILENAME_LEN (sizeof(BLD_INF_FILENAME) - 1)
+
+#define BLD_INF_RULES_BASE "BLD_INF_RULES."
+#define BLD_INF_TAG_PLATFORMS "prj_platforms"
+#define BLD_INF_TAG_MMPFILES "prj_mmpfiles"
+#define BLD_INF_TAG_TESTMMPFILES "prj_testmmpfiles"
+#define BLD_INF_TAG_EXTENSIONS "prj_extensions"
+
+#define RSS_RULES "RSS_RULES"
+#define RSS_RULES_BASE "RSS_RULES."
+#define RSS_TAG_NBROFICONS "number_of_icons"
+#define RSS_TAG_ICONFILE "icon_file"
+
+#define MMP_TARGET "TARGET"
+#define MMP_TARGETTYPE "TARGETTYPE"
+#define MMP_SECUREID "SECUREID"
+
+#define PRINT_FILE_CREATE_ERROR(filename) fprintf(stderr, "Error: Could not create '%s'\n", qPrintable(filename));
+
+QString SymbianMakefileGenerator::fixPathForMmp(const QString& origPath, const QDir& parentDir)
+{
+ static QString epocRootStr;
+ if (epocRootStr.isEmpty()) {
+ QFileInfo efi(epocRoot());
+ epocRootStr = efi.canonicalFilePath();
+ if (epocRootStr.isEmpty()) {
+ fprintf(stderr, "Unable to resolve epocRoot '%s' to real dir on current drive, defaulting to '/' for mmp paths\n", qPrintable(epocRoot()));
+ epocRootStr = "/";
+ }
+ if (!epocRootStr.endsWith("/"))
+ epocRootStr += "/";
+
+ epocRootStr += "epoc32/";
+ }
+
+ QString resultPath = origPath;
+
+ // Make it relative, unless it starts with "%epocroot%/epoc32/"
+ if (resultPath.startsWith(epocRootStr, Qt::CaseInsensitive)) {
+ resultPath.replace(epocRootStr, "/epoc32/", Qt::CaseInsensitive);
+ } else {
+ resultPath = parentDir.relativeFilePath(resultPath);
+ }
+ resultPath = QDir::cleanPath(resultPath);
+
+ if (resultPath.isEmpty())
+ resultPath = ".";
+
+ return resultPath;
+}
+
+QString SymbianMakefileGenerator::canonizePath(const QString& origPath)
+{
+ // Since current path gets appended almost always anyway, use it as default
+ // for nonexisting paths.
+ static QString defaultPath;
+ if (defaultPath.isEmpty()) {
+ QFileInfo fi(".");
+ defaultPath = fi.canonicalFilePath();
+ }
+
+ // Prepend epocroot to any paths beginning with "/epoc32/"
+ QString resultPath = QDir::fromNativeSeparators(origPath);
+ if (resultPath.startsWith("/epoc32/", Qt::CaseInsensitive))
+ resultPath = QDir::fromNativeSeparators(epocRoot()) + resultPath.mid(1);
+
+ QFileInfo fi(fileInfo(resultPath));
+ if (fi.isDir()) {
+ resultPath = fi.canonicalFilePath();
+ } else {
+ resultPath = fi.canonicalPath();
+ }
+
+ resultPath = QDir::cleanPath(resultPath);
+
+ if (resultPath.isEmpty())
+ resultPath = defaultPath;
+
+ return resultPath;
+}
+
+SymbianMakefileGenerator::SymbianMakefileGenerator() : MakefileGenerator() { }
+SymbianMakefileGenerator::~SymbianMakefileGenerator() { }
+
+void SymbianMakefileGenerator::writeHeader(QTextStream &t)
+{
+ t << "// ============================================================================" << endl;
+ t << "// * Makefile for building: " << escapeFilePath(var("TARGET")) << endl;
+ t << "// * Generated by qmake (" << qmake_version() << ") (Qt " << QT_VERSION_STR << ") on: ";
+ t << QDateTime::currentDateTime().toString(Qt::ISODate) << endl;
+ t << "// * This file is generated by qmake and should not be modified by the" << endl;
+ t << "// * user." << endl;
+ t << "// * Project: " << fileFixify(project->projectFile()) << endl;
+ t << "// * Template: " << var("TEMPLATE") << endl;
+ t << "// ============================================================================" << endl;
+ t << endl;
+
+ // Defining define for bld.inf
+
+ QString shortProFilename = project->projectFile();
+ shortProFilename.replace(0, shortProFilename.lastIndexOf("/") + 1, QString(""));
+ shortProFilename.replace(Option::pro_ext, QString(""));
+
+ QString bldinfDefine = shortProFilename;
+ bldinfDefine.append("_");
+ bldinfDefine.append(generate_uid(project->projectFile()));
+
+ bldinfDefine.prepend("BLD_INF_");
+ removeSpecialCharacters(bldinfDefine);
+
+ t << "#define " << bldinfDefine.toUpper() << endl << endl;
+}
+
+bool SymbianMakefileGenerator::writeMakefile(QTextStream &t)
+{
+ writeHeader(t);
+
+ QString numberOfIcons;
+ QString iconFile;
+ QStringList userRssRules;
+ readRssRules(numberOfIcons, iconFile, userRssRules);
+
+ // Get the application translations and convert to symbian OS lang code, i.e. decical number
+ QStringList symbianLangCodes = symbianLangCodesFromTsFiles();
+
+ // Generate pkg files if there are any actual files to deploy
+ bool generatePkg = false;
+ if (targetType == TypeExe) {
+ generatePkg = true;
+ } else {
+ foreach(QString item, project->values("DEPLOYMENT")) {
+ if (!project->values(item + ".sources").isEmpty()) {
+ generatePkg = true;
+ break;
+ }
+ }
+ }
+
+ if (generatePkg) {
+ QStringList platformList = project->values("SYMBIAN_PLATFORMS");
+ foreach(QString platform, platformList) {
+ if (platform.compare("WINSCW", Qt::CaseInsensitive)) {
+ generatePkgFile(platform.toLower(), "udeb", iconFile);
+ generatePkgFile(platform.toLower(), "urel", iconFile);
+ }
+ }
+ }
+
+ writeBldInfContent(t, generatePkg);
+
+ // Generate empty wrapper makefile here, because wrapper makefile must exist before writeMkFile,
+ // but all required data is not yet available.
+ bool isPrimaryMakefile = true;
+ QString wrapperFileName("Makefile");
+ QString outputFileName = fileInfo(Option::output.fileName()).fileName();
+ if (outputFileName != BLD_INF_FILENAME) {
+ wrapperFileName.append(".").append((outputFileName.size() > BLD_INF_FILENAME_LEN && outputFileName.left(BLD_INF_FILENAME_LEN) == BLD_INF_FILENAME) ? outputFileName.mid(8) : outputFileName);
+ isPrimaryMakefile = false;
+ }
+
+ QFile wrapperMakefile(wrapperFileName);
+ if (wrapperMakefile.open(QIODevice::WriteOnly)) {
+ generatedFiles << wrapperFileName;
+ } else {
+ PRINT_FILE_CREATE_ERROR(wrapperFileName);
+ return false;
+ }
+
+ if (targetType == TypeSubdirs) {
+ // If we have something to deploy, generate extension makefile for just that, since
+ // normal extension makefile is not getting generated and we need emulator deployment to be done.
+ if (generatePkg)
+ writeMkFile(wrapperFileName, true);
+ writeWrapperMakefile(wrapperMakefile, isPrimaryMakefile);
+ return true;
+ }
+
+ writeMkFile(wrapperFileName, false);
+
+ QString shortProFilename = project->projectFile();
+ shortProFilename.replace(0, shortProFilename.lastIndexOf("/") + 1, QString(""));
+ shortProFilename.replace(Option::pro_ext, QString(""));
+
+ QString mmpFilename = shortProFilename;
+ mmpFilename.append("_");
+ mmpFilename.append(uid3);
+ mmpFilename.append(Option::mmp_ext);
+ writeMmpFile(mmpFilename, symbianLangCodes);
+
+ if (targetType == TypeExe) {
+ if (!project->values("CONFIG").contains("no_icon", Qt::CaseInsensitive)) {
+ writeRegRssFile(fixedTarget, userRssRules);
+ writeRssFile(fixedTarget, numberOfIcons, iconFile);
+ writeLocFile(fixedTarget, symbianLangCodes);
+ }
+ }
+
+ writeCustomDefFile();
+ writeWrapperMakefile(wrapperMakefile, isPrimaryMakefile);
+
+ return true;
+}
+
+void SymbianMakefileGenerator::generatePkgFile(const QString &compiler, const QString &config, const QString &iconFile)
+{
+ QString build = (config == "udeb") ? "debug" : "release";
+ QString pkgFilename = QString("%1_%2-%3.%4")
+ .arg(fileInfo(project->projectFile()).completeBaseName())
+ .arg(build)
+ .arg(compiler)
+ .arg("pkg");
+ QFile pkgFile(pkgFilename);
+ if (!pkgFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
+ PRINT_FILE_CREATE_ERROR(pkgFilename);
+ return;
+ }
+
+ generatedFiles << pkgFile.fileName();
+
+ // Header info
+ QTextStream t(&pkgFile);
+ t << QString("; %1 generated by qmake at %2").arg(pkgFilename).arg(QDateTime::currentDateTime().toString(Qt::ISODate)) << endl;
+ t << "; This file is generated by qmake and should not be modified by the user" << endl;
+ t << ";" << endl << endl;
+
+ // Construct QStringList from pkg_prerules since we need search it before printed to file
+ QStringList rawPkgPreRules;
+ foreach(QString deploymentItem, project->values("DEPLOYMENT")) {
+ foreach(QString pkgrulesItem, project->values(deploymentItem + ".pkg_prerules")) {
+ QStringList pkgrulesValue = project->values(pkgrulesItem);
+ // If there is no stringlist defined for a rule, use rule name directly
+ // This is convenience for defining single line mmp statements
+ if (pkgrulesValue.isEmpty()) {
+ rawPkgPreRules << pkgrulesItem;
+ } else {
+ foreach(QString pkgrule, pkgrulesValue) {
+ rawPkgPreRules << pkgrule;
+ }
+ }
+ }
+ }
+
+ // Apply some defaults if specific data does not exist in PKG pre-rules
+
+ if (!containsStartWithItem('&', rawPkgPreRules)) {
+ // language, (*** hardcoded to english atm, should be parsed from TRANSLATIONS)
+ t << "; Language" << endl;
+ t << "&EN" << endl << endl;
+ } else {
+ // In case user defines langs, he must take care also about SIS header
+ if (!containsStartWithItem('#', rawPkgPreRules))
+ fprintf(stderr, "Warning: If language is defined with DEPLOYMENT pkg_prerules, also the SIS header must be defined\n");
+ }
+
+ // name of application, UID and version
+ QString applicationVersion = project->first("VERSION").isEmpty() ? "1,0,0" : project->first("VERSION").replace('.', ',');
+
+ if (!containsStartWithItem('#', rawPkgPreRules)) {
+ t << "; SIS header: name, uid, version" << endl;
+ t << QString("#{\"%1\"},(%2),%3").arg(fixedTarget).arg(uid3).arg(applicationVersion) << endl << endl;
+ }
+
+ // Localized vendor name
+ if (!containsStartWithItem('%', rawPkgPreRules)) {
+ t << "; Localised Vendor name" << endl;
+ t << "%{\"Vendor\"}" << endl << endl;
+ }
+
+ // Unique vendor name
+ if (!containsStartWithItem(':', rawPkgPreRules)) {
+ t << "; Unique Vendor name" << endl;
+ t << ":\"Vendor\"" << endl << endl;
+ }
+
+ // PKG pre-rules - these are added before actual file installations i.e. SISX package body
+ if (rawPkgPreRules.size()) {
+ t << "; Manual PKG pre-rules from PRO files" << endl;
+ foreach(QString item, rawPkgPreRules) {
+ t << item << endl;
+ }
+ t << endl;
+ }
+
+ // Install paths on the phone *** should be dynamic at some point
+ QString installPathBin = "!:\\sys\\bin";
+ QString installPathResource = "!:\\resource\\apps";
+ QString installPathRegResource = "!:\\private\\10003a3f\\import\\apps";
+
+ // Find location of builds
+ QString epocReleasePath = QString("%1epoc32/release/%2/%3")
+ .arg(epocRoot())
+ .arg(compiler)
+ .arg(config);
+
+
+ if (targetType == TypeExe) {
+ // deploy .exe file
+ t << "; Executable and default resource files" << endl;
+ QString exeFile = fixedTarget + ".exe";
+ t << QString("\"%1/%2\" - \"%3\\%4\"")
+ .arg(epocReleasePath)
+ .arg(exeFile)
+ .arg(installPathBin)
+ .arg(exeFile) << endl;
+
+ // deploy rsc & reg_rsc file
+ if (!project->values("CONFIG").contains("no_icon", Qt::CaseInsensitive)) {
+ t << QString("\"%1epoc32/data/z/resource/apps/%2\" - \"%3\\%4\"")
+ .arg(epocRoot())
+ .arg(fixedTarget + ".rsc")
+ .arg(installPathResource)
+ .arg(fixedTarget + ".rsc") << endl;
+
+ t << QString("\"%1epoc32/data/z/private/10003a3f/import/apps/%2\" - \"%3\\%4\"")
+ .arg(epocRoot())
+ .arg(fixedTarget + "_reg.rsc")
+ .arg(installPathRegResource)
+ .arg(fixedTarget + "_reg.rsc") << endl;
+
+ QString myIconFile = iconFile;
+ myIconFile = myIconFile.replace("\\\\", "\\");
+
+ if (!iconFile.isEmpty()) {
+ t << QString("\"%1epoc32/data/z%2\" - \"!:%3\"")
+ .arg(epocRoot())
+ .arg(QString(myIconFile).replace('\\','/'))
+ .arg(myIconFile) << endl << endl;
+ }
+ }
+ }
+
+ // deploy any additional DEPLOYMENT files
+ DeploymentList depList;
+ QString remoteTestPath;
+ remoteTestPath = QString("!:\\private\\%1").arg(privateDirUid);
+
+ initProjectDeploySymbian(project, depList, remoteTestPath, true, compiler, config, generatedDirs, generatedFiles);
+ if (depList.size())
+ t << "; DEPLOYMENT" << endl;
+ for (int i = 0; i < depList.size(); ++i) {
+ t << QString("\"%1\" - \"%2\"")
+ .arg(QString(depList.at(i).from).replace('\\','/'))
+ .arg(depList.at(i).to) << endl;
+ }
+ t << endl;
+
+ // PKG post-rules - these are added after actual file installations i.e. SIS package body
+ t << "; Manual PKG post-rules from PRO files" << endl;
+ foreach(QString deploymentItem, project->values("DEPLOYMENT")) {
+ foreach(QString pkgrulesItem, project->values(deploymentItem + ".pkg_postrules")) {
+ QStringList pkgrulesValue = project->values(pkgrulesItem);
+ // If there is no stringlist defined for a rule, use rule name directly
+ // This is convenience for defining single line statements
+ if (pkgrulesValue.isEmpty()) {
+ t << pkgrulesItem << endl;
+ } else {
+ foreach(QString pkgrule, pkgrulesValue) {
+ t << pkgrule << endl;
+ }
+ }
+ t << endl;
+ }
+ }
+}
+
+bool SymbianMakefileGenerator::containsStartWithItem(const QChar &c, const QStringList& src)
+{
+ bool result = false;
+ foreach(QString str, src) {
+ if (str.startsWith(c)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+}
+
+void SymbianMakefileGenerator::writeCustomDefFile()
+{
+ if (targetType == TypePlugin && !project->values("CONFIG").contains("stdbinary", Qt::CaseInsensitive)) {
+ // Create custom def file for plugin
+ QFile ft(QLatin1String(PLUGIN_COMMON_DEF_FILE_ACTUAL));
+
+ if (ft.open(QIODevice::WriteOnly)) {
+ generatedFiles << ft.fileName();
+ QTextStream t(&ft);
+
+ t << "; ==============================================================================" << endl;
+ t << "; Generated by qmake (" << qmake_version() << ") (Qt " << QT_VERSION_STR << ") on: ";
+ t << QDateTime::currentDateTime().toString(Qt::ISODate) << endl;
+ t << "; This file is generated by qmake and should not be modified by the" << endl;
+ t << "; user." << endl;
+ t << "; Name : " PLUGIN_COMMON_DEF_FILE_ACTUAL << endl;
+ t << "; Part of : " << project->values("TARGET").join(" ") << endl;
+ t << "; Description : Fixes common plugin symbols to known ordinals" << endl;
+ t << "; Version : " << endl;
+ t << ";" << endl;
+ t << "; ==============================================================================" << "\n" << endl;
+
+ t << endl;
+
+ t << "EXPORTS" << endl;
+ t << "\tqt_plugin_query_verification_data @ 1 NONAME" << endl;
+ t << "\tqt_plugin_instance @ 2 NONAME" << endl;
+ t << endl;
+ } else {
+ PRINT_FILE_CREATE_ERROR(QString(PLUGIN_COMMON_DEF_FILE_ACTUAL))
+ }
+ }
+}
+
+void SymbianMakefileGenerator::init()
+{
+ MakefileGenerator::init();
+ fixedTarget = escapeFilePath(fileFixify(project->first("TARGET")));
+ fixedTarget = removePathSeparators(fixedTarget);
+
+ if (0 != project->values("QMAKE_PLATFORM").size())
+ platform = varGlue("QMAKE_PLATFORM", "", " ", "");
+
+ if (0 == project->values("QMAKESPEC").size())
+ project->values("QMAKESPEC").append(qgetenv("QMAKESPEC"));
+
+ project->values("QMAKE_LIBS") += escapeFilePaths(project->values("LIBS"));
+ project->values("QMAKE_LIBS_PRIVATE") += escapeFilePaths(project->values("LIBS_PRIVATE"));
+
+ // bld.inf
+ project->values("MAKEFILE") += BLD_INF_FILENAME;
+
+ // .mmp
+ initMmpVariables();
+
+ // Check TARGET.UID3 presence
+ if (0 != project->values("TARGET.UID3").size()) {
+ uid3 = project->first("TARGET.UID3");
+ } else {
+ uid3 = generateUID3();
+ }
+
+ if ((project->values("TEMPLATE")).contains("app"))
+ targetType = TypeExe;
+ else if ((project->values("TEMPLATE")).contains("lib")) {
+ // Check CONFIG to see if we are to build staticlib or dll
+ if (project->values("CONFIG").contains("staticlib") || project->values("CONFIG").contains("static"))
+ targetType = TypeLib;
+ else if (project->values("CONFIG").contains("plugin"))
+ targetType = TypePlugin;
+ else
+ targetType = TypeDll;
+ } else {
+ targetType = TypeSubdirs;
+ }
+
+ if (0 != project->values("TARGET.UID2").size()) {
+ uid2 = project->first("TARGET.UID2");
+ } else if (project->values("CONFIG").contains("stdbinary", Qt::CaseInsensitive)) {
+ uid2 = "0x20004C45";
+ } else {
+ if (targetType == TypeExe) {
+ if (project->values("QT").contains("gui", Qt::CaseInsensitive)) {
+ // exe and gui -> uid2 needed
+ uid2 = "0x100039CE";
+ } else {
+ // exe but not gui: uid2 is ignored anyway -> set it to 0
+ uid2 = "0";
+ }
+ } else if (targetType == TypeDll || targetType == TypeLib || targetType == TypePlugin) {
+ uid2 = "0x1000008d";
+ }
+ }
+
+ uid2 = uid2.trimmed();
+ uid3 = uid3.trimmed();
+
+ // UID is valid as either hex or decimal, so just convert it to number and back to hex
+ // to get proper string for private dir
+ bool conversionOk = false;
+ uint uidNum = uid3.toUInt(&conversionOk, 0);
+
+ if (!conversionOk) {
+ fprintf(stderr, "Error: Invalid UID \"%s\".\n", uid3.toUtf8().constData());
+ } else {
+ privateDirUid.setNum(uidNum, 16);
+ while (privateDirUid.length() < 8)
+ privateDirUid.insert(0, QLatin1Char('0'));
+ }
+}
+
+QString SymbianMakefileGenerator::getTargetExtension()
+{
+ QString ret;
+ if (targetType == TypeExe) {
+ ret.append("exe");
+ } else if (targetType == TypeLib) {
+ ret.append("lib");
+ } else if (targetType == TypeDll || targetType == TypePlugin) {
+ ret.append("dll");
+ } else if (targetType == TypeSubdirs) {
+ // Not actually usable, so return empty
+ } else {
+ // If nothing else set, default to exe
+ ret.append("exe");
+ }
+
+ return ret;
+}
+
+QString SymbianMakefileGenerator::generateUID3()
+{
+ QString target = project->first("TARGET");
+ QString currPath = qmake_getpwd();
+ target.prepend("/").prepend(currPath);
+ return generate_test_uid(target);
+}
+
+void SymbianMakefileGenerator::initMmpVariables()
+{
+ QStringList sysincspaths;
+ QStringList srcincpaths;
+ QStringList srcpaths;
+
+ srcpaths << project->values("SOURCES") << project->values("GENERATED_SOURCES");
+ srcpaths << project->values("UNUSED_SOURCES") << project->values("UI_SOURCES_DIR");
+ srcpaths << project->values("UI_DIR");
+
+ QDir current = QDir::current();
+ QString canonizedCurrent = canonizePath(".");
+
+ for (int j = 0; j < srcpaths.size(); ++j) {
+ QFileInfo fi(fileInfo(srcpaths.at(j)));
+ // Sometimes sources have other than *.c* files (e.g. *.moc); prune them.
+ if (fi.suffix().startsWith("c")) {
+ if (fi.filePath().length() > fi.fileName().length()) {
+ appendIfnotExist(srcincpaths, fi.path());
+ sources[canonizePath(fi.path())] += fi.fileName();
+ } else {
+ sources[canonizedCurrent] += fi.fileName();
+ appendIfnotExist(srcincpaths, canonizedCurrent);
+ }
+ }
+ }
+
+ QStringList incpaths;
+ incpaths << project->values("INCLUDEPATH");
+ incpaths << QLibraryInfo::location(QLibraryInfo::HeadersPath);
+ incpaths << project->values("HEADERS");
+ incpaths << srcincpaths;
+ incpaths << project->values("UI_HEADERS_DIR");
+ incpaths << project->values("UI_DIR");
+
+ QString epocPath("epoc32");
+ for (int j = 0; j < incpaths.size(); ++j) {
+ QString includepath = canonizePath(incpaths.at(j));
+ appendIfnotExist(sysincspaths, includepath);
+ // As a workaround for Symbian toolchain insistence to treat include
+ // statements as relative to source file rather than the file they appear in,
+ // we generate extra temporary include directories to make
+ // relative include paths used in various headers to work properly.
+ // Note that this is not a fix-all solution; it's just a stop-gap measure
+ // to make Qt itself build until toolchain can support relative includes in
+ // a way that Qt expects.
+ if (!includepath.contains(epocPath)) // No temp dirs for epoc includes
+ appendIfnotExist(sysincspaths, includepath + QString("/" QT_EXTRA_INCLUDE_DIR));
+ }
+
+ // Remove duplicate include path entries
+ QStringList temporary;
+ for (int i = 0; i < sysincspaths.size(); ++i) {
+ QString origPath = sysincspaths.at(i);
+ QFileInfo origPathInfo(fileInfo(origPath));
+ bool bFound = false;
+
+ for (int j = 0; j < temporary.size(); ++j) {
+ QString tmpPath = temporary.at(j);
+ QFileInfo tmpPathInfo(fileInfo(tmpPath));
+
+ if (origPathInfo.absoluteFilePath() == tmpPathInfo.absoluteFilePath()) {
+ bFound = true;
+ if (!tmpPathInfo.isRelative() && origPathInfo.isRelative()) {
+ // We keep the relative notation
+ temporary.removeOne(tmpPath);
+ temporary << origPath;
+ }
+ }
+ }
+
+ if (!bFound)
+ temporary << origPath;
+
+ }
+
+ sysincspaths.clear();
+ sysincspaths << temporary;
+
+ systeminclude.insert("SYSTEMINCLUDE", sysincspaths);
+}
+
+bool SymbianMakefileGenerator::removeDuplicatedStrings(QStringList& stringList)
+{
+ QStringList tmpStringList;
+
+ for (int i = 0; i < stringList.size(); ++i) {
+ QString string = stringList.at(i);
+ if (tmpStringList.contains(string))
+ continue;
+ else
+ tmpStringList.append(string);
+ }
+
+ stringList.clear();
+ stringList = tmpStringList;
+ return true;
+}
+
+void SymbianMakefileGenerator::writeMmpFileHeader(QTextStream &t)
+{
+ t << "// ==============================================================================" << endl;
+ t << "// Generated by qmake (" << qmake_version() << ") (Qt " << QT_VERSION_STR << ") on: ";
+ t << QDateTime::currentDateTime().toString(Qt::ISODate) << endl;
+ t << "// This file is generated by qmake and should not be modified by the" << endl;
+ t << "// user." << endl;
+ t << "// Name : " << escapeFilePath(fileFixify(project->projectFile().remove(project->projectFile().length() - 4, 4))) << Option::mmp_ext << endl;
+ t << "// ==============================================================================" << endl << endl;
+}
+
+void SymbianMakefileGenerator::writeMmpFile(QString &filename, QStringList &symbianLangCodes)
+{
+ QFile ft(filename);
+ if (ft.open(QIODevice::WriteOnly)) {
+ generatedFiles << ft.fileName();
+
+ QTextStream t(&ft);
+
+ writeMmpFileHeader(t);
+
+ writeMmpFileTargetPart(t);
+
+ writeMmpFileResourcePart(t, symbianLangCodes);
+
+ writeMmpFileMacrosPart(t);
+
+ writeMmpFileIncludePart(t);
+
+ QDir current = QDir::current();
+
+ for (QMap<QString, QStringList>::iterator it = sources.begin(); it != sources.end(); ++it) {
+ QStringList values = it.value();
+ QString currentSourcePath = it.key();
+
+ if (values.size())
+ t << "SOURCEPATH \t" << fixPathForMmp(currentSourcePath, current) << endl;
+
+ for (int i = 0; i < values.size(); ++i) {
+ QString sourceFileName = values.at(i);
+ t << "SOURCE\t\t" << sourceFileName << endl;
+ }
+ t << endl;
+ }
+ t << endl;
+
+ if (!project->values("CONFIG").contains("static") && !project->values("CONFIG").contains("staticlib")) {
+ writeMmpFileLibraryPart(t);
+ }
+
+ writeMmpFileCapabilityPart(t);
+
+ writeMmpFileCompilerOptionPart(t);
+
+ writeMmpFileBinaryVersionPart(t);
+
+ writeMmpFileRulesPart(t);
+ } else {
+ PRINT_FILE_CREATE_ERROR(filename)
+ }
+}
+
+void SymbianMakefileGenerator::writeMmpFileMacrosPart(QTextStream& t)
+{
+ t << endl;
+
+ QStringList &defines = project->values("DEFINES");
+ if (defines.size())
+ t << "// Qt Macros" << endl;
+ for (int i = 0; i < defines.size(); ++i) {
+ QString def = defines.at(i);
+ addMacro(t, def);
+ }
+
+ // These are required in order that all methods will be correctly exported e.g from qtestlib
+ QStringList &exp_defines = project->values("PRL_EXPORT_DEFINES");
+ if (exp_defines.size())
+ t << endl << "// Qt Export Defines" << endl;
+ for (int i = 0; i < exp_defines.size(); ++i) {
+ QString def = exp_defines.at(i);
+ addMacro(t, def);
+ }
+
+ t << endl;
+}
+
+void SymbianMakefileGenerator::addMacro(QTextStream& t, const QString& value)
+{
+ t << "MACRO" << "\t\t" << value << endl;
+}
+
+
+void SymbianMakefileGenerator::writeMmpFileTargetPart(QTextStream& t)
+{
+ if (targetType == TypeExe) {
+ t << MMP_TARGET << "\t\t" << fixedTarget << ".exe" << endl;
+ if (project->values("CONFIG").contains("stdbinary", Qt::CaseInsensitive))
+ t << MMP_TARGETTYPE << "\t\t" << "STDEXE" << endl;
+ else
+ t << MMP_TARGETTYPE << "\t\t" << "EXE" << endl;
+ } else if (targetType == TypeDll || targetType == TypePlugin) {
+ t << MMP_TARGET << "\t\t" << fixedTarget << ".dll" << endl;
+ if (project->values("CONFIG").contains("stdbinary", Qt::CaseInsensitive))
+ t << MMP_TARGETTYPE << "\t\t" << "STDDLL" << endl;
+ else
+ t << MMP_TARGETTYPE << "\t\t" << "DLL" << endl;
+ } else if (targetType == TypeLib) {
+ t << MMP_TARGET << "\t\t" << fixedTarget << ".lib" << endl;
+ if (project->values("CONFIG").contains("stdbinary", Qt::CaseInsensitive))
+ t << MMP_TARGETTYPE << "\t\t" << "STDLIB" << endl;
+ else
+ t << MMP_TARGETTYPE << "\t\t" << "LIB" << endl;
+ } else {
+ fprintf(stderr, "Error: Unexpected targettype (%d) in SymbianMakefileGenerator::writeMmpFileTargetPart\n", targetType);
+ }
+
+ t << endl;
+
+ t << "UID" << "\t\t" << uid2 << " " << uid3 << endl;
+
+ if (0 != project->values("TARGET.SID").size()) {
+ t << MMP_SECUREID << "\t\t" << project->values("TARGET.SID").join(" ") << endl;
+ } else {
+ if (0 == uid3.size())
+ t << MMP_SECUREID << "\t\t" << "0" << endl;
+ else
+ t << MMP_SECUREID << "\t\t" << uid3 << endl;
+ }
+
+ // default value used from mkspecs is 0
+ if (0 != project->values("TARGET.VID").size()) {
+ t << "VENDORID" << "\t\t" << project->values("TARGET.VID").join(" ") << endl;
+ }
+
+ t << endl;
+
+ if (0 != project->first("TARGET.EPOCSTACKSIZE").size())
+ t << "EPOCSTACKSIZE" << "\t\t" << project->first("TARGET.EPOCSTACKSIZE") << endl;
+ if (0 != project->values("TARGET.EPOCHEAPSIZE").size())
+ t << "EPOCHEAPSIZE" << "\t\t" << project->values("TARGET.EPOCHEAPSIZE").join(" ") << endl;
+ if (0 != project->values("TARGET.EPOCALLOWDLLDATA").size())
+ t << "EPOCALLOWDLLDATA" << endl;
+
+ if (targetType == TypePlugin && !project->values("CONFIG").contains("stdbinary", Qt::CaseInsensitive)) {
+ // Use custom def file for Qt plugins
+ t << "DEFFILE " PLUGIN_COMMON_DEF_FILE_FOR_MMP << endl;
+ }
+
+ t << endl;
+}
+
+
+/*
+ Application registration resource files should be installed to the
+ \private\10003a3f\import\apps directory.
+*/
+void SymbianMakefileGenerator::writeMmpFileResourcePart(QTextStream& t, QStringList &symbianLangCodes)
+{
+ if ((targetType == TypeExe) &&
+ !project->values("CONFIG").contains("no_icon", Qt::CaseInsensitive)) {
+
+ QString locTarget = fixedTarget;
+ locTarget.append(".rss");
+
+ t << "SOURCEPATH\t\t\t. " << endl;
+ t << "LANG SC "; // no endl
+ foreach(QString lang, symbianLangCodes) {
+ t << lang << " "; // no endl
+ }
+ t << endl;
+ t << "START RESOURCE\t\t" << locTarget << endl;
+ t << "HEADER" << endl;
+ t << "TARGETPATH\t\t\t" RESOURCE_DIRECTORY_MMP << endl;
+ t << "END" << endl << endl;
+
+ QString regTarget = fixedTarget;
+ regTarget.append("_reg.rss");
+
+ t << "SOURCEPATH\t\t\t." << endl;
+ t << "START RESOURCE\t\t" << regTarget << endl;
+ if (isForSymbianSbsv2())
+ t << "DEPENDS " << fixedTarget << ".rsg" << endl;
+ t << "TARGETPATH\t\t" REGISTRATION_RESOURCE_DIRECTORY_HW << endl;
+ t << "END" << endl << endl;
+ }
+}
+
+void SymbianMakefileGenerator::writeMmpFileSystemIncludePart(QTextStream& t)
+{
+ QDir current = QDir::current();
+
+ for (QMap<QString, QStringList>::iterator it = systeminclude.begin(); it != systeminclude.end(); ++it) {
+ QStringList values = it.value();
+ for (int i = 0; i < values.size(); ++i) {
+ QString handledPath = values.at(i);
+ t << "SYSTEMINCLUDE" << "\t\t" << fixPathForMmp(handledPath, current) << endl;
+ }
+ }
+
+ t << endl;
+}
+
+void SymbianMakefileGenerator::writeMmpFileIncludePart(QTextStream& t)
+{
+ writeMmpFileSystemIncludePart(t);
+}
+
+void SymbianMakefileGenerator::writeMmpFileLibraryPart(QTextStream& t)
+{
+ QStringList &libs = project->values("LIBS");
+ libs << project->values("QMAKE_LIBS") << project->values("QMAKE_LIBS_PRIVATE");
+
+ removeDuplicatedStrings(libs);
+
+ for (int i = 0; i < libs.size(); ++i) {
+ QString lib = libs.at(i);
+ // The -L flag is uninteresting, since all symbian libraries exist in the same directory.
+ if (lib.startsWith("-l")) {
+ lib.remove(0, 2);
+ QString mmpStatement;
+ if (lib.endsWith(".dll")) {
+ lib.chop(4);
+ mmpStatement = "LIBRARY\t\t";
+ } else if (lib.endsWith(".lib")) {
+ lib.chop(4);
+ mmpStatement = "STATICLIBRARY\t";
+ } else {
+ // Hacky way to find out what kind of library it is. Check the
+ // ARMV5 build directory for library type. We default to shared
+ // library, since that is more common.
+ QString udebStaticLibLocation(epocRoot());
+ QString urelStaticLibLocation(udebStaticLibLocation);
+ udebStaticLibLocation += QString("epoc32/release/armv5/udeb/%1.lib").arg(lib);
+ urelStaticLibLocation += QString("epoc32/release/armv5/urel/%1.lib").arg(lib);
+ if (QFile::exists(udebStaticLibLocation) || QFile::exists(urelStaticLibLocation)) {
+ mmpStatement = "STATICLIBRARY\t";
+ } else {
+ mmpStatement = "LIBRARY\t\t";
+ }
+ }
+ t << mmpStatement << lib << ".lib" << endl;
+ }
+ }
+
+ t << endl;
+}
+
+void SymbianMakefileGenerator::writeMmpFileCapabilityPart(QTextStream& t)
+{
+ if (0 != project->first("TARGET.CAPABILITY").size()) {
+ QStringList &capabilities = project->values("TARGET.CAPABILITY");
+ t << "CAPABILITY" << "\t\t";
+
+ for (int i = 0; i < capabilities.size(); ++i) {
+ QString cap = capabilities.at(i);
+ t << cap << " ";
+ }
+ } else {
+ t << "CAPABILITY" << "\t\t" << "None";
+ }
+ t << endl << endl;
+}
+
+void SymbianMakefileGenerator::writeMmpFileCompilerOptionPart(QTextStream& t)
+{
+ QString cw, armcc;
+
+ if (0 != project->values("QMAKE_CXXFLAGS.CW").size()) {
+ cw.append(project->values("QMAKE_CXXFLAGS.CW").join(" "));
+ cw.append(" ");
+ }
+
+ if (0 != project->values("QMAKE_CXXFLAGS.ARMCC").size()) {
+ armcc.append(project->values("QMAKE_CXXFLAGS.ARMCC").join(" "));
+ armcc.append(" ");
+ }
+
+ if (0 != project->values("QMAKE_CFLAGS.CW").size()) {
+ cw.append(project->values("QMAKE_CFLAGS.CW").join(" "));
+ cw.append(" ");
+ }
+
+ if (0 != project->values("QMAKE_CFLAGS.ARMCC").size()) {
+ armcc.append(project->values("QMAKE_CFLAGS.ARMCC").join(" "));
+ armcc.append(" ");
+ }
+
+ if (0 != project->values("QMAKE_CXXFLAGS").size()) {
+ cw.append(project->values("QMAKE_CXXFLAGS").join(" "));
+ cw.append(" ");
+ armcc.append(project->values("QMAKE_CXXFLAGS").join(" "));
+ armcc.append(" ");
+ }
+
+ if (0 != project->values("QMAKE_CFLAGS").size()) {
+ cw.append(project->values("QMAKE_CFLAGS").join(" "));
+ cw.append(" ");
+ armcc.append(project->values("QMAKE_CFLAGS").join(" "));
+ armcc.append(" ");
+ }
+
+ if (!cw.isEmpty() && cw[cw.size()-1] == ' ')
+ cw.chop(1);
+ if (!armcc.isEmpty() && armcc[armcc.size()-1] == ' ')
+ armcc.chop(1);
+
+ if (!cw.isEmpty())
+ t << "OPTION" << '\t' << " CW " << cw << endl;
+ if (!armcc.isEmpty())
+ t << "OPTION" << '\t' << " ARMCC " << armcc << endl;
+
+ t << endl;
+}
+
+void SymbianMakefileGenerator::writeMmpFileBinaryVersionPart(QTextStream& t)
+{
+ QString applicationVersion = project->first("VERSION");
+ QStringList verNumList = applicationVersion.split('.');
+ uint major = 0;
+ uint minor = 0;
+ uint patch = 0;
+ bool success = false;
+
+ if (verNumList.size() > 0) {
+ major = verNumList[0].toUInt(&success);
+ if (success && verNumList.size() > 1) {
+ minor = verNumList[1].toUInt(&success);
+ if (success && verNumList.size() > 2) {
+ patch = verNumList[2].toUInt(&success);
+ }
+ }
+ }
+
+ QString mmpVersion;
+ if (success && major <= 0xFFFF && minor <= 0xFF && patch <= 0xFF) {
+ // Symbian binary version only has major and minor components, so compress
+ // Qt's minor and patch values into the minor component. Since Symbian's minor
+ // component is a 16 bit value, only allow 8 bits for each to avoid overflow.
+ mmpVersion.append(QString::number(major))
+ .append('.')
+ .append(QString::number((minor << 8) + patch));
+ } else {
+ if (!applicationVersion.isEmpty())
+ fprintf(stderr, "Invalid VERSION string: %s\n", qPrintable(applicationVersion));
+ mmpVersion = "10.0"; // Default binary version for symbian is 10.0
+ }
+
+ t << "VERSION " << mmpVersion << endl;
+}
+
+void SymbianMakefileGenerator::writeMmpFileRulesPart(QTextStream& t)
+{
+ foreach(QString item, project->values("MMP_RULES")) {
+ t << endl;
+ // If there is no stringlist defined for a rule, use rule name directly
+ // This is convenience for defining single line mmp statements
+ if (project->values(item).isEmpty()) {
+ t << item << endl;
+ } else {
+ foreach(QString itemRow, project->values(item)) {
+ t << itemRow << endl;
+ }
+ }
+ }
+}
+
+void SymbianMakefileGenerator::writeBldInfContent(QTextStream &t, bool addDeploymentExtension)
+{
+ // Read user defined bld inf rules
+ QMap<QString, QStringList> userBldInfRules;
+ for (QMap<QString, QStringList>::iterator it = project->variables().begin(); it != project->variables().end(); ++it) {
+ if (it.key().startsWith(BLD_INF_RULES_BASE)) {
+ QString newKey = it.key().mid(sizeof(BLD_INF_RULES_BASE) - 1);
+ if (newKey.isEmpty()) {
+ fprintf(stderr, "Warning: Empty BLD_INF_RULES key encountered\n");
+ continue;
+ }
+ QStringList newValues;
+ QStringList values = it.value();
+ foreach(QString item, values) {
+ // If there is no stringlist defined for a rule, use rule name directly
+ // This is convenience for defining single line statements
+ if (project->values(item).isEmpty()) {
+ newValues << item;
+ } else {
+ foreach(QString itemRow, project->values(item)) {
+ newValues << itemRow;
+ }
+ }
+ }
+ userBldInfRules.insert(newKey, newValues);
+ }
+ }
+
+ // Add includes of subdirs bld.inf files
+
+ QString mmpfilename = escapeFilePath(fileFixify(project->projectFile()));
+ mmpfilename = mmpfilename.replace(mmpfilename.lastIndexOf("."), 4, Option::mmp_ext);
+ QString currentPath = qmake_getpwd();
+
+ if (!currentPath.endsWith(QString("/")))
+ currentPath.append("/");
+
+ QStringList mmpProjects = project->values("MMPFILES_DIRECT_DEPENDS");
+ QStringList shadowProjects = project->values("SHADOW_BLD_INFS");
+
+ removeDuplicatedStrings(mmpProjects);
+ removeDuplicatedStrings(shadowProjects);
+
+ // Go in reverse order as that is the way how we build the list
+ QListIterator<QString> iT(mmpProjects);
+ iT.toBack();
+ while (iT.hasPrevious()) {
+ QString fullMmpName = iT.previous();
+ QString relativePath;
+ QString bldinfFilename;
+
+ QString fullProFilename = fullMmpName;
+ fullProFilename.replace(Option::mmp_ext, Option::pro_ext);
+ QString uid = generate_uid(fullProFilename);
+
+ QString cleanMmpName = fullProFilename;
+ cleanMmpName.replace(Option::pro_ext, QString(""));
+ cleanMmpName.replace(0, cleanMmpName.lastIndexOf("/") + 1, QString(""));
+
+ if (shadowProjects.contains(BLD_INF_FILENAME "." + cleanMmpName)) { // shadow project
+ QDir directory(currentPath);
+ relativePath = directory.relativeFilePath(fullProFilename);
+ bldinfFilename = BLD_INF_FILENAME "." + cleanMmpName;
+ if (relativePath.contains("/")) {
+ // Shadow .pro not in same directory as parent .pro
+ if (relativePath.startsWith("..")) {
+ // Shadow .pro out of parent .pro
+ relativePath.replace(relativePath.lastIndexOf("/"), relativePath.length(), QString(""));
+ bldinfFilename.prepend("/").prepend(relativePath);
+ } else {
+ relativePath.replace(relativePath.lastIndexOf("/"), relativePath.length(), QString(""));
+ bldinfFilename.prepend("/").prepend(relativePath);
+ }
+ } else {
+ // Shadow .pro and parent .pro in same directory
+ bldinfFilename.prepend("./");
+ }
+ } else { // regular project
+ QDir directory(currentPath);
+ relativePath = directory.relativeFilePath(fullProFilename);
+ relativePath.replace(relativePath.lastIndexOf("/"), relativePath.length(), QString(""));
+ bldinfFilename = relativePath.append("/").append(BLD_INF_FILENAME);
+ }
+
+ QString bldinfDefine = QString("BLD_INF_") + cleanMmpName + QString("_") + uid;
+ bldinfDefine = bldinfDefine.toUpper();
+ removeSpecialCharacters(bldinfDefine);
+
+ t << "#ifndef " << bldinfDefine << endl;
+ t << "\t#include \"" << QDir::toNativeSeparators(bldinfFilename) << "\"" << endl;
+ t << "#endif // " << bldinfDefine << endl;
+ }
+
+ // Add supported project platforms
+
+ t << endl << BLD_INF_TAG_PLATFORMS << endl << endl;
+ if (0 != project->values("SYMBIAN_PLATFORMS").size())
+ t << project->values("SYMBIAN_PLATFORMS").join(" ") << endl;
+
+ QStringList userItems = userBldInfRules.value(BLD_INF_TAG_PLATFORMS);
+ foreach(QString item, userItems)
+ t << item << endl;
+ userBldInfRules.remove(BLD_INF_TAG_PLATFORMS);
+ t << endl;
+
+ // Add project mmps and old style extension makefiles
+ QString mmpTag;
+ if (project->values("CONFIG").contains("symbian_test", Qt::CaseInsensitive))
+ mmpTag = QLatin1String(BLD_INF_TAG_TESTMMPFILES);
+ else
+ mmpTag = QLatin1String(BLD_INF_TAG_MMPFILES);
+
+ t << endl << mmpTag << endl << endl;
+
+ writeBldInfMkFilePart(t, addDeploymentExtension);
+ if (targetType == TypeSubdirs) {
+ mmpProjects.removeOne(mmpfilename);
+ } else {
+ QString shortProFilename = project->projectFile();
+ shortProFilename.replace(0, shortProFilename.lastIndexOf("/") + 1, QString(""));
+ shortProFilename.replace(Option::pro_ext, QString(""));
+
+ QString mmpFilename = shortProFilename + QString("_") + uid3 + Option::mmp_ext;
+
+ t << mmpFilename << endl;
+ }
+
+ userItems = userBldInfRules.value(mmpTag);
+ foreach(QString item, userItems)
+ t << item << endl;
+ userBldInfRules.remove(mmpTag);
+
+ t << endl << BLD_INF_TAG_EXTENSIONS << endl << endl;
+
+ // Generate extension rules
+ writeBldInfExtensionRulesPart(t);
+
+ userItems = userBldInfRules.value(BLD_INF_TAG_EXTENSIONS);
+ foreach(QString item, userItems)
+ t << item << endl;
+ userBldInfRules.remove(BLD_INF_TAG_EXTENSIONS);
+
+ // Add rest of the user defined content
+
+ for (QMap<QString, QStringList>::iterator it = userBldInfRules.begin(); it != userBldInfRules.end(); ++it) {
+ t << endl << endl << it.key() << endl << endl;
+ userItems = it.value();
+ foreach(QString item, userItems)
+ t << item << endl;
+ }
+}
+
+void SymbianMakefileGenerator::writeRegRssFile(QString &appName, QStringList &userItems)
+{
+ QString filename(appName);
+ filename.append("_reg.rss");
+ QFile ft(filename);
+ if (ft.open(QIODevice::WriteOnly)) {
+ generatedFiles << ft.fileName();
+ QTextStream t(&ft);
+ t << "// ============================================================================" << endl;
+ t << "// * Generated by qmake (" << qmake_version() << ") (Qt " << QT_VERSION_STR << ") on: ";
+ t << QDateTime::currentDateTime().toString(Qt::ISODate) << endl;
+ t << "// * This file is generated by qmake and should not be modified by the" << endl;
+ t << "// * user." << endl;
+ t << "// ============================================================================" << endl;
+ t << endl;
+ t << "#include <" << appName << ".rsg>" << endl;
+ t << "#include <appinfo.rh>" << endl;
+ t << endl;
+ //t << "#include <data_caging_paths.hrh>" << "\n" << endl;
+ t << "UID2 " << "KUidAppRegistrationResourceFile" << endl;
+ t << "UID3 " << uid3 << endl << endl;
+ t << "RESOURCE APP_REGISTRATION_INFO" << endl;
+ t << "\t{" << endl;
+ t << "\tapp_file=\"" << appName << "\";" << endl;
+ t << "\tlocalisable_resource_file=\"" RESOURCE_DIRECTORY_RESOURCE << appName << "\";" << endl;
+ t << endl;
+
+ foreach(QString item, userItems)
+ t << "\t" << item << endl;
+ t << "\t}" << endl;
+ } else {
+ PRINT_FILE_CREATE_ERROR(filename)
+ }
+}
+
+void SymbianMakefileGenerator::writeRssFile(QString &appName, QString &numberOfIcons, QString &iconFile)
+{
+ QString filename(appName);
+ filename.append(".rss");
+ QFile ft(filename);
+ if (ft.open(QIODevice::WriteOnly)) {
+ generatedFiles << ft.fileName();
+ QTextStream t(&ft);
+ t << "// ============================================================================" << endl;
+ t << "// * Generated by qmake (" << qmake_version() << ") (Qt " << QT_VERSION_STR << ") on: ";
+ t << QDateTime::currentDateTime().toString(Qt::ISODate) << endl;
+ t << "// * This file is generated by qmake and should not be modified by the" << endl;
+ t << "// * user." << endl;
+ t << "// ============================================================================" << endl;
+ t << endl;
+ t << "#include <appinfo.rh>" << endl;
+ t << "#include \"" << appName << ".loc\"" << endl;
+ t << endl;
+ t << "RESOURCE LOCALISABLE_APP_INFO r_localisable_app_info" << endl;
+ t << "\t{" << endl;
+ t << "\tshort_caption = STRING_r_short_caption;" << endl;
+ t << "\tcaption_and_icon =" << endl;
+ t << "\tCAPTION_AND_ICON_INFO" << endl;
+ t << "\t\t{" << endl;
+ t << "\t\tcaption = STRING_r_caption;" << endl;
+
+ if (numberOfIcons.isEmpty() || iconFile.isEmpty()) {
+ // There can be maximum one item in this tag, validated when parsed
+ t << "\t\tnumber_of_icons = 0;" << endl;
+ t << "\t\ticon_file = \"\";" << endl;
+ } else {
+ // There can be maximum one item in this tag, validated when parsed
+ t << "\t\tnumber_of_icons = " << numberOfIcons << ";" << endl;
+ t << "\t\ticon_file = \"" << iconFile << "\";" << endl;
+ }
+ t << "\t\t};" << endl;
+ t << "\t}" << endl;
+ t << endl;
+ } else {
+ PRINT_FILE_CREATE_ERROR(filename);
+ }
+}
+
+void SymbianMakefileGenerator::writeLocFile(QString &appName, QStringList &symbianLangCodes)
+{
+ QString filename(appName);
+ filename.append(".loc");
+ QFile ft(filename);
+ if (ft.open(QIODevice::WriteOnly)) {
+ generatedFiles << ft.fileName();
+ QTextStream t(&ft);
+ t << "// ============================================================================" << endl;
+ t << "// * Generated by qmake (" << qmake_version() << ") (Qt " << QT_VERSION_STR << ") on: ";
+ t << QDateTime::currentDateTime().toString(Qt::ISODate) << endl;
+ t << "// * This file is generated by qmake and should not be modified by the" << endl;
+ t << "// * user." << endl;
+ t << "// ============================================================================" << endl;
+ t << endl;
+ t << "#ifdef LANGUAGE_SC" << endl;
+ //t << "#include \"" << appName << ".l01\"" << endl;
+ t << "#define STRING_r_short_caption \"" << appName << "\"" << endl;
+ t << "#define STRING_r_caption \"" << appName << "\"" << endl;
+ foreach(QString lang, symbianLangCodes) {
+ t << "#elif defined LANGUAGE_" << lang << endl;
+ //t << "#include \"" << appName << ".l" << lang << "\"" << endl;
+ t << "#define STRING_r_short_caption \"" << appName << "\"" << endl;
+ t << "#define STRING_r_caption \"" << appName << "\"" << endl;
+ }
+ t << "#else" << endl;
+ t << "#define STRING_r_short_caption \"" << appName << "\"" << endl;
+ t << "#define STRING_r_caption \"" << appName << "\"" << endl;
+ t << "#endif" << endl;
+ } else {
+ PRINT_FILE_CREATE_ERROR(filename);
+ }
+}
+
+void SymbianMakefileGenerator::readRssRules(QString &numberOfIcons, QString &iconFile, QStringList &userRssRules)
+{
+ for (QMap<QString, QStringList>::iterator it = project->variables().begin(); it != project->variables().end(); ++it) {
+ if (it.key().startsWith(RSS_RULES_BASE)) {
+ QString newKey = it.key().mid(sizeof(RSS_RULES_BASE) - 1);
+ if (newKey.isEmpty()) {
+ fprintf(stderr, "Warning: Empty RSS_RULES_BASE key encountered\n");
+ continue;
+ }
+ QStringList newValues;
+ QStringList values = it.value();
+ foreach(QString item, values) {
+ // If there is no stringlist defined for a rule, use rule name directly
+ // This is convenience for defining single line statements
+ if (project->values(item).isEmpty()) {
+ newValues << item;
+ } else {
+ foreach(QString itemRow, project->values(item)) {
+ newValues << itemRow;
+ }
+ }
+ }
+ // Verify thet there is exactly one value in RSS_TAG_NBROFICONS
+ if (newKey == RSS_TAG_NBROFICONS) {
+ if (newValues.count() == 1) {
+ numberOfIcons = newValues[0];
+ } else {
+ fprintf(stderr, "Warning: There must be exactly one value in '%s%s'\n",
+ RSS_RULES_BASE, RSS_TAG_NBROFICONS);
+ continue;
+ }
+ // Verify thet there is exactly one value in RSS_TAG_ICONFILE
+ } else if (newKey == RSS_TAG_ICONFILE) {
+ if (newValues.count() == 1) {
+ iconFile = newValues[0];
+ } else {
+ fprintf(stderr, "Warning: There must be exactly one value in '%s%s'\n",
+ RSS_RULES_BASE, RSS_TAG_ICONFILE);
+ continue;
+ }
+ } else {
+ fprintf(stderr, "Warning: Unsupported key:'%s%s'\n",
+ RSS_RULES_BASE, newKey.toLatin1().constData());
+ continue;
+ }
+ }
+ }
+
+ foreach(QString item, project->values(RSS_RULES)) {
+ // If there is no stringlist defined for a rule, use rule name directly
+ // This is convenience for defining single line mmp statements
+ if (project->values(item).isEmpty()) {
+ userRssRules << item;
+ } else {
+ userRssRules << project->values(item);
+ }
+ }
+
+ // Validate that either both RSS_TAG_NBROFICONS and RSS_TAG_ICONFILE keys exist
+ // or neither of them exist
+ if (!((numberOfIcons.isEmpty() && iconFile.isEmpty()) ||
+ (!numberOfIcons.isEmpty() && !iconFile.isEmpty()))) {
+ numberOfIcons.clear();
+ iconFile.clear();
+ fprintf(stderr, "Warning: Both or neither of '%s%s' and '%s%s' keys must exist.\n",
+ RSS_RULES_BASE, RSS_TAG_NBROFICONS, RSS_RULES_BASE, RSS_TAG_ICONFILE);
+ }
+
+ // Validate that RSS_TAG_NBROFICONS contains only numbers
+ if (!numberOfIcons.isEmpty()) {
+ bool ok;
+ numberOfIcons = numberOfIcons.simplified();
+ int tmp = numberOfIcons.toInt(&ok);
+ if (!ok) {
+ numberOfIcons.clear();
+ iconFile.clear();
+ fprintf(stderr, "Warning: '%s%s' must be integer in decimal format.\n",
+ RSS_RULES_BASE, RSS_TAG_NBROFICONS);
+ }
+ }
+}
+
+QStringList SymbianMakefileGenerator::symbianLangCodesFromTsFiles()
+{
+ QStringList tsfiles;
+ QStringList symbianLangCodes;
+ tsfiles << project->values("TRANSLATIONS");
+
+ fillQt2S60LangMapTable();
+
+ foreach(QString file, tsfiles) {
+ int extIndex = file.lastIndexOf(".");
+ int langIndex = file.lastIndexOf("_", (extIndex - file.length()));
+ langIndex += 1;
+ QString qtlang = file.mid(langIndex, extIndex - langIndex);
+ QString s60lang = qt2S60LangMapTable.value(qtlang, QString("SC"));
+
+ if (!symbianLangCodes.contains(s60lang) && s60lang != "SC")
+ symbianLangCodes += s60lang;
+ }
+
+ return symbianLangCodes;
+}
+
+void SymbianMakefileGenerator::fillQt2S60LangMapTable()
+{
+ qt2S60LangMapTable.reserve(170); // 165 items at time of writing.
+ qt2S60LangMapTable.insert("ab", "SC"); //Abkhazian //
+ qt2S60LangMapTable.insert("om", "SC"); //Afan //
+ qt2S60LangMapTable.insert("aa", "SC"); //Afar //
+ qt2S60LangMapTable.insert("af", "34"); //Afrikaans //Afrikaans
+ qt2S60LangMapTable.insert("sq", "35"); //Albanian //Albanian
+ qt2S60LangMapTable.insert("am", "36"); //Amharic //Amharic
+ qt2S60LangMapTable.insert("ar", "37"); //Arabic //Arabic
+ qt2S60LangMapTable.insert("hy", "38"); //Armenian //Armenian
+ qt2S60LangMapTable.insert("as", "SC"); //Assamese //
+ qt2S60LangMapTable.insert("ay", "SC"); //Aymara //
+ qt2S60LangMapTable.insert("az", "SC"); //Azerbaijani //
+ qt2S60LangMapTable.insert("ba", "SC"); //Bashkir //
+ qt2S60LangMapTable.insert("eu", "SC"); //Basque //
+ qt2S60LangMapTable.insert("bn", "41"); //Bengali //Bengali
+ qt2S60LangMapTable.insert("dz", "SC"); //Bhutani //
+ qt2S60LangMapTable.insert("bh", "SC"); //Bihari //
+ qt2S60LangMapTable.insert("bi", "SC"); //Bislama //
+ qt2S60LangMapTable.insert("br", "SC"); //Breton //
+ qt2S60LangMapTable.insert("bg", "42"); //Bulgarian //Bulgarian
+ qt2S60LangMapTable.insert("my", "43"); //Burmese //Burmese
+ qt2S60LangMapTable.insert("be", "40"); //Byelorussian //Belarussian
+ qt2S60LangMapTable.insert("km", "SC"); //Cambodian //
+ qt2S60LangMapTable.insert("ca", "44"); //Catalan //Catalan
+ qt2S60LangMapTable.insert("zh", "SC"); //Chinese //
+ qt2S60LangMapTable.insert("co", "SC"); //Corsican //
+ qt2S60LangMapTable.insert("hr", "45"); //Croatian //Croatian
+ qt2S60LangMapTable.insert("cs", "25"); //Czech //Czech
+ qt2S60LangMapTable.insert("da", "07"); //Danish //Danish
+ qt2S60LangMapTable.insert("nl", "18"); //Dutch //Dutch
+ qt2S60LangMapTable.insert("en", "01"); //English //English(UK)
+ qt2S60LangMapTable.insert("eo", "SC"); //Esperanto //
+ qt2S60LangMapTable.insert("et", "49"); //Estonian //Estonian
+ qt2S60LangMapTable.insert("fo", "SC"); //Faroese //
+ qt2S60LangMapTable.insert("fj", "SC"); //Fiji //
+ qt2S60LangMapTable.insert("fi", "09"); //Finnish //Finnish
+ qt2S60LangMapTable.insert("fr", "02"); //French //French
+ qt2S60LangMapTable.insert("fy", "SC"); //Frisian //
+ qt2S60LangMapTable.insert("gd", "52"); //Gaelic //Gaelic
+ qt2S60LangMapTable.insert("gl", "SC"); //Galician //
+ qt2S60LangMapTable.insert("ka", "53"); //Georgian //Georgian
+ qt2S60LangMapTable.insert("de", "03"); //German //German
+ qt2S60LangMapTable.insert("el", "54"); //Greek //Greek
+ qt2S60LangMapTable.insert("kl", "SC"); //Greenlandic //
+ qt2S60LangMapTable.insert("gn", "SC"); //Guarani //
+ qt2S60LangMapTable.insert("gu", "56"); //Gujarati //Gujarati
+ qt2S60LangMapTable.insert("ha", "SC"); //Hausa //
+ qt2S60LangMapTable.insert("he", "57"); //Hebrew //Hebrew
+ qt2S60LangMapTable.insert("hi", "58"); //Hindi //Hindi
+ qt2S60LangMapTable.insert("hu", "17"); //Hungarian //Hungarian
+ qt2S60LangMapTable.insert("is", "15"); //Icelandic //Icelandic
+ qt2S60LangMapTable.insert("id", "59"); //Indonesian //Indonesian
+ qt2S60LangMapTable.insert("ia", "SC"); //Interlingua //
+ qt2S60LangMapTable.insert("ie", "SC"); //Interlingue //
+ qt2S60LangMapTable.insert("iu", "SC"); //Inuktitut //
+ qt2S60LangMapTable.insert("ik", "SC"); //Inupiak //
+ qt2S60LangMapTable.insert("ga", "60"); //Irish //Irish
+ qt2S60LangMapTable.insert("it", "05"); //Italian //Italian
+ qt2S60LangMapTable.insert("ja", "32"); //Japanese //Japanese
+ qt2S60LangMapTable.insert("jv", "SC"); //Javanese //
+ qt2S60LangMapTable.insert("kn", "62"); //Kannada //Kannada
+ qt2S60LangMapTable.insert("ks", "SC"); //Kashmiri //
+ qt2S60LangMapTable.insert("kk", "63"); //Kazakh //Kazakh
+ qt2S60LangMapTable.insert("rw", "SC"); //Kinyarwanda //
+ qt2S60LangMapTable.insert("ky", "SC"); //Kirghiz //
+ qt2S60LangMapTable.insert("ko", "65"); //Korean //Korean
+ qt2S60LangMapTable.insert("ku", "SC"); //Kurdish //
+ qt2S60LangMapTable.insert("rn", "SC"); //Kurundi //
+ qt2S60LangMapTable.insert("lo", "66"); //Laothian //Laothian
+ qt2S60LangMapTable.insert("la", "SC"); //Latin //
+ qt2S60LangMapTable.insert("lv", "67"); //Latvian //Latvian
+ qt2S60LangMapTable.insert("ln", "SC"); //Lingala //
+ qt2S60LangMapTable.insert("lt", "68"); //Lithuanian //Lithuanian
+ qt2S60LangMapTable.insert("mk", "69"); //Macedonian //Macedonian
+ qt2S60LangMapTable.insert("mg", "SC"); //Malagasy //
+ qt2S60LangMapTable.insert("ms", "70"); //Malay //Malay
+ qt2S60LangMapTable.insert("ml", "71"); //Malayalam //Malayalam
+ qt2S60LangMapTable.insert("mt", "SC"); //Maltese //
+ qt2S60LangMapTable.insert("mi", "SC"); //Maori //
+ qt2S60LangMapTable.insert("mr", "72"); //Marathi //Marathi
+ qt2S60LangMapTable.insert("mo", "73"); //Moldavian //Moldovian
+ qt2S60LangMapTable.insert("mn", "74"); //Mongolian //Mongolian
+ qt2S60LangMapTable.insert("na", "SC"); //Nauru //
+ qt2S60LangMapTable.insert("ne", "SC"); //Nepali //
+ qt2S60LangMapTable.insert("nb", "08"); //Norwegian //Norwegian
+ qt2S60LangMapTable.insert("oc", "SC"); //Occitan //
+ qt2S60LangMapTable.insert("or", "SC"); //Oriya //
+ qt2S60LangMapTable.insert("ps", "SC"); //Pashto //
+ qt2S60LangMapTable.insert("fa", "SC"); //Persian //
+ qt2S60LangMapTable.insert("pl", "27"); //Polish //Polish
+ qt2S60LangMapTable.insert("pt", "13"); //Portuguese //Portuguese
+ qt2S60LangMapTable.insert("pa", "77"); //Punjabi //Punjabi
+ qt2S60LangMapTable.insert("qu", "SC"); //Quechua //
+ qt2S60LangMapTable.insert("rm", "SC"); //RhaetoRomance //
+ qt2S60LangMapTable.insert("ro", "78"); //Romanian //Romanian
+ qt2S60LangMapTable.insert("ru", "16"); //Russian //Russian
+ qt2S60LangMapTable.insert("sm", "SC"); //Samoan //
+ qt2S60LangMapTable.insert("sg", "SC"); //Sangho //
+ qt2S60LangMapTable.insert("sa", "SC"); //Sanskrit //
+ qt2S60LangMapTable.insert("sr", "79"); //Serbian //Serbian
+ qt2S60LangMapTable.insert("sh", "SC"); //SerboCroatian //
+ qt2S60LangMapTable.insert("st", "SC"); //Sesotho //
+ qt2S60LangMapTable.insert("tn", "SC"); //Setswana //
+ qt2S60LangMapTable.insert("sn", "SC"); //Shona //
+ qt2S60LangMapTable.insert("sd", "SC"); //Sindhi //
+ qt2S60LangMapTable.insert("si", "80"); //Singhalese //Sinhalese
+ qt2S60LangMapTable.insert("ss", "SC"); //Siswati //
+ qt2S60LangMapTable.insert("sk", "26"); //Slovak //Slovak
+ qt2S60LangMapTable.insert("sl", "28"); //Slovenian //Slovenian
+ qt2S60LangMapTable.insert("so", "81"); //Somali //Somali
+ qt2S60LangMapTable.insert("es", "04"); //Spanish //Spanish
+ qt2S60LangMapTable.insert("su", "SC"); //Sundanese //
+ qt2S60LangMapTable.insert("sw", "84"); //Swahili //Swahili
+ qt2S60LangMapTable.insert("sv", "06"); //Swedish //Swedish
+ qt2S60LangMapTable.insert("tl", "39"); //Tagalog //Tagalog
+ qt2S60LangMapTable.insert("tg", "SC"); //Tajik //
+ qt2S60LangMapTable.insert("ta", "87"); //Tamil //Tamil
+ qt2S60LangMapTable.insert("tt", "SC"); //Tatar //
+ qt2S60LangMapTable.insert("te", "88"); //Telugu //Telugu
+ qt2S60LangMapTable.insert("th", "33"); //Thai //Thai
+ qt2S60LangMapTable.insert("bo", "89"); //Tibetan //Tibetan
+ qt2S60LangMapTable.insert("ti", "90"); //Tigrinya //Tigrinya
+ qt2S60LangMapTable.insert("to", "SC"); //Tonga //
+ qt2S60LangMapTable.insert("ts", "SC"); //Tsonga //
+ qt2S60LangMapTable.insert("tr", "14"); //Turkish //Turkish
+ qt2S60LangMapTable.insert("tk", "92"); //Turkmen //Turkmen
+ qt2S60LangMapTable.insert("tw", "SC"); //Twi //
+ qt2S60LangMapTable.insert("ug", "SC"); //Uigur //
+ qt2S60LangMapTable.insert("uk", "93"); //Ukrainian //Ukrainian
+ qt2S60LangMapTable.insert("ur", "94"); //Urdu //Urdu
+ qt2S60LangMapTable.insert("uz", "SC"); //Uzbek //
+ qt2S60LangMapTable.insert("vi", "96"); //Vietnamese //Vietnamese
+ qt2S60LangMapTable.insert("vo", "SC"); //Volapuk //
+ qt2S60LangMapTable.insert("cy", "97"); //Welsh //Welsh
+ qt2S60LangMapTable.insert("wo", "SC"); //Wolof //
+ qt2S60LangMapTable.insert("xh", "SC"); //Xhosa //
+ qt2S60LangMapTable.insert("yi", "SC"); //Yiddish //
+ qt2S60LangMapTable.insert("yo", "SC"); //Yoruba //
+ qt2S60LangMapTable.insert("za", "SC"); //Zhuang //
+ qt2S60LangMapTable.insert("zu", "98"); //Zulu //Zulu
+ qt2S60LangMapTable.insert("nn", "75"); //Nynorsk //NorwegianNynorsk
+ qt2S60LangMapTable.insert("bs", "SC"); //Bosnian //
+ qt2S60LangMapTable.insert("dv", "SC"); //Divehi //
+ qt2S60LangMapTable.insert("gv", "SC"); //Manx //
+ qt2S60LangMapTable.insert("kw", "SC"); //Cornish //
+ qt2S60LangMapTable.insert("ak", "SC"); //Akan //
+ qt2S60LangMapTable.insert("kok", "SC"); //Konkani //
+ qt2S60LangMapTable.insert("gaa", "SC"); //Ga //
+ qt2S60LangMapTable.insert("ig", "SC"); //Igbo //
+ qt2S60LangMapTable.insert("kam", "SC"); //Kamba //
+ qt2S60LangMapTable.insert("syr", "SC"); //Syriac //
+ qt2S60LangMapTable.insert("byn", "SC"); //Blin //
+ qt2S60LangMapTable.insert("gez", "SC"); //Geez //
+ qt2S60LangMapTable.insert("kfo", "SC"); //Koro //
+ qt2S60LangMapTable.insert("sid", "SC"); //Sidamo //
+ qt2S60LangMapTable.insert("cch", "SC"); //Atsam //
+ qt2S60LangMapTable.insert("tig", "SC"); //Tigre //
+ qt2S60LangMapTable.insert("kaj", "SC"); //Jju //
+ qt2S60LangMapTable.insert("fur", "SC"); //Friulian //
+ qt2S60LangMapTable.insert("ve", "SC"); //Venda //
+ qt2S60LangMapTable.insert("ee", "SC"); //Ewe //
+ qt2S60LangMapTable.insert("wa", "SC"); //Walamo //
+ qt2S60LangMapTable.insert("haw", "SC"); //Hawaiian //
+ qt2S60LangMapTable.insert("kcg", "SC"); //Tyap //
+ qt2S60LangMapTable.insert("ny", "SC"); //Chewa //
+}
+
+void SymbianMakefileGenerator::appendIfnotExist(QStringList &list, QString value)
+{
+ if (!list.contains(value))
+ list += value;
+}
+
+void SymbianMakefileGenerator::appendIfnotExist(QStringList &list, QStringList values)
+{
+ foreach(QString item, values)
+ appendIfnotExist(list, item);
+}
+
+QString SymbianMakefileGenerator::removePathSeparators(QString &file)
+{
+ QString ret = file;
+ while (ret.indexOf(QDir::separator()) > 0) {
+ ret.remove(0, ret.indexOf(QDir::separator()) + 1);
+ }
+
+ return ret;
+}
+
+
+QString SymbianMakefileGenerator::removeTrailingPathSeparators(QString &file)
+{
+ QString ret = file;
+ if (ret.endsWith(QDir::separator())) {
+ ret.remove(ret.length() - 1, 1);
+ }
+
+ return ret;
+}
+
+void SymbianMakefileGenerator::generateCleanCommands(QTextStream& t,
+ const QStringList& toClean,
+ const QString& cmd,
+ const QString& cmdOptions,
+ const QString& itemPrefix,
+ const QString& itemSuffix)
+{
+ for (int i = 0; i < toClean.size(); ++i) {
+ QString item = toClean.at(i);
+ item.prepend(itemPrefix).append(itemSuffix);
+#if defined(Q_OS_WIN)
+ t << "\t-@ if EXIST \"" << QDir::toNativeSeparators(item) << "\" ";
+ t << cmd << " " << cmdOptions << " \"" << QDir::toNativeSeparators(item) << "\"" << endl;
+#else
+ t << "\t-if test -f " << QDir::toNativeSeparators(item) << "; then ";
+ t << cmd << " " << cmdOptions << " " << QDir::toNativeSeparators(item) << "; fi" << endl;
+#endif
+ }
+}
+
+void SymbianMakefileGenerator::removeSpecialCharacters(QString& str)
+{
+ str.replace(QString("/"), QString("_"));
+ str.replace(QString("\\"), QString("_"));
+ str.replace(QString("-"), QString("_"));
+ str.replace(QString(":"), QString("_"));
+ str.replace(QString("."), QString("_"));
+ str.replace(QString(" "), QString("_"));
+}
+
+void SymbianMakefileGenerator::generateDistcleanTargets(QTextStream& t)
+{
+ t << "dodistclean:" << endl;
+ foreach(QString item, project->values("SUBDIRS")) {
+ bool fromFile = false;
+ QString fixedItem;
+ if (!project->isEmpty(item + ".file")) {
+ fixedItem = project->first(item + ".file");
+ fromFile = true;
+ } else if (!project->isEmpty(item + ".subdir")) {
+ fixedItem = project->first(item + ".subdir");
+ fromFile = false;
+ } else {
+ fromFile = item.endsWith(Option::pro_ext);
+ fixedItem = item;
+ }
+ QFileInfo fi(fileInfo(fixedItem));
+ if (!fromFile) {
+ t << "\t-$(MAKE) -f \"" << Option::fixPathToTargetOS(fi.absoluteFilePath() + "/Makefile") << "\" dodistclean" << endl;
+ } else {
+ QString itemName = fi.fileName();
+ int extIndex = itemName.lastIndexOf(Option::pro_ext);
+ if (extIndex)
+ fixedItem = fi.absolutePath() + "/" + QString("Makefile.") + itemName.mid(0, extIndex);
+ t << "\t-$(MAKE) -f \"" << Option::fixPathToTargetOS(fixedItem) << "\" dodistclean" << endl;
+ }
+
+ }
+
+ generatedFiles << Option::fixPathToTargetOS(fileInfo(Option::output.fileName()).absoluteFilePath()); // bld.inf
+ generatedFiles << project->values("QMAKE_INTERNAL_PRL_FILE"); // Add generated prl files for cleanup
+ generatedFiles << project->values("QMAKE_DISTCLEAN"); // Add any additional files marked for distclean
+ QStringList fixedFiles;
+ QStringList fixedDirs;
+ foreach(QString item, generatedFiles) {
+ QString fixedItem = Option::fixPathToTargetOS(fileInfo(item).absoluteFilePath());
+ if (!fixedFiles.contains(fixedItem)) {
+ fixedFiles << fixedItem;
+ }
+ }
+ foreach(QString item, generatedDirs) {
+ QString fixedItem = Option::fixPathToTargetOS(fileInfo(item).absoluteFilePath());
+ if (!fixedDirs.contains(fixedItem)) {
+ fixedDirs << fixedItem;
+ }
+ }
+ generateCleanCommands(t, fixedFiles, "$(DEL_FILE)", "", "", "");
+ generateCleanCommands(t, fixedDirs, "$(DEL_DIR)", "", "", "");
+ t << endl;
+
+ t << "distclean: clean dodistclean" << endl;
+ t << endl;
+}
+
diff --git a/qmake/generators/symbian/symmake.h b/qmake/generators/symbian/symmake.h
new file mode 100644
index 0000000..22dc4c9
--- /dev/null
+++ b/qmake/generators/symbian/symmake.h
@@ -0,0 +1,153 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the qmake application of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef SYMMAKEFILE_H
+#define SYMMAKEFILE_H
+
+#include <makefile.h>
+
+QT_BEGIN_NAMESPACE
+
+#define BLD_INF_FILENAME "bld.inf"
+#define MAKEFILE_DEPENDENCY_SEPARATOR " \\\n\t"
+
+#define QT_EXTRA_INCLUDE_DIR "tmp"
+
+class SymbianMakefileGenerator : public MakefileGenerator
+{
+protected:
+ enum TargetType {
+ TypeExe,
+ TypeDll,
+ TypeLib,
+ TypePlugin,
+ TypeSubdirs
+ };
+
+ QString platform;
+ QString uid2;
+ QString uid3;
+ QString privateDirUid;
+ TargetType targetType;
+ QMap<QString, QStringList> sources;
+ QMap<QString, QStringList> systeminclude;
+ QMap<QString, QStringList> library;
+ // (output file) (source , command)
+ QMap<QString, QStringList> makmakeCommands;
+
+ QStringList generatedFiles;
+ QStringList generatedDirs;
+ QHash<QString, QString> qt2S60LangMapTable;
+
+ QString fixedTarget;
+
+ void removeSpecialCharacters(QString& str);
+ QString fixPathForMmp(const QString& origPath, const QDir& parentDir);
+ QString canonizePath(const QString& origPath);
+
+ virtual bool writeMakefile(QTextStream &t);
+ void generatePkgFile(const QString &compiler, const QString &config, const QString &iconFile);
+ bool containsStartWithItem(const QChar &c, const QStringList& src);
+
+ virtual void init();
+
+ QString getTargetExtension();
+
+ QString generateUID3();
+
+ void initMmpVariables();
+
+ void writeHeader(QTextStream &t);
+ void writeBldInfContent(QTextStream& t, bool addDeploymentExtension);
+
+ static bool removeDuplicatedStrings(QStringList& stringList);
+
+ void writeMmpFileHeader(QTextStream &t);
+ void writeMmpFile(QString &filename, QStringList &symbianLangCodes);
+ void writeMmpFileMacrosPart(QTextStream& t);
+ void addMacro(QTextStream& t, const QString& value);
+ void writeMmpFileTargetPart(QTextStream& t);
+ void writeMmpFileResourcePart(QTextStream& t, QStringList &symbianLangCodes);
+ void writeMmpFileSystemIncludePart(QTextStream& t);
+ void writeMmpFileIncludePart(QTextStream& t);
+ void writeMmpFileLibraryPart(QTextStream& t);
+ void writeMmpFileCapabilityPart(QTextStream& t);
+ void writeMmpFileCompilerOptionPart(QTextStream& t);
+ void writeMmpFileBinaryVersionPart(QTextStream& t);
+ void writeMmpFileRulesPart(QTextStream& t);
+
+ void writeCustomDefFile();
+
+ void writeRegRssFile(QString &appname, QStringList &useritems);
+ void writeRssFile(QString &appName, QString &numberOfIcons, QString &iconfile);
+ void writeLocFile(QString &appName, QStringList &symbianLangCodes);
+ void readRssRules(QString &numberOfIcons, QString &iconFile, QStringList &userRssRules);
+
+ QStringList symbianLangCodesFromTsFiles();
+ void fillQt2S60LangMapTable();
+
+ void appendIfnotExist(QStringList &list, QString value);
+ void appendIfnotExist(QStringList &list, QStringList values);
+
+ QString removePathSeparators(QString &file);
+ QString removeTrailingPathSeparators(QString &file);
+ void generateCleanCommands(QTextStream& t,
+ const QStringList& toClean,
+ const QString& cmd,
+ const QString& cmdOptions,
+ const QString& itemPrefix,
+ const QString& itemSuffix);
+
+ void generateDistcleanTargets(QTextStream& t);
+
+ // Subclass implements
+ virtual void writeBldInfExtensionRulesPart(QTextStream& t) = 0;
+ virtual void writeBldInfMkFilePart(QTextStream& t, bool addDeploymentExtension) = 0;
+ virtual void writeMkFile(const QString& wrapperFileName, bool deploymentOnly) = 0;
+ virtual void writeWrapperMakefile(QFile& wrapperFile, bool isPrimaryMakefile) = 0;
+
+public:
+
+ SymbianMakefileGenerator();
+ ~SymbianMakefileGenerator();
+};
+
+#endif // SYMMAKEFILE_H
diff --git a/qmake/generators/symbian/symmake_abld.cpp b/qmake/generators/symbian/symmake_abld.cpp
new file mode 100644
index 0000000..271d210
--- /dev/null
+++ b/qmake/generators/symbian/symmake_abld.cpp
@@ -0,0 +1,421 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the qmake application of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "symmake_abld.h"
+#include "initprojectdeploy_symbian.h"
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qdir.h>
+#include <qdatetime.h>
+#include <qdebug.h>
+
+#define DO_NOTHING_TARGET "do_nothing"
+#define CREATE_TEMPS_TARGET "create_temps"
+#define EXTENSION_CLEAN "extension_clean"
+#define PRE_TARGETDEPS_TARGET "pre_targetdeps"
+#define COMPILER_CLEAN_TARGET "compiler_clean"
+#define FINALIZE_TARGET "finalize"
+#define GENERATED_SOURCES_TARGET "generated_sources"
+#define ALL_SOURCE_DEPS_TARGET "all_source_deps"
+#define WINSCW_DEPLOYMENT_TARGET "winscw_deployment"
+#define WINSCW_DEPLOYMENT_CLEAN_TARGET "winscw_deployment_clean"
+
+SymbianAbldMakefileGenerator::SymbianAbldMakefileGenerator() : SymbianMakefileGenerator() { }
+SymbianAbldMakefileGenerator::~SymbianAbldMakefileGenerator() { }
+
+void SymbianAbldMakefileGenerator::writeMkFile(const QString& wrapperFileName, bool deploymentOnly)
+{
+ QString gnuMakefileName = QLatin1String("Makefile_") + uid3;
+ removeSpecialCharacters(gnuMakefileName);
+ gnuMakefileName.append(".mk");
+
+ QFile ft(gnuMakefileName);
+ if (ft.open(QIODevice::WriteOnly)) {
+ generatedFiles << ft.fileName();
+ QTextStream t(&ft);
+
+ t << "# ==============================================================================" << endl;
+ t << "# Generated by qmake (" << qmake_version() << ") (Qt " << QT_VERSION_STR << ") on: ";
+ t << QDateTime::currentDateTime().toString() << endl;
+ t << "# This file is generated by qmake and should not be modified by the" << endl;
+ t << "# user." << endl;
+ t << "# Name : " << gnuMakefileName << endl;
+ t << "# Part of : " << project->values("TARGET").join(" ") << endl;
+ t << "# Description : This file is used to call necessary targets on wrapper makefile" << endl;
+ t << "# during normal Symbian build process." << endl;
+ t << "# Version : " << endl;
+ t << "#" << endl;
+ t << "# ==============================================================================" << "\n" << endl;
+
+ t << endl << endl;
+
+ t << "MAKE = make" << endl;
+ t << endl;
+
+ t << DO_NOTHING_TARGET " :" << endl;
+ t << "\t" << "@rem " DO_NOTHING_TARGET << endl << endl;
+
+ QString buildDeps;
+ QString cleanDeps;
+ QString finalDeps;
+ QString cleanDepsWinscw;
+ QString finalDepsWinscw;
+ QStringList wrapperTargets;
+ if (deploymentOnly) {
+ buildDeps.append(DO_NOTHING_TARGET);
+ cleanDeps.append(DO_NOTHING_TARGET);
+ cleanDepsWinscw.append(WINSCW_DEPLOYMENT_CLEAN_TARGET);
+ finalDeps.append(DO_NOTHING_TARGET);
+ finalDepsWinscw.append(WINSCW_DEPLOYMENT_TARGET);
+ wrapperTargets << WINSCW_DEPLOYMENT_TARGET << WINSCW_DEPLOYMENT_CLEAN_TARGET;
+ } else {
+ buildDeps.append(CREATE_TEMPS_TARGET " " PRE_TARGETDEPS_TARGET);
+ cleanDeps.append(EXTENSION_CLEAN);
+ cleanDepsWinscw.append(EXTENSION_CLEAN " " WINSCW_DEPLOYMENT_CLEAN_TARGET);
+ finalDeps.append(FINALIZE_TARGET);
+ finalDepsWinscw.append(FINALIZE_TARGET " " WINSCW_DEPLOYMENT_TARGET);
+ wrapperTargets << PRE_TARGETDEPS_TARGET
+ << CREATE_TEMPS_TARGET
+ << EXTENSION_CLEAN
+ << FINALIZE_TARGET
+ << WINSCW_DEPLOYMENT_CLEAN_TARGET
+ << WINSCW_DEPLOYMENT_TARGET;
+ }
+
+ t << "MAKMAKE: " << buildDeps << endl << endl;
+ t << "LIB: " << buildDeps << endl << endl;
+ t << "BLD: " << buildDeps << endl << endl;
+ t << "ifeq \"$(PLATFORM)\" \"WINSCW\"" << endl;
+ t << "CLEAN: " << cleanDepsWinscw << endl;
+ t << "else" << endl;
+ t << "CLEAN: " << cleanDeps << endl;
+ t << "endif" << endl << endl;
+ t << "CLEANLIB: " DO_NOTHING_TARGET << endl << endl;
+ t << "RESOURCE: " DO_NOTHING_TARGET << endl << endl;
+ t << "FREEZE: " DO_NOTHING_TARGET << endl << endl;
+ t << "SAVESPACE: " DO_NOTHING_TARGET << endl << endl;
+ t << "RELEASABLES: " DO_NOTHING_TARGET << endl << endl;
+ t << "ifeq \"$(PLATFORM)\" \"WINSCW\"" << endl;
+ t << "FINAL: " << finalDepsWinscw << endl;
+ t << "else" << endl;
+ t << "FINAL: " << finalDeps << endl;
+ t << "endif" << endl << endl;
+
+ QString makefile(Option::fixPathToTargetOS(fileInfo(wrapperFileName).canonicalFilePath()));
+ foreach(QString target, wrapperTargets) {
+ t << target << " : " << makefile << endl;
+ t << "\t-$(MAKE) -f \"" << makefile << "\" " << target << endl << endl;
+ }
+
+ t << endl;
+ } // if(ft.open(QIODevice::WriteOnly))
+}
+
+void SymbianAbldMakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, bool isPrimaryMakefile)
+{
+ QStringList allPlatforms;
+ foreach(QString platform, project->values("SYMBIAN_PLATFORMS")) {
+ allPlatforms << platform.toLower();
+ }
+
+ QStringList debugPlatforms = allPlatforms;
+ QStringList releasePlatforms = allPlatforms;
+ releasePlatforms.removeAll("winscw"); // No release for emulator
+
+ QString testClause;
+ if (project->values("CONFIG").contains("symbian_test", Qt::CaseInsensitive))
+ testClause = QLatin1String(" test");
+ else
+ testClause = QLatin1String("");
+
+ QTextStream t(&wrapperFile);
+
+ t << "# ==============================================================================" << endl;
+ t << "# Generated by qmake (" << qmake_version() << ") (Qt " << QT_VERSION_STR << ") on: ";
+ t << QDateTime::currentDateTime().toString() << endl;
+ t << "# This file is generated by qmake and should not be modified by the" << endl;
+ t << "# user." << endl;
+ t << "# Name : " << wrapperFile.fileName() << endl;
+ t << "# Description : Wrapper Makefile for calling Symbian build tools" << endl;
+ t << "#" << endl;
+ t << "# ==============================================================================" << "\n" << endl;
+ t << endl;
+ QString ofile = Option::fixPathToTargetOS(Option::output.fileName());
+ if (ofile.lastIndexOf(Option::dir_sep) != -1)
+ ofile = ofile.right(ofile.length() - ofile.lastIndexOf(Option::dir_sep) - 1);
+ t << "MAKEFILE = " << ofile << endl;
+ t << "QMAKE = " << Option::fixPathToTargetOS(var("QMAKE_QMAKE")) << endl;
+ t << "DEL_FILE = " << var("QMAKE_DEL_FILE") << endl;
+ t << "DEL_DIR = " << var("QMAKE_DEL_DIR") << endl;
+ t << "MOVE = " << var("QMAKE_MOVE") << endl;
+ t << "XCOPY = xcopy /d /f /h /r /y /i" << endl;
+ t << "ABLD = ABLD.BAT" << endl;
+ t << "DEBUG_PLATFORMS = " << debugPlatforms.join(" ") << endl;
+ t << "RELEASE_PLATFORMS = " << releasePlatforms.join(" ") << endl;
+ t << "MAKE = make" << endl;
+ t << endl;
+ t << "ifeq (WINS,$(findstring WINS, $(PLATFORM)))" << endl;
+ t << "ZDIR=$(EPOCROOT)epoc32\\release\\$(PLATFORM)\\$(CFG)\\Z" << endl;
+ t << "else" << endl;
+ t << "ZDIR=$(EPOCROOT)epoc32\\data\\z" << endl;
+ t << "endif" << endl;
+ t << endl;
+ t << "DEFINES" << '\t' << " = "
+ << varGlue("PRL_EXPORT_DEFINES","-D"," -D"," ")
+ << varGlue("QMAKE_COMPILER_DEFINES", "-D", "-D", " ")
+ << varGlue("DEFINES","-D"," -D","") << endl;
+
+ t << "INCPATH" << '\t' << " = ";
+
+ for (QMap<QString, QStringList>::iterator it = systeminclude.begin(); it != systeminclude.end(); ++it) {
+ QStringList values = it.value();
+ for (int i = 0; i < values.size(); ++i) {
+ t << " -I\"" << values.at(i) << "\"";
+ }
+ }
+ t << endl;
+ t << "first: default" << endl;
+ if (debugPlatforms.contains("winscw"))
+ t << "default: debug-winscw";
+ else if (debugPlatforms.contains("armv5"))
+ t << "default: debug-armv5";
+ else if (debugPlatforms.size())
+ t << "default: debug-" << debugPlatforms.first();
+ else
+ t << "default: all";
+
+ t << endl;
+ if (!isPrimaryMakefile) {
+ t << "all:" << endl;
+ } else {
+ t << "all: debug release" << endl;
+ t << endl;
+ t << "qmake:" << endl;
+ t << "\t$(QMAKE) -spec symbian-abld -o \"" << fileInfo(Option::output.fileName()).fileName()
+ << "\" \"" << project->projectFile() << "\"" << endl;
+ t << endl;
+ t << BLD_INF_FILENAME ":" << endl;
+ t << "\t$(QMAKE)" << endl;
+ t << endl;
+ t << "$(ABLD): " BLD_INF_FILENAME << endl;
+ t << "\tbldmake bldfiles" << endl;
+ t << endl;
+
+ t << "debug: $(ABLD)" << endl;
+ foreach(QString item, debugPlatforms) {
+ t << "\t$(ABLD)" << testClause << " build " << item << " udeb" << endl;
+ }
+ t << endl;
+ t << "release: $(ABLD)" << endl;
+ foreach(QString item, releasePlatforms) {
+ t << "\t$(ABLD)" << testClause << " build " << item << " urel" << endl;
+ }
+ t << endl;
+
+ // For more specific builds, targets are in this form: build-platform, e.g. release-armv5
+ foreach(QString item, debugPlatforms) {
+ t << "debug-" << item << ": $(ABLD)" << endl;
+ t << "\t$(ABLD)" << testClause << " build " << item << " udeb" << endl;
+ }
+
+ foreach(QString item, releasePlatforms) {
+ t << "release-" << item << ": $(ABLD)" << endl;
+ t << "\t$(ABLD)" << testClause << " build " << item << " urel" << endl;
+ }
+
+ t << endl;
+ t << "export: $(ABLD)" << endl;
+ t << "\t$(ABLD)" << testClause << " export" << endl;
+ t << endl;
+
+ t << "cleanexport: $(ABLD)" << endl;
+ t << "\t$(ABLD)" << testClause << " cleanexport" << endl;
+ t << endl;
+
+ }
+
+ // pre_targetdeps target depends on:
+ // - all targets specified in PRE_TARGETDEPS
+ // - the GENERATED_SOURCES sources (so that they get generated)
+ // - all dependencies of sources targeted for compilation
+ // (mainly to ensure that any included UNUSED_SOURCES that need to be generated get generated)
+ //
+ // Unfortunately, Symbian build chain doesn't support linking generated objects to target,
+ // so supporting generating sources is the best we can do. This is enough for mocs.
+
+ if (targetType != TypeSubdirs) {
+ writeExtraTargets(t);
+ writeExtraCompilerTargets(t);
+
+ t << CREATE_TEMPS_TARGET ":" << endl;
+ // generate command lines like this ...
+ // -@ if NOT EXIST ".\somedir" mkdir ".\somedir"
+ QStringList dirsToClean;
+ for (QMap<QString, QStringList>::iterator it = systeminclude.begin(); it != systeminclude.end(); ++it) {
+ QStringList values = it.value();
+ for (int i = 0; i < values.size(); ++i) {
+ if (values.at(i).endsWith("/" QT_EXTRA_INCLUDE_DIR)) {
+ QString fixedValue(QDir::toNativeSeparators(values.at(i)));
+ dirsToClean << fixedValue;
+ t << "\t-@ if NOT EXIST \"" << fixedValue << "\" mkdir \""
+ << fixedValue << "\"" << endl;
+ }
+ }
+ }
+ t << endl;
+
+ // Note: EXTENSION_CLEAN will get called many times when doing reallyclean
+ // This is why the "2> NUL" gets appended to generated clean targets in makefile.cpp.
+ t << EXTENSION_CLEAN ": " COMPILER_CLEAN_TARGET << endl;
+ generateCleanCommands(t, dirsToClean, var("QMAKE_DEL_DIR"), " /S /Q ", "", "");
+ t << endl;
+
+ t << PRE_TARGETDEPS_TARGET ":"
+ << MAKEFILE_DEPENDENCY_SEPARATOR GENERATED_SOURCES_TARGET
+ << MAKEFILE_DEPENDENCY_SEPARATOR ALL_SOURCE_DEPS_TARGET;
+ if (project->values("PRE_TARGETDEPS").size())
+ t << MAKEFILE_DEPENDENCY_SEPARATOR << project->values("PRE_TARGETDEPS").join(MAKEFILE_DEPENDENCY_SEPARATOR);
+ t << endl << endl;
+ t << GENERATED_SOURCES_TARGET ":";
+ if (project->values("GENERATED_SOURCES").size())
+ t << MAKEFILE_DEPENDENCY_SEPARATOR << project->values("GENERATED_SOURCES").join(MAKEFILE_DEPENDENCY_SEPARATOR);
+ t << endl << endl;
+ t << ALL_SOURCE_DEPS_TARGET ":";
+
+ QStringList allDeps;
+ for (QMap<QString, QStringList>::iterator it = sources.begin(); it != sources.end(); ++it) {
+ QString currentSourcePath = it.key();
+ QStringList values = it.value();
+ for (int i = 0; i < values.size(); ++i) {
+ // we need additional check
+ QString sourceFile = currentSourcePath + "/" + values.at(i);
+ QStringList deps = findDependencies(QDir::toNativeSeparators(sourceFile));
+ appendIfnotExist(allDeps, deps);
+ }
+ }
+
+ foreach(QString item, allDeps) {
+ t << MAKEFILE_DEPENDENCY_SEPARATOR << item;
+ }
+ t << endl << endl;
+
+ // Post link operations
+ t << FINALIZE_TARGET ":" << endl;
+ if (!project->isEmpty("QMAKE_POST_LINK")) {
+ t << '\t' << var("QMAKE_POST_LINK");
+ t << endl;
+ }
+ t << endl;
+ } else {
+ QList<MakefileGenerator::SubTarget*> subtargets = findSubDirsSubTargets();
+ writeSubTargets(t, subtargets, SubTargetSkipDefaultVariables | SubTargetSkipDefaultTargets);
+ qDeleteAll(subtargets);
+ }
+
+ writeDeploymentTargets(t);
+
+ generateDistcleanTargets(t);
+
+ t << "clean: $(ABLD)" << endl;
+ t << "\t-$(ABLD)" << testClause << " reallyclean" << endl;
+ t << "\t-bldmake clean" << endl;
+ t << endl;
+
+ // Create execution target
+ if (debugPlatforms.contains("winscw") && targetType == TypeExe) {
+ t << "run:" << endl;
+ t << "\t-call " << epocRoot() << "epoc32\\release\\winscw\\udeb\\" << removePathSeparators(escapeFilePath(fileFixify(project->first("TARGET"))).append(".exe")) << endl << endl;
+ }
+}
+
+void SymbianAbldMakefileGenerator::writeBldInfExtensionRulesPart(QTextStream& t)
+{
+ // We don't use extensions for anything in abld
+ Q_UNUSED(t);
+}
+
+bool SymbianAbldMakefileGenerator::writeDeploymentTargets(QTextStream &t)
+{
+ t << WINSCW_DEPLOYMENT_TARGET ":" << endl;
+
+ QString remoteTestPath = epocRoot() + QLatin1String("epoc32\\winscw\\c\\private\\") + privateDirUid; // default 4 OpenC; 4 all Symbian too
+ DeploymentList depList;
+ initProjectDeploySymbian(project, depList, remoteTestPath, false, QLatin1String("winscw"), QLatin1String("udeb"), generatedDirs, generatedFiles);
+
+ if (depList.size())
+ t << "\t-echo Deploying changed files..." << endl;
+
+ for (int i = 0; i < depList.size(); ++i) {
+ // Xcopy prompts for selecting file or directory if target doesn't exist,
+ // and doesn't provide switch to force file selection. It does provide dir forcing, though,
+ // so strip the last part of the destination.
+ t << "\t-$(XCOPY) \"" << depList.at(i).from << "\" \"" << depList.at(i).to.left(depList.at(i).to.lastIndexOf("\\") + 1) << "\"" << endl;
+ }
+
+ t << endl;
+
+ t << WINSCW_DEPLOYMENT_CLEAN_TARGET ":" << endl;
+ QStringList cleanList;
+ for (int i = 0; i < depList.size(); ++i) {
+ cleanList.append(depList.at(i).to);
+ }
+ generateCleanCommands(t, cleanList, "$(DEL_FILE)", "", "", "");
+
+ // Note: If deployment creates any directories, they will not get deleted after cleanup.
+ // To do this in robust fashion could be quite complex.
+
+ t << endl;
+
+ return true;
+}
+
+void SymbianAbldMakefileGenerator::writeBldInfMkFilePart(QTextStream& t, bool addDeploymentExtension)
+{
+ // Normally emulator deployment gets done via regular makefile, but since subdirs
+ // do not get that, special deployment only makefile is generated for them if needed.
+ if (targetType != TypeSubdirs || addDeploymentExtension) {
+ QString gnuMakefileName = QLatin1String("Makefile_") + uid3;
+ removeSpecialCharacters(gnuMakefileName);
+ gnuMakefileName.append(".mk");
+ t << "gnumakefile " << gnuMakefileName << endl;
+ }
+}
diff --git a/qmake/generators/symbian/symmake_abld.h b/qmake/generators/symbian/symmake_abld.h
new file mode 100644
index 0000000..7709d5d
--- /dev/null
+++ b/qmake/generators/symbian/symmake_abld.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the qmake application of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef SYMMAKE_ABLD_H
+#define SYMMAKE_ABLD_H
+
+#include <symmake.h>
+
+QT_BEGIN_NAMESPACE
+
+class SymbianAbldMakefileGenerator : public SymbianMakefileGenerator
+{
+protected:
+
+ // Inherited from parent
+ virtual void writeBldInfExtensionRulesPart(QTextStream& t);
+ virtual void writeBldInfMkFilePart(QTextStream& t, bool addDeploymentExtension);
+ virtual void writeMkFile(const QString& wrapperFileName, bool deploymentOnly);
+ virtual void writeWrapperMakefile(QFile& wrapperFile, bool isPrimaryMakefile);
+
+ bool writeDeploymentTargets(QTextStream &t);
+
+public:
+
+ SymbianAbldMakefileGenerator();
+ ~SymbianAbldMakefileGenerator();
+};
+
+#endif // SYMMAKE_ABLD_H
diff --git a/qmake/generators/symbian/symmake_sbsv2.cpp b/qmake/generators/symbian/symmake_sbsv2.cpp
new file mode 100644
index 0000000..2471a2b
--- /dev/null
+++ b/qmake/generators/symbian/symmake_sbsv2.cpp
@@ -0,0 +1,413 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the qmake application of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "symmake_sbsv2.h"
+#include "initprojectdeploy_symbian.h"
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qdir.h>
+#include <qdatetime.h>
+#include <qdebug.h>
+
+SymbianSbsv2MakefileGenerator::SymbianSbsv2MakefileGenerator() : SymbianMakefileGenerator() { }
+SymbianSbsv2MakefileGenerator::~SymbianSbsv2MakefileGenerator() { }
+
+#define FLM_DEST_DIR "epoc32/tools/makefile_templates/qt"
+#define FLM_SOURCE_DIR "/mkspecs/symbian-sbsv2/flm/qt"
+
+// Copies Qt FLMs to correct location under epocroot.
+// This is not done by configure as it is possible to change epocroot after configure.
+void SymbianSbsv2MakefileGenerator::exportFlm()
+{
+ static bool flmExportDone = false;
+
+ if (!flmExportDone) {
+ QDir sourceDir = QDir(QLibraryInfo::location(QLibraryInfo::PrefixPath) + FLM_SOURCE_DIR);
+ QFileInfoList sourceInfos = sourceDir.entryInfoList(QDir::Files);
+
+ QDir destDir(epocRoot() + FLM_DEST_DIR);
+ if (!destDir.exists()) {
+ if (destDir.mkpath(destDir.absolutePath()))
+ generatedDirs << destDir.absolutePath();
+ }
+
+ foreach(QFileInfo item, sourceInfos) {
+ QFileInfo destInfo = QFileInfo(destDir.absolutePath() + "/" + item.fileName());
+ if (!destInfo.exists() || destInfo.lastModified() < item.lastModified()) {
+ if (destInfo.exists())
+ QFile::remove(destInfo.absoluteFilePath());
+ if (QFile::copy(item.absoluteFilePath(), destInfo.absoluteFilePath()))
+ generatedFiles << destInfo.absoluteFilePath();
+ else
+ fprintf(stderr, "Error: Could not copy '%s' -> '%s'\n",
+ qPrintable(item.absoluteFilePath()),
+ qPrintable(destInfo.absoluteFilePath()));
+ }
+ }
+ flmExportDone = true;
+ }
+}
+
+void SymbianSbsv2MakefileGenerator::writeMkFile(const QString& wrapperFileName, bool deploymentOnly)
+{
+ // Can't use extension makefile with sbsv2
+ Q_UNUSED(wrapperFileName);
+ Q_UNUSED(deploymentOnly);
+}
+
+void SymbianSbsv2MakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, bool isPrimaryMakefile)
+{
+ QStringList allPlatforms;
+ foreach(QString platform, project->values("SYMBIAN_PLATFORMS")) {
+ allPlatforms << platform.toLower();
+ }
+
+ QStringList debugPlatforms = allPlatforms;
+ QStringList releasePlatforms = allPlatforms;
+ releasePlatforms.removeAll("winscw"); // No release for emulator
+
+ QString testClause;
+ if (project->values("CONFIG").contains("symbian_test", Qt::CaseInsensitive))
+ testClause = QLatin1String(".test");
+ else
+ testClause = QLatin1String("");
+
+ QTextStream t(&wrapperFile);
+
+ t << "# ==============================================================================" << endl;
+ t << "# Generated by qmake (" << qmake_version() << ") (Qt " << QT_VERSION_STR << ") on: ";
+ t << QDateTime::currentDateTime().toString() << endl;
+ t << "# This file is generated by qmake and should not be modified by the" << endl;
+ t << "# user." << endl;
+ t << "# Name : " << wrapperFile.fileName() << endl;
+ t << "# Description : Wrapper Makefile for calling Symbian build tools" << endl;
+ t << "#" << endl;
+ t << "# ==============================================================================" << "\n" << endl;
+ t << endl;
+ QString ofile = Option::fixPathToTargetOS(Option::output.fileName());
+ if (ofile.lastIndexOf(Option::dir_sep) != -1)
+ ofile = ofile.right(ofile.length() - ofile.lastIndexOf(Option::dir_sep) - 1);
+ t << "MAKEFILE = " << ofile << endl;
+ t << "QMAKE = " << Option::fixPathToTargetOS(var("QMAKE_QMAKE")) << endl;
+ t << "DEL_FILE = " << var("QMAKE_DEL_FILE") << endl;
+ t << "DEL_DIR = " << var("QMAKE_DEL_DIR") << endl;
+ t << "MOVE = " << var("QMAKE_MOVE") << endl;
+ t << "DEBUG_PLATFORMS = " << debugPlatforms.join(" ") << endl;
+ t << "RELEASE_PLATFORMS = " << releasePlatforms.join(" ") << endl;
+ t << "MAKE = make" << endl;
+ t << "SBS = sbs" << endl;
+ t << endl;
+ t << "DEFINES" << '\t' << " = "
+ << varGlue("PRL_EXPORT_DEFINES","-D"," -D"," ")
+ << varGlue("QMAKE_COMPILER_DEFINES", "-D", "-D", " ")
+ << varGlue("DEFINES","-D"," -D","") << endl;
+
+ t << "INCPATH" << '\t' << " = ";
+
+ for (QMap<QString, QStringList>::iterator it = systeminclude.begin(); it != systeminclude.end(); ++it) {
+ QStringList values = it.value();
+ for (int i = 0; i < values.size(); ++i) {
+ t << " -I\"" << values.at(i) << "\" ";
+ }
+ }
+ t << endl;
+ t << "first: default" << endl;
+ if (debugPlatforms.contains("winscw"))
+ t << "default: debug-winscw";
+ else if (debugPlatforms.contains("armv5"))
+ t << "default: debug-armv5";
+ else if (debugPlatforms.size())
+ t << "default: debug-" << debugPlatforms.first();
+ else
+ t << "default: all";
+
+ t << endl;
+ if (!isPrimaryMakefile) {
+ t << "all:" << endl;
+ } else {
+ t << "all: debug release" << endl;
+ t << endl;
+ t << "qmake:" << endl;
+ t << "\t$(QMAKE) -spec symbian-sbsv2 -o \"" << fileInfo(Option::output.fileName()).fileName()
+ << "\" \"" << project->projectFile() << "\"" << endl;
+ t << endl;
+ t << BLD_INF_FILENAME ":" << endl;
+ t << "\t$(QMAKE)" << endl;
+ t << endl;
+
+ t << "debug: " << BLD_INF_FILENAME << endl;
+ foreach(QString item, debugPlatforms) {
+ t << "\t$(SBS) -c " << item << "_udeb" << testClause << endl;
+ }
+ t << endl;
+ t << "release: " << BLD_INF_FILENAME << endl;
+ foreach(QString item, releasePlatforms) {
+ t << "\t$(SBS) -c " << item << "_urel" << testClause << endl;
+ }
+ t << endl;
+
+ // For more specific builds, targets are in this form: build-platform, e.g. release-armv5
+ foreach(QString item, debugPlatforms) {
+ t << "debug-" << item << ": " << BLD_INF_FILENAME << endl;
+ t << "\t$(SBS) -c " << item << "_udeb" << testClause << endl;
+ }
+
+ foreach(QString item, releasePlatforms) {
+ t << "release-" << item << ": " << BLD_INF_FILENAME << endl;
+ t << "\t$(SBS) -c " << item << "_urel" << testClause << endl;
+ }
+
+ t << endl;
+ t << "export: " << BLD_INF_FILENAME << endl;
+ t << "\t$(SBS) export" << endl;
+ t << endl;
+
+ t << "cleanexport: " << BLD_INF_FILENAME << endl;
+ t << "\t$(SBS) cleanexport" << endl;
+ t << endl;
+
+ }
+
+ // Add all extra targets including extra compiler targest also to wrapper makefile,
+ // even though many of them may have already been added to bld.inf as FLMs.
+ // This is to enable use of targets like 'mocables', which call targets generated by extra compilers.
+ if (targetType != TypeSubdirs) {
+ t << extraTargetsCache;
+ t << extraCompilersCache;
+ } else {
+ QList<MakefileGenerator::SubTarget*> subtargets = findSubDirsSubTargets();
+ writeSubTargets(t, subtargets, SubTargetSkipDefaultVariables|SubTargetSkipDefaultTargets);
+ qDeleteAll(subtargets);
+ }
+
+ generateDistcleanTargets(t);
+
+ t << "clean: " << BLD_INF_FILENAME << endl;
+ t << "\t-$(SBS) reallyclean" << endl;
+ t << endl;
+
+ // create execution target
+ if (debugPlatforms.contains("winscw") && targetType == TypeExe) {
+ t << "run:" << endl;
+ t << "\t-call " << epocRoot() << "epoc32/release/winscw/udeb/" << removePathSeparators(escapeFilePath(fileFixify(project->first("TARGET"))).append(".exe")) << endl << endl;
+ }
+}
+
+void SymbianSbsv2MakefileGenerator::writeBldInfExtensionRulesPart(QTextStream& t)
+{
+ // Makes sure we have needed FLMs in place.
+ exportFlm();
+
+ // Parse extra compilers data
+ QStringList defines;
+ QStringList incPath;
+
+ defines << varGlue("PRL_EXPORT_DEFINES","-D"," -D"," ")
+ << varGlue("QMAKE_COMPILER_DEFINES", "-D", "-D", " ")
+ << varGlue("DEFINES","-D"," -D","");
+ for (QMap<QString, QStringList>::iterator it = systeminclude.begin(); it != systeminclude.end(); ++it) {
+ QStringList values = it.value();
+ for (int i = 0; i < values.size(); ++i) {
+ incPath << QLatin1String(" -I\"") + values.at(i) + "\"";
+ }
+ }
+
+ // Write extra compilers and targets to initialize QMAKE_ET_* variables
+ // Cache results to avoid duplicate calls when creating wrapper makefile
+ QTextStream extraCompilerStream(&extraCompilersCache);
+ QTextStream extraTargetStream(&extraTargetsCache);
+ writeExtraCompilerTargets(extraCompilerStream);
+ writeExtraTargets(extraTargetStream);
+
+ // Figure out everything the target depends on as we don't want to run extra targets that
+ // are not necessary.
+ QStringList allPreDeps;
+ foreach(QString item, project->values("PRE_TARGETDEPS")) {
+ // Predeps get mangled in windows, so fix them to more sbsv2 friendly format
+#if defined(Q_OS_WIN)
+ if (item.mid(1, 1) == ":")
+ item = item.mid(0, 1).toUpper().append(item.mid(1)); // Fix drive to uppercase
+#endif
+ item.replace("\\", "/");
+ allPreDeps << escapeDependencyPath(item);
+ }
+
+ foreach (QString item, project->values("GENERATED_SOURCES")) {
+ allPreDeps.append(fileInfo(item).absoluteFilePath());
+ }
+
+ for (QMap<QString, QStringList>::iterator it = sources.begin(); it != sources.end(); ++it) {
+ QString currentSourcePath = it.key();
+ QStringList values = it.value();
+ for (int i = 0; i < values.size(); ++i) {
+ QString sourceFile = currentSourcePath + "/" + values.at(i);
+ QStringList deps = findDependencies(QDir::toNativeSeparators(sourceFile));
+ foreach(QString depItem, deps) {
+ appendIfnotExist(allPreDeps, fileInfo(depItem).absoluteFilePath());
+ }
+ }
+ }
+
+ // Write FLM rules for all extra targets and compilers that we depend on to build the target.
+ QStringList extraTargets;
+ extraTargets << project->values("QMAKE_EXTRA_TARGETS") << project->values("QMAKE_EXTRA_COMPILERS");
+ foreach(QString item, extraTargets) {
+ foreach(QString targetItem, project->values(QLatin1String("QMAKE_INTERNAL_ET_PARSED_TARGETS.") + item)) {
+ // Make sure targetpath is absolute
+ QString absoluteTarget = fileInfo(targetItem).absoluteFilePath();
+ if (allPreDeps.contains(absoluteTarget)) {
+ QStringList deps = project->values(QLatin1String("QMAKE_INTERNAL_ET_PARSED_DEPS.") + item + targetItem);
+ QString commandItem = project->values(QLatin1String("QMAKE_INTERNAL_ET_PARSED_CMD.") + item + targetItem).join(" ");
+
+
+ // Make sure all deps paths are absolute
+ QString absoluteDeps;
+ foreach (QString depItem, deps) {
+ if (!depItem.isEmpty()) {
+ absoluteDeps.append(fileInfo(depItem).absoluteFilePath());
+ absoluteDeps.append(" ");
+ }
+ }
+
+ t << "START EXTENSION qt/qmake_extra_pre_targetdep" << endl;
+ t << "OPTION PREDEP_TARGET " << absoluteTarget << endl;
+ t << "OPTION DEPS " << absoluteDeps << endl;
+
+ if (commandItem.indexOf("$(INCPATH)") != -1)
+ commandItem.replace("$(INCPATH)", incPath.join(" "));
+ if (commandItem.indexOf("$(DEFINES)") != -1)
+ commandItem.replace("$(DEFINES)", defines.join(" "));
+
+ // Sbsv2 strips all backslashes (even doubles ones) from option parameters, so just replace them with slashes
+ // Problem: If some command actually needs backslashes for something else than dir separator, we are out of luck...
+ commandItem.replace("\\", "/");
+ t << "OPTION COMMAND " << commandItem << endl;
+ t << "END" << endl;
+ }
+ }
+ }
+
+ t << endl;
+
+ // Write winscw deployment rules
+ QString remoteTestPath = epocRoot() + QLatin1String("epoc32/winscw/c/private/") + privateDirUid;
+ DeploymentList depList;
+ initProjectDeploySymbian(project, depList, remoteTestPath, false, QLatin1String("winscw"), QLatin1String("udeb"), generatedDirs, generatedFiles);
+
+ t << "#if defined(WINSCW)" << endl;
+ for (int i = 0; i < depList.size(); ++i) {
+ t << "START EXTENSION qt/qmake_emulator_deployment" << endl;
+ QString fromItem = depList.at(i).from;
+ QString toItem = depList.at(i).to;
+ fromItem.replace("\\", "/");
+ toItem.replace("\\", "/");
+#if defined(Q_OS_WIN)
+ toItem.prepend(QDir::current().absolutePath().left(2)); // add drive
+#endif
+ t << "OPTION DEPLOY_SOURCE " << fromItem << endl;
+ t << "OPTION DEPLOY_TARGET " << toItem << endl;
+ t << "END" << endl;
+ }
+ t << "#endif" << endl;
+
+ t << endl;
+
+ // Write post link rules
+ if (!project->isEmpty("QMAKE_POST_LINK")) {
+ t << "START EXTENSION qt/qmake_post_link" << endl;
+ t << "OPTION POST_LINK_CMD " << var("QMAKE_POST_LINK") << endl;
+ t << "OPTION LINK_TARGET " << removePathSeparators(escapeFilePath(fileFixify(project->first("TARGET"))).append(".").append(getTargetExtension())) << endl;
+ t << "END" << endl;
+ t << endl;
+ }
+
+ // Application icon generation
+ QStringList icons = project->values("ICON");
+ if (icons.size()) {
+ QString icon = icons.first();
+ if (icons.size() > 1)
+ fprintf(stderr, "Warning: Only first icon specified in ICON variable is used: '%s'.", qPrintable(icon));
+
+ t << "START EXTENSION s60/mifconv" << endl;
+
+ QFileInfo iconInfo = fileInfo(icon);
+ QString iconPath = iconInfo.path();
+ QString iconFile = iconInfo.baseName();
+
+ t << "OPTION SOURCES -c32 " << iconFile << endl;
+ t << "OPTION SOURCEDIR " << iconPath << endl;
+ t << "OPTION TARGETFILE " << uid3 << ".mif" << endl;
+ t << "OPTION SVGENCODINGVERSION 3" << endl; // Compatibility with S60 3.1 devices and up
+ t << "END" << endl;
+ }
+
+ // Generate temp dirs
+ QString tempDirs;
+ for (QMap<QString, QStringList>::iterator it = systeminclude.begin(); it != systeminclude.end(); ++it) {
+ QStringList values = it.value();
+ for (int i = 0; i < values.size(); ++i) {
+ QString value = values.at(i);
+ if (value.endsWith("/" QT_EXTRA_INCLUDE_DIR)) {
+ value = fileInfo(value).absoluteFilePath();
+ tempDirs.append(value);
+ tempDirs.append(" ");
+ }
+ }
+ }
+
+ if (tempDirs.size())
+ tempDirs.chop(1); // Remove final space
+
+ t << "START EXTENSION qt/qmake_generate_temp_dirs" << endl;
+ t << "OPTION DIRS " << tempDirs << endl;
+ t << "END" << endl;
+ t << endl;
+
+ t << endl;
+}
+
+void SymbianSbsv2MakefileGenerator::writeBldInfMkFilePart(QTextStream& t, bool addDeploymentExtension)
+{
+ // We don't generate extension makefile in sbsb2
+ Q_UNUSED(t);
+ Q_UNUSED(addDeploymentExtension);
+}
diff --git a/qmake/generators/symbian/symmake_sbsv2.h b/qmake/generators/symbian/symmake_sbsv2.h
new file mode 100644
index 0000000..7f78834
--- /dev/null
+++ b/qmake/generators/symbian/symmake_sbsv2.h
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the qmake application of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef SYMMAKE_SBSV2_H
+#define SYMMAKE_SBSV2_H
+
+#include <symmake.h>
+
+QT_BEGIN_NAMESPACE
+
+class SymbianSbsv2MakefileGenerator : public SymbianMakefileGenerator
+{
+protected:
+
+ // Inherited from parent
+ virtual void writeBldInfExtensionRulesPart(QTextStream& t);
+ virtual void writeBldInfMkFilePart(QTextStream& t, bool addDeploymentExtension);
+ virtual void writeMkFile(const QString& wrapperFileName, bool deploymentOnly);
+ virtual void writeWrapperMakefile(QFile& wrapperFile, bool isPrimaryMakefile);
+
+public:
+
+ SymbianSbsv2MakefileGenerator();
+ ~SymbianSbsv2MakefileGenerator();
+
+private:
+ void exportFlm();
+
+ QString extraTargetsCache;
+ QString extraCompilersCache;
+};
+
+#endif // SYMMAKE_SBSV2_H
diff --git a/qmake/generators/win32/msvc_dsp.cpp b/qmake/generators/win32/msvc_dsp.cpp
index 1f42bec..ebe7f81 100644
--- a/qmake/generators/win32/msvc_dsp.cpp
+++ b/qmake/generators/win32/msvc_dsp.cpp
@@ -682,7 +682,7 @@ void DspMakefileGenerator::writeSubDirs(QTextStream &t)
QString profile = tmp;
if(!profile.endsWith(Option::dir_sep))
profile += Option::dir_sep;
- profile += fi.baseName() + ".pro";
+ profile += fi.baseName() + Option::pro_ext;
subdirs.append(profile);
} else {
QMakeProject tmp_proj;
diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp
index dd5ea20..c192259 100644
--- a/qmake/generators/win32/msvc_objectmodel.cpp
+++ b/qmake/generators/win32/msvc_objectmodel.cpp
@@ -484,7 +484,7 @@ bool VCCLCompilerTool::parseOption(const char* option)
QString opt(option);
if (opt.contains('a') && !opt.contains('s') && !opt.contains('c'))
ExceptionHandling = ehSEH;
- else if (!opt.contains('a') && opt.contains("s-") && opt.contains("c-"))
+ else if (!opt.contains('a') && opt.contains("s-") && opt.contains("c-"))
ExceptionHandling = ehNone;
else if (!opt.contains('a') && opt.contains('s') && opt.contains('c'))
ExceptionHandling = ehNoSEH;
diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp
index 7c4c70f..c311b31 100644
--- a/qmake/generators/win32/msvc_vcproj.cpp
+++ b/qmake/generators/win32/msvc_vcproj.cpp
@@ -495,7 +495,7 @@ void VcprojGenerator::writeSubDirs(QTextStream &t)
QString profile = tmp;
if(!profile.endsWith(Option::dir_sep))
profile += Option::dir_sep;
- profile += fi.baseName() + ".pro";
+ profile += fi.baseName() + Option::pro_ext;
subdirs.append(profile);
} else {
QMakeProject tmp_proj;
@@ -1261,8 +1261,8 @@ void VcprojGenerator::initDeploymentTool()
searchPath = info.absoluteFilePath();
} else {
nameFilter = source.split('\\').last();
- if (source.contains('*')) {
- source = source.split('*').first();
+ if (source.contains('*')) {
+ source = source.split('*').first();
info = QFileInfo(source);
}
searchPath = info.absolutePath();
diff --git a/qmake/option.cpp b/qmake/option.cpp
index c76766e..678946a 100644
--- a/qmake/option.cpp
+++ b/qmake/option.cpp
@@ -68,6 +68,7 @@ QString Option::obj_ext;
QString Option::lex_ext;
QString Option::yacc_ext;
QString Option::pro_ext;
+QString Option::mmp_ext;
QString Option::dir_sep;
QString Option::dirlist_sep;
QString Option::h_moc_mod;
@@ -382,6 +383,7 @@ Option::init(int argc, char **argv)
Option::lex_ext = ".l";
Option::yacc_ext = ".y";
Option::pro_ext = ".pro";
+ Option::mmp_ext = ".mmp";
#ifdef Q_OS_WIN
Option::dirlist_sep = ";";
Option::shellPath = detectShellPath();
diff --git a/qmake/option.h b/qmake/option.h
index 857146b..8f54be3 100644
--- a/qmake/option.h
+++ b/qmake/option.h
@@ -92,6 +92,7 @@ struct Option
static QString dirlist_sep;
static QString sysenv_mod;
static QString pro_ext;
+ static QString mmp_ext;
static QString res_ext;
static char field_sep;
static const char *application_argv0;
diff --git a/qmake/project.cpp b/qmake/project.cpp
index 99e502a..dc5f74e 100644
--- a/qmake/project.cpp
+++ b/qmake/project.cpp
@@ -44,6 +44,8 @@
#include "option.h"
#include "cachekeys.h"
+#include "epocroot.h"
+
#include <qdatetime.h>
#include <qfile.h>
#include <qfileinfo.h>
@@ -76,7 +78,8 @@ QT_BEGIN_NAMESPACE
enum ExpandFunc { E_MEMBER=1, E_FIRST, E_LAST, E_CAT, E_FROMFILE, E_EVAL, E_LIST,
E_SPRINTF, E_JOIN, E_SPLIT, E_BASENAME, E_DIRNAME, E_SECTION,
E_FIND, E_SYSTEM, E_UNIQUE, E_QUOTE, E_ESCAPE_EXPAND,
- E_UPPER, E_LOWER, E_FILES, E_PROMPT, E_RE_ESCAPE, E_REPLACE };
+ E_UPPER, E_LOWER, E_FILES, E_PROMPT, E_RE_ESCAPE, E_REPLACE,
+ E_SIZE };
QMap<QString, ExpandFunc> qmake_expandFunctions()
{
static QMap<QString, ExpandFunc> *qmake_expand_functions = 0;
@@ -107,6 +110,7 @@ QMap<QString, ExpandFunc> qmake_expandFunctions()
qmake_expand_functions->insert("files", E_FILES);
qmake_expand_functions->insert("prompt", E_PROMPT);
qmake_expand_functions->insert("replace", E_REPLACE);
+ qmake_expand_functions->insert("size", E_SIZE);
}
return *qmake_expand_functions;
}
@@ -503,6 +507,68 @@ static void qmake_error_msg(const QString &msg)
msg.toLatin1().constData());
}
+enum isForSymbian_enum {
+ isForSymbian_NOT_SET = -1,
+ isForSymbian_FALSE = 0,
+ isForSymbian_ABLD = 1,
+ isForSymbian_SBSV2 = 2,
+};
+
+static isForSymbian_enum isForSymbian_value = isForSymbian_NOT_SET;
+
+// Checking for symbian build is primarily determined from the qmake spec,
+// but if that is not specified, detect if symbian is the default spec
+// by checking the MAKEFILE_GENERATOR variable value.
+static void init_isForSymbian(const QMap<QString, QStringList>& vars)
+{
+ if (isForSymbian_value != isForSymbian_NOT_SET)
+ return;
+
+ QString spec = QFileInfo(Option::mkfile::qmakespec).fileName();
+ if (spec.startsWith("symbian-abld", Qt::CaseInsensitive)) {
+ isForSymbian_value = isForSymbian_ABLD;
+ return;
+ }
+ if (spec.startsWith("symbian-sbsv2", Qt::CaseInsensitive)) {
+ isForSymbian_value = isForSymbian_SBSV2;
+ return;
+ }
+
+ QStringList generatorList = vars["MAKEFILE_GENERATOR"];
+
+ if (!generatorList.isEmpty()) {
+ QString generator = generatorList.first();
+ if (generator.startsWith("SYMBIAN_ABLD"))
+ isForSymbian_value = isForSymbian_ABLD;
+ else if (generator.startsWith("SYMBIAN_SBSV2"))
+ isForSymbian_value = isForSymbian_SBSV2;
+ else
+ isForSymbian_value = isForSymbian_FALSE;
+ } else {
+ isForSymbian_value = isForSymbian_FALSE;
+ }
+}
+
+bool isForSymbian()
+{
+ // If isForSymbian_value has not been initialized explicitly yet,
+ // call initializer with dummy map to check qmake spec.
+ if (isForSymbian_value == isForSymbian_NOT_SET)
+ init_isForSymbian(QMap<QString, QStringList>());
+
+ return (isForSymbian_value == isForSymbian_ABLD || isForSymbian_value == isForSymbian_SBSV2);
+}
+
+bool isForSymbianSbsv2()
+{
+ // If isForSymbian_value has not been initialized explicitly yet,
+ // call initializer with dummy map to check qmake spec.
+ if (isForSymbian_value == isForSymbian_NOT_SET)
+ init_isForSymbian(QMap<QString, QStringList>());
+
+ return (isForSymbian_value == isForSymbian_SBSV2);
+}
+
/*
1) environment variable QMAKEFEATURES (as separated by colons)
2) property variable QMAKEFEATURES (as separated by colons)
@@ -529,11 +595,21 @@ QStringList qmake_feature_paths(QMakeProperty *prop=0)
concat << base_concat + QDir::separator() + "unix";
break;
case Option::TARG_UNIX_MODE:
- concat << base_concat + QDir::separator() + "unix";
- break;
+ {
+ if (isForSymbian())
+ concat << base_concat + QDir::separator() + "symbian";
+ else
+ concat << base_concat + QDir::separator() + "unix";
+ break;
+ }
case Option::TARG_WIN_MODE:
- concat << base_concat + QDir::separator() + "win32";
- break;
+ {
+ if (isForSymbian())
+ concat << base_concat + QDir::separator() + "symbian";
+ else
+ concat << base_concat + QDir::separator() + "win32";
+ break;
+ }
case Option::TARG_MAC9_MODE:
concat << base_concat + QDir::separator() + "mac";
concat << base_concat + QDir::separator() + "mac9";
@@ -1386,6 +1462,9 @@ QMakeProject::read(uchar cmd)
fprintf(stderr, "Failure to read QMAKESPEC conf file %s.\n", spec.toLatin1().constData());
return false;
}
+
+ init_isForSymbian(base_vars);
+
if(Option::mkfile::do_cache && !Option::mkfile::cachefile.isEmpty()) {
debug_msg(1, "QMAKECACHE file: reading %s", Option::mkfile::cachefile.toLatin1().constData());
read(Option::mkfile::cachefile, base_vars);
@@ -1432,8 +1511,8 @@ QMakeProject::read(uchar cmd)
if(cmd & ReadProFile) { // parse project file
debug_msg(1, "Project file: reading %s", pfile.toLatin1().constData());
- if(pfile != "-" && !QFile::exists(pfile) && !pfile.endsWith(".pro"))
- pfile += ".pro";
+ if(pfile != "-" && !QFile::exists(pfile) && !pfile.endsWith(Option::pro_ext))
+ pfile += Option::pro_ext;
if(!read(pfile, vars))
return false;
}
@@ -1520,23 +1599,32 @@ QMakeProject::isActiveConfig(const QString &x, bool regex, QMap<QString, QString
else if(x == "false")
return false;
+ static QString spec;
+ if(spec.isEmpty())
+ spec = QFileInfo(Option::mkfile::qmakespec).fileName();
+
+ // Symbian is an exception to how scopes are resolved. Since we do not
+ // have a separate target mode for Symbian, but we expect the scope to resolve
+ // on other platforms we base it entirely on the mkspec. This means that
+ // using a mkspec starting with 'symbian*' will resolve both the 'symbian'
+ // and the 'unix' (because of Open C) scopes to true.
+ if(isForSymbian() && (x == "symbian" || x == "unix"))
+ return true;
+
//mkspecs
if((Option::target_mode == Option::TARG_MACX_MODE ||
Option::target_mode == Option::TARG_UNIX_MODE) && x == "unix")
- return true;
+ return !isForSymbian();
else if(Option::target_mode == Option::TARG_MACX_MODE && x == "macx")
- return true;
+ return !isForSymbian();
else if(Option::target_mode == Option::TARG_MAC9_MODE && x == "mac9")
- return true;
+ return !isForSymbian();
else if((Option::target_mode == Option::TARG_MAC9_MODE || Option::target_mode == Option::TARG_MACX_MODE) &&
x == "mac")
- return true;
+ return !isForSymbian();
else if(Option::target_mode == Option::TARG_WIN_MODE && x == "win32")
- return true;
+ return !isForSymbian();
QRegExp re(x, Qt::CaseSensitive, QRegExp::Wildcard);
- static QString spec;
- if(spec.isEmpty())
- spec = QFileInfo(Option::mkfile::qmakespec).fileName();
if((regex && re.exactMatch(spec)) || (!regex && spec == x))
return true;
#ifdef Q_OS_UNIX
@@ -1627,6 +1715,7 @@ QMakeProject::doProjectInclude(QString file, uchar flags, QMap<QString, QStringL
if(file.indexOf(Option::dir_sep) == -1 || !QFile::exists(file)) {
static QStringList *feature_roots = 0;
if(!feature_roots) {
+ init_isForSymbian(base_vars);
feature_roots = new QStringList(qmake_feature_paths(prop));
qmakeAddCacheClear(qmakeDeleteCacheClear_QStringList, (void**)&feature_roots);
}
@@ -2048,11 +2137,11 @@ QMakeProject::doProjectExpand(QString func, QList<QStringList> args_list,
} else {
QMakeProjectEnv env(place);
char buff[256];
- FILE *proc = QT_POPEN(args[0].toLatin1(), "r");
bool singleLine = true;
if(args.count() > 1)
singleLine = (args[1].toLower() == "true");
QString output;
+ FILE *proc = QT_POPEN(args[0].toLatin1(), "r");
while(proc && !feof(proc)) {
int read_in = int(fread(buff, 1, 255, proc));
if(!read_in)
@@ -2201,6 +2290,16 @@ QMakeProject::doProjectExpand(QString func, QList<QStringList> args_list,
ret += it->replace(before, after);
}
break; }
+ case E_SIZE: {
+ if(args.count() != 1) {
+ fprintf(stderr, "%s:%d: size(var) requires one argument.\n",
+ parser.file.toLatin1().constData(), parser.line_no);
+ } else {
+ //QString target = args[0];
+ int size = values(args[0]).size();
+ ret += QString::number(size);
+ }
+ break; }
default: {
fprintf(stderr, "%s:%d: Unknown replace function: %s\n",
parser.file.toLatin1().constData(), parser.line_no,
@@ -3053,6 +3152,9 @@ QStringList &QMakeProject::values(const QString &_var, QMap<QString, QStringList
} else if (var == QLatin1String("QMAKE_DIR_SEP")) {
if (place[var].isEmpty())
return values("DIR_SEPARATOR", place);
+ } else if (var == QLatin1String("EPOCROOT")) {
+ if (place[var].isEmpty())
+ place[var] = QStringList(epocRoot());
}
//qDebug("REPLACE [%s]->[%s]", qPrintable(var), qPrintable(place[var].join("::")));
return place[var];
diff --git a/qmake/project.h b/qmake/project.h
index 5b1a01d..348ffb96 100644
--- a/qmake/project.h
+++ b/qmake/project.h
@@ -192,6 +192,10 @@ inline QString QMakeProject::first(const QString &v)
inline QMap<QString, QStringList> &QMakeProject::variables()
{ return vars; }
+// Helper functions needed for Symbian
+bool isForSymbian();
+bool isForSymbianSbsv2();
+
QT_END_NAMESPACE
#endif // PROJECT_H
diff --git a/qmake/qmake.pri b/qmake/qmake.pri
index 01843bf..efe4f36 100644
--- a/qmake/qmake.pri
+++ b/qmake/qmake.pri
@@ -13,14 +13,24 @@ SOURCES += project.cpp property.cpp main.cpp generators/makefile.cpp \
generators/xmloutput.cpp generators/win32/borland_bmake.cpp \
generators/win32/msvc_nmake.cpp generators/projectgenerator.cpp \
generators/win32/msvc_dsp.cpp generators/win32/msvc_vcproj.cpp \
- generators/win32/msvc_objectmodel.cpp
+ generators/win32/msvc_objectmodel.cpp \
+ generators/symbian/symmake.cpp \
+ generators/symbian/symmake_abld.cpp \
+ generators/symbian/symmake_sbsv2.cpp \
+ generators/symbian/initprojectdeploy_symbian.cpp
+
HEADERS += project.h property.h generators/makefile.h \
generators/unix/unixmake.h meta.h option.h cachekeys.h \
generators/win32/winmakefile.h generators/projectgenerator.h \
generators/makefiledeps.h generators/metamakefile.h generators/mac/pbuilder_pbx.h \
generators/xmloutput.h generators/win32/borland_bmake.h generators/win32/msvc_nmake.h \
generators/win32/msvc_dsp.h generators/win32/msvc_vcproj.h \
- generators/win32/mingw_make.h generators/win32/msvc_objectmodel.h
+ generators/win32/mingw_make.h generators/win32/msvc_objectmodel.h \
+ generators/symbian/symmake.h \
+ generators/symbian/symmake_abld.h \
+ generators/symbian/symmake_sbsv2.h \
+ generators/symbian/epocroot.h \
+ generators/symbian/initprojectdeploy_symbian.h
contains(QT_EDITION, OpenSource) {
DEFINES += QMAKE_OPENSOURCE_EDITION
@@ -65,7 +75,9 @@ bootstrap { #Qt code
qlibraryinfo.cpp \
qvariant.cpp \
qvector.cpp \
- qvsnprintf.cpp
+ qvsnprintf.cpp \
+ qxmlstream.cpp \
+ qxmlutils.cpp
HEADERS+= \
qbitarray.h \
@@ -101,7 +113,9 @@ bootstrap { #Qt code
qtextstream.h \
qurl.h \
quuid.h \
- qvector.h
+ qvector.h \
+ qxmlstream.h \
+ qxmlutils.h
unix {
SOURCES += qfsfileengine_unix.cpp qfsfileengine_iterator_unix.cpp
diff --git a/qmake/qmake.pro b/qmake/qmake.pro
index a044d47..560aee9 100644
--- a/qmake/qmake.pro
+++ b/qmake/qmake.pro
@@ -17,8 +17,9 @@ VPATH += $$QT_SOURCE_TREE/src/corelib/global \
$$QT_SOURCE_TREE/src/corelib/kernel \
$$QT_SOURCE_TREE/src/corelib/codecs \
$$QT_SOURCE_TREE/src/corelib/plugin \
+ $$QT_SOURCE_TREE/src/corelib/xml \
$$QT_SOURCE_TREE/src/corelib/io
-INCPATH += generators generators/unix generators/win32 generators/mac \
+INCPATH += generators generators/unix generators/win32 generators/mac generators/symbian \
$$QT_SOURCE_TREE/include $$QT_SOURCE_TREE/include/QtCore
include(qmake.pri)
diff --git a/selfsigned.cer b/selfsigned.cer
new file mode 100644
index 0000000..af72449
--- /dev/null
+++ b/selfsigned.cer
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDFTCCAtOgAwIBAgIBADALBgcqhkjOOAQDBQAwcDELMAkGA1UEBhMCTk8xDjAM
+BgNVBAoTBU5va2lhMRQwEgYDVQQLEwtRdCBTb2Z0d2FyZTEOMAwGA1UEAxMFVHJv
+bGwxKzApBgkqhkiG9w0BCQEWHHF0czYwLWZlZWRiYWNrQHRyb2xsdGVjaC5jb20w
+HhcNMDgxMDAzMTMwNDM1WhcNMDkxMDAzMTMwNDM1WjBwMQswCQYDVQQGEwJOTzEO
+MAwGA1UEChMFTm9raWExFDASBgNVBAsTC1F0IFNvZnR3YXJlMQ4wDAYDVQQDEwVU
+cm9sbDErMCkGCSqGSIb3DQEJARYccXRzNjAtZmVlZGJhY2tAdHJvbGx0ZWNoLmNv
+bTCCAbYwggErBgcqhkjOOAQBMIIBHgKBgQC7OyI3lyV06OqahpbeEa5p9ucmoBxV
+n6YKvBjliPNMhQe7Di1Igv63rllQPqABv1Qu1YJc5CPiF4dSSQ/R7XjKEQqPZY4A
+PZooTKWVCs+e3Yo2HWaZYRks/euvcqvEOqmkZ2RUccaTb1T+b2et0vphFmlVYXPx
+BrIlbKtgJg+6QwIVAJnqTjBmWtEYQ6kFWfLE3yFIKx0BAoGAais4n6lD7yFJHB2F
+mb4W09EPx+LZTFSHgj9uzLiWWDEVl+j9jA4eYZBMb2yRBZ9zVXqjDSrFLWMuoNrV
+taqAVb9V2DrDHx3s0gSQmS5BNK2KThZCNOgj3YT4GRIZR4L6gqDBS5dkWLrwFUfC
+l6Hw9tizQR4EO4HgjEnMSxzXDzsDgYQAAoGAJH/tVAEb1boQKTt5eHRI/zCtw4ab
+Vtw7jHMzqQ+m921izJyzz5AJCVjtu6a1bLnW09i9oFIZ7bYs+Cd+qRgac2cVkX4x
+xmMXuAgw03VMf3vEbK2M2+BkjpUGrfoST5XG/eJbno6Tp1BGvYd88ZLt3gXBPnqi
+2QpMaOGqMED4mWkwCwYHKoZIzjgEAwUAAy8AMCwCFGCSlB1FYaBiIAuirrAACZzi
+p2jnAhQ/hlJjpxOgF7Z5RZCNAhz6HNhZ3g==
+-----END CERTIFICATE-----
diff --git a/selfsigned.key b/selfsigned.key
new file mode 100644
index 0000000..47c51a0
--- /dev/null
+++ b/selfsigned.key
@@ -0,0 +1,12 @@
+-----BEGIN DSA PRIVATE KEY-----
+MIIBugIBAAKBgQC7OyI3lyV06OqahpbeEa5p9ucmoBxVn6YKvBjliPNMhQe7Di1I
+gv63rllQPqABv1Qu1YJc5CPiF4dSSQ/R7XjKEQqPZY4APZooTKWVCs+e3Yo2HWaZ
+YRks/euvcqvEOqmkZ2RUccaTb1T+b2et0vphFmlVYXPxBrIlbKtgJg+6QwIVAJnq
+TjBmWtEYQ6kFWfLE3yFIKx0BAoGAais4n6lD7yFJHB2Fmb4W09EPx+LZTFSHgj9u
+zLiWWDEVl+j9jA4eYZBMb2yRBZ9zVXqjDSrFLWMuoNrVtaqAVb9V2DrDHx3s0gSQ
+mS5BNK2KThZCNOgj3YT4GRIZR4L6gqDBS5dkWLrwFUfCl6Hw9tizQR4EO4HgjEnM
+SxzXDzsCgYAkf+1UARvVuhApO3l4dEj/MK3DhptW3DuMczOpD6b3bWLMnLPPkAkJ
+WO27prVsudbT2L2gUhnttiz4J36pGBpzZxWRfjHGYxe4CDDTdUx/e8RsrYzb4GSO
+lQat+hJPlcb94luejpOnUEa9h3zxku3eBcE+eqLZCkxo4aowQPiZaQIUV0KZx9KH
+Qp9/xwskqgJvmWgR8KQ=
+-----END DSA PRIVATE KEY-----
diff --git a/src/3rdparty/freetype/src/base/ftobjs.c b/src/3rdparty/freetype/src/base/ftobjs.c
index 72dea33..086237a 100644
--- a/src/3rdparty/freetype/src/base/ftobjs.c
+++ b/src/3rdparty/freetype/src/base/ftobjs.c
@@ -348,14 +348,18 @@
/* free bitmap buffer if needed */
ft_glyphslot_free_bitmap( slot );
- /* free glyph loader */
- if ( FT_DRIVER_USES_OUTLINES( driver ) )
+ /* slot->internal might be 0 in out-of-memory situations */
+ if ( slot->internal )
{
- FT_GlyphLoader_Done( slot->internal->loader );
- slot->internal->loader = 0;
- }
+ /* free glyph loader */
+ if ( FT_DRIVER_USES_OUTLINES( driver ) )
+ {
+ FT_GlyphLoader_Done( slot->internal->loader );
+ slot->internal->loader = 0;
+ }
- FT_FREE( slot->internal );
+ FT_FREE( slot->internal );
+ }
}
@@ -1107,7 +1111,7 @@
if ( error )
{
destroy_charmaps( face, memory );
- if ( clazz->done_face )
+ if ( clazz->done_face && face )
clazz->done_face( face );
FT_FREE( internal );
FT_FREE( face );
diff --git a/src/3rdparty/freetype/src/base/ftstream.c b/src/3rdparty/freetype/src/base/ftstream.c
index cff67e0..901b683 100644
--- a/src/3rdparty/freetype/src/base/ftstream.c
+++ b/src/3rdparty/freetype/src/base/ftstream.c
@@ -211,7 +211,7 @@
FT_Stream_ReleaseFrame( FT_Stream stream,
FT_Byte** pbytes )
{
- if ( stream->read )
+ if ( stream && stream->read )
{
FT_Memory memory = stream->memory;
diff --git a/src/3rdparty/freetype/src/gzip/zconf.h b/src/3rdparty/freetype/src/gzip/zconf.h
index 3ccc3a6..2030a7e 100644
--- a/src/3rdparty/freetype/src/gzip/zconf.h
+++ b/src/3rdparty/freetype/src/gzip/zconf.h
@@ -5,6 +5,11 @@
/* @(#) $Id: zconf.h,v 1.4 2007/06/01 06:56:17 wl Exp $ */
+#if defined(__ARMCC__) || defined(__CC_ARM)
+/* Ultra ugly hack that convinces RVCT to use the systems zlib */
+#include <stdapis/zconf.h>
+#else /* defined(__ARMCC__) || defined(__CC_ARM) */
+
#ifndef _ZCONF_H
#define _ZCONF_H
@@ -276,3 +281,5 @@ typedef uLong FAR uLongf;
#endif
#endif /* _ZCONF_H */
+
+#endif /* defined(__ARMCC__) || defined(__CC_ARM) */
diff --git a/src/3rdparty/freetype/src/gzip/zlib.h b/src/3rdparty/freetype/src/gzip/zlib.h
index 50d0d3f..0f98fdc 100644
--- a/src/3rdparty/freetype/src/gzip/zlib.h
+++ b/src/3rdparty/freetype/src/gzip/zlib.h
@@ -28,6 +28,11 @@
(zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
*/
+#if defined(__ARMCC__) || defined(__CC_ARM)
+/* Ultra ugly hack that convinces RVCT to use the systems zlib */
+#include <stdapis/zlib.h>
+#else /* defined(__ARMCC__) || defined(__CC_ARM) */
+
#ifndef _ZLIB_H
#define _ZLIB_H
@@ -828,3 +833,5 @@ ZEXTERN(int) inflateInit2_ OF((z_streamp strm, int windowBits,
#endif
#endif /* _ZLIB_H */
+
+#endif /* defined(__ARMCC__) || defined(__CC_ARM) */
diff --git a/src/3rdparty/freetype/src/truetype/ttinterp.c b/src/3rdparty/freetype/src/truetype/ttinterp.c
index 2279a62..3be2502 100644
--- a/src/3rdparty/freetype/src/truetype/ttinterp.c
+++ b/src/3rdparty/freetype/src/truetype/ttinterp.c
@@ -806,8 +806,6 @@
return driver->context;
Fail:
- FT_FREE( exec );
-
return 0;
}
diff --git a/src/3rdparty/freetype/src/truetype/ttpload.c b/src/3rdparty/freetype/src/truetype/ttpload.c
index dc538fb..f5d985e 100644
--- a/src/3rdparty/freetype/src/truetype/ttpload.c
+++ b/src/3rdparty/freetype/src/truetype/ttpload.c
@@ -534,10 +534,10 @@
tt_face_free_hdmx( TT_Face face )
{
FT_Stream stream = face->root.stream;
- FT_Memory memory = stream->memory;
-
+ FT_Memory memory = stream ? stream->memory : NULL;
- FT_FREE( face->hdmx_record_sizes );
+ if ( face->hdmx_record_sizes )
+ FT_FREE( face->hdmx_record_sizes );
FT_FRAME_RELEASE( face->hdmx_table );
}
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-impl.c b/src/3rdparty/harfbuzz/src/harfbuzz-impl.c
index 9056a55..ddbf36b 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-impl.c
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-impl.c
@@ -33,7 +33,7 @@ HB_INTERNAL HB_Pointer
_hb_alloc(size_t size,
HB_Error *perror )
{
- HB_Error error = 0;
+ HB_Error error = (HB_Error)0;
HB_Pointer block = NULL;
if ( size > 0 )
@@ -54,7 +54,7 @@ _hb_realloc(HB_Pointer block,
HB_Error *perror )
{
HB_Pointer block2 = NULL;
- HB_Error error = 0;
+ HB_Error error = (HB_Error)0;
block2 = realloc( block, new_size );
if ( block2 == NULL && new_size != 0 )
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp b/src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp
index 36b9282..f92bb55 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp
@@ -935,7 +935,13 @@ static HB_Stream getTableStream(void *font, HB_GetFontTableFunc tableFunc, HB_Ta
if (error)
return 0;
stream = (HB_Stream)malloc(sizeof(HB_StreamRec));
+ if (!stream)
+ return 0;
stream->base = (HB_Byte*)malloc(length);
+ if (!stream->base) {
+ free(stream);
+ return 0;
+ }
error = tableFunc(font, tag, stream->base, &length);
if (error) {
_hb_close_stream(stream);
@@ -950,6 +956,8 @@ static HB_Stream getTableStream(void *font, HB_GetFontTableFunc tableFunc, HB_Ta
HB_Face HB_NewFace(void *font, HB_GetFontTableFunc tableFunc)
{
HB_Face face = (HB_Face )malloc(sizeof(HB_FaceRec));
+ if (!face)
+ return 0;
face->isSymbolFont = false;
face->gdef = 0;
@@ -961,6 +969,7 @@ HB_Face HB_NewFace(void *font, HB_GetFontTableFunc tableFunc)
face->tmpAttributes = 0;
face->tmpLogClusters = 0;
face->glyphs_substituted = false;
+ face->buffer = 0;
HB_Error error;
HB_Stream stream;
@@ -996,7 +1005,10 @@ HB_Face HB_NewFace(void *font, HB_GetFontTableFunc tableFunc)
for (unsigned int i = 0; i < HB_ScriptCount; ++i)
face->supported_scripts[i] = checkScript(face, i);
- hb_buffer_new(&face->buffer);
+ if (hb_buffer_new(&face->buffer) != HB_Err_Ok) {
+ HB_FreeFace(face);
+ return 0;
+ }
return face;
}
@@ -1116,6 +1128,8 @@ HB_Bool HB_SelectScript(HB_ShaperItem *shaper_item, const HB_OpenTypeFeature *fe
HB_Bool HB_OpenTypeShape(HB_ShaperItem *item, const hb_uint32 *properties)
{
+ HB_GlyphAttributes *tmpAttributes;
+ unsigned int *tmpLogClusters;
HB_Face face = item->face;
@@ -1123,8 +1137,16 @@ HB_Bool HB_OpenTypeShape(HB_ShaperItem *item, const hb_uint32 *properties)
hb_buffer_clear(face->buffer);
- face->tmpAttributes = (HB_GlyphAttributes *) realloc(face->tmpAttributes, face->length*sizeof(HB_GlyphAttributes));
- face->tmpLogClusters = (unsigned int *) realloc(face->tmpLogClusters, face->length*sizeof(unsigned int));
+ tmpAttributes = (HB_GlyphAttributes *) realloc(face->tmpAttributes, face->length*sizeof(HB_GlyphAttributes));
+ if (!tmpAttributes)
+ return false;
+ face->tmpAttributes = tmpAttributes;
+
+ tmpLogClusters = (unsigned int *) realloc(face->tmpLogClusters, face->length*sizeof(unsigned int));
+ if (!tmpLogClusters)
+ return false;
+ face->tmpLogClusters = tmpLogClusters;
+
for (int i = 0; i < face->length; ++i) {
hb_buffer_add_glyph(face->buffer, item->glyphs[i], properties ? properties[i] : 0, i);
face->tmpAttributes[i] = item->attributes[i];
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-stream.c b/src/3rdparty/harfbuzz/src/harfbuzz-stream.c
index 3dcee82..2d9638f 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-stream.c
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-stream.c
@@ -70,7 +70,7 @@ HB_INTERNAL HB_Error
_hb_stream_seek( HB_Stream stream,
HB_UInt pos )
{
- HB_Error error = 0;
+ HB_Error error = (HB_Error)0;
stream->pos = pos;
if (pos > stream->size)
diff --git a/src/3rdparty/libpng/pngconf.h b/src/3rdparty/libpng/pngconf.h
index 8eb7d35..066be02 100644
--- a/src/3rdparty/libpng/pngconf.h
+++ b/src/3rdparty/libpng/pngconf.h