Siegfried Pammer 15 years ago
parent
commit
9e90f563ec
  1. 108
      data/templates/project/VB/NotifyIcon.xpt
  2. 546
      data/templates/project/VB/NotifyIconResources.resx
  3. 2
      data/templates/project/VB/ProjectCategorySortOrder.xml
  4. 182
      data/templates/project/VB/SharpDevelopCustomTool.xpt
  5. 27
      data/templates/project/VB/SharpDevelopCustomToolTemplate.xft.xml
  6. 169
      data/templates/project/VB/SilverlightApplication.xpt
  7. 126
      data/templates/project/VB/WebService.xpt
  8. 443
      data/templates/project/VB/WebpageProject.xpt

108
data/templates/project/VB/NotifyIcon.xpt

@ -0,0 +1,108 @@ @@ -0,0 +1,108 @@
<?xml version="1.0"?>
<Template originator = "Siegfried Pammer"
created = "14/11/2010"
lastModified = "14/11/2010">
<!-- Template Header -->
<TemplateConfiguration>
<Name>${res:Templates.Project.SysTrayIcon.Name}</Name>
<Category>VB</Category>
<Subcategory>${res:Templates.File.Categories.WindowsApplications}</Subcategory>
<Icon>VBNet.Project.Form</Icon>
<Description>${res:Templates.Project.SysTrayIcon.Description}</Description>
<SupportedTargetFrameworks>v2.0;v3.5Client</SupportedTargetFrameworks>
</TemplateConfiguration>
<!-- Actions -->
<Actions>
<Open filename = "NotificationIcon.vb"/>
</Actions>
<Project language="VBNet">
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ProjectItems>
<PropertyGroup>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
</PropertyGroup>
<Files>
<File name="NotificationIcon.vb"><![CDATA[${StandardHeader.VBNET}
Imports System.Diagnostics
Imports System.Drawing
Imports System.Threading
Imports System.Windows.Forms
Public NotInheritable Class NotificationIcon
Private notifyIcon As NotifyIcon
Private notificationMenu As ContextMenu
#Region "Initialize icon and menu"
Public Sub New()
notifyIcon = New NotifyIcon()
notificationMenu = New ContextMenu(InitializeMenu())
AddHandler notifyIcon.DoubleClick, AddressOf IconDoubleClick
Dim resources As New System.ComponentModel.ComponentResourceManager(GetType(NotificationIcon))
notifyIcon.Icon = DirectCast(resources.GetObject("$this.Icon"), Icon)
notifyIcon.ContextMenu = notificationMenu
End Sub
Private Function InitializeMenu() As MenuItem()
Dim menu As MenuItem() = New MenuItem() {New MenuItem("About", AddressOf menuAboutClick), New MenuItem("Exit", AddressOf menuExitClick)}
Return menu
End Function
#End Region
#Region "Main - Program entry point"
''' <summary>Program entry point.</summary>
''' <param name="args">Command Line Arguments</param>
<STAThread> _
Public Shared Sub Main(args As String())
Application.EnableVisualStyles()
Application.SetCompatibleTextRenderingDefault(False)
Dim isFirstInstance As Boolean
' Please use a unique name for the mutex to prevent conflicts with other programs
Using mtx As New Mutex(True, "${StandardNamespace}", isFirstInstance)
If isFirstInstance Then
Dim notificationIcon As New NotificationIcon()
notificationIcon.notifyIcon.Visible = True
Application.Run()
notificationIcon.notifyIcon.Dispose()
' The application is already running
' TODO: Display message box or change focus to existing application instance
Else
End If
End Using
' releases the Mutex
End Sub
#End Region
#Region "Event Handlers"
Private Sub menuAboutClick(sender As Object, e As EventArgs)
MessageBox.Show("About This Application")
End Sub
Private Sub menuExitClick(sender As Object, e As EventArgs)
Application.[Exit]()
End Sub
Private Sub IconDoubleClick(sender As Object, e As EventArgs)
MessageBox.Show("The icon was double clicked")
End Sub
#End Region
End Class
]]>
</File>
<File name="NotificationIcon.resx" src="NotifyIconResources.resx" buildAction="EmbeddedResource" DependentUpon="NotificationIcon.vb" />
<File name="Properties\AssemblyInfo.vb" src="DefaultAssemblyInfo.vb" />
</Files>
</Project>
</Template>

546
data/templates/project/VB/NotifyIconResources.resx

@ -0,0 +1,546 @@ @@ -0,0 +1,546 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAkAMDAQAAAAAABoBgAAlgAAACAgEAAAAAAA6AIAAP4GAAAQEBAAAAAAACgBAADmCQAAMDAAAAEA
CACoDgAADgsAACAgAAABAAgAqAgAALYZAAAQEAAAAQAIAGgFAABeIgAAMDAAAAEAIACoJQAAxicAACAg
AAABACAAqBAAAG5NAAAQEAAAAQAgAGgEAAAWXgAAKAAAADAAAABgAAAAAQAEAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAIAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAAAAAAA//8A/wAAAP8A
/wD//wAA////AACAAACZmZmZmZmZmZmZmZmZmZmZmZAACZmZmZmZmZmZmZmZmZmZmZmZmZmZAAKiIJmZ
mZmZmZmZmZmZmZmZmZmZmZAAKioqIgmZmZmZmZmZmZmZmZmZmZmZmZCioqKiIiCZmZmZmZmZmZAAAACZ
kAAAAAAKKioqIiIJmZmZmZmZmQAAAAAJkAAAAAAAoqKiIiIgmZmZmZmZkAdu7ucAkH7u7mcACioqIiIg
mZmZmZmZkG7u7u7gAH7u7u7nAKKiIiIgmZmZmZmZkO7uZu7mAH7u7u7uYAoqIiIgmZmZmZmZkH5wAH7u
AH7nAAbu5wKiIiIgmZmZmZmZmQAAAA7ucH7nBwB+7gAqIiIgmZmZmZmZmZAAAH7ucH7nAHAG7nCiIiIg
mZmZmZmZmQAAB+7uAH7nBwAH7mAqIiIgmZmZmZmZkAB27u7nAH7nAHAH7uCiIiIgmZmZmZmZAAbu7u5w
AH7nBwAH7uAqIiIgmZmZmZmQAG7u5nAAAH7nAHAH7uCiIiIgmZmZmZkAcO7mAAAAAH7nBwAH7mAqIiIg
mZmZmZAHB+7gAAAAAH7nAAAG7nCiIiIgmZmZmZBwB+7gAAdwAH7nAABu5goqIiIgmZmZmZAHB+7md37g
AH7mZmbu5wKiIiIgmZmZmZBwcH7u7u7mAH7u7u7ucCoqIiIgmZmZmZAHBwfu7u5gAH7u7u5gAqKiIiIg
mZkAAABwbnAHZncAcHd3d3AAKioqIiIgmZkAcHAO5uZwAAB3YAAAAACioqKqIiIgmZkHBwBu7m5gcAZm
dnZ3AHAqKqqqoiIgmZkAcHDm7ubmBwZmZ2dnBwCqqqqqqiIgmZkHBwcObu5uYAZmZnZ2AHCqqqqqqqIg
mZkAcHBw5u7m5mZmZmdnZ3cKqqqqqqogmZkHBwcHDm7ubmZmZmZ2dndwqqqqqqqgmZkAAAAAAObu5uZm
ZmZ2dnd3CqqqqgAJmZkHd2dmZubu7m5gAABnZ2d3cKqgAACZmZkHd3Z2Zm5u7mAAcHAAdnZ3dwAHZmCZ
mZkHd3Z2Zmbm7gcHBwcHB2dnd3d2dmCZmZkHd3dnZmbm7gAAAAAABnZ2d3d3Z2CZmZkHd3d2dmZubuAA
AAAAZmdnZ3d3Z2CZmZkHd3d3Z2Zm5u7gAABmZmdnZ3d3dnCZmZkAAAAAAAZmbm7ubmZmZmZ2AAAAAACZ
mZmZmZBwcGdmZubu5uZmZmZnYHBwmZmZmZmZmZAHB2dmZubu7m5mZmZmdgcAmZmZmZmZmZBwd3Z3YA5u
7ubmAGZmdnBwmZmZmZmZmZAHd3dmCQbm7u5uCQZmZ2cAmZmZmZmZmZB3d3dwmQZubu5uCZBmZnZwmZmZ
mZmZmZkHd3cJmQZm5u7mCZkGZmcJmZmZmZmZmZmQd3CZmQZm5u7uCZmQZmCZmZmZmZmZmZmZBwmZmQZm
bm7uCZmZBgmZmZmZmZmZmZmZkJmZmQZmZubuCZmZkJmZmZmZmZmZmZmZmZmZmQZmZm5uCZmZmZmZmZmZ
mZmZmZmZmZmZmQAAAAAACZmZmZmZmZmZmZn/////4f8AAP////8A/wAA////+AB/AAD////4AD8AAP/g
OAAAHwAA/8AYAAAPAAD/gAgAAA8AAP+AAAAADwAA/4AAAAAPAAD/gAAAAA8AAP/AAAAADwAA/+AAAAAP
AAD/wAAAAA8AAP+AAAAADwAA/wAAAAAPAAD+AAAAAA8AAPwAAAAADwAA+AAAAAAPAAD4AAAAAA8AAPgA
AAAADwAA+AAAAAAPAAD4AAAAAA8AAAAAAAAADwAAAAAAAAAPAAAAAAAAAA8AAAAAAAAADwAAAAAAAAAP
AAAAAAAAAA8AAAAAAAAADwAAAAAAAAAfAAAAAAAAAD8AAAAAAAAAPwAAAAAAAAA/AAAAAAAAAD8AAAAA
AAAAPwAAAAAAAAA/AAAAAAAAAD8AAPgAAAAD/wAA+AAAAAP/AAD4AAAAA/8AAPgBABAD/wAA+AMAGAP/
AAD8BwAcB/8AAP4PAB4P/wAA/x8AHx//AAD/vwAfv/8AAP//AB///wAA//8AH///AAAoAAAAIAAAAEAA
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
sgACs64AAq2oAAF1cgABbGkAAWNgAAFaWAADxL4AAqWhAAKJhQAChoIAAoSAAAKCfgABR0UAAoB9AAJ9
egACe3gAAnl2AAJ4dQACd3QAAnVyAAJzcAACcm8AAnFuAAJwbQACbWoAAmtoAAJpZgACaGUAAmViAAXJ
xAAFwLsADcbCABTMygAAGhoAABERAAAICAAZ09MAH8/RACbX2QAkzs4AIc7RAC7e4gA12d8AOuLpAEPb
5ABH5e8AQ9PeAP///wDu7u4A3t7eAM7OzgC6uroAuLi4ALW1tQCqqqoAmZmZAJSUlACIiIgAenp6AHV1
dQBlZWUAVVVVAERERAA6OjoAMDAwACsrKwAkJCQAIyMjACAgIAAbGxsAFxcXABAQEAAAAAAAmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn/////mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZn///+qqqjH/5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn/
///Myqyrqamoqv+ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn/u7Kxr67IxqaoqMv/
mZmZmZmZmZmZmZmZmZmZmZn/////////mZmZ/////////////7O70q+uqqaoqa7R/5mZmZmZmZmZmZmZ
mZmZmf/9//v//////5mZ//////////////+8s9LOyamopq2xs/+ZmZmZmZmZmZmZmZmZ///y6Obm5ubu
/v+Z//Lm5ubm5ury+///vLuxy6mqxayxs/+ZmZmZmZmZmZmZmZmZ/+rm5ubm5ubm5/v6//Lm5ubm5ubm
5vL//7yyzqqrxayws/+ZmZmZmZmZmZmZmZmZ/+bm5ufq6Obm5ur///Lm5ubm5ubm5ubt//+7navIxcjP
s/+ZmZmZmZmZmZmZmZmZ//Pm7v8C//Dm5ub///Lm5vL////t5ubm8P+7uqusp8ivu/+ZmZmZmZmZmZmZ
mZmZmf/////////m5ub///Lm5vL/8vb/7ubm5vv/usjIp6vOu/+ZmZmZmZmZmZmZmZmZmZn///////Xm
5ub///Lm5vL/7+z//+jm5vDYusfIparN0/+ZmZmZmZmZmZmZmZmZmf/////77ubm5uf/IfLm5vL/7+v/
2fDm5ur/namrpanM0/+ZmZmZmZmZmZmZmZmZ//z/8+nm5ubm5vKYB/Lm5vL/7+z/mvXm5ub/nKWowqbL
sv+ZmZmZmZmZmZmZmZn/Av7p5ubm5ubm8v+Xl/Lm5vL/8O3/w/Xm5ub/ucGmwaeusv+ZmZmZmZmZmZmZ
mf9i/+rm5ubm6PD7/ySNJPLm5vL/8O//mvPm5uf/qb/EwMSt0v+ZmZmZmZmZmZmZ/41C/ubm5u33//+W
Yl1dJPLm5vL/8vH//+7m5u3awaLBv8Ks0f+ZmZmZmZmZmZn/hmZl9ebm5v769P9CZWWGQvLm5vL/////
9+bm5vOao6C/o8HIsf+ZmZmZmZmZmZn/hYVi9+bm5vv/+P/19ACNQvLm5vL/+f/15+bm6P+8oJ6josCr
0P+ZmZmZmZmZmZn/Vlhd/+fm5un09e7m5/cHRPLm5ury8u3m5ubm9dmgnr6iosCqsP+ZmZmZmZmZmZn/
iIRhAfLm5ubm5ubm5uqWYvLm5ubm5ubm5ubz/8u+uLihob+or/+ZmZmZmZmZmZn/XIxbVf/y5ubm5ubm
6feXjfLm5ubm5ubm6vf/u7i4t7egoaOmr/+ZmZmZ////////i1o4GFX/+/Lq6u70/2pwJ/Xy8vLy8vP7
/5qit7a2pKSgoKOnzv+ZmZmZ/2aGhmb/WT1AORiAjZZqal4vk5JJk5EnXY1lYmL/nqSktbW15eWfoKOl
zf+ZmZmZ/4qKior/HBsdQDkYM1tBQYRQeJVKkkZrQ46EQWT/vb294+Pj3tfWn6KlzP+ZmZmZ/4iIiIiI
GxwbGR84FxNaWoh9enZOdXFGkGmIWlr/1OTk4+Hd39fW1Z/Crv+ZmZmZ/1dXV1dXVxsbGxkfOBcTWYhU
fXt2lHVuRpCIWWf/5OTk4+Hd3NfWtJufrv+ZmZmZ/2RkZGRkZGQbGxs+HzgYM4FSU317d5R1SGxrQ45j
/+Tk4uDd29fWtLSbn/+ZmZmZ/1lZWVlZWVlZGxsdPjw5GDOBUlN+T01Lckdta4+OX//k4uDd29fUvbS0
m/+ZmZmZ/1lZWVlZWVlZWRsbGz88OjQwgVJRgE94THNHbUWPZ1//4uDd29fU1P///5mZmZmZ/wUIJikM
DhARMTcbGz0ePDo0MIiIiIiITnRub5BpaGdf/+Dd2////zz/mZmZmZmZ/yIFCCYpKw0QExU2GxwdHziI
iIuLi4uLiIh1bkaQaWhnWf///5J4UyD/mZmZmZmZ/wMiBgkKKisuDxIUNhsbHYiHh4eHh4eHh4eISkhs
a0OOY1laZ2tzUFT/mZmZmZmZ/wMDIwYJKAssLTAyFh0bG4iMjIyMYIyMjIyIS3JHbWtDjmNZWo5tSnn/
mZmZmZmZ/wMDBCMICSgMDi0RMjUcGz2IiIiIiIiIiIhPTUtzR21Fj2dfWVlobEv/mZmZmZmZ/wMDAwQF
CCYpDA4QETE3GxsZHoiIiIiIVHyAeU50cW+QaWhnX1pfQ2//mZmZmZmZ//////+CYWFhYWENEBIVNhsc
GR84FxMwUlR8endOdW6JiYmJiYL/////mZmZmZmZmZmZmZn/YWFhWSorLg8SFB0bGx0fORgzgVJUfXt3
lEpIWSWJJf+ZmZmZmZmZmZmZmZmZmZn/XINZCSgLLC0wMhYdGxs+PDkYM4FSU397TUtyR1lcXP+ZmZmZ
mZmZmZmZmZmZmZn/QVkjCCYoDA4t//81GRs9Pzw6NDD//1GAeXhMc29ZQf+ZmZmZmZmZmZmZmZmZmZn/
WQMEBQgmKQz/mf8xNxscPR48FzT/mf98enlOTHFvWf+ZmZmZmZmZmZmZmZmZmZn/AwMDIgUIJv+Zmf8S
FDYbGx0fOBf/mZn/fXp3TnVuRv+ZmZmZmZmZmZmZmZmZmZmZ/wMDAyIF/5mZmf8PEhQ2Ghs+Hzj/mZmZ
/317d5RK/5mZmZmZmZmZmZmZmZmZmZmZmf8DAwP/mZmZmf8tMDIWGRscPjz/mZmZmf9+T03/mZmZmZmZ
mZmZmZmZmZmZmZmZmZn/A/+ZmZmZmf8OLREyNRkbPT//mZmZmZn/gP+ZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZ/5mZmZmZmf8MDhARMTccGxn/mZmZmZmZ/5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmf8p
Kw0QEhU2Oxv/mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmf//////////////mZmZ
mZmZmZmZmZmZmZmZmZmZmZmZ/////+H/AAD/////AP8AAP////gAfwAA////+AA/AAD/4DgAAB8AAP/A
GAAADwAA/4AIAAAPAAD/gAAAAA8AAP+AAAAADwAA/4AAAAAPAAD/wAAAAA8AAP/gAAAADwAA/8AAAAAP
AAD/gAAAAA8AAP8AAAAADwAA/gAAAAAPAAD8AAAAAA8AAPgAAAAADwAA+AAAAAAPAAD4AAAAAA8AAPgA
AAAADwAA+AAAAAAPAAAAAAAAAA8AAAAAAAAADwAAAAAAAAAPAAAAAAAAAA8AAAAAAAAADwAAAAAAAAAP
AAAAAAAAAA8AAAAAAAAAHwAAAAAAAAA/AAAAAAAAAD8AAAAAAAAAPwAAAAAAAAA/AAAAAAAAAD8AAAAA
AAAAPwAAAAAAAAA/AAD4AAAAA/8AAPgAAAAD/wAA+AAAAAP/AAD4AQAQA/8AAPgDABgD/wAA/AcAHAf/
AAD+DwAeD/8AAP8fAB8f/wAA/78AH7//AAD//wAf//8AAP//AB///wAAKAAAACAAAABAAAAAAQAIAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAABsaGwBJRUAA8ujaAOLWwwDVy7sA/vTkAPjv4QCZhmMAeGlOAKqV
bwCOfF0ArJdxAJOBYQA5MiYAoo9tAH1uVQC1oH0Aqph3AK2bewC5poUAp5d6ALmpjAC3qZEA2cy2ANzQ
ugDWzLoA593LAO7k0wDt49IA6+HQAOfezgDx6NgA6+LTAPTr3ADz6tsA8OfYAPfu3wDz690A+fHjAC0o
HgCdjGoAFhQQALWlhwCyo4UAJCEbAMO1mQC4q5MAo5iCAJ2TfwCelIEA0sWtAOHUvAC1q5cAzMGrAJOL
ewDl2sUA7OHMANPKuAD37dkA6d/MANnQvgDXzr0AyMCwAHx3bQD47tsA5NvKAOLZyABNSkQA9+7cAPLp
2ADw59YA/fTjAOzk1ADp4dEA7+fXAOvj1AD17d4A9OzdAPHp2gDt5dYAQD46AGVbRgBWTjwAd2xUAGxi
TAA2MSYAYFdEAJCEagCbj3UAiH5oAJuQdwCbkHgAnZJ7AKSZggCnnIUAzL+kAHNsXQCxp5EAmpF+ALCm
kQCto44Aw7mjALqwmwCxqJUAu7KeAL+2ogDDuqcA0sm2AN3VxADm39AAXVQ+AGddRgB1alAAY1pFAF1V
QQByaFAAaF9JAHBmTwBEPjAAlIdpAIl9YQB/dFoAeW9WAHFnUABIQjMAhXpgAEhCNACLgGUAgXdeAI2C
aACIfmUAb2dTAJaLcQAoJR4AkohvAGFaSgCXjXUAkohxALSpjwChl4AArqSNAKifiQCroowAsaiSAMa8
pAC4r5kAt66YAMC3oQC9tJ8AxLumAP/45wBmXUUAaWFKAFVOPABkXEcATUc3AG1lTwBqYk0AeG9YAIF4
YABxaVQAkIZsAIqCbACEfWsAtq2WAP/56QAdGxUAMS4lABAPCgD///0AW1taAAAAAAAABwYADSUjAACz
rQABuLIAAWllAAFbWAACm5YAApOOAAKOiQACiIMAAVVSAAKAfAACfnoAAn14AAJ8dwACe3cAAnl1AAJ2
cgACcW0AAm9rAAJtaQABPDkAAlxZAAJWUwAMKyoADCgnAA0nJgANJiUADSUkAAAoJwABZGEAA8jCAAKk
nwACnZkAApWRAAKKhgAChYEABNLNAAJ3dAACdHEAAnNwAAJybwACcW4AAm1qAAJraAACamcAAmlmAATB
vAACX10ABq2oAA3Z1gAOv7wAEcnHAAAJCQAb09MABBoaACPMzgAiw8UAByIiAC/x9QAq2NsAKLG1ADjX
3gBA3OUAPM3UAE3z/gA4u8QA////AO7u7gDm5uYA3t7eAM7OzgC6uroAra2tAJubmwCZmZkAgICAAHd3
dwBlZWUAMTExACUlJQATExMAAgICAAAAAACrq6urq6urq6urq6urq6urq6urq6urq62tra2rq6urq6ur
q6urq6urq6urq6urq6urq6utra2t3Lq3wq2rq6urq6urq6urq////////6v//////63/trDZ19W4wq2r
q6urq6urq6v////////8////////////tsrA1b29w62rq6urq6ur///68O/v8Pn///Hv7+/0+v//ttnW
077Axqurq6urq6v//+/v8/Pv76r/8e/v7+/v9P//sb7T1dqtq6urq6urq6v//////fXv9f/x7/////Dv
9//B1L3U2Mirq6urq6urq6v///z/9+/0//Hv///j/+/v/8HTvdPAyKurq6urq6ur+/3/qvTv7/n/8e//
/+bj8u//wby70r/Hq6urq6urqyn/+/Lv7+/0p//x7///5sn07//BuLm8vserq6urq6spUv/w7+/2qlV2
//Hv///j4fLv/8HQt7nUxqurq6urKXxS/+/v//+m////8e///6z/7+//wbTQt9PGq6urq6spUlL/7+//
///4///x7//+//Dv9/+yzs/Q0serq6urqylWdv/z7/D07+////Hv7+/v7/P/sczNtNC8xqurKSkpAFEx
Afv07+/v+P//8e/v7/L3/7HdrsyztbvGq6spm5uojSVsP///////Nv///////8Wxrq/f3bPPucWrqyx0
cX5NAkttPYKXYmaOL4iGnHrFy9vk5Orlzc+4xaurhXp1dTAGIUhJPZ9klZKMXVyegMXn6+vq5ODbsrjG
q6sneHl5cC8kAk8eQhk1amZjL1qhxezt6+ji4MvbzMSrq6d3f4FXeGYmTktBQms0Y41hXYiBxe7n6OLe
0a+vxaurDRAqLTUYGh8iIyJponF0mFmLi4SBxenn4sXFxcWrq6tVCxEqLV8YOwImPm5ve3V1b51eXIZ/
xcXFYDYnq6urqw0JDhIVLTIzHSRsnG6aUZpyn2FeW4Z/fYChpCerq6urJwcKKBQrLjUDHCYeZ52DoGeU
kYxdhoJ9gHqJJ6urq6tDQ0NDQ1JUFhc3RSRMSh5sOTVpNIxZcXJDQ0NDq6urq6urq0OaUystXzMEIE0f
IEI8amhlj4yEc3ZDq6urq6urq6urQ3koEipfNkNDBSJKSUZQQ2iTYY1YmUOrq6urq6urq6tDDA4OE1lD
q0NAIiJPREOrQ5SUZIqHQ6urq6urq6urq6tDBwkPQ6urQzgbIQJHQ6urQ2iQo0Orq6urq6urq6urq6tD
CEOrq6tDMzdGIqVDq6urQzZDq6urq6urq6urq6urq6tDq6urq0MzNzqWqUOrq6urQ6urq6urq6urq6ur
q6urq6urq6urQ0NDQ0NDQ6urq6urq6urq6urq6ur///+H///4A/+BAAH/AAAA/gAAAP4AAAD/AAAA/4A
AAP8AAAD+AAAA/AAAAPgAAAD4AAAA+AAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAHAAAADwAA
AA8AAAAPAAAAD+AAAD/gAAA/4CAgP/BgMH/44Dj//eA9///gP/8oAAAAEAAAACAAAAABAAgAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA0MCmAMe5ogDy6NgA7uTUAPfu4ACAcVYAtqF9AObaxQDo3coA1827AOng
0ADo388A/vXlAPrx4QD37t4AxrKNAKubfQConIUAuK6aAOvfxwDHvakAzcSzAPDo2QD58eIAbWJLAEQ+
MQCpm30AppqAAJiNdQCRinsAt6+dALqyoACGe2AAiH1iAHRrVgCQhm0AmI52AExHOwCakHgAo5mCAKac
hQC7sZoAn5eDAEpFOAC6sJYAuK+YAL61ngC1rZgAo5yKAP//8gAAAAAAAVFOAAGuqQACz8kAAoJ+ADDw
9AAw7/MA////AL+/vwBBQUEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMjIyMjIyMjIyMjMzMjIyMjw8PDw8PDw8PDw1NDMyMjI8Ojk5
Ozw6OTo7PDQ2MzIyPDw7Ojo8OTw7Ojw0NjMyMjw7Ojo7PDk8PDk8NDYzMiU8Ojo7PDw5PDs6PDQ2MzIl
PDs5OTo8Ojk6Ozw0NjM8JRU8PDw8PDw8PDw4ODYzJSUlFgsSFC0kITM4ODg4MyUaGwkECiUlKBwgMzc4
MzMlDwAHDR8lJSInKxkzMzIyJSUlEQgCHiovLiYlJSUyMjIlGBABJRcOJR0pIyUyMjIyJQUGJSUDDCUl
MCwlMjIyMjIlJTIlEzElMiUlMjIyMjIyMjIyJSUlJTIyMjIyMjL/86urwAH7/cAA9O/AAP/xwAD/5oAA
7/+AALvSAACrqwAAq6sAAP/7AAPv7wAD//GAB//mgAfv/8hPubz4f6urKAAAADAAAABgAAAAAQAgAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAA
AAQAAAAGAAAACQAAAAwAAAAPAAAAEQAAABIAAAASAAAAEAAAAA4AAAAMAAAACgAAAAkAAAAKAAAADAAA
AA0AAAAOAAAADwAAAA8AAAAOAAAADQAAAAsAAAAJAAAABwAAAAUAAAADAAAA/wAAAP8AAAD/AAAA/wAA
AH8AAAB/AAAAfwAAAH8AAAA/AAAAPwAAAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAEAAAACAAAABQAAAAkAAAAOAAAAFAAAABkAAAAeAAAAIQAAACIAAAAhAAAAHwAAABwAAAAYAAAAFQAA
ABQAAAAVAAAAGAAAABoAAAAcAAAAHgAAAB4AAAAdAAAAGwAAABgAAAAUAAAA/wAAAP8AAAD/Anp2/wJ6
dv8Ce3f/Anl2/wAAAP8AAAB/AAAAfwAAAH8AAAB/AAAAfwAAAD8AAAAfAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAIAAAAFAAAACgAAABEAAAAZAAAAIgAAACsAAAAxAAAANQAAADcAAAA2AAAAMwAA
AC4AAAApAAAAJgAAACQAAAAlAAAAKQAAACwAAAAwAAAAMgAAADIAAAAxAAAA/wAAAP8AAAD/AnJu/wJ1
cv8Cd3P/Anl1/wJ8eP8CfHj/Ant3/wJ6dv8AAAD/AAAAfwAAAH8AAAB/AAAAfwAAAH8AAAA/AAAAHwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAIAAAADwAAABoAAAAoAAAANAAAAEAAAABIAAAATQAA
AE8AAABOAAAASwAAAEUAAAA/AAAAOgAAADgAAAA5AAAAPgAAAEMAAABIAAAASwAAAEwAAABKAAAA/wFj
YP8CZmP/Amtn/wJva/8CdHD/Anh0/wJ7eP8CfXn/Ant3/wJ8d/8Cc2//AAAA/wAAAH8AAAB/AAAAfwAA
AH8AAAA/AAAAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAALAAAAFgAAACQAAAA1AAAARQAA
AGcAAACHAAAAigAAAIsAAACLAAAAXgAAAFgAAABTAAAATgAAAEsAAABMAAAAUQAAAFYAAABaAAAAXgAA
AF8AAABdAAAA/wFaV/8BXVv/AWJf/wJoZP8Cb2r/AnRx/wJ6dv8CfXn/Anx3/wJ8eP8CdHD/Amll/wAA
AP8AAAD/AAAAfwAAAH8AAAA/AAAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAANAAAAGgAA
ACoAAACXAAAA6AAAAP8gICD/RERE/0RERP8AAAD/AAAA/wAAAMIAAABtAAAAXwAAAKcAAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEtLP8BS0n/AVtY/wFgXf8CaGX/AnBs/wJ3dP8CfXj/Ant3/wJ9
ef8CdnH/Ampn/wJfW/8AAAD/AAAAHwAAAB8AAAAfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA
AAUAAAAOAAAAKQAAAMYAAAD/dXV1/97e3v//////////////////////mZmZ/xAQEP8AAAD1AAAAfgAA
AK11dXX///////////////////////////+6urr/dXV1/yAgIP8AAAD/AS8t/wFbV/8BYl//Amtn/wJz
cP8CfHj/Anp2/wJ9ev8Cd3L/Amtn/wJfXf8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAQAAAAUAAAANAAAAZhAQEP+6urr//////////////////////////////////////+7u
7v8gICD/AAAA3AAAALZ1dXX///////////////////////////////////////////91dXX/AAAA/wAd
HP8BXFr/AWZj/wJwbf8Ce3b/Anp1/wJ9ev8Cd3P/Amxp/wJhXf8AAAD/AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAALAAAAZFVVVf/////////////////u7u7/urq6/97e
3v////////////////+6urr/AAAA/wAAAMF1dXX/////////////////////////////////////////
////////qqqq/wAAAP8AKij/AWNf/wJuav8CeXX/Anh1/wJ9ev8CeHT/Am1q/wJhXv8AAAD/AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAJAAAAYgAAAP9lZWX//////5mZ
mf8AAAD/AAAA9QAAAP+JiYn/////////////////ICAg/wAAAMZ1dXX///////////91dXX/AAAA/wAA
AP8wMDD/qqqq/////////////////4mJif8AAAD/AVVS/wFsaf8CeXT/Andz/wJ+ev8CeHT/Am5r/wJi
X/8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAIAAAAFgAA
AIMAAAD/RERE/wAAAP8AAAC/AAAAaQAAALwAAAD/////////////////RERE/wAAAMR1dXX/////////
//91dXX/AAAAvAAAAIoAAADFAAAA/5mZmf////////////////8gICD/ACwr/wFsaP8CeHX/Anh0/wJ+
ev8CeXX/AnBs/wJkYP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA
AAMAAAANAAAAJgAAAEgAAACLAAAAkAAAAI4AAAB5AAAAxAAAAP9ERET/////////////////MDAw/wAA
AP91dXX///////////91dXX/AAAA/wAAAGoAAABJAAAA/wAAAP/e3t7///////////+JiYn/ABoa/wFs
af8CeXb/Anh0/wKAe/8Cenb/AnFt/wJlYf8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAQAAAAgAAAAeAAAAPwAAAFoAAABtAAAArQAAAOUAAAD/ICAg/5mZmf//////////////
///u7u7/AAAA/xsYEv91dXX///////////91dXX/AAAA/wAAAGoAAABHAAAA/wAQD/+JiYn/////////
//+6urr/AAAA/wFuav8CfHj/Anl1/wKAe/8CfHj/AnJu/wJlYv8AAAD/AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAABkAAAA4AAAAUQAAAP8AAADkAAAA/2VlZf/Ozs7/////////
//////////////////91dXX/AwMC/xwZE/91dXX///////////91dXX/AAAA/wAAAG0AAABMAAAA/wA4
N/9ERET/////////////////AAAA/wFxbP8Cf3v/Ant3/wKCfv8CfXn/AnNv/wJnY/8AAAD/AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAC0AAABIAAAA/w8OC/8QEBD/zs7O////
/////////////////////////////3V1df8AAAD/IB4X/yEeF/91dXX///////////91dXX/AAAA/wAA
AHMAAABXAAAA/wFHRf9ERET/////////////////AAAA/wF1cv8ChID/An55/wKEf/8Cfnr/AnRw/wJn
ZP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAADYAAAD/OTQo/wAA
AP+6urr//////////////////////97e3v+JiYn/ICAg/wAAAP8kIRn/RD4w/yUiGv91dXX/////////
//91dXX/AAAA/wAAAH0AAABtAAAA/wAtK/9lZWX////////////u7u7/AAAA/wJ8eP8CiYX/AoB9/wKG
gv8Cf33/AnVx/wJoZf8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAA
AP9FPzH/MCsh/xAQEP////////////////+qqqr/MDAw/wAAAP8AAAD/HhwW/zw3K/9HQTL/SUM0/ygk
HP91dXX///////////91dXX/AAAA/wAAAIsAAACFAAAA/wAAAP+ZmZn///////////+qqqr/AAgI/wKE
gP8Cj4v/AoSA/wKKhf8Cg37/AnZz/wJpZv8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAA/05HN/9LRTb/NC8k/0RERP////////////////8QEBD/AAAA3QAAAKsAAAD/Lysh/zEt
I/8zLyT/Tkg3/ysoHv91dXX///////////91dXX/AAAA/wAAAJIAAACuAAAA/zAwMP//////////////
//9lZWX/ACsp/wKNh/8Cl5L/AoiE/wKMiP8Cg3//Anh0/wJqZ/8AAAD/AAAAAAAAAAAAAAAAAAAAAAAA
AAQAAAAMAAAAEAAAABAAAAAQAAAA/1VOPP9TSzr/OTQp/zAwMP////////////////8gICD/AAAA/wAA
ANQAAAD/RERE/1VVVf8GBQT/RUAy/y8rIv91dXX///////////91dXX/AAAA/wAAANsAAAD/RERE/+7u
7v///////////97e3v8AAAD/AVRS/wKXk/8Cn5v/AoyH/wKPiv8ChoH/Anl1/wJraP8AAAD/AAAAAAAA
AAAAAAAAAAAAAAAAAAwAAAAkAAAAMAAAADAAAAAwAAAA/11VQf9bU0D/R0Ay/wAAAP/u7u7/////////
///Ozs7/VVVV/0RERP+ZmZn//////+7u7v8wMDD/GxkU/zQwJ/91dXX///////////+6urr/dXV1/3V1
df+qqqr//////////////////////0RERP8AEhL/ApiT/wKhm/8CpqL/ApCM/wKRjP8ChoL/Anp2/wJt
af8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAQAAAAEAAAABAAAAA/2NbRv9iWkX/X1dD/wgH
Bv91dXX///////////////////////////////////////////+6urr/HhwX/zo2LP91dXX/////////
////////////////////////////////////////ZWVl/wAAAP8Bc3D/AqSf/wKqpf8Crqr/ApOO/wKT
jv8CiYT/Ant3/wJua/8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAQAAAAEAAAABAAAAA/2ti
TP9pYEv/f3Ra/3NuZv8AAAD/dXV1/////////////////////////////////87Ozv8wMDD/IiAb/0M+
Mv91dXX//////////////////////////////////////7q6uv8wMDD/AAAA/wFkYP8Cq6b/Aq+p/wKy
rf8CtK//ApWR/wKUj/8Ci4b/An15/wJva/8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/3NoUf+Cd1z/6ODR/+DYyf9zb2b/AAAA/yAgIP91dXX/urq6/7q6uv+ZmZn/VVVV/wAA
AP8cGxf/dG1c/0pFOf9ERET/dXV1/3V1df91dXX/dXV1/3V1df9lZWX/ICAg/wAAAP8BLy3/ApCL/wKz
rv8CtrH/Ariy/wK6s/8CurT/ApeS/wKXkv8Ci4f/An56/wJwbf8AAAD/AAAAAAAAAAAAAAAAAAAAAAAA
AP9NRzf/Tkc3/05INv9NRzf/AAAA/4N4Xf/x6dr/7eXW/+ff0P/h2cj/vLWm/0M9MP8eHBb/HhsV/x4b
Ff8YFhH/REA4/29pW/+hmIP/nZN+/29oV/9OSTz/S0U4/0dCNf9EPzL/MS0j/zw3Kv88Nyv/AAAA/wOi
nf8DurX/A7y2/wK8t/8Cvbj/Ar+4/0LT3v9D093/ApqV/wKYk/8CjYj/An97/wJxbv8AAAD/AAAAAAAA
AAAAAAAAAAAAAAAAAP9ZUj//WVI//1lRP/9ZUT7/AAAA//Lp2v/z6tv/8OjZ/+3l1v/n39D/4drK/9vT
wf9+dFr/em9W/3pvVv9gWET/t62a/7Oqlf+uppD/qZ+J/6Kagv+cknv/k4py/46Da/+Jf2X/YFhE/3pv
Vv97cVf/AAAA/wPEvv8DxL7/A8S+/0Xa5P9E2eP/Rdji/yTOzv8aycj/EMTB/wKalf8Cj4r/AoB8/wJy
b/8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAP9kXEf/ZFxH/2RcR/9kXEf/ZFxH//Pq2//y6dr/8+rb//Hp
2f/t5dX/6ODQ/+Pbyv/d1cP/gXdc/4F3XP9jW0b/wrmk/720n/+4r5n/saiS/6uhiv+lm4P/nZN7/5eM
c/+Rh23/Y1tG/4J3XP+Cd1z/AAAA/wPLxP9I4ez/R+Dq/0Hc5f822N//K9PX/yHO0f8Yycn/DsXC/wXA
u/8CmpX/AoJ+/wJ0cP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAP9wZk//cGdP/3BmT/9wZk//cGZP/3Bm
T//z6tv/8+rb//Lq2//x6dn/7eTV/+jg0P/k28r/3dTD/4N4Xf9kXEf/ycCs/8K5pf+9s57/uK+Z/7Gn
kf+roYr/pJqC/52Sev+XjXP/ZFxH/4N4Xf+HfWL/AAAA/0nn8v9I5fD/RuPt/z/f5v802t//KdXY/x/P
0f8Uy8n/DMbB/wPBvP8CwLr/ApuW/wJ0cf8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAP97cFf/e3FX/3tw
WP97cVj/e3FY/3twWP97cVj/8+rb//Pq2//y6tv/8OfY/+zk1f/o4ND/4tnJ/9vSwf/Vzbr/z8Wy/8i+
qv/CuaT/vLOe/7atl/+wpY//qqGJ/6KXgP+bkHj/lYpx/4+Fa/+Kf2X/hntg/wAAAP9J6PP/RuXw/zzg
6P8x2+H/J9bY/xzR0v8TzMr/CcfD/wLDvv8Cwrz/AsC6/wKblv8AAAD/AAAAAAAAAAAAAAAAAAAAAAAA
AP+DeF3/g3hd/4N4Xf+DeF3/g3hd/4N4Xf+DeF3/g3hd//Pq2//z6tv/8eja/+/n2P/r49P/5t7O/+HY
x//a0cD/1My5/87Fsf/Gvan/wbij/7uxnP+1q5X/rqSO/6ieh/+hl3//mo93/5SKcP+Og2n/iX5k/4V6
YP8AAAD/Refx/zrj6f8v3eH/Jdja/xvS0v8Qzsr/B8jE/wPFv/8Cw77/AsK8/wLAuv8AAAD/AAAAAAAA
AAAAAAAAAAAAAAAAAP+DeF3/g3hd/4N4Xf+DeF3/g3hd/4N4Xf+DeF3/g3hd/4N4Xf/z6tv/8+rb//Lq
2//u5tf/6uLS/+Xczf/g18b/2dC+/9LKt//Mwq//xbyn/7+2of+6sZv/s6qU/62kjf+nnYb/oJV9/5iO
dv+TiG//joRp/4h9Y/+Fel//AAAA/zjk6/8t3uL/Itnb/xjU0v8Nzsv/BcrE/wPHwv8AAAD/AAAA/wAA
AP8AAAAQAAAAAAAAAAAAAAAAAAAAAAAAAP+kknH/q5l6/7Sjhf+8rJD/xLab/8u9pf/VyLH/3tK9/+fc
yv/u5dT/8+vb//Pq2//x6dr/7ubW/+ri0v/l3cz/3tXE/9jQvf9kXEf/ZFxH/2RcR/9kXEf/ZFxH/7Kp
k/+soov/pZqD/56UfP+YjXT/kodu/4yBZ/+IfWP/hHlf/wAAAP8q4OP/INvb/xXV1P8AAAD/AAAA/wAA
AP/o4dj/AAAA/wAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAP+hjmv/ppNy/62bfP+2pYf/va6T/8a4
nv/Nv6f/1sq0/9/UwP/p383/8OfW//Pq2//y6dv/8OjZ/+3k1f/o4ND/ZFxH/2RcR/90alL/c2pS/3Rq
Uv9zalL/c2pS/2RcR/9kXEf/q6GK/6Sagv+dknr/l41z/5GGbP+LgGb/h31i/4R5Xv8AAAD/AAAA/wAA
AP+imYP/sqmX/8S8rP/a08f/AAAA/wAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAP+diWb/oo9s/6iW
df+vnn//t6eK/7+wlf/HuZ//zsGp/9jMtv/i18P/6uDP//Hn1//z6tv/8urb//Do2P9kXEf/bmVO/25l
Tv9uZU7/bmVO/25lTv9uZU7/bmVO/25lTv9uZU7/ZFxH/6qgif+imIH/m5F5/5WKcf+PhGv/in9l/4Z7
Yf+EeV7/gndd/4h9Y/+UinP/pZyH/7Wsmv/IwLH/AAAA/wAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAA
AP+diWb/nYlm/6KQbv+pl3f/saGC/7mpjP/Bspf/yLqh/9HErP/bz7n/5NnF/+zi0f/x6Nn/8+rb//Lq
2/9kXEf/aWBK/2hgSv9oYEr/aWBK/2hfSv9oYEr/aGBK/2hgSv9oYEr/ZFxH/66kjv+onof/oZd//5qP
d/+UinD/j4Vq/4l+ZP+Ge2D/g3hd/4J3Xf+JfmX/mI93/6ifi/+3r53/AAAA/wAAACQAAAAMAAAAAAAA
AAAAAAAAAAAAAAAAAP+diWb/nYlm/56LaP+kkXD/q5l5/7Khg/+7q47/w7SZ/8q9pP/Sxa7/3NC7/+Xa
x//t5NL/8ura//Pr2//x6dr/ZFxH/2RcR/9kXEf/ZFxH/2RcR/9kXEf/ZFxH/2RcR/9kXEf/urGb/7Sr
lP+upI3/p52G/6CVff+Zj3b/k4hv/42Daf+IfWP/hXpf/4N4Xf+DeF3/jIJo/5qRev+spI//AAAA/wAA
AAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAP+diWb/nYlm/52JZv+fjGn/pZNx/6uae/+0o4X/vKyQ/8S2
m//LvaX/1cix/93Rvf/n3Mr/7uXU//Pq2//z6tv/8enZ/+7m1v9kXEf/ZFxH/2RcR/9kXEf/ZFxH/8vB
rv/Eu6b/v7ah/7mwmv+yqJP/rKKL/6abhP+elHz/mI50/5KHbf+Mgmj/iH1j/4V6X/+Cd13/hHlf/4+E
a/+elX//AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAD/Pzos/15W
Q/9eVkP/XlZD/15WQ/9eVkP/zb+n/9bJs//g1cH/6d7M//Dm1v/z69v/8unb//Hp2f/t5dX/6ODQ/+Pa
yv/d1MP/1868/9DItf/Jv6z/w7ql/720n/+3rpj/saiS/6uhiv+kmoL/XVZC/11WQv9dVkL/XVZC/11W
Qv8/Oiz/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAA/15WQ/9eVkL/XlZD/4N4Xf+/sZX/x7mf/8/Cqv/YzLb/4tfD/+rgz//x6Nj/8+rb//Lq
2//w6Nj/7OTU/+ffz//i2sn/29LB/9XMuv/PxrL/yL+r/8K5pP+8s57/tq2Y/7CnkP+pn4j/opiB/4N4
Xf9eVUP/XVZC/15VQv8AAAD/AAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA/2tiTP9rYkv/g3hd/7Gggf+6q43/wbKY/8m7of/Rxa3/2s65/+PY
xf/s4tH/8ejZ//Pq2//y6tv/7+fY/+vj0//n387/4djH/9rRwP/UzLn/zsWx/8a9qf/At6L/vLOd/7Wq
lf+upY7/qJ2H/6GXf/+DeF3/a2JM/2tjTP8AAAD/AAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/3lvVv+DeF3/pJFv/6uaev+zo4T/u6yP/8O0
mv/KvaT/0sWu/wAAAP8AAAD/7eTT//Lp2f/z6tv/8ena/+7m1//q4tL/5d3N/9/Wxv/Yz77/AAAA/wAA
AP/FvKj/v7Wh/7qwm/+0qpT/rqON/6eehv+flX3/g3hd/3lvVv8AAAD/AAAAFAAAAAQAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4N4Xf+diWb/n4xp/6SS
cf+rmXr/tKOF/7yskP/Etpv/AAAA/wAAAAAAAAD/59zK/+7k1P/z69v/8unb//Hp2v/u5db/6uLS/+Tc
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
AAe//wAA//8AH///AAD//wAf//8AACgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAEAAAADAAAACAAAABAAAAAZAAAAJAAAAC0AAAA0AAAANwAAADcAAAA1AAAAMgAA
ADAAAAAxAAAAMwAAADUAAAA1AAAANAAAADAAAABbAAAAWgAREbcBJST/ASUk/wAKCroAAACFAAAAaAAA
AEwAAAAZAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAALAAAAFQAAACIAAAAwAAAAPQAAAEYAAABLAAAATAAA
AEoAAABHAAAARQAAAEYAAABIAAAASQAAAEoAAAC4AAAAuwAwMPABQkD/Al9d/wJ8d/8CgHz/AVxZ/wAD
A8IAAACEAAAAgwAAAFsAAAAcAAAAAAAAAAAAAAABAAAABgAAAA4AAAAZAAAAMQAAAHEAAACZAAAApgAA
AKkAAACMAAAAXwAAAFkAAAB9AAAAiAAAAIkAAACJAAAAiQEQEPkBU1D/AWBd/wFpZf8Camf/Am1q/wJy
b/8Cf3r/AlxY/wAGBtMAAACeAAAAbgAAADQAAAAAAAAAAAAAAAIAAAAGAAAADwAAAD8AAADFAAAA/wAA
AP9ERET/RERE/wAAAP8AAADYAAAAhAAAAOEAAAD/AAAA/wAAAP8AAAD/AAEB/wAWFf8BOzn/AV5b/wFk
Yf8CbGn/AnJu/wJ2cv8Cd3L/AlZT/wAJCcIAAAA2AAAADwAAAAAAAAAAAAAAAQAAAAYAAAAPAAAAkgAA
AP9lZWX/7u7u////////////7u7u/3V1df8AAADZAAAA3Lq6uv////////////////+6urr/ZWVl/wAA
AP8BMjH/AWJg/wJqZ/8CcW7/AnRx/wJxbf8CbWn/ARsb8wAAAAAAAAAAAAAAAAAAAAAAAAABAAAABgAA
AA8AAACfMDAw////////////zs7O/87Ozv///////////1hYWPcAAADeurq6////////////////////
////////urq6/xATE/8BSUf/Amtn/wJxbf8CdXH/AnJv/wJpZv8BGhjzAAAAAAAAAAAAAAAAAAAAAAAA
AAEAAAAGAAAAEwAAAE0AAADbaGho94ODg+QAAACVAAAA7aqqqv//////ra2t+gAAAN26urr//////09P
T9wAAACxREVF/+7u7v//////mZmZ/wAkI/8BbGn/AnNv/wJ2cv8Cc3D/Amto/wEaGfMAAAAAAAAAAAAA
AAAAAAAAAAAAAgAAAAoAAAAgAAAAQAAAAGcAAACfAAAAtAAAAN0AAAD/mZmZ//////+7u7r/BQQD/rq6
uv//////RUVF/gAAAHgBExP6REVF////////////ICoq/wFvbP8CdHH/AnZz/wJ1cf8CbWn/ARoZ8wAA
AAAAAAAAAAAAAAAAAAAAAAACAAAAEAAAAC8AAABXAAAAywAAAOwAAAD/VVVV/7q6uv///////////3l5
eP8PDgv/urq6//////9KSUj+AAAAfAAcHPgAGhn/3t7e//////9lZmb/AXRx/wJ5df8Cenb/Andz/wJv
a/8BGhrzAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAATAAAAPQgIBd4AAAD/MDAw/97e3v//////////////
//+7u7r/Mi8n/xAPC/+6urr//////0pKSP4AAACEAR0c+QAoJ/+6urr//////3V2dv8Cenf/An56/wJ9
eP8CeXX/AnFt/wEbGvMAAAAAAAAAAAAAAAIAAAAHAAAACwAAAB0MDArQIh8Y/wAAAP/u7u7/////////
//+ampr9X15c/zYxJv9FPzH/ERAM/7q6uv//////S0tJ/gAAAIgAGBj6AAkJ/97e3v//////dXh4/wKE
f/8ChYH/AoF8/wJ8eP8Cc2//ARsb8wAAAAAAAAAAAAAACQAAABkAAAAkAQEBtEhCM/8kIBn/RERE////
////////NTU16QAAAMUdGxX/NjEm/0xGNf8VFA//urq6//////9MS0r+AAAAmwAHBv9ERET/////////
//8gOzr/Ao+K/wKNif8ChYH/AoB8/wJ0cf8BGxvzAAAAAAAAAAAAAAAOAAAAKwAAADoDAwHDVk48/yon
Hv8wMDD///////////8lJCP/AAAA/DAwMP9lZWX/MzAm/xwaFf+6urr//////0hHRv4AAAD9VVVV/+7u
7v//////mZmZ/wFUUf8Cm5X/ApWR/wKJhv8Cg3//And0/wEcG/QAAAAAAAAAAAAAABAAAAAvAAAAQQEB
Ab9gV0T/RD0v/wAAAP/Ozs7//////+7u7v+6urr///////////9qaGX/Ih8Z/7q6uv//////////////
/////////////87Ozv8QMDD/ApiT/wKmof8CnZn/Ao6J/wKFgf8CeXX/AR0c9AAAAAAAAAAAAAAAlQAA
AKUAAACtAQAB5WVbRf+elIH/SUVA/zAwMP+6urr/////////////////mZmZ/01JQP8hHxn/urq6////
/////////////97e3v91dXX/ETc2/wKRjP8Craf/ALGr/wGkn/8Cko3/AoiD/wJ7d/8BHRz0AAAAAAAA
AAAWFBD/TUY3/01HNv8QDwr/qJ+L//Pr3v/a08T/fHdt/yMgGv8zMS3/U1JO/zo3Mv9taFv/lYt4/05K
Pv82Min/NTAn/ykmHf8rJx7/AxcW/wKDfv8Cr6n/ALWv/wC2sP8Ov7z/Cq2p/wGTjv8Ci4f/An15/wEd
HfQAAAAAAAAAAB8cFflnX0n/Y1tG/0hCNP/07N7/8una/+vj1P/m39D/1s28/4d9Zf9mXUX/mpF+/7mw
m/+rooz/opiC/5eNdv+Rh27/bmVP/3luVv8GNzX/AMvE/wPBu/8jzM7/JczO/zfS2P8iw8X/AZ2Y/wKL
hf8Cfnv/AR4d9AAAAAAAAAAAIyAZ+XhvVf9wZk//cGZO/52Tf//47+H/8+vc/+zk1P/p4dH/18+9/4F4
YP+soo7/xLum/7eumP+upI3/pJqC/5yRev94b1j/gXhd/wc/PP8o6uz/QNvk/0Xd5v84197/IMzO/xLJ
x/8HwLv/AZuW/wJ+ev8BHRz0AAAAAAAAAAAoJR35iX1h/390Wv9/dFr/dWpQ/6OZgv/37t//8uja/+3l
1v/n387/4tnI/9bMuv/Kwaz/w7qm/7qwmv+wppD/o5iC/5uQd/+Qhmz/NDw1/0HI0P9N8/7/O93l/yvX
2/8e0NH/EMnG/wXFwP8Cw73/AqGc/wEhIPQAAAAAAAAAACsnHvmUh2n/jIBk/42CZ/+QhGr/iHxh/7ux
nP/58eL/8ena/+vj1P/k28r/49rI/9LJtv+1q5f/r6aR/6ifif+xqJH/pJmB/5eMdP+Og2n/Oj40/zi7
xP888vn/Kdnb/xvU1P8N2db/BNLN/wK4sv8CubT/AS4s5wAAAAAAAAAANC4i+bWgff+1pIb/wrOX/8/B
qP/c0Lr/593L//Ho2P/z6tz/8OfY//Lq2v+/tqT/i4Nt/2NaRP9oX0n/aWFK/4iAav+hl4D/oZd//5aL
cv+Ngmj/Pz0x/yixtf8q9/r/F9bV/wWCf/8Dfnr/GCAf/QAAALgAAAA4AAAAAAAAAAAxKyD5rJdx/6qY
d/+1pYj/wbOY/8y/pv/bz7n/6d/M//Lo2v/58eP/yMCw/11UPv9nXUb/cWdQ/3BmT/9vZk//Zl1G/2ti
Tf+nnIX/nZN7/5OIb/+LgGf/QkY6/wtISP8XQDz/c2xd/5CKff8/PTj6AAAAGQAAAAkAAAAAAAAAADMs
IPmqlW7/o5Fv/66cfP+5qYz/xbeb/9LFrf/f077/6+HQ//fu3//e1sb/bGRP/1xUPv9lXEf/ZFtG/2Rc
Rv9dVUD/fXVg/7Gnkf+mnIT/m5B4/5KIbv+Kf2X/hXlf/4N3Xf+Qhmz/t62W/zo4MvkAAAAHAAAAAgAA
AAAAAAAALScd/5mFY/+OfF3/m4pp/6eXev+yo4f/uKuT/83Aqv/i1sP/7ePS//rx4//n3s//sKiW/2lh
TP9vZ1P/cWlU/7GnlP++taD/uK+Z/66kjf+kmYL/kYhv/4h+Zf+FemD/gXZc/3pvV/+SiHH/Lywn/wAA
AAAAAAAAAAAAAAAAAAAAAACOAAAAkQAAAJEWFBDdW1NB/1hQPf9sYkz/t6mR/9nMtv/k2cb/8unY//fu
4P/17d7/7+fX/+fezv/e1cP/08q4/8rArP+/tqH/tayW/66ljf+Hfmj/Y1pF/1xUQf9MRTX/BwYEwgAA
AJoAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKlkXEf/d2xU/7Kig//EtZn/yr6k/+DV
vv/Vy7v/6+LT//Ts3f/w6Nj/6uLS/+LZyP/Z0L7/wrqn/7uzn//DuaP/saiS/66jjP+VinD/cmhQ/0Q/
MP8AAABZAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICsH50Wf+ejWv/rJp6/7Wl
iP/Ov6P/lox7/wAAAL2fmIz//vTk//Pq3P/u5tf/6eDQ//Dm1f87OTT4GRgXzLuyn//At6H/saeR/6mf
iP+bj3X/VU48/wAAAFkAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwKkk4Fh/6OO
av+hj23/uaaF/4l+aP8FBANoAAAAP5qShf/47tv/8+rb//Pq2//t5db/9+7c/0dEPvcAAAA2HhwZvLy0
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
//+AB3j/yE8L//h/uv8=
</value>
</data>
</root>

2
data/templates/project/VB/ProjectCategorySortOrder.xml

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
<Categories>
<Category Name="VBNet">
<Category Name="VB">
<Category Name="${res:Templates.File.Categories.WindowsApplications}" SortOrder="10"/>
</Category>
</Categories>

182
data/templates/project/VB/SharpDevelopCustomTool.xpt

@ -0,0 +1,182 @@ @@ -0,0 +1,182 @@
<?xml version="1.0"?>
<Template originator = "Siegfried Pammer">
<!-- Template Header -->
<TemplateConfiguration>
<Name>Custom Tool</Name>
<Category>VB</Category>
<Subcategory>SharpDevelop</Subcategory>
<Icon>VBNet.Project.ControlLibrary</Icon>
<Description>A custom tool that implements a code generator transforming a source file into an output file whenever the source is changed inside SharpDevelop</Description>
<SupportedTargetFrameworks>v4.0</SupportedTargetFrameworks>
</TemplateConfiguration>
<!-- Actions -->
<Actions>
<Open filename = "${ProjectName}.addin"/>
<Open filename = "AddInWritingHelp.txt"/>
</Actions>
<Project language="VBNet">
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ProjectItems>
<PropertyGroup>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
</PropertyGroup>
<Files>
<File name="${ProjectName}.addin" CopyToOutputDirectory="Always"><![CDATA[<AddIn name = "${ProjectName}"
author = "${USER}"
url = ""
description = "TODO: Put description here">
<Runtime>
<Import assembly = "${ProjectName}.dll"/>
</Runtime>
<!-- make SharpDevelop look for file templates in your AddIn's directory -->
<Path name = "/SharpDevelop/BackendBindings/Templates">
<Directory id = "${ProjectName}Template" path = "." />
</Path>
<Path name = "/SharpDevelop/CustomTools">
<!--
Register the custom tool.
id: ID used to identify the custom tool. This ID will be used in project files to reference your generator.
class: fully qualified name of a class in your assembly that implements ICustomTool
fileNamePattern: a regular expression. For file names matched by this regex, SharpDevelop will display
your custom tool in the drop down box of the property grid when a file with that extension
is selected.
-->
<CustomTool id = "${ProjectName}Generator"
class = "${StandardNamespace}.${ProjectName}Tool"
fileNamePattern = "\.xml$"/>
</Path>
</AddIn>
]]></File>
<File name="${ProjectName}Tool.vb">
<![CDATA[${StandardHeader.VBNET}
Imports System.IO
Imports System.CodeDom
Imports System.Xml
Imports ICSharpCode.EasyCodeDom ' defined in ICSharpCode.SharpDevelop.Dom.dll
Imports ICSharpCode.SharpDevelop.Project ' defined in ICSharpCode.SharpDevelop.dll
''' <summary>
''' Description of ${ProjectName}Tool.
''' </summary>
Public Class ${ProjectName}Tool
Implements ICustomTool
''' <summary>
''' Called by SharpDevelop when your tool has to generate code.
''' </summary>
''' <param name="item">
''' The file for which your tool should generate code.
''' </param>
Public Sub GenerateCode(item As FileProjectItem, context As CustomToolContext)
' make SharpDevelop generate a name for the output file
Dim outputFileName As String = context.GetOutputFileName(item, ".Generated")
' if item.FileName is "C:\somedir\SomeName.xml" and is inside a C# project,
' the output name will be "C:\somedir\SomeName.Generated.vb".
' context.GetOutputFileName will always append the extension for compilable files in
' the current project type, so if you want to always output xml, you could use
' string outputFileName = Path.ChangeExtension(item.FileName, ".Generated.xml");
' now read the input file:
Dim doc As New XmlDocument()
doc.Load(item.FileName)
' and generate the code using System.CodeDom:
Dim ccu As CodeCompileUnit = GenerateCode(doc, context.OutputNamespace, Path.GetFileNameWithoutExtension(item.FileName))
' Finally save our generated CodeDom compile unit. SharpDevelop will take care of generating
' the code using the correct CodeDomProvider for the project type. This means code-generating
' custom tools are completely language-independent
context.WriteCodeDomToFile(item, outputFileName, ccu)
' If you don't want to generate code, you'll have to write the output file yourself and then use
' context.EnsureOutputFileIsInProject to add the generated file to the project if it isn't already
' part of it.
End Sub
Private Function GenerateCode(doc As XmlDocument, targetNamespace As String, className As String) As CodeCompileUnit
' This method does the actual code generation.
' This sample accepts an object graph as XmlDocument and outputs a class with a static method
' constructing that object graph.
' We'll use ICSharpCode.EasyCodeDom for code generation. This is a small wrapper around CodeDom
' that provides convenience methods that create new objects and add them to the parent simultaniously.
' This makes the generation code much more concise.
' EasyCodeDom classes derive from the System.CodeDom types or have an implicit conversion operator, so
' use can use EasyCodeDom objects whereever CodeDom is expected.
Dim ccu As New CodeCompileUnit()
Dim generatedClass As CodeTypeDeclaration = ccu.AddNamespace(targetNamespace).AddType(className)
Dim m As EasyMethod = generatedClass.AddMethod("Create")
m.ReturnType = Easy.TypeRef(doc.DocumentElement.Name)
m.Attributes = MemberAttributes.[Static] Or MemberAttributes.[Public]
' now generate code. helper variables will be named "v#"
Dim helperVariableCounter As Integer = 0
Dim rootVariableName As String = GenerateCodeForObject(m.Body, doc.DocumentElement, helperVariableCounter)
' generate "return v0;"
m.Body.[Return](Easy.Var(rootVariableName))
Return ccu
End Function
Private Function GenerateCodeForObject(block As EasyBlock, objectElement As XmlElement, ByRef helperVariableCounter As Integer) As String
' generate code to create the object represented by "objectElement" and add it to the block
' generate "VarType v#;"
Dim varDecl As CodeVariableDeclarationStatement
varDecl = block.DeclareVariable(Easy.TypeRef(objectElement.Name), "v" & helperVariableCounter)
helperVariableCounter += 1
' generate "VarType v# = new VarType();"
varDecl.InitExpression = Easy.[New](Easy.TypeRef(objectElement.Name))
' translate XML attribute to assignments to properties
For Each attribute As XmlAttribute In objectElement.Attributes
' generate 'v#.attributeName = "attributeValue";'
' attribute.Value is a string, thus Easy.Prim creates a string literal.
' This simple code generator does not support using other types for attributes.
block.Assign(Easy.Var(varDecl.Name).[Property](attribute.Name), Easy.Prim(attribute.Value))
Next
For Each collectionNode As XmlNode In objectElement.ChildNodes
Dim collectionElement As XmlElement = TryCast(collectionNode, XmlElement)
If collectionElement IsNot Nothing Then
For Each itemNode As XmlNode In collectionElement.ChildNodes
Dim itemElement As XmlElement = TryCast(itemNode, XmlElement)
If itemElement IsNot Nothing Then
' add the object represented by "itemElement" to the collection represented by
' "collectionElement".
' generate code to create child object
Dim childVariableName As String = GenerateCodeForObject(block, itemElement, helperVariableCounter)
' generate 'v#.collectionName.Add(v##)'
block.InvokeMethod(Easy.Var(varDecl.Name).[Property](collectionElement.Name), "Add", Easy.Var(childVariableName))
End If
Next
End If
Next
Return varDecl.Name
End Function
End Class
]]></File>
<File name="FileTemplate.xft" src="SharpDevelopCustomToolTemplate.xft.xml" binary="true" CopyToOutputDirectory="Always"/>
<File name="Properties\AssemblyInfo.vb" src="DefaultAssemblyInfo.cs"/>
<File name="AddInWritingHelp.txt" src="..\AddInWritingHelp.txt"/>
</Files>
</Project>
</Template>

27
data/templates/project/VB/SharpDevelopCustomToolTemplate.xft.xml

@ -0,0 +1,27 @@ @@ -0,0 +1,27 @@
<?xml version="1.0"?>
<Template author="-" version="1.0">
<Config
name = "CustomTool Template"
icon = "Icons.32x32.XMLFileIcon"
category = "${res:Templates.File.Categories.Misc}"
defaultname = "CustomToolTemplate${Number}.xml"
language = "XML"/>
<Description>A file template for ${ProjectName}</Description>
<Files>
<File name="${FullName}" language="XML"><![CDATA[<?xml version="1.0"?>
<Form Text = "Form title">
<Controls>
<Button Text = "Click me"/>
<Panel>
<Controls>
<Label Text = "A Label"/>
<Button Text = "Another button"/>
</Controls>
</Panel>
</Controls>
</Form>]]>
</File>
</Files>
</Template>

169
data/templates/project/VB/SilverlightApplication.xpt

@ -0,0 +1,169 @@ @@ -0,0 +1,169 @@
<Template originator = "Siegfried Pammer">
<!-- Template Header -->
<TemplateConfiguration>
<Name>Silverlight Application</Name>
<Category>VB</Category>
<Subcategory>Silverlight</Subcategory>
<Icon>VBNet.Project.Form</Icon>
<Description>Default Silverlight Application</Description>
<SupportedTargetFrameworks>v4.0</SupportedTargetFrameworks>
</TemplateConfiguration>
<!-- Actions -->
<Actions>
<Open filename = "MainPage.xaml"/>
</Actions>
<Project language = "VBNet">
<ProjectItems>
<Reference Include="System.Windows" />
<Reference Include="mscorlib" />
<Reference Include="system" />
<Reference Include="System.Core" />
<Reference Include="System.Net" />
<Reference Include="System.Xml" />
<Reference Include="System.Windows.Browser" />
</ProjectItems>
<PropertyGroup>
<ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>${StandardNamespace}</RootNamespace>
<AssemblyName>${StandardNamespace}</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<SilverlightApplication>true</SilverlightApplication>
<SupportedCultures>
</SupportedCultures>
<XapOutputs>true</XapOutputs>
<GenerateSilverlightManifest>true</GenerateSilverlightManifest>
<XapFilename>${StandardNamespace}.xap</XapFilename>
<SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
<SilverlightAppEntry>${StandardNamespace}.App</SilverlightAppEntry>
<TestPageFileName>TestPage.html</TestPageFileName>
<CreateTestPage>true</CreateTestPage>
<ValidateXaml>true</ValidateXaml>
<UsePlatformExtensions>false</UsePlatformExtensions>
<ThrowErrorsInValidation>true</ThrowErrorsInValidation>
<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>
</PropertyGroup>
<PropertyGroup configuration="Debug" escapeValue="false">
<DefineConstants>DEBUG;TRACE;SILVERLIGHT</DefineConstants>
</PropertyGroup>
<PropertyGroup configuration="Release" escapeValue="false">
<DefineConstants>TRACE;SILVERLIGHT</DefineConstants>
</PropertyGroup>
<Imports clear="True">
<Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight\v4.0\Microsoft.Silverlight.CSharp.targets" />
</Imports>
<Files>
<File name="App.xaml" buildAction="ApplicationDefinition" language="XML"><![CDATA[<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="App"
>
<Application.Resources>
</Application.Resources>
</Application>]]></File>
<File name="App.xaml.vb" SubType="Code" DependentUpon="App.xaml"><![CDATA[${StandardHeader.VBNET}
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Net
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Documents
Imports System.Windows.Input
Imports System.Windows.Media
Imports System.Windows.Media.Animation
Imports System.Windows.Shapes
Public Partial Class App
Inherits Application
Public Sub New()
AddHandler Me.Startup, AddressOf Me.Application_Startup
AddHandler Me.[Exit], AddressOf Me.Application_Exit
AddHandler Me.UnhandledException, AddressOf Me.Application_UnhandledException
InitializeComponent()
End Sub
Private Sub Application_Startup(sender As Object, e As StartupEventArgs)
Me.RootVisual = New MainPage()
End Sub
Private Sub Application_Exit(sender As Object, e As EventArgs)
End Sub
Private Sub Application_UnhandledException(sender As Object, e As ApplicationUnhandledExceptionEventArgs)
If Not System.Diagnostics.Debugger.IsAttached Then
e.Handled = True
Deployment.Current.Dispatcher.BeginInvoke(Function() Do
ReportErrorToDOM(e)
End Function)
End If
End Sub
Private Sub ReportErrorToDOM(e As ApplicationUnhandledExceptionEventArgs)
Try
Dim errorMsg As String = e.ExceptionObject.Message + e.ExceptionObject.StackTrace
errorMsg = errorMsg.Replace(""""C, "'"C).Replace(vbCr & vbLf, "\n")
System.Windows.Browser.HtmlPage.Window.Eval("throw new Error(""Unhandled Error in Silverlight Application " & errorMsg & """);")
Catch generatedExceptionName As Exception
End Try
End Sub
End Class
]]></File>
<File name="MainPage.xaml" buildAction="Page" language="XML"><![CDATA[<UserControl x:Class="MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400" Height="300">
<Grid x:Name="LayoutRoot" Background="White">
</Grid>
</UserControl>]]></File>
<File name="MainPage.xaml.vb" SubType="Code" DependentUpon="MainPage.xaml"><![CDATA[${StandardHeader.VBNET}
Imports System.Collections.Generic
Imports System.Linq
Imports System.Net
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Documents
Imports System.Windows.Input
Imports System.Windows.Media
Imports System.Windows.Media.Animation
Imports System.Windows.Shapes
Public Partial Class MainPage
Inherits UserControl
Public Sub New()
InitializeComponent()
End Sub
End Class
]]></File>
<File name="Properties\AppManifest.xml"><![CDATA[<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>
<Deployment.Parts>
</Deployment.Parts>
</Deployment>]]></File>
<File name="Properties\AssemblyInfo.vb" src="DefaultAssemblyInfo.vb" />
</Files>
</Project>
</Template>

126
data/templates/project/VB/WebService.xpt

@ -0,0 +1,126 @@ @@ -0,0 +1,126 @@
<?xml version="1.0"?>
<Template originator = "Siegfried Pammer">
<!-- Template Header -->
<TemplateConfiguration>
<Name>${res:Templates.Project.WebService.Name}</Name>
<Category>VB</Category>
<Subcategory>ASP.NET</Subcategory>
<Icon>VBNet.Project.Form</Icon>
<Description>${res:Templates.Project.WebService.Description}</Description>
</TemplateConfiguration>
<!-- Actions -->
<Actions>
<Open filename = "Default.asmx" />
<Open filename = "Soap.vb" />
</Actions>
<Project language = "VBNet">
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Web" />
<Reference Include="System.Web.Services" />
<Reference Include="System.Xml" />
</ProjectItems>
<PropertyGroup>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
</PropertyGroup>
<PropertyGroup configuration="Debug">
<OutputPath>bin\</OutputPath>
</PropertyGroup>
<PropertyGroup configuration="Release">
<OutputPath>bin\</OutputPath>
</PropertyGroup>
<Files>
<File name="Soap.vb" DependentUpon="Default.asmx"><![CDATA[${StandardHeader.VBNET}
Imports System.Data
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
<WebService> _
Public Class Soap
Inherits System.Web.Services.WebService
''' <summary>
''' Logs into the web service
''' </summary>
''' <param name="userName">The User Name to login in as</param>
''' <param name="password">User's password</param>
''' <returns>True on successful login.</returns>
<WebMethod(EnableSession := True)> _
Public Function Login(userName As String, password As String) As Boolean
'NOTE: There are better ways of doing authentication. This is just illustrates Session usage.
Me.UserName = userName
Return True
End Function
''' <summary>
''' Logs out of the Session.
''' </summary>
<WebMethod(EnableSession := True)> _
Public Sub Logout()
Context.Session.Abandon()
End Sub
''' <summary>
''' UserName of the logged in user.
''' </summary>
Private Property UserName() As String
Get
Return DirectCast(Context.Session("User"), String)
End Get
Set
Context.Session("User") = value
End Set
End Property
End Class
]]></File>
<File name="Default.asmx" language="XML">
<![CDATA[<%@ WebService Language="VB" Class="${StandardNamespace}.Soap,Soap" %>]]>
</File>
<!--*************************************************************************-->
<File name="Web.config" language="XML"><![CDATA[<?xml version="1.0"?>
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<!--
Set compilation debug="true" to insert debugging
symbols into the compiled page. Because this
affects performance, set this value to true only
during development.
-->
<compilation debug="true"/>
<!--
The <authentication> section enables configuration
of the security authentication mode used by
ASP.NET to identify an incoming user.
-->
<authentication mode="Windows"/>
<!--
The <customErrors> section enables configuration
of what to do if/when an unhandled error occurs
during the execution of a request. Specifically,
it enables developers to configure html error pages
to be displayed in place of a error stack trace.
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm ">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
-->
</system.web>
</configuration>]]></File>
<File name="Properties\AssemblyInfo.vb" src="DefaultAssemblyInfo.vb" />
</Files>
</Project>
</Template>

443
data/templates/project/VB/WebpageProject.xpt

@ -0,0 +1,443 @@ @@ -0,0 +1,443 @@
<?xml version="1.0"?>
<Template originator = "Siegfried Pammer">
<!-- Template Header -->
<TemplateConfiguration>
<Name>${res:Templates.Project.WebPage.Name}</Name>
<Category>VB</Category>
<Subcategory>ASP.NET</Subcategory>
<Icon>VBNet.Project.Form</Icon>
<Description>${res:Templates.Project.WebPage.Description}</Description>
<SupportedTargetFrameworks>v2.0</SupportedTargetFrameworks>
</TemplateConfiguration>
<!-- Actions -->
<Actions>
<Open filename = ".\Default.aspx"/>
<Open filename = ".\Default.aspx.vb"/>
</Actions>
<Project language="VBNet">
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="System.Web" />
<Reference Include="System.Drawing" />
<Reference Include="System.Web.Services" />
</ProjectItems>
<PropertyGroup>
<OutputType>Library</OutputType>
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
</PropertyGroup>
<PropertyGroup configuration="Debug">
<OutputPath>bin\</OutputPath>
</PropertyGroup>
<PropertyGroup configuration="Release">
<OutputPath>bin\</OutputPath>
</PropertyGroup>
<Files>
<!--*************************************************************************-->
<File name=".\Default.aspx.vb" DependentUpon="Default.aspx"><![CDATA[${StandardHeader.VBNET}Imports System.Collections
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Web
Imports System.Web.SessionState
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls
''' <summary>
''' Description of Default.
''' </summary>
Public Class [Default]
Inherits Page
'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
#Region "Data"
Protected _Button_Ok As HtmlInputButton
Protected _Input_Name As HtmlInputText
#End Region
'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
#Region "Page Init & Exit (Open/Close DB connections here...)"
Protected Sub PageInit(sender As Object, e As EventArgs)
End Sub
'----------------------------------------------------------------------
Protected Sub PageExit(sender As Object, e As EventArgs)
End Sub
#End Region
'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
#Region "Page Load"
Private Sub Page_Load(sender As Object, e As EventArgs)
Response.Write("Hello #Develop<br>")
'------------------------------------------------------------------
If IsPostBack Then
End If
'------------------------------------------------------------------
End Sub
#End Region
'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
#Region "Click_Button_OK"
'----------------------------------------------------------------------
Protected Sub Click_Button_Ok(sender As Object, e As EventArgs)
Response.Write(_Button_Ok.Value & " was cklicked!<br>")
End Sub
#End Region
'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
#Region "Changed_Input_Name"
'----------------------------------------------------------------------
Protected Sub Changed_Input_Name(sender As Object, e As EventArgs)
Response.Write(_Input_Name.Value & " has changed!<br>")
End Sub
#End Region
'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
#Region "More..."
#End Region
'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
#Region "Initialize Component"
Protected Overrides Sub OnInit(e As EventArgs)
InitializeComponent()
MyBase.OnInit(e)
End Sub
'----------------------------------------------------------------------
Private Sub InitializeComponent()
AddHandler Me.Load, New System.EventHandler(AddressOf Page_Load)
AddHandler Me.Init, New System.EventHandler(AddressOf PageInit)
AddHandler Me.Unload, New System.EventHandler(AddressOf PageExit)
AddHandler _Button_Ok.ServerClick, New EventHandler(AddressOf Click_Button_Ok)
AddHandler _Input_Name.ServerChange, New EventHandler(AddressOf Changed_Input_Name)
End Sub
#End Region
'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
End Class
]]></File>
<File name=".\AssemblyInfo.vb" src="DefaultAssemblyInfo.vb" />
<File name="Global.asax" language="HTML">
<![CDATA[<%@ Application Codebehind="Global.vb"
Inherits="${StandardNamespace}.Global"
%>
]]></File>
<File name=".\Global.asax.vb" DependentUpon="Global.asax">
<![CDATA[Imports System.Collections
Imports System.ComponentModel
Imports System.Web
Imports System.Web.SessionState
''' <summary>
''' Summary description for Global.
''' </summary>
Public Class [Global]
Inherits HttpApplication
'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
#Region "global"
''' <summary>
''' Required designer variable.
''' </summary>
'Private components As System.ComponentModel.IContainer = Nothing
Public Sub New()
InitializeComponent()
End Sub
#End Region
'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Protected Sub Application_Start(sender As [Object], e As EventArgs)
End Sub
Protected Sub Session_Start(sender As [Object], e As EventArgs)
End Sub
Protected Sub Application_BeginRequest(sender As [Object], e As EventArgs)
End Sub
Protected Sub Application_EndRequest(sender As [Object], e As EventArgs)
End Sub
Protected Sub Application_AuthenticateRequest(sender As [Object], e As EventArgs)
End Sub
Protected Sub Application_Error(sender As [Object], e As EventArgs)
End Sub
Protected Sub Session_End(sender As [Object], e As EventArgs)
End Sub
Protected Sub Application_End(sender As [Object], e As EventArgs)
End Sub
#Region "Web Form Designer generated code"
''' <summary>
''' Required method for Designer support - do not modify
''' the contents of this method with the code editor.
''' </summary>
Private Sub InitializeComponent()
End Sub
#End Region
End Class
]]></File>
<File name="Default.aspx" language="HTML"><![CDATA[<%@ Page
Language = "VB"
AutoEventWireup = "false"
Inherits = "${StandardNamespace}.Default"
ValidateRequest = "false"
EnableSessionState = "false"
%>
<!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">
<head>
<title>${ProjectName}</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="CACHE-CONTROL" content="NO-CACHE" />
<meta http-equiv="PRAGMA" content="NO-CACHE" />
<link href="${StandardNamespace}.css" type="text/css" rel="stylesheet" />
</head>
<body>
<form id="Form1" method="post" runat="server">
<!-- Site Code goes here! -->
<table>
<tr>
<td colspan="2">
Table
</td>
</tr>
<tr>
<td>
Name:
</td>
<td>
<input id="_Input_Name" runat="server" />
</td>
</tr>
<tr>
<td colspan="2">
<input id="_Button_No" type="submit" value="Oh No!" runat="server" />
<input id="_Button_Ok" type="submit" value="Ok" runat="server" />
</td>
</tr>
<tr>
<td colspan="2" align="center">
<a href="?" >Click Here</a>
</td>
</tr>
</table>
</form>
</body>
</html>
]]></File>
<!--*************************************************************************-->
<File name="${StandardNamespace}.css" language="HTML">
<![CDATA[/*----------------------------------------------*/
BODY
{ font-family: Verdana, Arial;
font-weight: normal;
font-size: 11px;
color: Black;
background-color: #F0F0F0;
}
/*----------------------------------------------*/
TABLE
{ font-size: 11px;
background-color: #000000;
border-width: 1px;
border-color: #000000;
border-collapse: collapse;
margin: 0;
}
/*----------------------------------------------*/
TD
{ background-color: #FFFFFF;
border-color: #FF0000;
border-width: 0px;
padding: 4;
margin: 0;
}
/*----------------------------------------------*/
DIV
{ width:120px;
height:120px;
border:solid 1px black;
padding:8px;
background-color:#F0F0FF;
}
/*----------------------------------------------*/
SELECT
{ font-family: Verdana;
font-weight: normal;
font-size: 11px;
color: #000000;
background-color: #FFFFFF;
}
/*----------------------------------------------*/
INPUT
{ font-family: Verdana;
font-weight: normal;
font-size: 11px;
color: #000000;
}
/*----------------------------------------------*/
TEXTAREA
{ font-family: Verdana;
font-weight: normal;
font-size: 11px;
color: #000000;
background-color: #FFFFFF;
}
/*----------------------------------------------*/
A
{ FONT-WEIGHT: normal;
COLOR: #004080;
font-style: normal;
text-decoration: none;
}
A:hover
{ FONT-WEIGHT: bold;
COLOR: #FF5357;
}
/*----------------------------------------------*/
]]></File>
<!--*************************************************************************-->
<File name="Web.config" language="XML"><![CDATA[<configuration>
<system.web>
<!-- DYNAMIC DEBUG COMPILATION
Set compilation debug="true" to enable ASPX debugging. Otherwise, setting this value to
false will improve runtime performance of this application.
Set compilation debug="true" to insert debugging symbols (.pdb information)
into the compiled page. Because this creates a larger file that executes
more slowly, you should set this value to true only when debugging and to
false at all other times. For more information, refer to the documentation about
debugging ASP.NET files.
-->
<compilation
defaultLanguage="c#"
debug="true"
/>
<!-- CUSTOM ERROR MESSAGES
Set customErrors mode="On" or "RemoteOnly" to enable custom error messages, "Off" to disable.
Add <error> tags for each of the errors you want to handle.
"On" Always display custom (friendly) messages.
"Off" Always display detailed ASP.NET error information.
"RemoteOnly" Display custom (friendly) messages only to users not running
on the local Web server. This setting is recommended for security purposes, so
that you do not display application detail information to remote clients.
-->
<customErrors mode="RemoteOnly" />
<!-- AUTHENTICATION
This section sets the authentication policies of the application. Possible modes are "Windows",
"Forms", "Passport" and "None"
"None" No authentication is performed.
"Windows" IIS performs authentication (Basic, Digest, or Integrated Windows) according to
its settings for the application. Anonymous access must be disabled in IIS.
"Forms" You provide a custom form (Web page) for users to enter their credentials, and then
you authenticate them in your application. A user credential token is stored in a cookie.
"Passport" Authentication is performed via a centralized authentication service provided
by Microsoft that offers a single logon and core profile services for member sites.
-->
<authentication mode="None" />
<!-- AUTHORIZATION
This section sets the authorization policies of the application. You can allow or deny access
to application resources by user or role. Wildcards: "*" mean everyone, "?" means anonymous
(unauthenticated) users.
-->
<authorization>
<allow users="*" /> <!-- Allow all users -->
<!-- <allow users="[comma separated list of users]"
roles="[comma separated list of roles]"/>
<deny users="[comma separated list of users]"
roles="[comma separated list of roles]"/>
-->
</authorization>
<!-- APPLICATION-LEVEL TRACE LOGGING
Application-level tracing enables trace log output for every page within an application.
Set trace enabled="true" to enable application trace logging. If pageOutput="true", the
trace information will be displayed at the bottom of each page. Otherwise, you can view the
application trace log by browsing the "trace.axd" page from your web application
root.
-->
<trace
enabled="false"
requestLimit="10"
pageOutput="false"
traceMode="SortByTime"
localOnly="true"
/>
<!-- SESSION STATE SETTINGS
By default ASP.NET uses cookies to identify which requests belong to a particular session.
If cookies are not available, a session can be tracked by adding a session identifier to the URL.
To disable cookies, set sessionState cookieless="true".
-->
<sessionState
mode="InProc"
cookieless="true"
timeout="20"
/>
<!-- GLOBALIZATION
This section sets the globalization settings of the application.
-->
<globalization
requestEncoding="utf-8"
responseEncoding="utf-8"
/>
</system.web>
<appSettings>
<add key="SqlConnectionString"
value="Server=localhost; Database=; Uid=root; Pwd=;"
/>
</appSettings>
</configuration>
]]></File>
<!--*************************************************************************-->
</Files>
</Project>
</Template>
Loading…
Cancel
Save