From c4336b038c23fa37ee19bdd7d27bfa29b575a4a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Kr=C3=BCger?= Date: Tue, 4 Jan 2005 10:25:48 +0000 Subject: [PATCH] created trunk folder. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- AddIns/ICSharpCode.SharpDevelop.addin | 1852 +++ bin/setup/BuildHelpIndex.pdb | Bin 0 -> 17920 bytes bin/setup/PostInstallTasks.bat | 15 + bin/setup/PostInstallTasks.vbs | 40 + bin/setup/PreUninstallTasks.bat | 9 + bin/setup/PreUninstallTasks.vbs | 38 + bin/setup/readme.txt | 1 + .../CSharp_prjx2csproj.xsl | 124 + .../CSharp_prjx2csproj_user.xsl | 21 + .../ConvertPrjx10to11.xsl | 59 + .../SVNChangelogToXml.xsl | 61 + data/ConversionStyleSheets/ShowChangeLog.xsl | 24 + .../ShowXmlDocumentation.xsl | 276 + data/modes/C64CSharp.xshd | 313 + data/modes/CSharp-Mode-VSEnh.xshd | 286 + data/modes/Jay-Mode.xshd | 109 + data/options/SharpDevelop-templates.xml | 72 + data/options/SharpDevelop-tools.xml | 23 + data/options/SharpDevelopControlLibrary.sdcl | 77 + data/options/SharpDevelopProperties.xml | 3 + data/options/StandardHeader.xml | 29 + data/options/TextLib/ASCIITable.xml | 97 + .../TextLib/CSharpDocumentationTags.xml | 57 + data/options/TextLib/Licenses.xml | 909 ++ data/options/TextLib/SharpDevelop.xml | 46 + data/options/TextLib/XSLT.xml | 36 + data/options/TipsOfTheDay.xml | 5 + .../InstallerBitmaps/default-banner.bmp | Bin 0 -> 2396 bytes .../InstallerBitmaps/default-dialog.bmp | Bin 0 -> 36744 bytes data/resources/InstallerBitmaps/exclamic.bmp | Bin 0 -> 766 bytes data/resources/InstallerBitmaps/info.bmp | Bin 0 -> 1078 bytes data/resources/InstallerBitmaps/new.bmp | Bin 0 -> 318 bytes data/resources/InstallerBitmaps/up.bmp | Bin 0 -> 318 bytes data/resources/MenuStyle0.png | Bin 0 -> 949 bytes data/resources/MenuStyle1.png | Bin 0 -> 967 bytes data/resources/MenuStyle2.png | Bin 0 -> 1311 bytes data/resources/StringResources.ar.resources | Bin 0 -> 65638 bytes data/resources/StringResources.bg.resources | Bin 0 -> 175155 bytes .../StringResources.cn-big.resources | Bin 0 -> 82122 bytes .../resources/StringResources.cn-gb.resources | Bin 0 -> 173761 bytes data/resources/StringResources.cz.resources | Bin 0 -> 121296 bytes data/resources/StringResources.de.resources | Bin 0 -> 242490 bytes data/resources/StringResources.dk.resources | Bin 0 -> 135364 bytes .../resources/StringResources.es-mx.resources | Bin 0 -> 244775 bytes data/resources/StringResources.es.resources | Bin 0 -> 243367 bytes data/resources/StringResources.fi.resources | Bin 0 -> 157260 bytes data/resources/StringResources.fr.resources | Bin 0 -> 222881 bytes data/resources/StringResources.hu.resources | Bin 0 -> 242517 bytes data/resources/StringResources.it.resources | Bin 0 -> 241724 bytes data/resources/StringResources.jp.resources | Bin 0 -> 218597 bytes data/resources/StringResources.kr.resources | Bin 0 -> 138115 bytes data/resources/StringResources.lt.resources | Bin 0 -> 214663 bytes data/resources/StringResources.nl.resources | Bin 0 -> 171310 bytes data/resources/StringResources.pl.resources | Bin 0 -> 230867 bytes .../resources/StringResources.pt-br.resources | Bin 0 -> 242905 bytes data/resources/StringResources.pt.resources | Bin 0 -> 243956 bytes data/resources/StringResources.ro.resources | Bin 0 -> 207195 bytes data/resources/StringResources.ru.resources | Bin 0 -> 218554 bytes data/resources/StringResources.se.resources | Bin 0 -> 238639 bytes data/resources/StringResources.sl.resources | Bin 0 -> 190292 bytes data/resources/StringResources.sr.resources | Bin 0 -> 235321 bytes data/resources/StringResources.tr.resources | Bin 0 -> 126779 bytes data/resources/css/MsdnHelp.css | 389 + data/resources/css/SharpDevelopStandard.css | 45 + data/resources/filetypes/Filetypes.xml | 12 + data/resources/filetypes/c.ico | Bin 0 -> 4710 bytes data/resources/filetypes/cmbx.ico | Bin 0 -> 8854 bytes data/resources/filetypes/cs.ico | Bin 0 -> 4710 bytes data/resources/filetypes/java.ico | Bin 0 -> 4710 bytes data/resources/filetypes/prjx.ico | Bin 0 -> 8854 bytes data/resources/filetypes/resx.ico | Bin 0 -> 1078 bytes data/resources/filetypes/vb.ico | Bin 0 -> 4710 bytes data/resources/filetypes/xfrm.ico | Bin 0 -> 3310 bytes data/resources/filetypes/xml.ico | Bin 0 -> 3310 bytes .../BitmapResources-data/EmptyFile.xcf | Bin 0 -> 1421 bytes .../BitmapResources-data/ErrorReport.png | Bin 0 -> 62438 bytes .../GeneralWizardBackground.png | Bin 0 -> 6730 bytes .../Icons.16x16.AboutIcon.png | Bin 0 -> 996 bytes .../Icons.16x16.AdjustBackgroundColor.png | Bin 0 -> 366 bytes .../Icons.16x16.AdjustColor.png | Bin 0 -> 269 bytes .../Icons.16x16.Assembly.png | Bin 0 -> 343 bytes .../Icons.16x16.BoldText.png | Bin 0 -> 196 bytes .../Icons.16x16.BookMarks.xcf | Bin 0 -> 2234 bytes .../Icons.16x16.BrowserAfter.png | Bin 0 -> 879 bytes .../Icons.16x16.BrowserBefore.png | Bin 0 -> 923 bytes .../Icons.16x16.BrowserCancel.png | Bin 0 -> 730 bytes .../Icons.16x16.BrowserRefresh.png | Bin 0 -> 700 bytes .../Icons.16x16.BuildCombine.png | Bin 0 -> 601 bytes ...cons.16x16.BuildCurrentSelectedProject.png | Bin 0 -> 602 bytes .../Icons.16x16.CDROM.png | Bin 0 -> 430 bytes .../Icons.16x16.CancelIcon.png | Bin 0 -> 269 bytes .../Icons.16x16.Center.png | Bin 0 -> 190 bytes .../Icons.16x16.CloseAllDocuments.png | Bin 0 -> 1148 bytes .../Icons.16x16.CloseFileIcon.png | Bin 0 -> 1148 bytes .../Icons.16x16.CommentRegion.png | Bin 0 -> 206 bytes .../Icons.16x16.CopyIcon.png | Bin 0 -> 676 bytes .../Icons.16x16.CopyLeftIcon.png | Bin 0 -> 935 bytes .../Icons.16x16.CutIcon.png | Bin 0 -> 672 bytes .../Icons.16x16.DRIVE.png | Bin 0 -> 285 bytes .../Icons.16x16.DeleteIcon.png | Bin 0 -> 575 bytes .../Icons.16x16.DesignPanel.png | Bin 0 -> 310 bytes .../Icons.16x16.Desktop.png | Bin 0 -> 1201 bytes .../Icons.16x16.Error.png | Bin 0 -> 922 bytes .../Icons.16x16.FLOPPY.png | Bin 0 -> 331 bytes .../Icons.16x16.FindIcon.png | Bin 0 -> 714 bytes .../Icons.16x16.FindIcon.xcf | Bin 0 -> 1288 bytes .../Icons.16x16.FindInFiles.png | Bin 0 -> 914 bytes .../Icons.16x16.FindNextIcon.png | Bin 0 -> 647 bytes ...Icons.16x16.FormsDesigner.AlignBottoms.png | Bin 0 -> 244 bytes ...Icons.16x16.FormsDesigner.AlignCenters.png | Bin 0 -> 235 bytes .../Icons.16x16.FormsDesigner.AlignLefts.png | Bin 0 -> 258 bytes ...Icons.16x16.FormsDesigner.AlignMiddles.png | Bin 0 -> 242 bytes .../Icons.16x16.FormsDesigner.AlignRights.png | Bin 0 -> 247 bytes .../Icons.16x16.FormsDesigner.AlignToGrid.png | Bin 0 -> 285 bytes .../Icons.16x16.FormsDesigner.AlignTops.png | Bin 0 -> 255 bytes ...Icons.16x16.FormsDesigner.BringToFront.png | Bin 0 -> 264 bytes ...16x16.FormsDesigner.CenterHorizontally.png | Bin 0 -> 271 bytes ...s.16x16.FormsDesigner.CenterVertically.png | Bin 0 -> 257 bytes ....FormsDesigner.DecreaseHorizontalSpace.png | Bin 0 -> 264 bytes ...16.FormsDesigner.DecreaseVerticalSpace.png | Bin 0 -> 270 bytes ....FormsDesigner.EqualizeHorizontalSpace.png | Bin 0 -> 225 bytes ...16.FormsDesigner.EqualizeVerticalSpace.png | Bin 0 -> 259 bytes ....FormsDesigner.IncreaseHorizontalSpace.png | Bin 0 -> 261 bytes ...16.FormsDesigner.IncreaseVerticalSpace.png | Bin 0 -> 276 bytes ...Icons.16x16.FormsDesigner.LockControls.png | Bin 0 -> 212 bytes ...ons.16x16.FormsDesigner.MakeSameHeight.png | Bin 0 -> 271 bytes ...Icons.16x16.FormsDesigner.MakeSameSize.png | Bin 0 -> 283 bytes ...cons.16x16.FormsDesigner.MakeSameWidth.png | Bin 0 -> 252 bytes .../Icons.16x16.FormsDesigner.PointerIcon.png | Bin 0 -> 226 bytes ...16.FormsDesigner.RemoveHorizontalSpace.png | Bin 0 -> 253 bytes ...6x16.FormsDesigner.RemoveVerticalSpace.png | Bin 0 -> 259 bytes .../Icons.16x16.FormsDesigner.SendToBack.png | Bin 0 -> 259 bytes ...Icons.16x16.FormsDesigner.ShowTabOrder.png | Bin 0 -> 282 bytes .../Icons.16x16.FormsDesigner.SizeToGrid.png | Bin 0 -> 269 bytes .../Icons.16x16.FormsDesigner.ViewCode.png | Bin 0 -> 275 bytes .../Icons.16x16.FullScreen.png | Bin 0 -> 720 bytes .../Icons.16x16.FullScreen.xcf | Bin 0 -> 1149 bytes .../Icons.16x16.HelpClosedFolder.png | Bin 0 -> 843 bytes .../Icons.16x16.HelpIcon.png | Bin 0 -> 834 bytes .../Icons.16x16.HelpOpenFolder.png | Bin 0 -> 730 bytes .../Icons.16x16.HelpTopic.png | Bin 0 -> 751 bytes ...Icons.16x16.HtmlElements.AnchorElement.png | Bin 0 -> 257 bytes ...Icons.16x16.HtmlElements.ButtonElement.png | Bin 0 -> 210 bytes .../Icons.16x16.HtmlElements.DivElement.png | Bin 0 -> 243 bytes .../Icons.16x16.HtmlElements.Element.png | Bin 0 -> 235 bytes ...ons.16x16.HtmlElements.FieldSetElement.png | Bin 0 -> 222 bytes .../Icons.16x16.HtmlElements.FormElement.png | Bin 0 -> 266 bytes ...x16.HtmlElements.HorizontalRuleElement.png | Bin 0 -> 210 bytes ...Icons.16x16.HtmlElements.IFrameElement.png | Bin 0 -> 253 bytes .../Icons.16x16.HtmlElements.ImageElement.png | Bin 0 -> 296 bytes ....16x16.HtmlElements.InputButtonElement.png | Bin 0 -> 210 bytes ...6x16.HtmlElements.InputCheckBoxElement.png | Bin 0 -> 249 bytes ...ns.16x16.HtmlElements.InputFileElement.png | Bin 0 -> 280 bytes ....16x16.HtmlElements.InputHiddenElement.png | Bin 0 -> 260 bytes ...s.16x16.HtmlElements.InputImageElement.png | Bin 0 -> 320 bytes ...6x16.HtmlElements.InputPasswordElement.png | Bin 0 -> 231 bytes ...s.16x16.HtmlElements.InputRadioElement.png | Bin 0 -> 257 bytes ...s.16x16.HtmlElements.InputResetElement.png | Bin 0 -> 262 bytes ....16x16.HtmlElements.InputSubmitElement.png | Bin 0 -> 293 bytes ...ns.16x16.HtmlElements.InputTextElement.png | Bin 0 -> 240 bytes .../Icons.16x16.HtmlElements.LabelElement.png | Bin 0 -> 250 bytes ...cons.16x16.HtmlElements.ListBoxElement.png | Bin 0 -> 251 bytes .../Icons.16x16.HtmlElements.PanelElement.png | Bin 0 -> 215 bytes ...Icons.16x16.HtmlElements.SelectElement.png | Bin 0 -> 278 bytes .../Icons.16x16.HtmlElements.SpanElement.png | Bin 0 -> 259 bytes .../Icons.16x16.HtmlElements.TableElement.png | Bin 0 -> 222 bytes ...ons.16x16.HtmlElements.TextAreaElement.png | Bin 0 -> 282 bytes .../Icons.16x16.ILDasm.png | Bin 0 -> 321 bytes .../Icons.16x16.Indent.png | Bin 0 -> 335 bytes .../Icons.16x16.Information.png | Bin 0 -> 890 bytes .../Icons.16x16.ItalicText.png | Bin 0 -> 207 bytes .../Icons.16x16.LargeIconsIcon.png | Bin 0 -> 254 bytes .../BitmapResources-data/Icons.16x16.Left.png | Bin 0 -> 199 bytes .../Icons.16x16.Library.png | Bin 0 -> 262 bytes .../Icons.16x16.LowerToUpperCase.png | Bin 0 -> 288 bytes .../Icons.16x16.MyComputer.png | Bin 0 -> 1233 bytes .../Icons.16x16.NETWORK.png | Bin 0 -> 306 bytes .../Icons.16x16.NewDocumentIcon.png | Bin 0 -> 663 bytes .../Icons.16x16.NewFolderIcon.png | Bin 0 -> 1148 bytes .../Icons.16x16.NewProjectIcon.png | Bin 0 -> 831 bytes .../Icons.16x16.NextWindowIcon.png | Bin 0 -> 567 bytes .../Icons.16x16.OpenAssembly.png | Bin 0 -> 319 bytes .../Icons.16x16.OpenFileIcon.png | Bin 0 -> 1148 bytes .../Icons.16x16.OpenProjectIcon.png | Bin 0 -> 806 bytes .../Icons.16x16.Options.png | Bin 0 -> 833 bytes .../Icons.16x16.OutDent.png | Bin 0 -> 328 bytes .../Icons.16x16.PasteIcon.png | Bin 0 -> 646 bytes .../Icons.16x16.PersonalFiles.png | Bin 0 -> 1102 bytes .../Icons.16x16.PreView.png | Bin 0 -> 805 bytes .../Icons.16x16.PrevWindowIcon.png | Bin 0 -> 539 bytes .../Icons.16x16.Print.png | Bin 0 -> 714 bytes .../Icons.16x16.PropertiesIcon.png | Bin 0 -> 890 bytes .../Icons.16x16.Question.png | Bin 0 -> 909 bytes .../Icons.16x16.RedoIcon.png | Bin 0 -> 724 bytes .../Icons.16x16.RedoIcon.xcf | Bin 0 -> 1341 bytes .../Icons.16x16.ReplaceIcon.png | Bin 0 -> 816 bytes .../Icons.16x16.ReplaceInFiles.png | Bin 0 -> 981 bytes .../Icons.16x16.ResourceEditor.bin.ico | Bin 0 -> 318 bytes .../Icons.16x16.ResourceEditor.bmp.ico | Bin 0 -> 318 bytes .../Icons.16x16.ResourceEditor.cursor.ico | Bin 0 -> 318 bytes .../Icons.16x16.ResourceEditor.icon.ico | Bin 0 -> 318 bytes .../Icons.16x16.ResourceEditor.obj.ico | Bin 0 -> 318 bytes .../Icons.16x16.ResourceEditor.string.ico | Bin 0 -> 318 bytes .../Icons.16x16.Right.png | Bin 0 -> 200 bytes .../Icons.16x16.RunProgramIcon.png | Bin 0 -> 736 bytes .../Icons.16x16.SaveAllIcon.png | Bin 0 -> 497 bytes .../Icons.16x16.SaveIcon.png | Bin 0 -> 501 bytes .../Icons.16x16.SelectionArrow.png | Bin 0 -> 269 bytes .../Icons.16x16.SideBarDocument.png | Bin 0 -> 575 bytes .../Icons.16x16.SmallIconsIcon.png | Bin 0 -> 293 bytes .../Icons.16x16.SplitWindow.png | Bin 0 -> 650 bytes .../Icons.16x16.StopProcess.png | Bin 0 -> 699 bytes .../Icons.16x16.SubTypes.png | Bin 0 -> 262 bytes .../Icons.16x16.SuperTypes.png | Bin 0 -> 267 bytes .../Icons.16x16.TestRunner.Gray.png | Bin 0 -> 505 bytes .../Icons.16x16.TestRunner.Green.png | Bin 0 -> 430 bytes .../Icons.16x16.TestRunner.Red.png | Bin 0 -> 484 bytes .../Icons.16x16.TestRunner.Yellow.png | Bin 0 -> 475 bytes .../Icons.16x16.TipOfTheDay.png | Bin 0 -> 529 bytes .../Icons.16x16.UMLClass.png | Bin 0 -> 220 bytes .../Icons.16x16.UMLImplementation.png | Bin 0 -> 242 bytes .../Icons.16x16.UMLNote.png | Bin 0 -> 252 bytes .../Icons.16x16.UMLStructure.png | Bin 0 -> 293 bytes .../Icons.16x16.UnderlineText.png | Bin 0 -> 218 bytes .../Icons.16x16.UndoIcon.png | Bin 0 -> 788 bytes .../Icons.16x16.UndoIcon.xcf | Bin 0 -> 1343 bytes .../Icons.16x16.UpperToLowerCase.png | Bin 0 -> 290 bytes .../Icons.16x16.Warning.png | Bin 0 -> 776 bytes .../Icons.16x16.WebSearchIcon.png | Bin 0 -> 1161 bytes .../Icons.32x32.Error.png | Bin 0 -> 2391 bytes .../Icons.32x32.Information.png | Bin 0 -> 2393 bytes .../Icons.32x32.Question.png | Bin 0 -> 2527 bytes .../Icons.32x32.Warning.png | Bin 0 -> 1905 bytes .../BitmapResources-data/Icons.AboutImage.png | Bin 0 -> 20509 bytes .../Icons.ClassBrowserIcon.png | Bin 0 -> 459 bytes .../Icons.FileScoutIcon.png | Bin 0 -> 1336 bytes .../Icons.ProjectScoutIcon.png | Bin 0 -> 611 bytes .../Icons.SharpDevelopIcon.ico | Bin 0 -> 3263 bytes .../Icons.TipOfTheDayIcon.png | Bin 0 -> 575 bytes .../BitmapResources-data/NewMarker.xcf | Bin 0 -> 757 bytes .../BitmapResources-data/SplashScreen.xcf | Bin 0 -> 218350 bytes .../BitmapResources-data/deleteMarker.xcf | Bin 0 -> 1153 bytes .../image/BitmapResources/BitmapResources.res | 402 + .../BitmapResources/Bookmarks/Bookmark.xcf | Bin 0 -> 8817 bytes .../BitmapResources/Bookmarks/ClearAll.png | Bin 0 -> 1148 bytes .../BitmapResources/Bookmarks/DeleteMark.png | Bin 0 -> 1148 bytes .../Bookmarks/EnableDisableAll.png | Bin 0 -> 1148 bytes .../Bookmarks/EnableDisableMark.png | Bin 0 -> 1148 bytes .../BitmapResources/Bookmarks/GotoNext.png | Bin 0 -> 1148 bytes .../Bookmarks/GotoNextInFile.png | Bin 0 -> 1148 bytes .../Bookmarks/GotoNextInFolder.png | Bin 0 -> 1148 bytes .../BitmapResources/Bookmarks/GotoPrev.png | Bin 0 -> 1148 bytes .../Bookmarks/GotoPrevInFile.png | Bin 0 -> 1148 bytes .../Bookmarks/GotoPrevInFolder.png | Bin 0 -> 1148 bytes .../BitmapResources/Bookmarks/ToggleMark.png | Bin 0 -> 1148 bytes .../Chloe Periscope-Orig_2.png | Bin 0 -> 62438 bytes .../ClassBrowserIcons/Icons.16x16.Class.png | Bin 0 -> 733 bytes .../ClassBrowserIcons/Icons.16x16.Class.xcf | Bin 0 -> 2759 bytes .../Icons.16x16.Delegate.png | Bin 0 -> 908 bytes .../Icons.16x16.Delegate.xcf | Bin 0 -> 2877 bytes .../ClassBrowserIcons/Icons.16x16.Enum.png | Bin 0 -> 680 bytes .../ClassBrowserIcons/Icons.16x16.Enum.xcf | Bin 0 -> 2649 bytes .../ClassBrowserIcons/Icons.16x16.Event.png | Bin 0 -> 640 bytes .../ClassBrowserIcons/Icons.16x16.Event.xcf | Bin 0 -> 2476 bytes .../ClassBrowserIcons/Icons.16x16.Field.png | Bin 0 -> 655 bytes .../ClassBrowserIcons/Icons.16x16.Field.xcf | Bin 0 -> 2568 bytes .../ClassBrowserIcons/Icons.16x16.Indexer.png | Bin 0 -> 449 bytes .../ClassBrowserIcons/Icons.16x16.Indexer.xcf | Bin 0 -> 2777 bytes .../Icons.16x16.Interface.png | Bin 0 -> 610 bytes .../Icons.16x16.Interface.xcf | Bin 0 -> 2451 bytes .../Icons.16x16.InternalClass.png | Bin 0 -> 881 bytes .../Icons.16x16.InternalDelegate.png | Bin 0 -> 916 bytes .../Icons.16x16.InternalEnum.png | Bin 0 -> 821 bytes .../Icons.16x16.InternalEvent.png | Bin 0 -> 751 bytes .../Icons.16x16.InternalField.png | Bin 0 -> 789 bytes .../Icons.16x16.InternalIndexer.png | Bin 0 -> 619 bytes .../Icons.16x16.InternalInterface.png | Bin 0 -> 775 bytes .../Icons.16x16.InternalMethod.png | Bin 0 -> 776 bytes .../Icons.16x16.InternalProperty.png | Bin 0 -> 957 bytes .../Icons.16x16.InternalStruct.png | Bin 0 -> 575 bytes .../ClassBrowserIcons/Icons.16x16.Literal.png | Bin 0 -> 416 bytes .../ClassBrowserIcons/Icons.16x16.Method.png | Bin 0 -> 621 bytes .../ClassBrowserIcons/Icons.16x16.Method.xcf | Bin 0 -> 2497 bytes .../Icons.16x16.NameSpace.png | Bin 0 -> 460 bytes .../Icons.16x16.PrivateClass.png | Bin 0 -> 920 bytes .../Icons.16x16.PrivateDelegate.png | Bin 0 -> 925 bytes .../Icons.16x16.PrivateEnum.png | Bin 0 -> 845 bytes .../Icons.16x16.PrivateEvent.png | Bin 0 -> 785 bytes .../Icons.16x16.PrivateField.png | Bin 0 -> 831 bytes .../Icons.16x16.PrivateIndexer.png | Bin 0 -> 612 bytes .../Icons.16x16.PrivateInterface.png | Bin 0 -> 781 bytes .../Icons.16x16.PrivateMethod.png | Bin 0 -> 820 bytes .../Icons.16x16.PrivateProperty.png | Bin 0 -> 986 bytes .../Icons.16x16.PrivateStruct.png | Bin 0 -> 642 bytes .../Icons.16x16.Property.png | Bin 0 -> 900 bytes .../Icons.16x16.Property.xcf | Bin 0 -> 2785 bytes .../Icons.16x16.ProtectedClass.png | Bin 0 -> 864 bytes .../Icons.16x16.ProtectedDelegate.png | Bin 0 -> 937 bytes .../Icons.16x16.ProtectedEnum.png | Bin 0 -> 784 bytes .../Icons.16x16.ProtectedEvent.png | Bin 0 -> 776 bytes .../Icons.16x16.ProtectedField.png | Bin 0 -> 772 bytes .../Icons.16x16.ProtectedIndexer.png | Bin 0 -> 684 bytes .../Icons.16x16.ProtectedInterface.png | Bin 0 -> 753 bytes .../Icons.16x16.ProtectedMethod.png | Bin 0 -> 765 bytes .../Icons.16x16.ProtectedProperty.png | Bin 0 -> 974 bytes .../Icons.16x16.ProtectedStruct.png | Bin 0 -> 556 bytes .../Icons.16x16.Reference.png | Bin 0 -> 466 bytes .../ClassBrowserIcons/Icons.16x16.Struct.png | Bin 0 -> 422 bytes .../ClassBrowserIcons/Icons.16x16.Struct.xcf | Bin 0 -> 2476 bytes .../ClassBrowserIcons/InternalMarker.xcf | Bin 0 -> 969 bytes .../ClassBrowserIcons/PrivateMarker.xcf | Bin 0 -> 836 bytes .../ClassBrowserIcons/ProtectedMarker.xcf | Bin 0 -> 824 bytes .../DebuggerIcons/Icons.16x16.Debug.Break.png | Bin 0 -> 341 bytes .../Icons.16x16.Debug.Continue.png | Bin 0 -> 610 bytes .../DebuggerIcons/Icons.16x16.Debug.Start.png | Bin 0 -> 736 bytes ...cons.16x16.Debug.StartWithoutDebugging.png | Bin 0 -> 320 bytes .../Icons.16x16.Debug.StepInto.png | Bin 0 -> 241 bytes .../Icons.16x16.Debug.StepOut.png | Bin 0 -> 254 bytes .../Icons.16x16.Debug.StepOver.png | Bin 0 -> 290 bytes .../Icons.16x16.Debug.StopProcess.png | Bin 0 -> 699 bytes .../BitmapResources/Icons.16x16.Shell.png | Bin 0 -> 339 bytes .../BitmapResources/ImageResources.build | 30 + .../image/BitmapResources/OpenCloseFiles.xcf | Bin 0 -> 5118 bytes .../OutputPadIcons/ClearOutputWindow.png | Bin 0 -> 1148 bytes .../OutputPadIcons/OutputPadIcons.xcf | Bin 0 -> 2871 bytes .../OutputPadIcons/ToggleWordWrap.png | Bin 0 -> 1148 bytes .../BitmapResources/PadIcons/Bookmarks.png | Bin 0 -> 1148 bytes .../BitmapResources/PadIcons/ClassBrowser.png | Bin 0 -> 1148 bytes .../BitmapResources/PadIcons/ErrorList.png | Bin 0 -> 1148 bytes .../BitmapResources/PadIcons/FileBrowser.png | Bin 0 -> 1148 bytes .../BitmapResources/PadIcons/FindResults.png | Bin 0 -> 1148 bytes .../image/BitmapResources/PadIcons/Output.png | Bin 0 -> 1148 bytes .../BitmapResources/PadIcons/PadIcons.xcf | Bin 0 -> 9544 bytes .../PadIcons/ProjectBrowser.png | Bin 0 -> 1148 bytes .../BitmapResources/PadIcons/TaskList.png | Bin 0 -> 1148 bytes .../BitmapResources/PadIcons/Toolbar.png | Bin 0 -> 1148 bytes .../BitmapResources/PadIcons/UnitTest.png | Bin 0 -> 1148 bytes .../ProjectBrowserIcons/CodeBehind.png | Bin 0 -> 1148 bytes .../ProjectBrowserIcons/Folder.Closed.png | Bin 0 -> 1148 bytes .../ProjectBrowserIcons/Folder.Open.png | Bin 0 -> 1148 bytes .../ProjectBrowserIcons/GhostFile.png | Bin 0 -> 1148 bytes .../GhostFolder.Closed.png | Bin 0 -> 1148 bytes .../ProjectBrowserIcons/GhostFolder.Open.png | Bin 0 -> 1148 bytes .../ProjectBrowserIcons/MissingFile.png | Bin 0 -> 1148 bytes .../ProjectBrowserIcons/MissingProject.png | Bin 0 -> 1148 bytes .../ProjectBrowserIcons/MissingSolution.png | Bin 0 -> 636 bytes .../ProjectBrowserIcons/ProjectWarning.png | Bin 0 -> 1148 bytes .../PropertyFolder.Closed.png | Bin 0 -> 1148 bytes .../PropertyFolder.Open.png | Bin 0 -> 1148 bytes .../ReferenceFolder.Closed.png | Bin 0 -> 1148 bytes .../ReferenceFolder.Open.png | Bin 0 -> 1148 bytes .../ProjectBrowserIcons/Solution.png | Bin 0 -> 1148 bytes .../SolutionFolder.Closed.png | Bin 0 -> 636 bytes .../SolutionFolder.CreateNew.png | Bin 0 -> 1148 bytes .../SolutionFolder.Open.png | Bin 0 -> 636 bytes .../ProjectBrowserIcons/Toolbar.Refresh.png | Bin 0 -> 1148 bytes .../Toolbar.ShowHiddenFiles.png | Bin 0 -> 1148 bytes .../ProjectBrowserIcons/WebReference.png | Bin 0 -> 1148 bytes .../WebReferenceFolder.Closed.png | Bin 0 -> 1148 bytes .../WebReferenceFolder.Open.png | Bin 0 -> 1148 bytes .../ProjectBrowserIcons/work/Folder.xcf | Bin 0 -> 2700 bytes .../ProjectBrowserIcons/work/GhostFile.xcf | Bin 0 -> 1330 bytes .../ProjectBrowserIcons/work/GhostFolder.xcf | Bin 0 -> 2198 bytes .../work/PropertyFolder.xcf | Bin 0 -> 2143 bytes .../work/ReferenceFolder.xcf | Bin 0 -> 2155 bytes .../work/SolutionFolder.xcf | Bin 0 -> 1650 bytes .../work/WebReferenceFolder.xcf | Bin 0 -> 3861 bytes .../image/BitmapResources/ResAsm.exe | Bin 0 -> 10752 bytes .../image/BitmapResources/ResAsm.exe.config | 21 + .../SubversionIcons/StatusImages.bmp | Bin 0 -> 1014 bytes .../SubversionIcons/Svn.ApplyPatch.png | Bin 0 -> 1166 bytes .../SubversionIcons/Svn.Checkout.png | Bin 0 -> 1166 bytes .../SubversionIcons/Svn.Commit.png | Bin 0 -> 1166 bytes .../SubversionIcons/Svn.CreatePatch.png | Bin 0 -> 1166 bytes .../SubversionIcons/Svn.Export.png | Bin 0 -> 1166 bytes .../SubversionIcons/Svn.Import.png | Bin 0 -> 375 bytes .../SubversionIcons/Svn.StatusImages.png | Bin 0 -> 7292 bytes .../SubversionIcons/Svn.Update.png | Bin 0 -> 1166 bytes .../backendicons/CSharp/SmallFile.png | Bin 0 -> 1148 bytes .../backendicons/CSharp/SmallProject.png | Bin 0 -> 1148 bytes .../backendicons/CSharp/file/EmptyFile.png | Bin 0 -> 1332 bytes .../backendicons/CSharp/file/Form.png | Bin 0 -> 1431 bytes .../backendicons/CSharp/file/FullFile.png | Bin 0 -> 1474 bytes .../backendicons/CSharp/file/NewClass.png | Bin 0 -> 1792 bytes .../backendicons/CSharp/file/WebFile.png | Bin 0 -> 1634 bytes .../CSharp/project/ControlLibrary.png | Bin 0 -> 4236 bytes .../CSharp/project/DOSProject.png | Bin 0 -> 4236 bytes .../CSharp/project/EmptyProject.png | Bin 0 -> 4236 bytes .../backendicons/CSharp/project/Form.png | Bin 0 -> 4236 bytes .../CSharp/project/FullProject.png | Bin 0 -> 4236 bytes .../backendicons/CSharp/project/Library.png | Bin 0 -> 4236 bytes .../CSharp/project/ServiceProject.png | Bin 0 -> 4236 bytes .../CSharp/project/UserControl.png | Bin 0 -> 1313 bytes .../CSharp/project/WebProject.png | Bin 0 -> 4236 bytes .../backendicons/Empty16x16File.xcf | Bin 0 -> 5586 bytes .../backendicons/Empty32x32File.xcf | Bin 0 -> 14734 bytes .../backendicons/Empty32x32Project.xcf | Bin 0 -> 18538 bytes .../backendicons/Empty32x32UserControl.xcf | Bin 0 -> 15355 bytes .../backendicons/EmptyProject.xcf | Bin 0 -> 7322 bytes .../BitmapResources/backendicons/FileIcon.xcf | Bin 0 -> 1330 bytes .../backendicons/JScript/SmallFile.png | Bin 0 -> 1148 bytes .../backendicons/JScript/SmallProject.png | Bin 0 -> 1148 bytes .../backendicons/JScript/file/EmptyFile.png | Bin 0 -> 1395 bytes .../backendicons/JScript/file/Form.png | Bin 0 -> 1404 bytes .../backendicons/JScript/file/FullFile.png | Bin 0 -> 1451 bytes .../backendicons/JScript/file/NewClass.png | Bin 0 -> 1560 bytes .../backendicons/JScript/file/WebFile.png | Bin 0 -> 1459 bytes .../JScript/project/ASPProject.png | Bin 0 -> 1999 bytes .../JScript/project/ControlLibrary.png | Bin 0 -> 1899 bytes .../JScript/project/DOSProject.png | Bin 0 -> 1605 bytes .../JScript/project/EmptyProject.png | Bin 0 -> 1544 bytes .../backendicons/JScript/project/Form.png | Bin 0 -> 1610 bytes .../JScript/project/FullProject.png | Bin 0 -> 1699 bytes .../backendicons/JScript/project/Library.png | Bin 0 -> 2182 bytes .../JScript/project/ServiceProject.png | Bin 0 -> 1476 bytes .../JScript/project/UserControl.png | Bin 0 -> 1365 bytes .../JScript/project/WebProject.png | Bin 0 -> 2012 bytes .../backendicons/Java/SmallFile.png | Bin 0 -> 1148 bytes .../backendicons/Java/SmallProject.png | Bin 0 -> 1148 bytes .../backendicons/Java/file/EmptyFile.png | Bin 0 -> 1764 bytes .../backendicons/Java/file/Form.png | Bin 0 -> 1820 bytes .../backendicons/Java/file/FullFile.png | Bin 0 -> 1837 bytes .../backendicons/Java/file/NewClass.png | Bin 0 -> 2218 bytes .../backendicons/Java/file/WebFile.png | Bin 0 -> 2066 bytes .../backendicons/Java/project/ASPProject.png | Bin 0 -> 2394 bytes .../Java/project/ControlLibrary.png | Bin 0 -> 2522 bytes .../backendicons/Java/project/DOSProject.png | Bin 0 -> 1937 bytes .../Java/project/EmptyProject.png | Bin 0 -> 1868 bytes .../backendicons/Java/project/Form.png | Bin 0 -> 1897 bytes .../backendicons/Java/project/FullProject.png | Bin 0 -> 2175 bytes .../backendicons/Java/project/Library.png | Bin 0 -> 3083 bytes .../Java/project/ServiceProject.png | Bin 0 -> 1860 bytes .../backendicons/Java/project/UserControl.png | Bin 0 -> 1686 bytes .../backendicons/Java/project/WebProject.png | Bin 0 -> 2407 bytes .../backendicons/VBNet/SmallFile.png | Bin 0 -> 1148 bytes .../backendicons/VBNet/SmallProject.png | Bin 0 -> 1148 bytes .../backendicons/VBNet/file/EmptyFile.png | Bin 0 -> 1435 bytes .../backendicons/VBNet/file/Form.png | Bin 0 -> 1490 bytes .../backendicons/VBNet/file/FullFile.png | Bin 0 -> 1541 bytes .../backendicons/VBNet/file/NewClass.png | Bin 0 -> 1881 bytes .../backendicons/VBNet/file/WebFile.png | Bin 0 -> 1748 bytes .../backendicons/VBNet/project/ASPProject.png | Bin 0 -> 2114 bytes .../VBNet/project/ControlLibrary.png | Bin 0 -> 2292 bytes .../backendicons/VBNet/project/DOSProject.png | Bin 0 -> 1641 bytes .../VBNet/project/EmptyProject.png | Bin 0 -> 1584 bytes .../backendicons/VBNet/project/Form.png | Bin 0 -> 1621 bytes .../VBNet/project/FullProject.png | Bin 0 -> 1871 bytes .../backendicons/VBNet/project/Library.png | Bin 0 -> 2749 bytes .../VBNet/project/ServiceProject.png | Bin 0 -> 1577 bytes .../VBNet/project/UserControl.png | Bin 0 -> 1403 bytes .../backendicons/VBNet/project/WebProject.png | Bin 0 -> 2125 bytes .../backendicons/cpp/SmallFile.png | Bin 0 -> 1148 bytes .../backendicons/cpp/SmallProject.png | Bin 0 -> 1148 bytes .../backendicons/cpp/file/EmptyFile.png | Bin 0 -> 1445 bytes .../backendicons/cpp/file/Form.png | Bin 0 -> 1498 bytes .../backendicons/cpp/file/FullFile.png | Bin 0 -> 1541 bytes .../backendicons/cpp/file/NewClass.png | Bin 0 -> 1877 bytes .../backendicons/cpp/file/WebFile.png | Bin 0 -> 1731 bytes .../backendicons/cpp/project/ASPProject.png | Bin 0 -> 2115 bytes .../cpp/project/ControlLibrary.png | Bin 0 -> 2293 bytes .../backendicons/cpp/project/DOSProject.png | Bin 0 -> 1667 bytes .../backendicons/cpp/project/EmptyProject.png | Bin 0 -> 1586 bytes .../backendicons/cpp/project/Form.png | Bin 0 -> 1628 bytes .../backendicons/cpp/project/FullProject.png | Bin 0 -> 1895 bytes .../backendicons/cpp/project/Library.png | Bin 0 -> 2784 bytes .../cpp/project/ServiceProject.png | Bin 0 -> 1581 bytes .../backendicons/cpp/project/UserControl.png | Bin 0 -> 1385 bytes .../backendicons/cpp/project/WebProject.png | Bin 0 -> 2129 bytes .../miscFiles/Icons.16x16.CombineIcon.png | Bin 0 -> 1148 bytes .../miscFiles/Icons.16x16.HTMLIcon.png | Bin 0 -> 441 bytes .../miscFiles/Icons.16x16.MiscFiles.png | Bin 0 -> 414 bytes .../Icons.16x16.ResourceFileIcon.png | Bin 0 -> 451 bytes .../miscFiles/Icons.16x16.SolutionIcon.png | Bin 0 -> 834 bytes .../miscFiles/Icons.16x16.TextFileIcon.png | Bin 0 -> 425 bytes .../miscFiles/Icons.16x16.XMLFileIcon.png | Bin 0 -> 343 bytes .../miscFiles/Icons.32x32.ASPFileIcon.png | Bin 0 -> 1656 bytes .../miscFiles/Icons.32x32.CombineIcon.png | Bin 0 -> 2694 bytes .../miscFiles/Icons.32x32.EmptyFileIcon.png | Bin 0 -> 1159 bytes .../Icons.32x32.EmptyProjectIcon.png | Bin 0 -> 1018 bytes .../miscFiles/Icons.32x32.HTMLFileIcon.png | Bin 0 -> 1040 bytes .../Icons.32x32.ResourceFileIcon.png | Bin 0 -> 1361 bytes .../miscFiles/Icons.32x32.TextFileIcon.png | Bin 0 -> 1249 bytes .../miscFiles/Icons.32x32.XMLFileIcon.png | Bin 0 -> 1641 bytes .../backendicons/miscFiles/XmlFileIcon.png | Bin 0 -> 1015 bytes .../resources/image/BitmapResources/build.bat | 4 + data/resources/languages/.xvpics/russia.png | 5 + .../languages/.xvpics/south_korea.png | Bin 0 -> 1606 bytes data/resources/languages/.xvpics/sweden.png | 5 + data/resources/languages/Arabic.png | Bin 0 -> 612 bytes .../languages/LanguageDefinition.xml | 32 + data/resources/languages/Serbia.png | Bin 0 -> 705 bytes data/resources/languages/badgoisern.png | Bin 0 -> 19502 bytes data/resources/languages/brazil.png | Bin 0 -> 360 bytes data/resources/languages/bulgaria.png | Bin 0 -> 1081 bytes data/resources/languages/chinalg.png | Bin 0 -> 321 bytes data/resources/languages/czech.png | Bin 0 -> 249 bytes data/resources/languages/denmark.png | Bin 0 -> 214 bytes data/resources/languages/england.png | Bin 0 -> 207 bytes data/resources/languages/finnish.png | Bin 0 -> 1563 bytes data/resources/languages/france.png | Bin 0 -> 171 bytes data/resources/languages/germany.png | Bin 0 -> 183 bytes data/resources/languages/hungary.png | Bin 0 -> 523 bytes data/resources/languages/italy.png | Bin 0 -> 172 bytes data/resources/languages/japan.png | Bin 0 -> 1294 bytes data/resources/languages/lithuania.png | Bin 0 -> 184 bytes data/resources/languages/mexico.png | Bin 0 -> 429 bytes data/resources/languages/netherlands.png | Bin 0 -> 188 bytes data/resources/languages/poland.png | Bin 0 -> 167 bytes data/resources/languages/portugal.png | Bin 0 -> 398 bytes data/resources/languages/romania.png | Bin 0 -> 1089 bytes data/resources/languages/russia.png | Bin 0 -> 198 bytes data/resources/languages/slovenia.png | Bin 0 -> 1104 bytes data/resources/languages/south_korea.png | Bin 0 -> 1176 bytes data/resources/languages/spain.png | Bin 0 -> 399 bytes data/resources/languages/sweden.png | Bin 0 -> 201 bytes data/resources/languages/uk.png | Bin 0 -> 477 bytes data/resources/languages/usa.png | Bin 0 -> 433 bytes data/resources/layouts/Debug.xml | Bin 0 -> 12078 bytes data/resources/layouts/Default.xml | Bin 0 -> 11464 bytes data/resources/layouts/LayoutConfig.xml | 15 + data/resources/layouts/Plain.xml | Bin 0 -> 11174 bytes .../startpage/Layout/blue/balken_links.gif | Bin 0 -> 5853 bytes .../startpage/Layout/blue/balken_mitte.gif | Bin 0 -> 218 bytes .../startpage/Layout/blue/balken_rechts.gif | Bin 0 -> 7073 bytes .../startpage/Layout/brown/balken_links.gif | Bin 0 -> 6841 bytes .../startpage/Layout/brown/balken_mitte.gif | Bin 0 -> 193 bytes .../startpage/Layout/brown/balken_rechts.gif | Bin 0 -> 10138 bytes .../startpage/Layout/common/blind.gif | Bin 0 -> 43 bytes .../startpage/Layout/common/dot_listing.gif | Bin 0 -> 67 bytes .../Layout/common/klinker_milestone.gif | Bin 0 -> 5475 bytes .../Layout/common/line_hor_black.gif | Bin 0 -> 44 bytes .../Layout/common/milestone_col_head.gif | Bin 0 -> 6222 bytes .../startpage/Layout/common/pixel_weiss.gif | Bin 0 -> 43 bytes data/resources/startpage/Layout/default.css | 136 + .../startpage/Layout/green/balken_links.gif | Bin 0 -> 7792 bytes .../startpage/Layout/green/balken_mitte.gif | Bin 0 -> 97 bytes .../startpage/Layout/green/balken_rechts.gif | Bin 0 -> 3448 bytes .../startpage/Layout/orange/balken_links.gif | Bin 0 -> 3987 bytes .../startpage/Layout/orange/balken_mitte.gif | Bin 0 -> 352 bytes .../startpage/Layout/orange/balken_rechts.gif | Bin 0 -> 12129 bytes .../startpage/Layout/red/balken_links.gif | Bin 0 -> 5418 bytes .../startpage/Layout/red/balken_mitte.gif | Bin 0 -> 201 bytes .../startpage/Layout/red/balken_rechts.gif | Bin 0 -> 9088 bytes data/templates/file/CPPNet/CPP.Empty.xft | 22 + data/templates/file/CPPNet/CPP.Header.xft | 22 + .../file/CPPNet/CPP.Wizards.NewClass.xft | 19 + data/templates/file/CSharp/CSharp.Empty.xft | 31 + .../file/CSharp/CSharp.EmptyClass.xft | 45 + .../file/CSharp/CSharp.Forms.Form.xft | 72 + .../file/CSharp/CSharp.Forms.UserControl.xft | 72 + .../file/CSharp/CSharp.Patterns.Singleton.xft | 54 + .../templates/file/CSharp/CSharp.UnitTest.xft | 86 + .../CSharp/CSharp.Wizards.TypedCollection.xft | 296 + .../CSharp/CSharp.Wizards.TypedHashtable.xft | 350 + data/templates/file/Misc/EmptyHTMLFile.xft | 27 + .../templates/file/Misc/EmptyResourceFile.xft | 20 + data/templates/file/Misc/EmptyTextFile.xft | 18 + data/templates/file/Misc/EmptyXMLFile.xft | 22 + data/templates/file/Misc/EmptyXmlForm.xft | 25 + .../file/Misc/EmptyXmlUserControl.xft | 22 + .../file/SharpDevelop/AddInOptions.xft | 68 + .../file/SharpDevelop/ExampleMenuCommand.xft | 60 + .../file/SharpDevelop/ExampleOptionPanel.xft | 60 + .../file/SharpDevelop/ExamplePad.xft | 83 + .../file/SharpDevelop/ExampleView.xft | 92 + .../file/SharpDevelop/SimpleCommand.xft | 41 + data/templates/file/VBNet/VBNet.Empty.xft | 31 + .../templates/file/VBNet/VBNet.EmptyClass.xft | 41 + .../templates/file/VBNet/VBNet.Forms.Form.xft | 67 + .../file/VBNet/VBNet.Forms.UserControl.xft | 63 + .../file/VBNet/VBNet.Patterns.Singleton.xft | 50 + data/templates/file/VBNet/VBNet.UnitTest.xft | 71 + .../VBNet/VBNet.Wizards.TypedCollection.xft | 304 + .../VBNet/VBNet.Wizards.TypedHashtable.xft | 327 + .../project/CPPNet/ConsoleProject.xpt | 84 + .../templates/project/CPPNet/EmptyProject.xpt | 18 + .../templates/project/CPPNet/FormsProject.xpt | 107 + .../project/CSharp/ConsoleProject.xpt | 78 + .../project/CSharp/ControlLibrary.xpt | 116 + .../project/CSharp/Direct3DProject.xpt | 204 + .../templates/project/CSharp/EmptyProject.xpt | 18 + .../templates/project/CSharp/FormsProject.xpt | 124 + data/templates/project/CSharp/Library.xpt | 79 + data/templates/project/CSharp/Service.xpt | 149 + .../templates/project/ComplexExample.xpt.test | 117 + .../project/ILAsm/ConsoleProject.xpt | 50 + data/templates/project/Misc/BlankCombine.xpt | 18 + data/templates/project/Setup/WixProject.xpt | 451 + .../project/VBNet/ConsoleProject.xpt | 43 + .../project/VBNet/ControlLibrary.xpt | 100 + .../project/VBNet/Direct3DProject.xpt | 188 + data/templates/project/VBNet/EmptyProject.xpt | 21 + data/templates/project/VBNet/FormsProject.xpt | 112 + data/templates/project/VBNet/Library.xpt | 72 + data/templates/project/VBNet/Service.xpt | 134 + doc/BuiltWithSharpDevelop.png | Bin 0 -> 452 bytes doc/ChangeLog.xml | 13 + doc/RENAMED.txt | 10 + doc/SharpDevelopTODO.txt | 29 + doc/copyright.txt | 10 + doc/license.txt | 299 + doc/readme.rtf | 4654 +++++++ doc/technotes/AddInBuildingGuide.sxw | Bin 0 -> 39975 bytes doc/technotes/CodingStyleGuide.sxw | Bin 0 -> 46238 bytes doc/technotes/TechicalWritingMadeEasier.sxw | Bin 0 -> 49204 bytes doc/technotes/TheFineArtOfCommenting.sxw | Bin 0 -> 52342 bytes setup/Corsavy.nsi | 228 + setup/SharpDevelop.wxs | 479 + setup/fileassoc.nsh | 85 + setup/readme.txt | 32 + setup/wizard-image.bmp | Bin 0 -> 154542 bytes .../AddIns/DisplayBindings/ResourceEditor.dll | Bin 0 -> 45056 bytes .../AddIns/DisplayBindings/ResourceEditor.pdb | Bin 0 -> 116224 bytes .../ICSharpCode.FiletypeRegisterer.dll | Bin 0 -> 24576 bytes .../ICSharpCode.FiletypeRegisterer.pdb | Bin 0 -> 24064 bytes .../CPPNetBinding/Doc/TODO.txt | 3 + .../Project/Resources/CPPNetBinding.addin | 91 + .../CPPNetBinding/Project/Src/AssemblyInfo.cs | 32 + .../Src/CPPNetBindingCompilerManager.cs | 565 + .../Src/CPPNetBindingExecutionManager.cs | 74 + .../Project/Src/CPPNetLanguageBinding.cs | 95 + .../CPPNetBinding/Project/Src/Dependences.cs | 218 + .../CPPNetFormattingStrategy.cs | 343 + .../Project/Src/Gui/CPPCodeGenerationPanel.cs | 152 + .../Project/Src/IncludeParser.cs | 123 + .../Src/Project/CPPNetCompilerParameters.cs | 2257 ++++ .../Project/Src/Project/CPPNetProject.cs | 61 + .../CSharpBinding/Project/CSharpBinding.addin | 79 + .../Project/CSharpBinding.csproj | 110 + .../Project/CSharpBinding.csproj.user | 11 + .../Project/Configuration/AssemblyInfo.cs | 32 + .../Resources/AdvancedBuildOptionsDialog.xfrm | 122 + .../Resources/ApplicationSettings.xfrm | 185 + .../Project/Resources/BuildEvents.xfrm | 86 + .../Project/Resources/BuildOptions.xfrm | 189 + .../Project/Resources/DebugOptions.xfrm | 114 + .../Project/Resources/Publish.xfrm | 250 + .../Project/Resources/ReferencePaths.xfrm | 71 + .../Project/Resources/Signing.xfrm | 94 + .../Project/Src/CSharpAmbience.cs | 592 + .../Src/CSharpBindingExecutionManager.cs | 85 + .../Project/Src/CSharpLanguageBinding.cs | 90 + .../CSharpFormattingStrategy.cs | 757 ++ .../FormattingStrategy/DocumentAccessor.cs | 190 + .../Src/FormattingStrategy/Indentation.cs | 375 + .../Src/OptionPanels/ApplicationSettings.cs | 82 + .../Project/Src/OptionPanels/BuildEvents.cs | 44 + .../Project/Src/OptionPanels/BuildOptions.cs | 148 + .../Project/Src/OptionPanels/DebugOptions.cs | 71 + .../Project/Src/OptionPanels/Publish.cs | 27 + .../Src/OptionPanels/ReferencePaths.cs | 26 + .../Project/Src/OptionPanels/Signing.cs | 64 + .../Project/Src/Parser/ExpressionFinder.cs | 440 + .../Project/Src/Parser/Parser.cs | 141 + .../Project/Src/Project/CSharpProject.cs | 551 + .../ILAsmBinding/Project/ILAsmBinding.csproj | 68 + .../Project/ILAsmBinding.csproj.user | 8 + .../Project/ILAsmCompilerParameters.cs | 195 + .../Project/Project/ILAsmProject.cs | 50 + .../ILAsmBinding/Project/Src/AssemblyInfo.cs | 32 + .../Project/Src/Gui/ChooseRuntimePanel.cs | 72 + .../Src/Gui/CompilerParametersPanel.cs | 39 + .../Project/Src/ILAsmCompilerManager.cs | 188 + .../Project/Src/ILAsmExecutionManager.cs | 80 + .../Project/Src/ILAsmLanguageBinding.cs | 92 + .../Src/Resources/ChooseRuntimePanel.xfrm | 133 + .../Project/Src/Resources/ILAsm-Mode.xshd | 574 + .../Project/Src/Resources/ILAsmBinding.addin | 48 + .../Project/Resources/VBNetBinding.addin | 84 + .../VBNetBinding/Project/Src/AssemblyInfo.cs | 32 + .../VBFormattingStrategy.cs | 457 + .../Project/Src/Gui/CodeGenerationPanel.cs | 78 + .../Project/Src/Gui/GuiMessageRecipient.cs | 66 + .../Project/Src/Gui/OutputOptionsPanel.cs | 161 + .../Project/Src/Gui/TextEditorOptionsPanel.cs | 38 + .../Project/Src/Gui/VBCompilerPanel.cs | 47 + .../Src/Gui/VBDocConfigurationPanel.cs | 88 + .../Project/Src/Parser/ExpressionFinder.cs | 371 + .../VBNetBinding/Project/Src/Parser/Parser.cs | 127 + .../Src/Project/VBCompilerParameters.cs | 279 + .../Project/Src/Project/VBProject.cs | 74 + .../VBNetBinding/Project/Src/VBAmbience.cs | 570 + .../Project/Src/VBBindingCompilerServices.cs | 308 + .../Project/Src/VBBindingExecutionServices.cs | 81 + .../VBNetBinding/Project/Src/VBDOCCommand.cs | 98 + .../Project/Src/VBLanguageBinding.cs | 86 + .../VBNetBinding/Project/VBNetBinding.csproj | 83 + .../Project/VBNetBinding.csproj.user | 8 + .../RequiredLibraries/CommentExtractor.dll | Bin 0 -> 53248 bytes .../Project/Resources/WixBinding.addin | 36 + .../WixBinding/Project/Src/AssemblyInfo.cs | 32 + .../Src/Gui/CompilerParametersPanel.cs | 39 + .../Project/Src/Gui/LinkerParametersPanel.cs | 39 + .../Src/Project/WixCompilerParameters.cs | 31 + .../Project/Src/Project/WixProject.cs | 51 + .../Project/Src/WixCompilerManager.cs | 220 + .../Project/Src/WixExecutionManager.cs | 56 + .../Project/Src/WixLanguageBinding.cs | 92 + .../WixBinding/Project/WixBinding.csproj | 70 + .../WixBinding/Project/WixBinding.csproj.user | 6 + .../Project/Resources/AssemblyScout.addin | 54 + .../Resources/AssemblyScoutOptions.xfrm | 131 + .../AssemblyScout/Project/Src/AssemblyInfo.cs | 29 + .../Project/Src/AssemblyScoutBinding.cs | 51 + .../Project/Src/AssemblyScoutCommand.cs | 25 + .../Project/Src/AssemblyScoutCommands.cs | 84 + .../Project/Src/AssemblyScoutOptionPanel.cs | 71 + .../Project/Src/AssemblyScoutViewContent.cs | 306 + .../AssemblyScout/Project/Src/AssemblyTree.cs | 657 + .../Project/Src/ExtendedPropPanel.cs | 201 + .../AssemblyScout/Project/Src/ILDasmView.cs | 138 + .../AssemblyScout/Project/Src/InfoView.cs | 815 ++ .../Project/Src/Nodes/AssemblyTreeNode.cs | 261 + .../Project/Src/Nodes/FolderNode.cs | 42 + .../Project/Src/Nodes/MemberNode.cs | 178 + .../Project/Src/Nodes/MethodNode.cs | 43 + .../Project/Src/Nodes/ResourceNode.cs | 59 + .../Project/Src/Nodes/TypeNode.cs | 149 + .../AssemblyScout/Project/Src/SearchPanel.cs | 263 + .../AssemblyScout/Project/Src/SourceView.cs | 229 + .../AssemblyScout/Project/Src/TempProject.cs | 135 + .../AssemblyScout/Project/Src/XmlView.cs | 239 + .../Project/Configuration/AssemblyInfo.cs | 38 + .../FormDesigner/Project/FormDesigner.addin | 309 + .../FormDesigner/Project/FormDesigner.csproj | 139 + .../Project/FormDesigner.csproj.user | 13 + .../Resources/AddSidebarComponentsDialog.xfrm | 379 + .../Resources/ConfigureSidebarDialog.xfrm | 289 + .../RenameSidebarCategoryDialog.xfrm | 48 + .../Resources/WindowsFormsGridOptions.xfrm | 83 + .../Project/Src/Commands/FormCommands.cs | 500 + .../Project/Src/Commands/SideBarCommands.cs | 48 + .../CSharpDesignerGenerator.cs | 268 + .../DesignerGenerator/CodeDOMGenerator.cs | 81 + .../DesignerGenerator/IDesignerGenerator.cs | 56 + .../DesignerGenerator/XmlDesignerGenerator.cs | 195 + .../NRefactoryDesignerLoader.cs | 142 + .../DesignerLoader/XmlDesignerLoader.cs | 147 + .../FormDesignerSecondaryDisplayBinding.cs | 149 + .../FormDesigner/FormDesignerViewContent.cs | 443 + .../Src/FormDesigner/FormKeyHandler.cs | 182 + .../FormDesigner/Gui/AddComponentsDialog.cs | 211 + .../Src/FormDesigner/Gui/AssemblyList.cs | 144 + .../Gui/ComponentLibraryLoader.cs | 379 + .../Gui/ConfigureSideBarDialog.cs | 189 + .../Gui/CustomComponentsSideTab.cs | 197 + ...op.FormDesigner.Gui.AssemblyList.resources | Bin 0 -> 188 bytes ...tionPanels.ControlLibrariesPanel.resources | Bin 0 -> 188 bytes .../Gui/OptionPanels/GridOptions.cs | 63 + .../FormDesigner/Gui/RenameCategoryDialog.cs | 77 + .../Gui/ShowTabOrder/ITabOrder.cs | 44 + .../Gui/ShowTabOrder/TabIndexControl.cs | 102 + .../Src/FormDesigner/Gui/SideTabDesigner.cs | 195 + .../FormDesigner/Gui/SideTabItemDesigner.cs | 78 + .../MenuDesigner/AbstractMenuEditorControl.cs | 641 + .../MenuDesigner/ContextMenuEditorControl.cs | 71 + .../FormDesigner/MenuDesigner/ItemEditor.cs | 81 + .../MenuDesigner/MainMenuEditorControl.cs | 33 + .../FormDesigner/MenuDesigner/MenuDesigner.cs | 52 + .../MenuDesigner/MenuEditorService.cs | 134 + .../MenuDesigner/SubMenuEditorControl.cs | 139 + .../Services/DefaultServiceContainer.cs | 116 + .../Services/DesignerEventService.cs | 114 + .../Services/DesignerOptionService.cs | 98 + .../Services/DesignerResourceService.cs | 247 + .../Services/EventBindingService.cs | 321 + .../Src/FormDesigner/Services/HelpService.cs | 102 + .../Services/MenuCommandService.cs | 151 + .../Services/PropertyValueUIService.cs | 56 + .../FormDesigner/Services/ToolboxService.cs | 522 + .../Services/TypeDescriptorFilterService.cs | 64 + .../Services/TypeResolutionService.cs | 97 + .../Src/FormDesigner/Services/UIService.cs | 115 + .../Src/FormDesigner/ToolboxProvider.cs | 200 + .../UndoRedo/ComponentAddedUndoAction.cs | 66 + .../UndoRedo/ComponentChangedUndoAction.cs | 190 + .../UndoRedo/ComponentRemovedUndoAction.cs | 89 + .../UndoRedo/SelectComponentsUndoAction.cs | 71 + .../Src/FormDesigner/UndoRedo/UndoHandler.cs | 266 + .../Project/Configuration/AssemblyInfo.cs | 32 + .../Project/ResourceEditor.addin | 70 + .../Project/ResourceEditor.csproj | 80 + .../Project/ResourceEditor.csproj.user | 9 + .../Project/Src/Commands/AddNewFileCommand.cs | 112 + .../Src/Commands/AddStringEntryCommand.cs | 39 + .../Project/Src/Commands/ClipboardCommands.cs | 22 + .../Src/Commands/CopyResourceNameCommand.cs | 22 + .../Src/Commands/DeleteEntryCommand.cs | 20 + .../Src/Commands/RenameEntryCommand.cs | 23 + .../Src/Commands/SaveEntryAsCommand.cs | 75 + .../Project/Src/DisplayDefinition.cs | 269 + .../Src/ResourceEdit/AbstractImageView.cs | 82 + .../Project/Src/ResourceEdit/BinaryView.cs | 129 + .../Project/Src/ResourceEdit/BitmapView.cs | 83 + .../Project/Src/ResourceEdit/BooleanView.cs | 71 + .../Project/Src/ResourceEdit/CursorView.cs | 58 + .../Project/Src/ResourceEdit/IResourceView.cs | 58 + .../Project/Src/ResourceEdit/IconView.cs | 52 + .../Src/ResourceEdit/ResourceEditor.cs | 142 + .../Project/Src/ResourceEdit/ResourceItem.cs | 93 + .../Src/ResourceEdit/ResourceItemHashtable.cs | 321 + .../Project/Src/ResourceEdit/ResourceList.cs | 245 + .../Project/Src/ResourceEdit/TextView.cs | 56 + src/AddIns/Misc/AddinScout/AddinScout.sln | 6 + .../Misc/AddinScout/Project/AddinScout.csproj | 90 + .../AddinScout/Project/AddinScout.csproj.user | 13 + .../Project/Resources/AddInScout.addin | 21 + .../Project/Src/AddInScoutCommand.cs | 15 + .../Project/Src/AddInScoutViewContent.cs | 131 + .../AddinScout/Project/Src/AssemblyInfo.cs | 32 + .../Project/Src/Gui/AddInDetailsPanel.cs | 89 + .../Project/Src/Gui/AddinTreeView.cs | 73 + .../Project/Src/Gui/CodonListPanel.cs | 116 + .../Project/Src/Gui/TreeTreeView.cs | 75 + .../FiletypeRegisterer/Doc/Description.txt | 22 + .../Project/Configuration/AssemblyInfo.cs | 32 + .../Project/FiletypeRegisterer.addin | 23 + .../Project/FiletypeRegisterer.csproj | 75 + .../Project/FiletypeRegisterer.csproj.user | 9 + .../Project/Src/RegisterFiletypesCommand.cs | 144 + .../Project/Src/RegisterFiletypesPanel.cs | 122 + .../Project/Src/filetypes/Filetypes.xml | 12 + .../Project/Src/filetypes/cmbx.ico | Bin 0 -> 8854 bytes .../Project/Src/filetypes/cs.ico | Bin 0 -> 4710 bytes .../Project/Src/filetypes/java.ico | Bin 0 -> 4710 bytes .../Project/Src/filetypes/prjx.ico | Bin 0 -> 8854 bytes .../Project/Src/filetypes/resx.ico | Bin 0 -> 1078 bytes .../Project/Src/filetypes/vb.ico | Bin 0 -> 4710 bytes .../Project/Src/filetypes/xfrm.ico | Bin 0 -> 3310 bytes .../Project/Src/filetypes/xml.ico | Bin 0 -> 3310 bytes .../Project/Unregister/Main.cs | 61 + .../Project/Configuration/AssemblyInfo.cs | 32 + .../Project/HighlightingEditor.addin | 19 + .../Project/HighlightingEditor.csproj | 132 + .../Project/HighlightingEditor.csproj.user | 13 + .../Project/Resources/ColorDialog.xfrm | 134 + .../Project/Resources/Digits.xfrm | 67 + .../Project/Resources/EditDialog.xfrm | 80 + .../Project/Resources/Environment.xfrm | 93 + .../Project/Resources/KeywordList.xfrm | 168 + .../Project/Resources/KeywordLists.xfrm | 139 + .../Project/Resources/Marker.xfrm | 145 + .../Project/Resources/Markers.xfrm | 149 + .../Project/Resources/OptionPanel.xfrm | 81 + .../Project/Resources/Properties.xfrm | 119 + .../Project/Resources/RuleSet.xfrm | 111 + .../Project/Resources/RuleSets.xfrm | 129 + .../Project/Resources/Scheme.xfrm | 72 + .../Project/Resources/Span.xfrm | 183 + .../Project/Resources/Spans.xfrm | 139 + .../Project/Src/ColorButton.cs | 118 + .../Project/Src/ColorDialog.cs | 212 + .../Src/EditHighlightingColorDialog.cs | 165 + .../Project/Src/EditHighlightingDialog.cs | 146 + .../Project/Src/EditHighlightingPanel.cs | 305 + .../Project/Src/EditorHighlightColor.cs | 300 + .../Project/Src/Nodes/AbstractNode.cs | 46 + .../Project/Src/Nodes/DigitsNode.cs | 97 + .../Project/Src/Nodes/EnvironmentNode.cs | 165 + .../Project/Src/Nodes/KeywordListNode.cs | 211 + .../Project/Src/Nodes/KeywordListsNode.cs | 112 + .../Project/Src/Nodes/MarkerNode.cs | 164 + .../Project/Src/Nodes/MarkersNode.cs | 116 + .../Project/Src/Nodes/NodeOptionPanel.cs | 81 + .../Project/Src/Nodes/PropertiesNode.cs | 130 + .../Project/Src/Nodes/RuleSetNode.cs | 237 + .../Project/Src/Nodes/RuleSetsNode.cs | 112 + .../Project/Src/Nodes/SchemeNode.cs | 141 + .../Project/Src/Nodes/SpanNode.cs | 354 + .../Project/Src/Nodes/SpansNode.cs | 106 + .../Project/Configuration/AssemblyInfo.cs | 32 + .../Misc/NUnitPad/Project/NUnitPad.csproj | 59 + .../NUnitPad/Project/NUnitPad.csproj.user | 13 + .../NUnitPad/Project/Resources/NUnitPad.addin | 54 + .../Project/Src/Commands/MenuCommands.cs | 27 + .../TestTreeViewContextMenuCommands.cs | 55 + .../Project/Src/Gui/NUnitPadContent.cs | 213 + .../NUnitPad/Project/Src/Gui/TestTreeView.cs | 382 + .../Project/AssemblyInfo.cs | 36 + .../Project/Commands/ExportProjectCommand.cs | 64 + .../Project/Commands/ImportProjectCommand.cs | 39 + .../Converters/AbstractInputConverter.cs | 25 + .../Converters/AbstractOutputConverter.cs | 22 + .../AbstractLanguageConverterOutput.cs | 180 + .../CSharpToVBNetLanguageConverterOutput.cs | 60 + .../VBNetToCSharpLanguageConverterOutput.cs | 59 + .../Converters/VSNet/SolutionConverterTool.cs | 341 + .../VSNet/SolutionInputConverter.cs | 251 + .../VSNet/SolutionOutputConverter.cs | 199 + .../VSNet/SolutionOutputConverterTool.cs | 91 + .../VSNet/VSProjectInputConverter.cs | 168 + .../Dialogs/ChooseProjectLocationDialog.cs | 66 + .../Project/Dialogs/ExportProjectDialog.cs | 179 + .../Project/Dialogs/ImportProjectDialog.cs | 123 + .../Resources/CSSolutionConversion.xsl | 133 + .../ChooseProjectLocationDialog.xfrm | 57 + .../Resources/ExportProjectDialog.xfrm | 139 + .../Resources/ImportProjectDialog.xfrm | 108 + .../Resources/ProjectImporterExporter.addin | 48 + .../ProjectToVSNetProjectConversion.xsl | 110 + .../Resources/VBSolutionConversion.xsl | 121 + .../Project/Configuration/AssemblyInfo.cs | 32 + .../Misc/RegExpTk/Project/RegExpTk.addin | 20 + .../Misc/RegExpTk/Project/RegExpTk.csproj | 68 + .../RegExpTk/Project/RegExpTk.csproj.user | 13 + .../Project/Resources/RegExpTkGroupForm.xfrm | 125 + .../Project/Resources/RegExpTkMainForm.xfrm | 650 + .../Project/Src/Commands/MenuCommand.cs | 23 + .../RegExpTk/Project/Src/Dialogs/GroupForm.cs | 47 + .../Project/Src/Dialogs/MainWindow.cs | 342 + src/AddIns/Misc/RegExpTk/RegExpTkPad.cs.old | 37 + .../Project/Configuration/AssemblyInfo.cs | 32 + .../StartPage/Project/Src/ICSharpCodePage.cs | 668 + src/AddIns/Misc/StartPage/Project/Src/Main.cs | 27 + .../Misc/StartPage/Project/Src/StartPage.cs | 153 + .../Misc/StartPage/Project/StartPage.addin | 28 + .../Misc/StartPage/Project/StartPage.csproj | 61 + .../StartPage/Project/StartPage.csproj.user | 11 + .../Project/Configuration/AssemblyInfo.cs | 32 + .../Project/Resources/CheckoutDialog.xfrm | 104 + .../Project/Resources/ClientCertDialog.xfrm | 77 + .../Resources/ClientCertPassphraseDialog.xfrm | 67 + .../Project/Resources/CommitDialog.xfrm | 51 + .../Project/Resources/ContentPanel.xfrm | 154 + .../Project/Resources/DiffPanel.xfrm | 305 + .../Project/Resources/ExportDialog.xfrm | 146 + .../Project/Resources/ICSharpCode.Svn.addin | 70 + .../Project/Resources/InfoPanel.xfrm | 154 + .../Project/Resources/LoginDialog.xfrm | 104 + .../Resources/SslServerTrustDialog.xfrm | 148 + .../Resources/SubversionOptionsPanel.xfrm | 46 + .../Project/Src/AddInOptions.cs | 58 + .../Project/Src/Commands/AutostartCommands.cs | 93 + .../Src/Commands/Checkout/CheckoutCommand.cs | 58 + .../Src/Commands/Checkout/CheckoutDialog.cs | 81 + .../Src/Commands/Commit/CommitCommand.cs | 79 + .../Src/Commands/Commit/CommitDialog.cs | 34 + .../Src/Commands/Export/ExportCommand.cs | 58 + .../Src/Commands/Export/ExportDialog.cs | 113 + .../Src/Commands/ProjectBrowserCommands.cs | 157 + .../ClientCertDialog.cs | 63 + .../ClientCertPassphraseDialog.cs | 63 + .../AuthentificationDialogs/LoginDialog.cs | 118 + .../SslServerTrustDialog.cs | 122 + .../HistoryViewDisplayBinding/ContentPanel.cs | 85 + .../HistoryViewDisplayBinding/DiffPanel.cs | 132 + .../HistoryViewDisplayBinding/HistoryView.cs | 66 + .../HistoryViewDisplayBinding.cs | 65 + .../HistoryViewPanel.cs | 92 + .../HistoryViewDisplayBinding/InfoPanel.cs | 68 + .../SvnProjectBrowserVisitor.cs | 153 + .../Project/Src/Gui/SubversionOptionsPanel.cs | 45 + .../Project/Src/InOperationDialog.cs | 146 + .../SubversionAddIn/Project/Src/SvnClient.cs | 256 + .../MessageBoxBuilder/Doc/CreationProcess.txt | 13 + .../Project/Configuration/AssemblyInfo.cs | 38 + .../Resources/CodeGenerationPanel.xfrm | 72 + .../Project/Resources/MessageBoxBuilder.addin | 35 + .../Resources/VisiblePropertiesPanel.xfrm | 162 + .../Project/Src/Command/NewClass1.cs | 46 + .../Project/Src/Command/WizardCommand.cs | 59 + .../Src/DialogPanels/CodeGenerationPanel.cs | 78 + .../Src/DialogPanels/ViewPropertyPanel.cs | 109 + .../Src/Generator/MessageBoxGenerator.cs | 245 + .../Project/Src/Xml/MessageBoxBuilder.addin | 35 + .../DockPanel_Src/DockSample/AboutDialog.cs | 108 + .../DockPanel_Src/DockSample/AboutDialog.resx | 157 + .../DockPanel_Src/DockSample/App.ico | Bin 0 -> 1078 bytes .../DockPanel_Src/DockSample/AssemblyInfo.cs | 58 + .../DockSample/DockSample.csproj | 202 + .../DockSample/DockSample.csproj.user | 58 + .../DockPanel_Src/DockSample/DummyDoc.cs | 198 + .../DockPanel_Src/DockSample/DummyDoc.resx | 193 + .../DockSample/DummyOutputWindow.cs | 143 + .../DockSample/DummyOutputWindow.resx | 165 + .../DockSample/DummyPropertyWindow.cs | 135 + .../DockSample/DummyPropertyWindow.resx | 180 + .../DockSample/DummySolutionExplorer.cs | 173 + .../DockSample/DummySolutionExplorer.resx | 245 + .../DockPanel_Src/DockSample/DummyTaskList.cs | 145 + .../DockSample/DummyTaskList.resx | 119 + .../DockPanel_Src/DockSample/DummyToolbox.cs | 167 + .../DockSample/DummyToolbox.resx | 272 + .../DockSample/Images/ArrowDown.bmp | Bin 0 -> 370 bytes .../DockSample/Images/ArrowUp.bmp | Bin 0 -> 370 bytes .../DockSample/Images/Bitmap.ico | Bin 0 -> 318 bytes .../DockSample/Images/BlankIcon.ico | Bin 0 -> 1078 bytes .../DockSample/Images/CSFile.ico | Bin 0 -> 318 bytes .../DockSample/Images/CSProject.ico | Bin 0 -> 318 bytes .../DockSample/Images/ClosedFolder.ICO | Bin 0 -> 1078 bytes .../DockPanel_Src/DockSample/Images/Form.ico | Bin 0 -> 318 bytes .../DockPanel_Src/DockSample/Images/Mouse.bmp | Bin 0 -> 134 bytes .../DockPanel_Src/DockSample/Images/New.ico | Bin 0 -> 318 bytes .../DockPanel_Src/DockSample/Images/Open.ico | Bin 0 -> 318 bytes .../DockSample/Images/OpenFolder.ICO | Bin 0 -> 1078 bytes .../DockSample/Images/OutputWindow.ico | Bin 0 -> 766 bytes .../DockSample/Images/PropertyWindow.ico | Bin 0 -> 766 bytes .../DockSample/Images/Reference.ico | Bin 0 -> 318 bytes .../DockSample/Images/References.ico | Bin 0 -> 318 bytes .../DockSample/Images/SolutionExplorer.ico | Bin 0 -> 766 bytes .../DockSample/Images/TaskListWindow.ico | Bin 0 -> 766 bytes .../DockSample/Images/ToolboxWindow.ico | Bin 0 -> 766 bytes .../DockSample/Images/msenv22.ico | Bin 0 -> 766 bytes .../DockPanel_Src/DockSample/MainForm.cs | 677 + .../DockPanel_Src/DockSample/MainForm.resx | 416 + .../DockPanel_Src/DockSample/Options.cs | 35 + .../DockPanel_Src/DockSample/OptionsDialog.cs | 161 + .../DockSample/OptionsDialog.resx | 193 + .../DockSample/RtfFiles/DummyDoc.cs.rtf | Bin 0 -> 5583 bytes src/Libraries/DockPanel_Src/WinFormsUI.sln | 25 + src/Libraries/DockPanel_Src/WinFormsUI.suo | Bin 0 -> 10752 bytes .../DockPanel_Src/WinFormsUI/AssemblyInfo.cs | 57 + .../WinFormsUI/AutoHideWindow.cs | 390 + .../WinFormsUI/AutoHideWindowSplitter.cs | 35 + .../WinFormsUI/DisplayingDockList.cs | 217 + .../WinFormsUI/DockAreasEditor.cs | 158 + .../DockPanel_Src/WinFormsUI/DockContent.cs | 766 ++ .../WinFormsUI/DockContentCollection.cs | 100 + .../DockPanel_Src/WinFormsUI/DockHelper.cs | 123 + .../DockPanel_Src/WinFormsUI/DockList.cs | 138 + .../DockPanel_Src/WinFormsUI/DockPane.cs | 1989 +++ .../WinFormsUI/DockPaneCollection.cs | 87 + .../WinFormsUI/DockPaneSplitter.cs | 60 + .../DockPanel_Src/WinFormsUI/DockPanel.cs | 1248 ++ .../WinFormsUI/DockPanelPersist.cs | 658 + .../DockPanel_Src/WinFormsUI/DockWindow.cs | 164 + .../WinFormsUI/DockWindowCollection.cs | 46 + .../WinFormsUI/DockWindowSplitter.cs | 35 + .../DockPanel_Src/WinFormsUI/DragHandler.cs | 968 ++ .../WinFormsUI/DragHandlerBase.cs | 133 + .../DockPanel_Src/WinFormsUI/DrawHelper.cs | 136 + .../DockPanel_Src/WinFormsUI/DummyControl.cs | 13 + .../DockPanel_Src/WinFormsUI/Enums.cs | 60 + .../DockPanel_Src/WinFormsUI/EventArgs.cs | 28 + .../DockPanel_Src/WinFormsUI/FloatWindow.cs | 243 + .../WinFormsUI/FloatWindowCollection.cs | 67 + .../WinFormsUI/HiddenMdiChild.cs | 82 + .../DockPanel_Src/WinFormsUI/InertButton.cs | 585 + .../DockPanel_Src/WinFormsUI/Interfaces.cs | 69 + .../WinFormsUI/LocalWindowsHook.cs | 115 + .../DockPanel_Src/WinFormsUI/Localization.cs | 56 + .../DockPanel_Src/WinFormsUI/Measures.cs | 95 + .../WinFormsUI/NestedDockingStatus.cs | 118 + .../WinFormsUI/ResourceHelper.cs | 44 + .../Resources/DockPane.AutoHideNo.bmp | Bin 0 -> 114 bytes .../Resources/DockPane.AutoHideYes.bmp | Bin 0 -> 114 bytes .../DockPane.DocumentCloseDisabled.bmp | Bin 0 -> 114 bytes .../DockPane.DocumentCloseEnabled.bmp | Bin 0 -> 114 bytes .../Resources/DockPane.ScrollLeftDisabled.bmp | Bin 0 -> 114 bytes .../Resources/DockPane.ScrollLeftEnabled.bmp | Bin 0 -> 114 bytes .../DockPane.ScrollRightDisabled.bmp | Bin 0 -> 114 bytes .../Resources/DockPane.ScrollRightEnabled.bmp | Bin 0 -> 114 bytes .../DockPane.ToolWindowCloseDisabled.bmp | Bin 0 -> 114 bytes .../DockPane.ToolWindowCloseEnabled.bmp | Bin 0 -> 114 bytes .../WinFormsUI/Resources/Thumbs.db | Bin 0 -> 7168 bytes .../DockPanel_Src/WinFormsUI/SplitterBase.cs | 79 + .../DockPanel_Src/WinFormsUI/Strings.ResX | 316 + .../DockPanel_Src/WinFormsUI/Win32/Enums.cs | 701 + .../DockPanel_Src/WinFormsUI/Win32/Gdi32.cs | 52 + .../DockPanel_Src/WinFormsUI/Win32/Structs.cs | 135 + .../DockPanel_Src/WinFormsUI/Win32/User32.cs | 135 + .../WinFormsUI/WinFormsUI.csproj | 194 + .../WinFormsUI/WinFormsUI.csproj.user | 28 + .../ICSharpCode.TextEditor.sln | 25 + .../ICSharpCode.TextEditor.suo | Bin 0 -> 9728 bytes .../Project/Configuration/AssemblyInfo.cs | 23 + .../Project/ICSharpCode.TextEditor.csproj | 180 + .../ICSharpCode.TextEditor.csproj.user | 13 + .../Project/Resources/ASPX.xshd | 49 + .../Project/Resources/BAT-Mode.xshd | 32 + .../Project/Resources/CPP-Mode.xshd | 206 + .../Project/Resources/CSharp-Mode.xshd | 303 + .../Project/Resources/Coco-Mode.xshd | 97 + .../Project/Resources/HTML-Mode.xshd | 385 + ...SharpCode.TextEditor.TextEditorControl.bmp | Bin 0 -> 824 bytes .../Resources/ICSharpCode.TextEditor.snk | Bin 0 -> 596 bytes .../Project/Resources/Java-Mode.xshd | 180 + .../Project/Resources/JavaScript-Mode.xshd | 136 + .../Project/Resources/Mode.xsd | 341 + .../Project/Resources/PHP-Mode.xshd | 198 + .../Project/Resources/RightArrow.cur | Bin 0 -> 326 bytes .../Project/Resources/SyntaxModes.xml | 49 + .../Project/Resources/Tex-Mode.xshd | 108 + .../Project/Resources/VBNET-Mode.xshd | 710 + .../Project/Resources/XML-Mode.xshd | 56 + .../Project/Src/Actions/BookmarkActions.cs | 60 + .../Project/Src/Actions/CaretActions.cs | 209 + .../Project/Src/Actions/ClipBoardActions.cs | 46 + .../Project/Src/Actions/FoldActions.cs | 60 + .../Project/Src/Actions/FormatActions.cs | 235 + .../Project/Src/Actions/HomeEndActions.cs | 115 + .../Project/Src/Actions/IEditAction.cs | 60 + .../Project/Src/Actions/MiscActions.cs | 704 + .../Project/Src/Actions/SelectionActions.cs | 172 + .../Project/Src/Document/AbstractSegment.cs | 50 + .../Src/Document/BookmarkManager/Bookmark.cs | 60 + .../BookmarkManager/BookmarkEventHandler.cs | 34 + .../BookmarkManager/BookmarkManager.cs | 223 + .../BookmarkManager/BookmarkManagerMemento.cs | 101 + .../Project/Src/Document/DefaultDocument.cs | 433 + .../Document/DefaultTextEditorProperties.cs | 272 + .../Project/Src/Document/DocumentEventArgs.cs | 103 + .../Project/Src/Document/DocumentFactory.cs | 49 + .../Document/FoldingStrategy/FoldMarker.cs | 144 + .../FoldingStrategy/FoldingManager.cs | 313 + .../FoldingStrategy/IFoldingStrategy.cs | 25 + .../FoldingStrategy/IndentFoldingStrategy.cs | 36 + .../DefaultFormattingStrategy.cs | 171 + .../FormattingStrategy/IFormattingStrategy.cs | 66 + .../DefaultHighlightingStrategy.cs | 694 + .../HighlightingStrategy/FontContainer.cs | 99 + .../HighlightBackground.cs | 57 + .../HighlightingStrategy/HighlightColor.cs | 284 + .../HighlightingStrategy/HighlightInfo.cs | 34 + .../HighlightingStrategy/HighlightRuleSet.cs | 175 + .../HighlightingColorNotFoundException.cs | 17 + .../HighlightingDefinitionParser.cs | 114 + .../HighlightingManager.cs | 124 + .../HighlightingStrategyFactory.cs | 47 + .../IHighlightingStrategy.cs | 68 + .../HighlightingStrategy/NextMarker.cs | 71 + .../HighlightingStrategy/PrevMarker.cs | 71 + .../Src/Document/HighlightingStrategy/Span.cs | 124 + .../SyntaxModes/FileSyntaxModeProvider.cs | 82 + .../SyntaxModes/ISyntaxModeFileProvider.cs | 22 + .../SyntaxModes/ResourceSyntaxModeProvider.cs | 43 + .../SyntaxModes/SyntaxMode.cs | 98 + .../Document/HighlightingStrategy/TextWord.cs | 186 + .../Project/Src/Document/IDocument.cs | 308 + .../Project/Src/Document/ISegment.cs | 34 + .../Src/Document/ITextEditorProperties.cs | 145 + .../LineManager/DefaultLineManager.cs | 526 + .../Src/Document/LineManager/ILineManager.cs | 146 + .../LineManager/LineManagerEventArgs.cs | 106 + .../Src/Document/LineManager/LineSegment.cs | 217 + .../Document/MarkerStrategy/MarkerStrategy.cs | 93 + .../Src/Document/MarkerStrategy/TextMarker.cs | 63 + .../Src/Document/Selection/ColumnRange.cs | 69 + .../Document/Selection/DefaultSelection.cs | 125 + .../Src/Document/Selection/ISelection.cs | 64 + .../Document/Selection/SelectionManager.cs | 378 + .../GapTextBufferStrategy.cs | 140 + .../TextBufferStrategy/ITextBufferStrategy.cs | 86 + .../StringTextBufferStrategy.cs | 88 + .../Project/Src/Document/TextUtilities.cs | 314 + .../Project/Src/Gui/AbstractMargin.cs | 112 + .../Project/Src/Gui/BracketHighlighter.cs | 106 + .../Project/Src/Gui/BrushRegistry.cs | 65 + .../Project/Src/Gui/Caret.cs | 334 + .../AbstractCompletionWindow.cs | 158 + .../CodeCompletionListView.cs | 262 + .../CompletionWindow/CodeCompletionWindow.cs | 255 + .../CompletionWindow/DeclarationViewWindow.cs | 80 + .../Gui/CompletionWindow/ICompletionData.cs | 33 + .../ICompletionDataProvider.cs | 29 + .../Project/Src/Gui/FoldMargin.cs | 277 + .../Project/Src/Gui/GutterMargin.cs | 170 + .../Project/Src/Gui/HRuler.cs | 60 + .../Project/Src/Gui/IconBarMargin.cs | 205 + .../Project/Src/Gui/Ime.cs | 136 + .../Gui/InsightWindow/IInsightDataProvider.cs | 31 + .../Src/Gui/InsightWindow/InsightWindow.cs | 201 + .../Project/Src/Gui/TextArea.cs | 746 ++ .../Src/Gui/TextAreaClipboardHandler.cs | 183 + .../Project/Src/Gui/TextAreaControl.cs | 295 + .../Src/Gui/TextAreaDragDropHandler.cs | 130 + .../Project/Src/Gui/TextAreaMouseHandler.cs | 387 + .../Project/Src/Gui/TextAreaUpdate.cs | 88 + .../Project/Src/Gui/TextEditorControl.cs | 349 + .../Project/Src/Gui/TextEditorControlBase.cs | 731 ++ .../Project/Src/Gui/TextView.cs | 953 ++ .../Project/Src/Undo/IUndoableOperation.cs | 25 + .../Project/Src/Undo/UndoQueue.cs | 52 + .../Project/Src/Undo/UndoStack.cs | 174 + .../Project/Src/Undo/UndoableDelete.cs | 75 + .../Project/Src/Undo/UndoableInsert.cs | 76 + .../Project/Src/Undo/UndoableReplace.cs | 77 + .../Project/Src/Util/LookupTable.cs | 142 + .../Project/Src/Util/RtfWriter.cs | 168 + .../Project/Src/Util/TextUtility.cs | 81 + .../Project/Src/Util/TipPainter.cs | 128 + .../Project/Src/Util/TipPainterTools.cs | 168 + .../Project/Src/Util/TipSection.cs | 83 + .../Project/Src/Util/TipSpacer.cs | 36 + .../Project/Src/Util/TipSplitter.cs | 99 + .../Project/Src/Util/TipText.cs | 181 + .../Test/AssemblyInfo.cs | 32 + .../Test/DocumentTests.cs | 183 + .../Test/ICSharpCode.TextEditor.Test.csproj | 71 + .../ICSharpCode.TextEditor.Test.csproj.user | 19 + src/Libraries/NRefactory/NRefactory.sln | 8 + .../Project/Configuration/AssemblyInfo.cs | 32 + .../NRefactory/Project/NRefactory.csproj | 204 + .../NRefactory/Project/NRefactory.csproj.user | 13 + .../Resources/ICSharpCode.NRefactory.snk | Bin 0 -> 596 bytes .../Project/Src/Lexer/AbstractLexer.cs | 240 + .../Project/Src/Lexer/BuildKeywords.pl | 328 + .../Src/Lexer/CSharp/CSharpKeywordList.txt | 166 + .../Project/Src/Lexer/CSharp/Keywords.cs | 102 + .../Project/Src/Lexer/CSharp/Lexer.cs | 802 ++ .../Project/Src/Lexer/CSharp/Tokens.cs | 295 + .../NRefactory/Project/Src/Lexer/ILexer.cs | 71 + .../Project/Src/Lexer/LookupTable.cs | 121 + .../Project/Src/Lexer/Special/BlankLine.cs | 14 + .../Project/Src/Lexer/Special/Comment.cs | 56 + .../Project/Src/Lexer/Special/CommentType.cs | 14 + .../Lexer/Special/PreProcessingDirective.cs | 66 + .../Src/Lexer/Special/SpecialTracker.cs | 68 + .../Project/Src/Lexer/Special/SpecialType.cs | 13 + .../Project/Src/Lexer/Special/TagComment.cs | 30 + .../NRefactory/Project/Src/Lexer/Token.cs | 58 + .../Project/Src/Lexer/VBNet/Keywords.cs | 182 + .../Project/Src/Lexer/VBNet/Lexer.cs | 686 + .../Project/Src/Lexer/VBNet/Tokens.cs | 436 + .../Src/Lexer/VBNet/VBNetKeywordList.txt | 228 + src/Libraries/NRefactory/Project/Src/Main.cs | 113 + .../Src/Output/AbstractOutputFormatter.cs | 144 + .../Src/Output/AbstractPrettyPrintOptions.cs | 64 + .../Src/Output/CSharp/CSharpOutputVisitor.cs | 2105 +++ .../Src/Output/CSharp/OutputFormatter.cs | 205 + .../Src/Output/CSharp/PrettyPrintOptions.cs | 515 + .../Output/CodeDOM/CodeDOMOutputVisitor.cs | 983 ++ .../Project/Src/Output/IOutputASTVisitor.cs | 39 + .../Project/Src/Output/NodeInformVisitor.cs | 57 + .../Src/Output/VBNet/VBNetOutputFormatter.cs | 36 + .../Src/Output/VBNet/VBNetOutputVisitor.cs | 2345 ++++ .../Output/VBNet/VBNetPrettyPrintOptions.cs | 30 + .../Project/Src/Parser/AST/AbstractNode.cs | 113 + .../Project/Src/Parser/AST/AttributedNode.cs | 61 + .../CSharp/Expressions/CheckedExpression.cs | 36 + .../Expressions/ConditionalExpression.cs | 60 + .../CSharp/Expressions/DirectionExpression.cs | 48 + .../CSharp/Expressions/IndexerExpression.cs | 49 + .../Expressions/PointerReferenceExpression.cs | 48 + .../CSharp/Expressions/SizeOfExpression.cs | 36 + .../Expressions/StackAllocExpression.cs | 47 + .../CSharp/Expressions/UncheckedExpression.cs | 36 + .../AST/CSharp/Statements/CheckedStatement.cs | 36 + .../AST/CSharp/Statements/EmptyStatement.cs | 18 + .../AST/CSharp/Statements/FixedStatement.cs | 61 + .../CSharp/Statements/GotoCaseStatement.cs | 47 + .../CSharp/Statements/UncheckedStatement.cs | 36 + .../AST/CSharp/Statements/UnsafeStatement.cs | 36 + .../AST/CSharp/Statements/UsingStatement.cs | 48 + .../AST/CSharp/Statements/YieldStatement.cs | 46 + .../CSharp/TypeLevel/DestructorDeclaration.cs | 66 + .../CSharp/TypeLevel/IndexerDeclaration.cs | 153 + .../CSharp/TypeLevel/OperatorDeclaration.cs | 152 + .../Parser/AST/General/AttributeSection.cs | 192 + .../Project/Src/Parser/AST/General/Enums.cs | 126 + .../Expressions/ArrayCreateExpression.cs | 86 + .../Expressions/ArrayInitializerExpression.cs | 142 + .../Expressions/AssignmentExpression.cs | 83 + .../Expressions/BaseReferenceExpression.cs | 18 + .../Expressions/BinaryOperatorExpression.cs | 97 + .../AST/General/Expressions/CastExpression.cs | 72 + .../AST/General/Expressions/Expression.cs | 73 + .../Expressions/FieldReferenceExpression.cs | 48 + .../Expressions/IdentifierExpression.cs | 36 + .../Expressions/InvocationExpression.cs | 55 + .../Expressions/ObjectCreateExpression.cs | 49 + .../Expressions/ParenthesizedExpression.cs | 36 + .../Expressions/PrimitiveExpression.cs | 51 + .../Expressions/ThisReferenceExpression.cs | 18 + .../General/Expressions/TypeOfExpression.cs | 36 + .../Expressions/TypeReferenceExpression.cs | 41 + .../Expressions/UnaryOperatorExpression.cs | 72 + .../General/GlobalScope/CompilationUnit.cs | 85 + .../GlobalScope/DelegateDeclaration.cs | 80 + .../GlobalScope/NamespaceDeclaration.cs | 56 + .../General/GlobalScope/TypeDeclaration.cs | 155 + .../General/GlobalScope/UsingDeclaration.cs | 118 + .../Src/Parser/AST/General/INullable.cs | 15 + .../AST/General/Statements/BlockStatement.cs | 68 + .../AST/General/Statements/BreakStatement.cs | 18 + .../General/Statements/ContinueStatement.cs | 45 + .../AST/General/Statements/DoLoopStatement.cs | 87 + .../AST/General/Statements/ForStatement.cs | 67 + .../General/Statements/ForeachStatement.cs | 94 + .../AST/General/Statements/GotoStatement.cs | 38 + .../AST/General/Statements/IfElseStatement.cs | 137 + .../AST/General/Statements/LabelStatement.cs | 36 + .../Statements/LocalVariableDeclaration.cs | 110 + .../AST/General/Statements/LockStatement.cs | 47 + .../AST/General/Statements/ReturnStatement.cs | 36 + .../AST/General/Statements/Statement.cs | 73 + .../General/Statements/StatementExpression.cs | 52 + .../AST/General/Statements/SwitchStatement.cs | 164 + .../AST/General/Statements/ThrowStatement.cs | 36 + .../General/Statements/TryCatchStatement.cs | 142 + .../General/Statements/VariableDeclaration.cs | 85 + .../TypeLevel/ConstructorDeclaration.cs | 70 + .../TypeLevel/ConstructorInitializer.cs | 101 + .../General/TypeLevel/EventAddRemoveRegion.cs | 171 + .../AST/General/TypeLevel/EventDeclaration.cs | 148 + .../AST/General/TypeLevel/FieldDeclaration.cs | 121 + .../General/TypeLevel/MethodDeclaration.cs | 98 + .../ParameterDeclarationExpression.cs | 103 + .../General/TypeLevel/PropertyDeclaration.cs | 143 + .../General/TypeLevel/PropertyGetSetRegion.cs | 166 + .../Src/Parser/AST/General/TypeReference.cs | 227 + .../Project/Src/Parser/AST/INode.cs | 61 + .../Src/Parser/AST/ParametrizedNode.cs | 63 + .../VBNet/Expressions/AddressOfExpression.cs | 36 + .../Expressions/ClassReferenceExpression.cs | 18 + .../VBNet/Expressions/TypeOfIsExpression.cs | 37 + .../VBNet/GlobalScope/OptionDeclaration.cs | 81 + .../VBNet/Statements/AddHandlerStatement.cs | 47 + .../AST/VBNet/Statements/EndStatement.cs | 18 + .../AST/VBNet/Statements/EraseStatements.cs | 36 + .../AST/VBNet/Statements/ErrorStatement.cs | 35 + .../AST/VBNet/Statements/ExitStatement.cs | 47 + .../AST/VBNet/Statements/ForNextStatement.cs | 110 + .../AST/VBNet/Statements/OnErrorStatement.cs | 36 + .../VBNet/Statements/RaiseEventStatement.cs | 52 + .../AST/VBNet/Statements/ReDimStatement.cs | 81 + .../Statements/RemoveHandlerStatement.cs | 48 + .../AST/VBNet/Statements/ResumeStatement.cs | 55 + .../AST/VBNet/Statements/StopStatement.cs | 18 + .../AST/VBNet/Statements/WithStatement.cs | 46 + .../AST/VBNet/TypeLevel/DeclareDeclaration.cs | 106 + .../Project/Src/Parser/AbstractParser.cs | 96 + .../Project/Src/Parser/CSharp/Parser.cs | 5326 ++++++++ .../Project/Src/Parser/CSharp/cs.ATG | 2158 +++ .../Project/Src/Parser/CSharp/trace.txt | 0 .../NRefactory/Project/Src/Parser/Errors.cs | 49 + .../Src/Parser/Frames/OldSharpCoco.exe | Bin 0 -> 81920 bytes .../Project/Src/Parser/Frames/Parser.frame | 87 + .../Src/Parser/Frames/Parser.frame.new | 89 + .../Src/Parser/Frames/Parser.frame.old | 87 + .../Project/Src/Parser/Frames/Scanner.frame | 202 + .../Project/Src/Parser/Frames/SharpCoco.exe | Bin 0 -> 77824 bytes .../Project/Src/Parser/Frames/trace.txt | 10836 ++++++++++++++++ .../NRefactory/Project/Src/Parser/IParser.cs | 36 + .../Project/Src/Parser/Modifiers.cs | 45 + .../Project/Src/Parser/ParserFactory.cs | 58 + .../Project/Src/Parser/VBNet/ParamModifier.cs | 46 + .../Project/Src/Parser/VBNet/Parser.cs | 6626 ++++++++++ .../Project/Src/Parser/VBNet/VBNET.ATG | 2682 ++++ .../Src/Parser/Visitors/AbstractASTVisitor.cs | 1106 ++ .../Src/Parser/Visitors/IASTVisitor.cs | 122 + .../Src/Parser/Visitors/LookupTableVisitor.cs | 141 + .../NRefactory/Project/Src/Parser/gen.bat | 37 + src/Libraries/NRefactory/Test/AssemblyInfo.cs | 32 + .../NRefactory/Test/General/UnitTest.cs | 106 + .../NRefactory/Test/Lexer/CSharp/LexerTest.cs | 796 ++ .../NRefactory/Test/Lexer/VBNet/LexerTests.cs | 1099 ++ src/Libraries/NRefactory/Test/Main.cs | 110 + .../NRefactory/Test/NRefactoryTests.csproj | 256 + .../Test/NRefactoryTests.csproj.user | 14 + .../Test/Output/CSharp/CSharpOutputTest.cs | 41 + .../CodeDOMParenthesizedExpressionTest.cs | 28 + .../CodeDOM/CodeDOMPrimitiveExpressionTest.cs | 29 + .../Expressions/ArrayCreateExpressionTests.cs | 55 + .../Expressions/AssignmentExpressionTests.cs | 161 + .../BaseReferenceExpressionTests.cs | 39 + .../BinaryOperatorExpressionTests.cs | 317 + .../Parser/Expressions/CastExpressionTests.cs | 125 + .../Expressions/CheckedExpressionTests.cs | 34 + .../ClassReferenceExpressionTests.cs | 34 + .../Expressions/ConditionalExpressionTests.cs | 37 + .../FieldReferenceExpressionTests.cs | 43 + .../Expressions/IdentifierExpressionTests.cs | 47 + .../Expressions/IndexerExpressionTests.cs | 43 + .../Expressions/InvocationExpressionTests.cs | 50 + .../ObjectCreateExpressionTests.cs | 48 + .../ParenthesizedExpressionTest.cs | 44 + .../PointerReferenceExpressionTests.cs | 35 + .../Expressions/PrimitiveExpressionTests.cs | 72 + .../Expressions/SizeOfExpressionTests.cs | 34 + .../Expressions/StackAllocExpressionTests.cs | 42 + .../ThisReferenceExpressionTests.cs | 37 + .../Expressions/TypeOfExpressionTests.cs | 39 + .../Expressions/TypeOfIsExpressionTests.cs | 34 + .../UnaryOperatorExpressionTests.cs | 119 + .../Expressions/UncheckedExpressionTests.cs | 35 + .../GlobalScope/AttributeSectionTests.cs | 40 + .../GlobalScope/DelegateDeclarationTests.cs | 57 + .../GlobalScope/NamespaceDeclarationTests.cs | 84 + .../GlobalScope/OptionDeclarationTests.cs | 67 + .../GlobalScope/TypeDeclarationTests.cs | 176 + .../GlobalScope/UsingDeclarationTests.cs | 139 + .../NRefactory/Test/Parser/ParseUtilCSharp.cs | 63 + .../NRefactory/Test/Parser/ParseUtilVBNet.cs | 58 + .../Statements/AddHandlerStatementTests.cs | 33 + .../Parser/Statements/BlockStatementTests.cs | 33 + .../Parser/Statements/BreakStatementTests.cs | 34 + .../Statements/CheckedStatementTests.cs | 34 + .../Statements/ContinueStatementTests.cs | 33 + .../Parser/Statements/DoLoopStatementTests.cs | 47 + .../Parser/Statements/EmptyStatementTests.cs | 34 + .../Parser/Statements/EndStatementTests.cs | 39 + .../Parser/Statements/EraseStatementTests.cs | 33 + .../Parser/Statements/ErrorStatementTests.cs | 33 + .../Parser/Statements/FixedStatementTests.cs | 34 + .../Statements/ForNextStatementTests.cs | 33 + .../Parser/Statements/ForStatementTests.cs | 45 + .../Statements/ForeachStatementTests.cs | 40 + .../Statements/GotoCaseStatementTests.cs | 42 + .../Parser/Statements/GotoStatementTests.cs | 39 + .../Parser/Statements/IfElseStatementTests.cs | 69 + .../Parser/Statements/LabelStatementTests.cs | 45 + .../LocalVariableDeclarationTests.cs | 91 + .../Parser/Statements/LockStatementTests.cs | 34 + .../Parser/Statements/OnErrorStatementTest.cs | 33 + .../Statements/RaiseEventStatementTest.cs | 33 + .../Parser/Statements/ReDimStatementTests.cs | 96 + .../Statements/RemoveHandlerStatement.cs | 33 + .../Test/Parser/Statements/ResumeStatement.cs | 33 + .../Parser/Statements/ReturnStatementTests.cs | 62 + .../Statements/StatementExpressionTests.cs | 40 + .../Parser/Statements/StopStatementTests.cs | 33 + .../Parser/Statements/SwitchStatementTests.cs | 34 + .../Parser/Statements/ThrowStatementTests.cs | 41 + .../Statements/TryCatchStatementTests.cs | 48 + .../Statements/UncheckedStatementTests.cs | 34 + .../Parser/Statements/UnsafeStatementTests.cs | 34 + .../Parser/Statements/UsingStatementTests.cs | 54 + .../Parser/Statements/WithStatementTests.cs | 33 + .../TypeLevel/ConstructorDeclarationTests.cs | 52 + .../TypeLevel/DeclareDeclarationTests.cs | 42 + .../TypeLevel/DestructorDeclarationTests.cs | 35 + .../Parser/TypeLevel/EventDeclarationTests.cs | 52 + .../Parser/TypeLevel/FieldDeclarationTests.cs | 50 + .../TypeLevel/IndexerDeclarationTests.cs | 38 + .../TypeLevel/MethodDeclarationTests.cs | 37 + .../TypeLevel/OperatorDeclarationTests.cs | 58 + .../TypeLevel/PropertyDeclarationTests.cs | 56 + src/Libraries/NUnitFramework/license.rtf | 38 + src/Libraries/NUnitFramework/nunit.key | Bin 0 -> 490 bytes .../resources/NUnit.Util.Transform.resources | Bin 0 -> 1718 bytes .../NUnitFramework/src/core/AssemblyInfo.cs | 63 + .../NUnitFramework/src/core/CategoryFilter.cs | 107 + .../src/core/CategoryManager.cs | 33 + .../NUnitFramework/src/core/EmptyFilter.cs | 29 + .../NUnitFramework/src/core/EventListener.cs | 89 + .../src/core/ExpectedExceptionTestCase.cs | 99 + .../NUnitFramework/src/core/Filter.cs | 47 + .../NUnitFramework/src/core/ITest.cs | 126 + .../NUnitFramework/src/core/ITestEvents.cs | 82 + .../src/core/InvalidSuiteException.cs | 67 + .../src/core/InvalidTestFixtureException.cs | 57 + .../NUnitFramework/src/core/LegacySuite.cs | 64 + .../src/core/LongLivingMarshalByRefObject.cs | 58 + .../NUnitFramework/src/core/NameFilter.cs | 58 + .../NUnitFramework/src/core/NamespaceSuite.cs | 23 + .../src/core/NoTestFixturesException.cs | 51 + .../NUnitFramework/src/core/NormalTestCase.cs | 57 + .../src/core/NotRunnableTestCase.cs | 74 + .../NUnitFramework/src/core/NullListener.cs | 62 + .../NUnitFramework/src/core/NunitException.cs | 73 + .../NUnitFramework/src/core/Reflect.cs | 409 + .../src/core/RemoteTestRunner.cs | 558 + .../NUnitFramework/src/core/ResultVisitor.cs | 42 + .../NUnitFramework/src/core/Results.xsd | 70 + .../NUnitFramework/src/core/RootTestSuite.cs | 43 + .../src/core/StringTextWriter.cs | 150 + .../NUnitFramework/src/core/Summary.xslt | 47 + .../src/core/TemplateTestCase.cs | 239 + src/Libraries/NUnitFramework/src/core/Test.cs | 311 + .../NUnitFramework/src/core/TestAssembly.cs | 70 + .../NUnitFramework/src/core/TestCase.cs | 107 + .../src/core/TestCaseBuilder.cs | 177 + .../NUnitFramework/src/core/TestCaseResult.cs | 77 + .../NUnitFramework/src/core/TestEventArgs.cs | 198 + .../src/core/TestEventDispatcher.cs | 169 + .../NUnitFramework/src/core/TestFixture.cs | 166 + .../NUnitFramework/src/core/TestResult.cs | 211 + .../NUnitFramework/src/core/TestRunner.cs | 189 + .../src/core/TestRunnerThread.cs | 162 + .../NUnitFramework/src/core/TestSuite.cs | 275 + .../src/core/TestSuiteBuilder.cs | 317 + .../src/core/TestSuiteResult.cs | 111 + .../NUnitFramework/src/core/nunit.core.build | 77 + .../src/core/nunit.core.dll.csproj | 328 + .../src/framework/AssemblyInfo.cs | 63 + .../NUnitFramework/src/framework/Assert.cs | 781 ++ .../NUnitFramework/src/framework/Assertion.cs | 190 + .../src/framework/AssertionException.cs | 68 + .../src/framework/AssertionFailureMessage.cs | 758 ++ .../src/framework/CategoryAttribute.cs | 60 + .../framework/ExpectedExceptionAttribute.cs | 82 + .../src/framework/ExplicitAttribute.cs | 21 + .../src/framework/IgnoreAttribute.cs | 59 + .../src/framework/IgnoreException.cs | 68 + .../src/framework/OldTestCase.cs | 58 + .../src/framework/SetUpAttribute.cs | 40 + .../src/framework/SuiteAttribute.cs | 40 + .../src/framework/TearDownAttribute.cs | 40 + .../src/framework/TestAttribute.cs | 69 + .../src/framework/TestFixtureAttribute.cs | 56 + .../framework/TestFixtureSetUpAttribute.cs | 41 + .../framework/TestFixtureTearDownAttribute.cs | 42 + .../src/framework/nunit.framework.build | 47 + .../src/framework/nunit.framework.dll.csproj | 200 + .../NUnitFramework/src/util/AssemblyInfo.cs | 87 + .../NUnitFramework/src/util/AssemblyList.cs | 107 + .../src/util/AssemblyListItem.cs | 75 + .../src/util/AssemblyWatcher.cs | 138 + .../src/util/CommandLineOptions.cs | 285 + .../NUnitFramework/src/util/ConsoleOptions.cs | 227 + .../NUnitFramework/src/util/ConsoleWriter.cs | 73 + .../NUnitFramework/src/util/FormSettings.cs | 194 + .../NUnitFramework/src/util/GuiOptions.cs | 94 + .../NUnitFramework/src/util/ITestEvents.cs | 54 + .../NUnitFramework/src/util/ITestLoader.cs | 113 + .../src/util/NUnitGuiSettings.cs | 57 + .../NUnitFramework/src/util/NUnitProject.cs | 612 + .../NUnitFramework/src/util/NUnitRegistry.cs | 129 + .../NUnitFramework/src/util/OptionSettings.cs | 108 + .../NUnitFramework/src/util/ProjectConfig.cs | 339 + .../src/util/ProjectConfigCollection.cs | 169 + .../src/util/ProjectFormatException.cs | 81 + .../NUnitFramework/src/util/ProjectPath.cs | 162 + .../src/util/RecentFileSettings.cs | 173 + .../src/util/RecentProjectSettings.cs | 60 + .../src/util/RegistrySettingsStorage.cs | 263 + .../src/util/ResultSummarizer.cs | 93 + .../NUnitFramework/src/util/SettingsGroup.cs | 247 + .../src/util/SettingsStorage.cs | 185 + .../src/util/StackTraceFilter.cs | 85 + .../NUnitFramework/src/util/SummaryVisitor.cs | 129 + .../NUnitFramework/src/util/TestDomain.cs | 525 + .../NUnitFramework/src/util/TestEventArgs.cs | 75 + .../src/util/TestEventDispatcher.cs | 257 + .../src/util/TestExceptionHandler.cs | 40 + .../NUnitFramework/src/util/TestLoader.cs | 700 + .../NUnitFramework/src/util/TestResultItem.cs | 86 + .../NUnitFramework/src/util/Transform.resx | 148 + .../NUnitFramework/src/util/UIHelper.cs | 98 + .../NUnitFramework/src/util/UITestNode.cs | 380 + .../NUnitFramework/src/util/UserSettings.cs | 69 + .../NUnitFramework/src/util/VSProject.cs | 228 + .../src/util/VSProjectConfig.cs | 62 + .../src/util/VSProjectConfigCollection.cs | 71 + .../src/util/XmlResultVisitor.cs | 201 + .../NUnitFramework/src/util/nunit.util.build | 78 + .../src/util/nunit.util.dll.csproj | 314 + .../Project/Configuration/AssemblyInfo.cs | 23 + .../Project/ICSharpCode.SharpDevelop.csproj | 644 + .../ICSharpCode.SharpDevelop.csproj.user | 9 + .../Resources/BehaviorTextEditorPanel.xfrm | 134 + .../Resources/CodeGenerationOptionsPanel.xfrm | 93 + .../Project/Resources/CodeTemplatePanel.xfrm | 156 + .../Resources/CombineStartupPanel.xfrm | 122 + .../Project/Resources/CommonAboutDialog.xfrm | 69 + .../Resources/CompileFileProjectOptions.xfrm | 26 + .../Project/Resources/DeployFileOptions.xfrm | 91 + .../Resources/EditStandardHeaderPanel.xfrm | 56 + .../Project/Resources/EditTemplateDialog.xfrm | 67 + .../Resources/ExternalToolOptions.xfrm | 163 + .../Base/Project/Resources/FindPanel.xfrm | 131 + .../Project/Resources/FontSelectionPanel.xfrm | 52 + .../Resources/GeneralProjectOptions.xfrm | 116 + .../Resources/GeneralTextEditorPanel.xfrm | 144 + .../Resources/GotoLineNumberDialog.xfrm | 51 + .../Resources/ICSharpCode.SharpDevelop.snk | Bin 0 -> 596 bytes src/Main/Base/Project/Resources/InputBox.xfrm | 50 + .../Resources/LoadSaveOptionPanel.xfrm | 62 + .../Resources/MarkersTextEditorPanel.xfrm | 131 + .../Base/Project/Resources/NewFileDialog.xfrm | 142 + .../Resources/NewFileWithNameDialog.xfrm | 159 + .../Project/Resources/NewProjectDialog.xfrm | 227 + .../Resources/OutputWindowOptionsPanel.xfrm | 37 + .../Resources/ProjectAndCombineOptions.xfrm | 102 + .../Base/Project/Resources/ReplacePanel.xfrm | 147 + .../Project/Resources/SelectStylePanel.xfrm | 60 + .../Project/Resources/SortOptionsDialog.xfrm | 88 + .../Resources/TabbedOptionsDialog.xfrm | 39 + .../Project/Resources/TaskListOptions.xfrm | 126 + .../Resources/TreeViewOptionsDialog.xfrm | 76 + .../Base/Project/Resources/ViewGPLDialog.xfrm | 33 + .../Project/Resources/WordCountDialog.xfrm | 164 + .../Project/Src/Commands/AutostartCommands.cs | 171 + .../Project/Src/Commands/BuildCommands.cs | 81 + .../Commands/ChooseConfigurationCommand.cs | 77 + .../Src/Commands/ChooseLayoutCommand.cs | 116 + .../Src/Commands/CustomStringTagProvider.cs | 155 + .../Project/Src/Commands/DebugCommands.cs | 85 + .../Base/Project/Src/Commands/EditCommands.cs | 185 + .../Base/Project/Src/Commands/FileCommands.cs | 334 + .../Project/Src/Commands/FileMenuCommands.cs | 70 + .../Src/Commands/FileTabStripCommands.cs | 133 + .../Base/Project/Src/Commands/HelpCommands.cs | 125 + .../Project/Src/Commands/MenuItemBuilders.cs | 454 + .../ResourceFolderNodeCommands.cs | 74 + .../Src/Commands/ProjectMenuCommands.cs | 142 + .../Project/Src/Commands/SideBarCommands.cs | 183 + .../Project/Src/Commands/ToolsCommands.cs | 42 + .../VBConverter/CSharpConvertBuffer.cs | 52 + .../Src/Commands/VBConverter/ConvertBuffer.cs | 52 + .../Project/Src/Commands/WindowCommands.cs | 49 + src/Main/Base/Project/Src/Dom/ClassType.cs | 17 + src/Main/Base/Project/Src/Dom/Comment.cs | 44 + .../Base/Project/Src/Dom/FoldingRegion.cs | 37 + src/Main/Base/Project/Src/Dom/IAttribute.cs | 24 + .../Base/Project/Src/Dom/IAttributeSection.cs | 37 + src/Main/Base/Project/Src/Dom/IClass.cs | 81 + src/Main/Base/Project/Src/Dom/IComment.cs | 29 + .../Base/Project/Src/Dom/ICompilationUnit.cs | 42 + .../Project/Src/Dom/ICompilationUnitBase.cs | 30 + src/Main/Base/Project/Src/Dom/IDecoration.cs | 97 + src/Main/Base/Project/Src/Dom/IEvent.cs | 30 + .../Base/Project/Src/Dom/IExpressionFinder.cs | 19 + src/Main/Base/Project/Src/Dom/IField.cs | 16 + src/Main/Base/Project/Src/Dom/IIndexer.cs | 30 + src/Main/Base/Project/Src/Dom/IMember.cs | 37 + src/Main/Base/Project/Src/Dom/IMethod.cs | 27 + src/Main/Base/Project/Src/Dom/IParameter.cs | 48 + src/Main/Base/Project/Src/Dom/IParser.cs | 146 + src/Main/Base/Project/Src/Dom/IProperty.cs | 48 + src/Main/Base/Project/Src/Dom/IRegion.cs | 33 + src/Main/Base/Project/Src/Dom/IResolver.cs | 34 + src/Main/Base/Project/Src/Dom/IReturnType.cs | 40 + src/Main/Base/Project/Src/Dom/IUsing.cs | 31 + .../Dom/Implementations/AbstractAttribute.cs | 105 + .../Src/Dom/Implementations/AbstractClass.cs | 281 + .../Dom/Implementations/AbstractComment.cs | 44 + .../AbstractCompilationUnit.cs | 98 + .../Dom/Implementations/AbstractDecoration.cs | 180 + .../Src/Dom/Implementations/AbstractEvent.cs | 79 + .../Src/Dom/Implementations/AbstractField.cs | 54 + .../Dom/Implementations/AbstractIndexer.cs | 100 + .../Src/Dom/Implementations/AbstractMember.cs | 40 + .../Src/Dom/Implementations/AbstractMethod.cs | 95 + .../Implementations/AbstractNamedEntity.cs | 79 + .../Dom/Implementations/AbstractParameter.cs | 125 + .../Dom/Implementations/AbstractProperty.cs | 121 + .../Dom/Implementations/AbstractReturnType.cs | 108 + .../Src/Dom/Implementations/AbstractUsing.cs | 143 + .../Src/Dom/Implementations/DefaultRegion.cs | 121 + src/Main/Base/Project/Src/Dom/ModifierEnum.cs | 44 + .../NRefactoryResolver/AttributeSection.cs | 25 + .../Src/Dom/NRefactoryResolver/Class.cs | 67 + .../Src/Dom/NRefactoryResolver/Constructor.cs | 26 + .../Src/Dom/NRefactoryResolver/Destructor.cs | 23 + .../Src/Dom/NRefactoryResolver/Event.cs | 27 + .../Src/Dom/NRefactoryResolver/Field.cs | 30 + .../Src/Dom/NRefactoryResolver/Indexer.cs | 28 + .../Src/Dom/NRefactoryResolver/Method.cs | 27 + .../NRefactoryASTConvertVisitor.cs | 329 + .../NRefactoryResolver/NRefactoryResolver.cs | 758 ++ .../Src/Dom/NRefactoryResolver/Parameter.cs | 15 + .../Src/Dom/NRefactoryResolver/Property.cs | 27 + .../Src/Dom/NRefactoryResolver/ReturnType.cs | 50 + .../Src/Dom/NRefactoryResolver/TypeVisitor.cs | 322 + .../Base/Project/Src/Dom/ParameterModifier.cs | 20 + .../Dom/ReflectionLayer/ReflectionClass.cs | 213 + .../Dom/ReflectionLayer/ReflectionEvent.cs | 81 + .../Dom/ReflectionLayer/ReflectionField.cs | 69 + .../Dom/ReflectionLayer/ReflectionIndexer.cs | 120 + .../Dom/ReflectionLayer/ReflectionMethod.cs | 115 + .../ReflectionLayer/ReflectionParameter.cs | 53 + .../Dom/ReflectionLayer/ReflectionProperty.cs | 97 + .../ReflectionLayer/ReflectionReturnType.cs | 57 + src/Main/Base/Project/Src/Dom/Tag.cs | 27 + .../Src/Gui/AbstractBaseViewContent.cs | 67 + .../Project/Src/Gui/AbstractPadContent.cs | 30 + .../Src/Gui/AbstractSecondaryViewContent.cs | 25 + .../Project/Src/Gui/AbstractViewContent.cs | 174 + .../BrowserDisplayBinding.cs | 44 + .../Gui/BrowserDisplayBinding/HtmlViewPane.cs | 206 + .../Components/ExtTreeView/ExtFolderNode.cs | 76 + .../Gui/Components/ExtTreeView/ExtTreeNode.cs | 417 + .../Gui/Components/ExtTreeView/ExtTreeView.cs | 270 + .../ExtTreeView/ExtTreeViewComparer.cs | 28 + .../Src/Gui/Components/FontSelectionPanel.cs | 182 + .../BooleanTypeConverter.cs | 66 + .../TemplateTypeConverter.cs | 81 + .../LocalizedPropertyGrid/LocalizedObject.cs | 109 + .../LocalizedProperty.cs | 149 + .../LocalizedPropertyAttribute.cs | 47 + .../LocalizedPropertyDescriptor.cs | 135 + .../LocalizedTypeDescriptor.cs | 96 + .../Src/Gui/Components/SideBar/AxSideBar.cs | 1107 ++ .../Src/Gui/Components/SideBar/AxSideTab.cs | 410 + .../Gui/Components/SideBar/AxSideTabItem.cs | 145 + .../Components/SideBar/SharpDevelopSideBar.cs | 333 + .../SideBar/SharpDevelopSideTabItem.cs | 37 + .../Gui/Components/StatusBar/SdStatusBar.cs | 136 + .../ContentInterfaces/IClipboardHandler.cs | 37 + .../ContentInterfaces/ICustomizedCommands.cs | 23 + .../Src/Gui/ContentInterfaces/IEditable.cs | 17 + .../Gui/ContentInterfaces/IHelpProvider.cs | 14 + .../Gui/ContentInterfaces/IParsableContent.cs | 29 + .../IParseInformationListener.cs | 20 + .../Gui/ContentInterfaces/IPositionable.cs | 23 + .../Src/Gui/ContentInterfaces/IPrintable.cs | 28 + .../Src/Gui/ContentInterfaces/IUndoHandler.cs | 23 + .../ContentInterfaces/IViewContentMemento.cs | 31 + .../Src/Gui/Dialogs/AbstractOptionPanel.cs | 198 + .../CombineConfigurationPanel.cs | 336 + .../CombineDependencyPanel.cs | 167 + .../CombineStartupPanel.cs | 184 + .../ConfigurationManager.cs | 303 + .../Src/Gui/Dialogs/CommonAboutDialog.cs | 137 + .../Src/Gui/Dialogs/DirtyFilesDialog.cs | 184 + .../Project/Src/Gui/Dialogs/FolderDialog.cs | 51 + .../Base/Project/Src/Gui/Dialogs/InputBox.cs | 33 + .../Project/Src/Gui/Dialogs/NewFileDialog.cs | 532 + .../Src/Gui/Dialogs/NewProjectDialog.cs | 465 + .../OptionPanels/EditTemplateDialog.cs | 53 + .../Dialogs/OptionPanels/ExternalToolPanel.cs | 265 + .../IDEOptions/CodeGenerationPanel.cs | 52 + .../IDEOptions/EditStandardHeaderPanel.cs | 59 + .../OptionPanels/IDEOptions/LoadSavePanel.cs | 55 + .../IDEOptions/ProjectAndCombinePanel.cs | 86 + .../IDEOptions/SelectCulturePanel.cs | 112 + .../IDEOptions/SelectStylePanel.cs | 49 + .../IDEOptions/TaskListOptions.cs | 96 + .../OptionPanels/OutputWindowOptionsPanel.cs | 73 + .../CompileFileProjectOptions.cs | 66 + .../ProjectOptions/DeployFileOptions.cs | 128 + .../ProjectOptions/GeneralProjectOptions.cs | 89 + .../Dialogs/OptionPanels/PropertyGridPanel.cs | 47 + .../Src/Gui/Dialogs/ProjectOptionsDialog.cs | 197 + .../Src/Gui/Dialogs/ProjectOptionsView.cs | 96 + .../ReferenceDialog/AddWebReferenceDialog.cs | 640 + .../ReferenceDialog/AssemblyReferencePanel.cs | 64 + .../ReferenceDialog/COMReferencePanel.cs | 72 + .../Dialogs/ReferenceDialog/FusionNative.cs | 266 + .../ReferenceDialog/GacReferencePanel.cs | 87 + .../ReferenceDialog/ProjectReferencePanel.cs | 70 + .../ReferenceDialog/SelectReferenceDialog.cs | 340 + .../Dialogs/ReferenceDialog/WebReference.cs | 287 + .../Gui/Dialogs/SharpDevelopAboutPanels.cs | 215 + .../Project/Src/Gui/Dialogs/TabbedOptions.cs | 75 + .../Project/Src/Gui/Dialogs/TipOfTheDay.cs | 187 + .../Src/Gui/Dialogs/TreeViewOptions.cs | 252 + .../Project/Src/Gui/Dialogs/ViewGPLDialog.cs | 39 + .../Gui/Dialogs/Wizard/AbstractWizardPanel.cs | 143 + .../Gui/Dialogs/Wizard/CurrentPanelPanel.cs | 65 + .../Src/Gui/Dialogs/Wizard/IWizardPanel.cs | 94 + .../Src/Gui/Dialogs/Wizard/StatusPanel.cs | 78 + .../Src/Gui/Dialogs/Wizard/WizardDialog.cs | 350 + .../Src/Gui/Dialogs/WordCountDialog.cs | 249 + .../Base/Project/Src/Gui/IBaseViewContent.cs | 67 + .../Base/Project/Src/Gui/IMementoCapable.cs | 30 + src/Main/Base/Project/Src/Gui/IPadContent.cs | 33 + .../Base/Project/Src/Gui/IProgressMonitor.cs | 32 + .../Project/Src/Gui/ISecondaryViewContent.cs | 26 + src/Main/Base/Project/Src/Gui/IViewContent.cs | 134 + src/Main/Base/Project/Src/Gui/IWorkbench.cs | 106 + .../Base/Project/Src/Gui/IWorkbenchLayout.cs | 87 + .../Base/Project/Src/Gui/IWorkbenchWindow.cs | 91 + .../Src/Gui/Pads/ClassBrowser/ClassBrowser.cs | 304 + .../ClassBrowserToolbarCommands.cs | 216 + .../Pads/ClassBrowser/Nodes/BaseTypesNode.cs | 78 + .../Gui/Pads/ClassBrowser/Nodes/ClassNode.cs | 106 + .../ClassBrowser/Nodes/DerivedTypesNode.cs | 84 + .../Gui/Pads/ClassBrowser/Nodes/MemberNode.cs | 135 + .../Pads/ClassBrowser/Nodes/ProjectNode.cs | 168 + .../ClassBrowser/Nodes/ReferenceFolderNode.cs | 109 + .../CompilerMessageView.cs | 344 + .../CompulerMessageViewToolbarCommands.cs | 103 + .../CompilerMessageView/FileLineReference.cs | 112 + .../MessageViewCategory.cs | 105 + .../OutputTextLineParser.cs | 110 + .../CompilerMessageView/TextEventHandler.cs | 39 + .../Src/Gui/Pads/ErrorList/ErrorList.cs | 303 + .../ErrorList/ErrorListToolbarCommands.cs | 56 + .../Base/Project/Src/Gui/Pads/FileScout.cs | 698 + .../Src/Gui/Pads/HelpBrowser/HelpBrowser.cs | 332 + .../Base/Project/Src/Gui/Pads/OpenTaskView.cs | 249 + .../Commands/ClipboardHandlerNodeCommands.cs | 78 + .../Commands/DefaultFileNodeCommands.cs | 177 + .../Commands/FolderNodeCommands.cs | 200 + .../Commands/ProjectNodeCommands.cs | 48 + .../Commands/ReferenceFolderNodeCommands.cs | 115 + .../Commands/SolutionNodeCommands.cs | 196 + .../Commands/ToolbarCommands.cs | 54 + .../NodeBuilder/DefaultDotNetNodeBuilder.cs | 47 + .../NodeBuilder/IProjectNodeBuilder.cs | 18 + .../ProjectBrowser/ProjectBrowserControl.cs | 205 + .../Pads/ProjectBrowser/ProjectBrowserPad.cs | 164 + .../ProjectBrowser/ProjectBrowserPanel.cs | 88 + .../AbstractProjectBrowserTreeNode.cs | 151 + .../TreeNodes/CustomFolderNode.cs | 76 + .../ProjectBrowser/TreeNodes/CustomNode.cs | 37 + .../ProjectBrowser/TreeNodes/DirectoryNode.cs | 543 + .../Pads/ProjectBrowser/TreeNodes/FileNode.cs | 202 + .../ProjectBrowser/TreeNodes/ProjectNode.cs | 131 + .../TreeNodes/ReferenceFolder.cs | 52 + .../ProjectBrowser/TreeNodes/ReferenceNode.cs | 30 + .../TreeNodes/SolutionFolderNode.cs | 286 + .../TreeNodes/SolutionItemNode.cs | 129 + .../ProjectBrowser/TreeNodes/SolutionNode.cs | 126 + .../Util/FileRemoveTreeNodeVisitor.cs | 55 + .../Util/FileRenameTreeNodeVisitor.cs | 41 + .../Util/ProjectBrowserTreeNodeVisitor.cs | 74 + .../Util/SolutionFolderRemoveVisitor.cs | 45 + .../TreeNodes/Util/UpdateReferencesVisitor.cs | 29 + .../Src/Gui/Pads/PropertyPad/PropertyPad.cs | 410 + .../Pads/PropertyPad/PropertyPadCommands.cs | 50 + .../Base/Project/Src/Gui/Pads/SideBarView.cs | 100 + .../Project/Src/Gui/Pads/TreeViewMemento.cs | 91 + .../Src/Gui/Workbench/DefaultWorkbench.cs | 553 + .../Workbench/Layouts/LayoutConfiguration.cs | 177 + .../Workbench/Layouts/SdiWorkspaceLayout.cs | 487 + .../Workbench/Layouts/SdiWorkspaceWindow.cs | 413 + .../Gui/Workbench/ViewContentEventHandler.cs | 45 + .../Project/Src/Gui/WorkbenchSingleton.cs | 166 + .../Src/Gui/XmlForms/BaseSharpDevelopForm.cs | 47 + .../XmlForms/BaseSharpDevelopUserControl.cs | 44 + .../Gui/XmlForms/Lib/DefaultObjectCreator.cs | 91 + .../Src/Gui/XmlForms/Lib/IObjectCreator.cs | 30 + .../Gui/XmlForms/Lib/IPropertyValueCreator.cs | 24 + .../Gui/XmlForms/Lib/IStringValueFilter.cs | 31 + .../Src/Gui/XmlForms/Lib/StringWrapper.cs | 41 + .../Project/Src/Gui/XmlForms/Lib/XmlForm.cs | 88 + .../Project/Src/Gui/XmlForms/Lib/XmlLoader.cs | 422 + .../Src/Gui/XmlForms/Lib/XmlUserControl.cs | 88 + .../Gui/XmlForms/SharpDevelopObjectCreator.cs | 124 + .../SharpDevelopPropertyValueCreator.cs | 39 + .../XmlForms/SharpDevelopStringValueFilter.cs | 40 + .../ActiveContentExtensionAuswerter.cs | 38 + .../ActiveViewContentUntitledAuswerter.cs | 30 + .../Auswerter/ActiveWindowStateAuswerter.cs | 72 + .../Auswerter/CombineOpenAuswerter.cs | 26 + .../Auswerter/DebuggerSupportsAuswerter.cs | 28 + .../Auswerter/IsProcessRunningAuswerter.cs | 28 + .../Auswerter/OpenWindowStateAuswerter.cs | 85 + .../Auswerter/ProjectActiveAuswerter.cs | 35 + .../Auswerter/ProjectOpenAuswerter.cs | 33 + .../Auswerter/WindowActiveAuswerter.cs | 60 + .../Internal/Auswerter/WindowOpenAuswerter.cs | 46 + .../Base/Project/Src/Internal/DiffUtility.cs | 100 + .../Erbauer/DefaultDialogPanelDescriptor.cs | 70 + .../Internal/Erbauer/DialogPanelErbauer.cs | 35 + .../Src/Internal/Erbauer/IDialogPanel.cs | 52 + .../Erbauer/IDialogPanelDescriptor.cs | 46 + .../Src/Internal/Erbauer/PadDescriptor.cs | 122 + .../Src/Internal/Erbauer/PadErbauer.cs | 22 + .../Src/Internal/ExternalTool/ExternalTool.cs | 156 + .../Src/Internal/ExternalTool/ToolLoader.cs | 96 + .../Src/Internal/Templates/CodeTemplate.cs | 92 + .../Internal/Templates/CodeTemplateGroup.cs | 85 + .../Internal/Templates/CodeTemplateLoader.cs | 116 + .../Templates/File/FileDescriptionTemplate.cs | 47 + .../Internal/Templates/File/FileTemplate.cs | 329 + .../Templates/File/INewFileCreator.cs | 22 + .../Internal/Templates/File/ScriptRunner.cs | 145 + .../Templates/Project/CombineDescriptor.cs | 137 + .../Project/ProjectCreateInformation.cs | 74 + .../Templates/Project/ProjectDescriptor.cs | 219 + .../Templates/Project/ProjectTemplate.cs | 228 + .../Src/Internal/Templates/StandardHeaders.cs | 113 + .../Src/Internal/Templates/TextTemplate.cs | 91 + .../Src/Internal/Undo/IUndoableOperation.cs | 19 + .../Project/Src/Internal/Undo/UndoQueue.cs | 51 + .../Project/Src/Internal/Undo/UndoStack.cs | 127 + .../Project/Converter/CombineToSolution.cs | 65 + .../Converter/PrjxToSolutionProject.cs | 145 + src/Main/Base/Project/Src/Project/IProject.cs | 102 + .../Project/Items/ComReferenceProjectItem.cs | 89 + .../Src/Project/Items/FileProjectItem.cs | 71 + .../Project/Src/Project/Items/ProjectItem.cs | 147 + .../Src/Project/Items/ProjectItemFactory.cs | 46 + .../Items/ProjectReferenceProjectItem.cs | 59 + .../Src/Project/Items/ReferenceProjectItem.cs | 105 + .../Project/Src/Project/Items/TypeLibrary.cs | 151 + .../Src/Project/Items/UnknownProjectItem.cs | 32 + .../Project/Src/Project/MSBuildProject.cs | 358 + .../Project/Src/Project/MissingProject.cs | 26 + .../Base/Project/Src/Project/PropertyGroup.cs | 144 + .../Src/Project/Solution/AbstractProject.cs | 309 + .../Solution/AbstractSolutionFolder.cs | 61 + .../Src/Project/Solution/ISolutionFolder.cs | 35 + .../Solution/ISolutionFolderContainer.cs | 28 + .../Src/Project/Solution/ProjectSection.cs | 78 + .../Project/Src/Project/Solution/Solution.cs | 477 + .../Src/Project/Solution/SolutionFolder.cs | 123 + .../Src/Project/Solution/SolutionItem.cs | 60 + .../Project/Src/Project/UnknownProject.cs | 26 + .../Project/Src/Project/WebReferenceUrl.cs | 109 + .../AmbienceService/AbstractAmbience.cs | 118 + .../AmbienceReflectionDecorator.cs | 149 + .../AmbienceService/AmbienceService.cs | 76 + .../CodeDOMGeneratorUtility.cs | 96 + .../Src/Services/AmbienceService/IAmbience.cs | 79 + .../Services/AmbienceService/NetAmbience.cs | 306 + .../ClassBrowserIconService.cs | 366 + .../Services/Debugger/BreakEventHandler.cs | 37 + .../Src/Services/Debugger/DebugClasses.cs | 81 + .../Src/Services/Debugger/DebuggerService.cs | 323 + .../Src/Services/Debugger/DefaultDebugger.cs | 138 + .../Src/Services/Debugger/IDebugger.cs | 70 + .../DisplayBindingDescriptor.cs | 60 + .../DisplayBinding/DisplayBindingErbauer.cs | 30 + .../DisplayBinding/DisplayBindingService.cs | 84 + .../DisplayBinding/IDisplayBinding.cs | 62 + .../DisplayBinding/ISubDisplayBinding.cs | 27 + .../Src/Services/File/FileEventArgs.cs | 39 + .../Src/Services/File/FileRenameEventArgs.cs | 48 + .../Project/Src/Services/File/FileService.cs | 325 + .../Project/Src/Services/File/RecentOpen.cs | 184 + .../Base/Project/Src/Services/IconService.cs | 130 + .../Project/Src/Services/Language/Language.cs | 51 + .../Src/Services/Language/LanguageService.cs | 65 + .../LanguageBinding/ILanguageBinding.cs | 70 + .../LanguageBindingDescriptor.cs | 67 + .../LanguageBinding/LanguageBindingErbauer.cs | 28 + .../LanguageBinding/LanguageBindingService.cs | 88 + .../ParserService/AssemblyInformation.cs | 106 + .../CaseInsentitiveProjectContent.cs | 793 ++ .../CaseSensitiveProjectContent.cs | 699 + .../ParserService/Erbauer/ParserDescriptor.cs | 77 + .../ParserService/Erbauer/ParserErbauer.cs | 28 + .../Services/ParserService/IProjectContent.cs | 51 + .../ParserService/ParseInformation.cs | 64 + .../ParseInformationEventHandler.cs | 54 + .../Services/ParserService/ParserService.cs | 332 + .../Src/Services/ParserService/Position.cs | 46 + .../ProjectConfigurationEventHandler.cs | 39 + .../ProjectService/ProjectEventHandler.cs | 29 + .../ProjectReferenceEventHandler.cs | 30 + .../Services/ProjectService/ProjectService.cs | 276 + .../SolutionConfigurationEventHandler.cs | 38 + .../ProjectService/SolutionEventHandler.cs | 29 + .../SolutionFolderEventHandler.cs | 23 + .../Services/StatusBar/StatusBarService.cs | 123 + .../Base/Project/Src/Services/Tasks/Task.cs | 125 + .../Project/Src/Services/Tasks/TaskService.cs | 192 + .../Base/Project/Src/TextEditor/Actions.cs | 44 + .../Src/TextEditor/Bookmarks/Bookmark.cs | 76 + .../Bookmarks/BookmarkEventHandler.cs | 34 + .../TextEditor/Bookmarks/BookmarkManager.cs | 70 + .../Bookmarks/Commands/MenuCommands.cs | 65 + .../TextEditor/Bookmarks/Pad/BookmarkPad.cs | 109 + .../Pad/BookmarkPadToolbarCommands.cs | 55 + .../Bookmarks/Pad/Nodes/BookmarkFolderNode.cs | 108 + .../Bookmarks/Pad/Nodes/BookmarkNode.cs | 118 + .../Src/TextEditor/CharacterEncodings.cs | 262 + .../Codons/AddInTreeSyntaxModeProvider.cs | 48 + .../TextEditor/Codons/EditActionErbauer.cs | 43 + .../TextEditor/Codons/SyntaxModeErbauer.cs | 63 + .../AbstractClassImplementorCodeGenerator.cs | 315 + .../AbstractFieldCodeGenerator.cs | 45 + .../AbstractPropertyCodeGenerator.cs | 136 + .../Commands/CodeGenerators/CodeGenerator.cs | 148 + .../ConstructorCodeGenerator.cs | 99 + .../CodeGenerators/EqualsCodeGenerator.cs | 118 + .../GetterAndSetterCodeGenerator.cs | 41 + .../CodeGenerators/GetterCodeGenerator.cs | 41 + .../InterfaceImplementorCodeGenerator.cs | 240 + .../OnXXXMethodsCodeGenerator.cs | 106 + .../OverrideMethodsCodeGenerator.cs | 123 + .../CodeGenerators/SetterCodeGenerator.cs | 41 + .../CodeGenerators/ToStringCodeGenerator.cs | 136 + .../Commands/CommentRegionCommand.cs | 42 + .../TextEditor/Commands/FoldingCommands.cs | 57 + .../Src/TextEditor/Commands/FormatCommands.cs | 259 + .../Commands/GenerateCodeCommand.cs | 291 + .../TextEditor/Commands/ProjectCommands.cs | 43 + .../Src/TextEditor/Commands/SearchCommands.cs | 49 + .../Commands/TextAreaContextmenuCommands.cs | 83 + .../Src/TextEditor/Commands/ToolCommands.cs | 191 + .../Conditions/TextContentCondition.cs | 33 + .../Gui/Dialogs/ExportProjectToHtmlDialog.cs | 471 + .../Gui/Dialogs/GotoLineNumberDialog.cs | 70 + .../Gui/Dialogs/SortOptionsDialog.cs | 61 + .../CompletionWindow/CodeCompletionData.cs | 279 + .../CodeCompletionDataProvider.cs | 222 + .../CommentCompletionDataProvider.cs | 136 + .../HtmlDeclarationViewWindow.cs | 85 + .../TemplateCompletionDataProvider.cs | 101 + .../Src/TextEditor/Gui/Editor/ErrorDrawer.cs | 97 + .../Gui/Editor/ITextAreaControlProvider.cs | 26 + .../IndexerInsightDataProvider.cs | 129 + .../MethodInsightDataProvider.cs | 213 + .../Gui/Editor/ParserFoldingStrategy.cs | 104 + .../Gui/Editor/QuickClassBrowserPanel.cs | 508 + .../Gui/Editor/SharpDevelopTextAreaControl.cs | 480 + .../SharpDevelopTextEditorProperties.cs | 295 + .../Gui/Editor/TextEditorDisplayBinding.cs | 468 + .../OptionPanels/BehaviorTextEditorPanel.cs | 91 + .../Gui/OptionPanels/CodeTemplatePanel.cs | 254 + .../OptionPanels/GeneralTextEditorPanel.cs | 225 + .../OptionPanels/MarkersTextEditorPanel.cs | 86 + .../Commands/SearchMainMenuCommands.cs | 94 + .../Commands/SearchToolbarCommands.cs | 83 + .../AllOpenDocumentIterator.cs | 115 + .../CurrentDocumentIterator.cs | 72 + .../DirectoryDocumentIterator.cs | 106 + .../DocumentIterator/IDocumentIterator.cs | 63 + .../ProvidedDocumentInformation.cs | 129 + .../WholeProjectDocumentIterator.cs | 102 + .../WholeSolutionDocumentIterator.cs | 104 + .../Engine/ITextIteratorBuilder.cs | 20 + .../SearchAndReplace/Engine/Search.cs | 123 + .../Engine/SearchAllFinishedEventHandler.cs | 37 + .../Engine/SearchReplaceInFilesManager.cs | 121 + .../Engine/SearchReplaceManager.cs | 179 + .../Engine/SearchReplaceUtilities.cs | 77 + .../BruteForceSearchStrategy.cs | 72 + .../Engine/SearchStrategy/ISearchStrategy.cs | 35 + .../SearchStrategy/KMPSearchStrategy.cs | 78 + .../SearchStrategy/RegExSearchStrategy.cs | 50 + .../Engine/SearchStrategy/SearchResult.cs | 72 + .../SearchStrategy/WildcardSearchStrategy.cs | 158 + .../TextIterator/ForwardTextIterator.cs | 136 + .../ForwardTextIteratorBuilder.cs | 23 + .../Engine/TextIterator/ITextIterator.cs | 72 + .../Gui/SearchAndReplaceDialog.cs | 90 + .../Gui/SearchAndReplacePanel.cs | 156 + .../Pad/Nodes/SearchFolderNode.cs | 80 + .../Pad/Nodes/SearchResultNode.cs | 132 + .../Pad/Nodes/SearchRootNode.cs | 59 + .../SearchAndReplace/Pad/SearchResultPanel.cs | 115 + .../Pad/SearchResultPanelToolbarCommands.cs | 109 + .../SearchAndReplace/SearchOptions.cs | 177 + .../Src/TextEditor/XmlFormattingStrategy.cs | 196 + .../ICSharpCode.SharpZipLib.dll | Bin 0 -> 122880 bytes src/Main/Base/Test/AssemblyInfo.cs | 32 + src/Main/Base/Test/NRefactoryResolverTests.cs | 207 + .../Project/Configuration/AssemblyInfo.cs | 25 + src/Main/Core/Project/ICSharpCode.Core.csproj | 131 + .../Core/Project/ICSharpCode.Core.csproj.user | 9 + .../Project/Resources/ICSharpCode.Core.doc | 77 + .../Project/Resources/ICSharpCode.Core.snk | Bin 0 -> 596 bytes .../Core/Project/Src/AddInTree/AddIn/AddIn.cs | 150 + .../Src/AddInTree/AddIn/AddInLoadException.cs | 23 + .../Core/Project/Src/AddInTree/AddIn/Codon.cs | 128 + .../Src/AddInTree/AddIn/ComplexCondition.cs | 147 + .../Project/Src/AddInTree/AddIn/Condition.cs | 118 + .../Src/AddInTree/AddIn/ExtensionPath.cs | 78 + .../Project/Src/AddInTree/AddIn/IAuswerter.cs | 21 + .../Project/Src/AddInTree/AddIn/ICondition.cs | 43 + .../Project/Src/AddInTree/AddIn/IErbauer.cs | 22 + .../Project/Src/AddInTree/AddIn/Runtime.cs | 103 + .../StandardAuswerter/CompareAuswerter.cs | 16 + .../StandardAuswerter/LazyLoadAuswerter.cs | 49 + .../StandardAuswerter/OwnerStateAuswerter.cs | 35 + .../AddIn/StandardErbauer/ClassErbauer.cs | 16 + .../StandardErbauer/FileFilterErbauer.cs | 16 + .../StandardErbauer/Icon/IconDescriptor.cs | 48 + .../AddIn/StandardErbauer/Icon/IconErbauer.cs | 22 + .../StandardErbauer/LazyLoaderErbauer.cs | 50 + .../MenuItem/AbstractCheckableMenuCommand.cs | 34 + .../MenuItem/AbstractMenuCommand.cs | 30 + .../MenuItem/Gui/IStatusUpdate.cs | 16 + .../StandardErbauer/MenuItem/Gui/Menu.cs | 84 + .../MenuItem/Gui/MenuCheckBox.cs | 88 + .../MenuItem/Gui/MenuCommand.cs | 131 + .../MenuItem/Gui/MenuSeparator.cs | 43 + .../MenuItem/ICheckableMenuCommand.cs | 22 + .../StandardErbauer/MenuItem/IMenuCommand.cs | 22 + .../MenuItem/ISubmenuBuilder.cs | 19 + .../MenuItem/MenuItemErbauer.cs | 32 + .../ToolBarItem/AbstractComboBoxCommand.cs | 34 + .../ToolBarItem/Gui/ToolBarCheckBox.cs | 96 + .../ToolBarItem/Gui/ToolBarComboBox.cs | 111 + .../ToolBarItem/Gui/ToolBarCommand.cs | 101 + .../ToolBarItem/Gui/ToolBarDropDownButton.cs | 95 + .../ToolBarItem/Gui/ToolBarSeparator.cs | 43 + .../ToolBarItem/IComboBoxCommand.cs | 22 + .../ToolBarItem/ToolBarItemErbauer.cs | 32 + .../Core/Project/Src/AddInTree/AddInTree.cs | 155 + .../Project/Src/AddInTree/AddInTreeNode.cs | 149 + .../AddInTree/TreePathNotFoundException.cs | 24 + src/Main/Core/Project/Src/CoreException.cs | 37 + .../FileUtility/FileNameEventHandler.cs | 34 + .../Src/Services/FileUtility/FileUtility.cs | 525 + .../FileUtility/SaveErrorChooseDialog.cs | 160 + .../FileUtility/SaveErrorInformDialog.cs | 128 + .../Src/Services/MenuService/MenuService.cs | 113 + .../Services/MessageService/CustomDialog.cs | 141 + .../Services/MessageService/MessageService.cs | 134 + .../Services/PropertyService/Properties.cs | 196 + .../PropertyService/PropertyChangedEvent.cs | 65 + .../PropertyService/PropertyService.cs | 105 + .../ResourceNotFoundException.cs | 22 + .../ResourceService/ResourceService.cs | 358 + .../StringParser/IStringTagProvider.cs | 27 + .../Src/Services/StringParser/StringParser.cs | 180 + .../Services/ToolBarService/ToolBarService.cs | 65 + .../Core/Project/Src/Util/AbstractCommand.cs | 50 + src/Main/Core/Project/Src/Util/ICommand.cs | 40 + .../Project/Src/Util/RightToLeftConverter.cs | 66 + .../AddInTreeTests/AddInTreeLoadingTests.cs | 282 + .../Core/Test/AddInTreeTests/ExtPathTests.cs | 83 + src/Main/Core/Test/AssemblyInfo.cs | 32 + .../Core/Test/ICSharpCode.Core.Tests.csproj | 73 + .../Project/Configuration/AssemblyInfo.cs | 24 + .../Dialogs/AddInTreeSettingsHandler.cs | 59 + .../StartUp/Project/Dialogs/ExceptionBox.cs | 197 + .../StartUp/Project/Dialogs/SplashScreen.cs | 82 + .../Resources/BitmapResources.resources | Bin 0 -> 478335 bytes .../Resources/SharpDevelop.exe.manifest | 17 + .../Project/Resources/SharpDevelop.ico | Bin 0 -> 25214 bytes .../Project/Resources/SplashScreen.jpg | Bin 0 -> 30927 bytes .../StartUp/Project/Resources/StartUp.snk | Bin 0 -> 596 bytes .../Resources/StringResources.resources | Bin 0 -> 235632 bytes .../StartUp/Project/SharpDevelop.exe.manifest | 17 + src/Main/StartUp/Project/SharpDevelopMain.cs | 170 + src/Main/StartUp/Project/StartUp.csproj | 71 + src/Main/StartUp/Project/StartUp.csproj.user | 9 + src/SharpDevelop.sln | 137 + src/Tools/BuildHelpIndex/AssemblyInfo.cs | 32 + .../BuildHelpIndex/BuildHelpIndex.csproj | 45 + .../BuildHelpIndex/BuildHelpIndex.csproj.user | 4 + src/Tools/BuildHelpIndex/HelperFunctions.cs | 96 + src/Tools/BuildHelpIndex/Main.cs | 36 + src/Tools/GacUtil2/AssemblyCache.cs | 151 + src/Tools/GacUtil2/AssemblyInfo.cs | 32 + .../GacUtil2/CommandLineSwitchAttribute.cs | 68 + src/Tools/GacUtil2/FusionNative.cs | 419 + src/Tools/GacUtil2/GacUtil2.exe | Bin 0 -> 32768 bytes src/Tools/GacUtil2/Main.cs | 116 + src/Tools/GacUtil2/Parser.cs | 535 + src/Tools/HelpConverter/AssemblyInfo.cs | 32 + src/Tools/HelpConverter/HelpConverter.csproj | 61 + .../HelpConverter/HelpConverter.csproj.user | 4 + .../HelpTreeBuilder/AssemblyLoader.cs | 37 + .../HelpTreeBuilder/ClassNodeBuilder.cs | 415 + .../HelpTreeBuilder/DelegateNodeBuilder.cs | 26 + .../HelpTreeBuilder/EnumNodeBuilder.cs | 26 + .../HelpTreeBuilder/Generator.cs | 111 + .../HelpTreeBuilder/ITypeNodeBuilder.cs | 10 + .../HelpTreeBuilder/InterfaceNodeBuilder.cs | 22 + .../HelpTreeBuilder/StructNodeBuilder.cs | 22 + .../HelpTreeBuilder/TypeNodeFactory.cs | 29 + src/Tools/HelpConverter/HhcFileParser.cs | 197 + src/Tools/HelpConverter/Main.cs | 168 + .../LocalizationDbToResFile/AssemblyInfo.cs | 32 + .../LocalizationDbToResFile.csproj | 44 + .../LocalizationDbToResFile.csproj.user | 4 + src/Tools/LocalizationDbToResFile/Main.cs | 119 + .../LocalizationXmlToResFile.cs | 82 + .../LocalizationXmlToResFile.csproj | 43 + .../LocalizationXmlToResFile.csproj.user | 4 + src/Tools/ResAsmTask/AssemblyInfo.cs | 32 + src/Tools/ResAsmTask/Main.cs | 81 + src/Tools/ResAsmTask/ResAsm.cs | 178 + src/Tools/ResourceAssembler/AssemblyInfo.cs | 32 + src/Tools/ResourceAssembler/ResAsm.cs | 326 + .../ResourceAssembler.csproj | 45 + .../ResourceAssembler.csproj.user | 4 + src/Tools/SVNChangeLogToXml/Main.cs | 48 + .../SVNChangelogToXml.csproj | 43 + .../SVNChangelogToXml.csproj.user | 4 + src/Tools/SharpCoco/bin/Debug/SharpCoco.exe | Bin 0 -> 77824 bytes src/Tools/SharpCoco/bin/Debug/SharpCoco.pdb | Bin 0 -> 136704 bytes src/Tools/SharpCoco/readme.txt | 14 + src/Tools/SharpCoco/src/AssemblyInfo.cs | 32 + src/Tools/SharpCoco/src/Coco.atg | 461 + src/Tools/SharpCoco/src/Coco.cs | 97 + src/Tools/SharpCoco/src/DFA.cs | 952 ++ src/Tools/SharpCoco/src/Parser.cs | 785 ++ src/Tools/SharpCoco/src/Parser.frame | 140 + src/Tools/SharpCoco/src/ParserGen.cs | 432 + src/Tools/SharpCoco/src/Scanner.cs | 358 + src/Tools/SharpCoco/src/Scanner.frame | 202 + src/Tools/SharpCoco/src/SharpCoco.csproj | 53 + src/Tools/SharpCoco/src/SharpCoco.csproj.user | 6 + src/Tools/SharpCoco/src/Tab.cs | 1082 ++ src/Tools/SharpCoco/src/Trace.cs | 69 + .../StringResourceSniffer/AssemblyInfo.cs | 32 + src/Tools/StringResourceSniffer/Main.cs | 104 + src/build.bat | 3 + src/clean.bat | 3 + 2161 files changed, 243161 insertions(+) create mode 100644 AddIns/ICSharpCode.SharpDevelop.addin create mode 100644 bin/setup/BuildHelpIndex.pdb create mode 100644 bin/setup/PostInstallTasks.bat create mode 100644 bin/setup/PostInstallTasks.vbs create mode 100644 bin/setup/PreUninstallTasks.bat create mode 100644 bin/setup/PreUninstallTasks.vbs create mode 100644 bin/setup/readme.txt create mode 100644 data/ConversionStyleSheets/CSharp_prjx2csproj.xsl create mode 100644 data/ConversionStyleSheets/CSharp_prjx2csproj_user.xsl create mode 100644 data/ConversionStyleSheets/ConvertPrjx10to11.xsl create mode 100644 data/ConversionStyleSheets/SVNChangelogToXml.xsl create mode 100644 data/ConversionStyleSheets/ShowChangeLog.xsl create mode 100644 data/ConversionStyleSheets/ShowXmlDocumentation.xsl create mode 100644 data/modes/C64CSharp.xshd create mode 100644 data/modes/CSharp-Mode-VSEnh.xshd create mode 100644 data/modes/Jay-Mode.xshd create mode 100644 data/options/SharpDevelop-templates.xml create mode 100644 data/options/SharpDevelop-tools.xml create mode 100644 data/options/SharpDevelopControlLibrary.sdcl create mode 100644 data/options/SharpDevelopProperties.xml create mode 100644 data/options/StandardHeader.xml create mode 100644 data/options/TextLib/ASCIITable.xml create mode 100644 data/options/TextLib/CSharpDocumentationTags.xml create mode 100644 data/options/TextLib/Licenses.xml create mode 100644 data/options/TextLib/SharpDevelop.xml create mode 100644 data/options/TextLib/XSLT.xml create mode 100644 data/options/TipsOfTheDay.xml create mode 100644 data/resources/InstallerBitmaps/default-banner.bmp create mode 100644 data/resources/InstallerBitmaps/default-dialog.bmp create mode 100644 data/resources/InstallerBitmaps/exclamic.bmp create mode 100644 data/resources/InstallerBitmaps/info.bmp create mode 100644 data/resources/InstallerBitmaps/new.bmp create mode 100644 data/resources/InstallerBitmaps/up.bmp create mode 100644 data/resources/MenuStyle0.png create mode 100644 data/resources/MenuStyle1.png create mode 100644 data/resources/MenuStyle2.png create mode 100644 data/resources/StringResources.ar.resources create mode 100644 data/resources/StringResources.bg.resources create mode 100644 data/resources/StringResources.cn-big.resources create mode 100644 data/resources/StringResources.cn-gb.resources create mode 100644 data/resources/StringResources.cz.resources create mode 100644 data/resources/StringResources.de.resources create mode 100644 data/resources/StringResources.dk.resources create mode 100644 data/resources/StringResources.es-mx.resources create mode 100644 data/resources/StringResources.es.resources create mode 100644 data/resources/StringResources.fi.resources create mode 100644 data/resources/StringResources.fr.resources create mode 100644 data/resources/StringResources.hu.resources create mode 100644 data/resources/StringResources.it.resources create mode 100644 data/resources/StringResources.jp.resources create mode 100644 data/resources/StringResources.kr.resources create mode 100644 data/resources/StringResources.lt.resources create mode 100644 data/resources/StringResources.nl.resources create mode 100644 data/resources/StringResources.pl.resources create mode 100644 data/resources/StringResources.pt-br.resources create mode 100644 data/resources/StringResources.pt.resources create mode 100644 data/resources/StringResources.ro.resources create mode 100644 data/resources/StringResources.ru.resources create mode 100644 data/resources/StringResources.se.resources create mode 100644 data/resources/StringResources.sl.resources create mode 100644 data/resources/StringResources.sr.resources create mode 100644 data/resources/StringResources.tr.resources create mode 100644 data/resources/css/MsdnHelp.css create mode 100644 data/resources/css/SharpDevelopStandard.css create mode 100644 data/resources/filetypes/Filetypes.xml create mode 100644 data/resources/filetypes/c.ico create mode 100644 data/resources/filetypes/cmbx.ico create mode 100644 data/resources/filetypes/cs.ico create mode 100644 data/resources/filetypes/java.ico create mode 100644 data/resources/filetypes/prjx.ico create mode 100644 data/resources/filetypes/resx.ico create mode 100644 data/resources/filetypes/vb.ico create mode 100644 data/resources/filetypes/xfrm.ico create mode 100644 data/resources/filetypes/xml.ico create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/EmptyFile.xcf create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/ErrorReport.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/GeneralWizardBackground.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.AboutIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.AdjustBackgroundColor.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.AdjustColor.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Assembly.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.BoldText.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.BookMarks.xcf create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.BrowserAfter.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.BrowserBefore.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.BrowserCancel.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.BrowserRefresh.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.BuildCombine.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.BuildCurrentSelectedProject.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.CDROM.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.CancelIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Center.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.CloseAllDocuments.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.CloseFileIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.CommentRegion.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.CopyIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.CopyLeftIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.CutIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.DRIVE.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.DeleteIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.DesignPanel.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Desktop.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Error.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FLOPPY.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FindIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FindIcon.xcf create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FindInFiles.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FindNextIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.AlignBottoms.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.AlignCenters.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.AlignLefts.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.AlignMiddles.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.AlignRights.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.AlignToGrid.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.AlignTops.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.BringToFront.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.CenterHorizontally.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.CenterVertically.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.DecreaseHorizontalSpace.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.DecreaseVerticalSpace.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.EqualizeHorizontalSpace.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.EqualizeVerticalSpace.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.IncreaseHorizontalSpace.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.IncreaseVerticalSpace.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.LockControls.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.MakeSameHeight.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.MakeSameSize.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.MakeSameWidth.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.PointerIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.RemoveHorizontalSpace.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.RemoveVerticalSpace.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.SendToBack.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.ShowTabOrder.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.SizeToGrid.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.ViewCode.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FullScreen.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FullScreen.xcf create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HelpClosedFolder.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HelpIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HelpOpenFolder.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HelpTopic.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.AnchorElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.ButtonElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.DivElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.Element.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.FieldSetElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.FormElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.HorizontalRuleElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.IFrameElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.ImageElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.InputButtonElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.InputCheckBoxElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.InputFileElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.InputHiddenElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.InputImageElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.InputPasswordElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.InputRadioElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.InputResetElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.InputSubmitElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.InputTextElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.LabelElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.ListBoxElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.PanelElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.SelectElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.SpanElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.TableElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.TextAreaElement.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.ILDasm.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Indent.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Information.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.ItalicText.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.LargeIconsIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Left.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Library.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.LowerToUpperCase.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.MyComputer.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.NETWORK.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.NewDocumentIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.NewFolderIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.NewProjectIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.NextWindowIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.OpenAssembly.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.OpenFileIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.OpenProjectIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Options.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.OutDent.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.PasteIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.PersonalFiles.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.PreView.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.PrevWindowIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Print.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.PropertiesIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Question.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.RedoIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.RedoIcon.xcf create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.ReplaceIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.ReplaceInFiles.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.ResourceEditor.bin.ico create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.ResourceEditor.bmp.ico create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.ResourceEditor.cursor.ico create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.ResourceEditor.icon.ico create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.ResourceEditor.obj.ico create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.ResourceEditor.string.ico create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Right.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.RunProgramIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.SaveAllIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.SaveIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.SelectionArrow.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.SideBarDocument.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.SmallIconsIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.SplitWindow.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.StopProcess.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.SubTypes.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.SuperTypes.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.TestRunner.Gray.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.TestRunner.Green.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.TestRunner.Red.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.TestRunner.Yellow.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.TipOfTheDay.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.UMLClass.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.UMLImplementation.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.UMLNote.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.UMLStructure.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.UnderlineText.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.UndoIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.UndoIcon.xcf create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.UpperToLowerCase.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Warning.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.WebSearchIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.32x32.Error.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.32x32.Information.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.32x32.Question.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.32x32.Warning.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.AboutImage.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.ClassBrowserIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.FileScoutIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.ProjectScoutIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.SharpDevelopIcon.ico create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/Icons.TipOfTheDayIcon.png create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/NewMarker.xcf create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/SplashScreen.xcf create mode 100644 data/resources/image/BitmapResources/BitmapResources-data/deleteMarker.xcf create mode 100644 data/resources/image/BitmapResources/BitmapResources.res create mode 100644 data/resources/image/BitmapResources/Bookmarks/Bookmark.xcf create mode 100644 data/resources/image/BitmapResources/Bookmarks/ClearAll.png create mode 100644 data/resources/image/BitmapResources/Bookmarks/DeleteMark.png create mode 100644 data/resources/image/BitmapResources/Bookmarks/EnableDisableAll.png create mode 100644 data/resources/image/BitmapResources/Bookmarks/EnableDisableMark.png create mode 100644 data/resources/image/BitmapResources/Bookmarks/GotoNext.png create mode 100644 data/resources/image/BitmapResources/Bookmarks/GotoNextInFile.png create mode 100644 data/resources/image/BitmapResources/Bookmarks/GotoNextInFolder.png create mode 100644 data/resources/image/BitmapResources/Bookmarks/GotoPrev.png create mode 100644 data/resources/image/BitmapResources/Bookmarks/GotoPrevInFile.png create mode 100644 data/resources/image/BitmapResources/Bookmarks/GotoPrevInFolder.png create mode 100644 data/resources/image/BitmapResources/Bookmarks/ToggleMark.png create mode 100644 data/resources/image/BitmapResources/Chloe Periscope-Orig_2.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Class.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Class.xcf create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Delegate.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Delegate.xcf create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Enum.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Enum.xcf create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Event.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Event.xcf create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Field.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Field.xcf create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Indexer.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Indexer.xcf create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Interface.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Interface.xcf create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.InternalClass.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.InternalDelegate.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.InternalEnum.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.InternalEvent.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.InternalField.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.InternalIndexer.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.InternalInterface.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.InternalMethod.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.InternalProperty.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.InternalStruct.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Literal.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Method.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Method.xcf create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.NameSpace.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.PrivateClass.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.PrivateDelegate.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.PrivateEnum.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.PrivateEvent.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.PrivateField.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.PrivateIndexer.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.PrivateInterface.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.PrivateMethod.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.PrivateProperty.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.PrivateStruct.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Property.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Property.xcf create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.ProtectedClass.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.ProtectedDelegate.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.ProtectedEnum.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.ProtectedEvent.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.ProtectedField.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.ProtectedIndexer.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.ProtectedInterface.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.ProtectedMethod.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.ProtectedProperty.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.ProtectedStruct.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Reference.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Struct.png create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Struct.xcf create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/InternalMarker.xcf create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/PrivateMarker.xcf create mode 100644 data/resources/image/BitmapResources/ClassBrowserIcons/ProtectedMarker.xcf create mode 100644 data/resources/image/BitmapResources/DebuggerIcons/Icons.16x16.Debug.Break.png create mode 100644 data/resources/image/BitmapResources/DebuggerIcons/Icons.16x16.Debug.Continue.png create mode 100644 data/resources/image/BitmapResources/DebuggerIcons/Icons.16x16.Debug.Start.png create mode 100644 data/resources/image/BitmapResources/DebuggerIcons/Icons.16x16.Debug.StartWithoutDebugging.png create mode 100644 data/resources/image/BitmapResources/DebuggerIcons/Icons.16x16.Debug.StepInto.png create mode 100644 data/resources/image/BitmapResources/DebuggerIcons/Icons.16x16.Debug.StepOut.png create mode 100644 data/resources/image/BitmapResources/DebuggerIcons/Icons.16x16.Debug.StepOver.png create mode 100644 data/resources/image/BitmapResources/DebuggerIcons/Icons.16x16.Debug.StopProcess.png create mode 100644 data/resources/image/BitmapResources/Icons.16x16.Shell.png create mode 100644 data/resources/image/BitmapResources/ImageResources.build create mode 100644 data/resources/image/BitmapResources/OpenCloseFiles.xcf create mode 100644 data/resources/image/BitmapResources/OutputPadIcons/ClearOutputWindow.png create mode 100644 data/resources/image/BitmapResources/OutputPadIcons/OutputPadIcons.xcf create mode 100644 data/resources/image/BitmapResources/OutputPadIcons/ToggleWordWrap.png create mode 100644 data/resources/image/BitmapResources/PadIcons/Bookmarks.png create mode 100644 data/resources/image/BitmapResources/PadIcons/ClassBrowser.png create mode 100644 data/resources/image/BitmapResources/PadIcons/ErrorList.png create mode 100644 data/resources/image/BitmapResources/PadIcons/FileBrowser.png create mode 100644 data/resources/image/BitmapResources/PadIcons/FindResults.png create mode 100644 data/resources/image/BitmapResources/PadIcons/Output.png create mode 100644 data/resources/image/BitmapResources/PadIcons/PadIcons.xcf create mode 100644 data/resources/image/BitmapResources/PadIcons/ProjectBrowser.png create mode 100644 data/resources/image/BitmapResources/PadIcons/TaskList.png create mode 100644 data/resources/image/BitmapResources/PadIcons/Toolbar.png create mode 100644 data/resources/image/BitmapResources/PadIcons/UnitTest.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/CodeBehind.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/Folder.Closed.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/Folder.Open.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/GhostFile.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/GhostFolder.Closed.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/GhostFolder.Open.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/MissingFile.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/MissingProject.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/MissingSolution.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/ProjectWarning.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/PropertyFolder.Closed.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/PropertyFolder.Open.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/ReferenceFolder.Closed.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/ReferenceFolder.Open.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/Solution.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/SolutionFolder.Closed.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/SolutionFolder.CreateNew.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/SolutionFolder.Open.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/Toolbar.Refresh.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/Toolbar.ShowHiddenFiles.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/WebReference.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/WebReferenceFolder.Closed.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/WebReferenceFolder.Open.png create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/work/Folder.xcf create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/work/GhostFile.xcf create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/work/GhostFolder.xcf create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/work/PropertyFolder.xcf create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/work/ReferenceFolder.xcf create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/work/SolutionFolder.xcf create mode 100644 data/resources/image/BitmapResources/ProjectBrowserIcons/work/WebReferenceFolder.xcf create mode 100644 data/resources/image/BitmapResources/ResAsm.exe create mode 100644 data/resources/image/BitmapResources/ResAsm.exe.config create mode 100644 data/resources/image/BitmapResources/SubversionIcons/StatusImages.bmp create mode 100644 data/resources/image/BitmapResources/SubversionIcons/Svn.ApplyPatch.png create mode 100644 data/resources/image/BitmapResources/SubversionIcons/Svn.Checkout.png create mode 100644 data/resources/image/BitmapResources/SubversionIcons/Svn.Commit.png create mode 100644 data/resources/image/BitmapResources/SubversionIcons/Svn.CreatePatch.png create mode 100644 data/resources/image/BitmapResources/SubversionIcons/Svn.Export.png create mode 100644 data/resources/image/BitmapResources/SubversionIcons/Svn.Import.png create mode 100644 data/resources/image/BitmapResources/SubversionIcons/Svn.StatusImages.png create mode 100644 data/resources/image/BitmapResources/SubversionIcons/Svn.Update.png create mode 100644 data/resources/image/BitmapResources/backendicons/CSharp/SmallFile.png create mode 100644 data/resources/image/BitmapResources/backendicons/CSharp/SmallProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/CSharp/file/EmptyFile.png create mode 100644 data/resources/image/BitmapResources/backendicons/CSharp/file/Form.png create mode 100644 data/resources/image/BitmapResources/backendicons/CSharp/file/FullFile.png create mode 100644 data/resources/image/BitmapResources/backendicons/CSharp/file/NewClass.png create mode 100644 data/resources/image/BitmapResources/backendicons/CSharp/file/WebFile.png create mode 100644 data/resources/image/BitmapResources/backendicons/CSharp/project/ControlLibrary.png create mode 100644 data/resources/image/BitmapResources/backendicons/CSharp/project/DOSProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/CSharp/project/EmptyProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/CSharp/project/Form.png create mode 100644 data/resources/image/BitmapResources/backendicons/CSharp/project/FullProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/CSharp/project/Library.png create mode 100644 data/resources/image/BitmapResources/backendicons/CSharp/project/ServiceProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/CSharp/project/UserControl.png create mode 100644 data/resources/image/BitmapResources/backendicons/CSharp/project/WebProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/Empty16x16File.xcf create mode 100644 data/resources/image/BitmapResources/backendicons/Empty32x32File.xcf create mode 100644 data/resources/image/BitmapResources/backendicons/Empty32x32Project.xcf create mode 100644 data/resources/image/BitmapResources/backendicons/Empty32x32UserControl.xcf create mode 100644 data/resources/image/BitmapResources/backendicons/EmptyProject.xcf create mode 100644 data/resources/image/BitmapResources/backendicons/FileIcon.xcf create mode 100644 data/resources/image/BitmapResources/backendicons/JScript/SmallFile.png create mode 100644 data/resources/image/BitmapResources/backendicons/JScript/SmallProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/JScript/file/EmptyFile.png create mode 100644 data/resources/image/BitmapResources/backendicons/JScript/file/Form.png create mode 100644 data/resources/image/BitmapResources/backendicons/JScript/file/FullFile.png create mode 100644 data/resources/image/BitmapResources/backendicons/JScript/file/NewClass.png create mode 100644 data/resources/image/BitmapResources/backendicons/JScript/file/WebFile.png create mode 100644 data/resources/image/BitmapResources/backendicons/JScript/project/ASPProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/JScript/project/ControlLibrary.png create mode 100644 data/resources/image/BitmapResources/backendicons/JScript/project/DOSProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/JScript/project/EmptyProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/JScript/project/Form.png create mode 100644 data/resources/image/BitmapResources/backendicons/JScript/project/FullProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/JScript/project/Library.png create mode 100644 data/resources/image/BitmapResources/backendicons/JScript/project/ServiceProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/JScript/project/UserControl.png create mode 100644 data/resources/image/BitmapResources/backendicons/JScript/project/WebProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/Java/SmallFile.png create mode 100644 data/resources/image/BitmapResources/backendicons/Java/SmallProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/Java/file/EmptyFile.png create mode 100644 data/resources/image/BitmapResources/backendicons/Java/file/Form.png create mode 100644 data/resources/image/BitmapResources/backendicons/Java/file/FullFile.png create mode 100644 data/resources/image/BitmapResources/backendicons/Java/file/NewClass.png create mode 100644 data/resources/image/BitmapResources/backendicons/Java/file/WebFile.png create mode 100644 data/resources/image/BitmapResources/backendicons/Java/project/ASPProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/Java/project/ControlLibrary.png create mode 100644 data/resources/image/BitmapResources/backendicons/Java/project/DOSProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/Java/project/EmptyProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/Java/project/Form.png create mode 100644 data/resources/image/BitmapResources/backendicons/Java/project/FullProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/Java/project/Library.png create mode 100644 data/resources/image/BitmapResources/backendicons/Java/project/ServiceProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/Java/project/UserControl.png create mode 100644 data/resources/image/BitmapResources/backendicons/Java/project/WebProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/VBNet/SmallFile.png create mode 100644 data/resources/image/BitmapResources/backendicons/VBNet/SmallProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/VBNet/file/EmptyFile.png create mode 100644 data/resources/image/BitmapResources/backendicons/VBNet/file/Form.png create mode 100644 data/resources/image/BitmapResources/backendicons/VBNet/file/FullFile.png create mode 100644 data/resources/image/BitmapResources/backendicons/VBNet/file/NewClass.png create mode 100644 data/resources/image/BitmapResources/backendicons/VBNet/file/WebFile.png create mode 100644 data/resources/image/BitmapResources/backendicons/VBNet/project/ASPProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/VBNet/project/ControlLibrary.png create mode 100644 data/resources/image/BitmapResources/backendicons/VBNet/project/DOSProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/VBNet/project/EmptyProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/VBNet/project/Form.png create mode 100644 data/resources/image/BitmapResources/backendicons/VBNet/project/FullProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/VBNet/project/Library.png create mode 100644 data/resources/image/BitmapResources/backendicons/VBNet/project/ServiceProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/VBNet/project/UserControl.png create mode 100644 data/resources/image/BitmapResources/backendicons/VBNet/project/WebProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/cpp/SmallFile.png create mode 100644 data/resources/image/BitmapResources/backendicons/cpp/SmallProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/cpp/file/EmptyFile.png create mode 100644 data/resources/image/BitmapResources/backendicons/cpp/file/Form.png create mode 100644 data/resources/image/BitmapResources/backendicons/cpp/file/FullFile.png create mode 100644 data/resources/image/BitmapResources/backendicons/cpp/file/NewClass.png create mode 100644 data/resources/image/BitmapResources/backendicons/cpp/file/WebFile.png create mode 100644 data/resources/image/BitmapResources/backendicons/cpp/project/ASPProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/cpp/project/ControlLibrary.png create mode 100644 data/resources/image/BitmapResources/backendicons/cpp/project/DOSProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/cpp/project/EmptyProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/cpp/project/Form.png create mode 100644 data/resources/image/BitmapResources/backendicons/cpp/project/FullProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/cpp/project/Library.png create mode 100644 data/resources/image/BitmapResources/backendicons/cpp/project/ServiceProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/cpp/project/UserControl.png create mode 100644 data/resources/image/BitmapResources/backendicons/cpp/project/WebProject.png create mode 100644 data/resources/image/BitmapResources/backendicons/miscFiles/Icons.16x16.CombineIcon.png create mode 100644 data/resources/image/BitmapResources/backendicons/miscFiles/Icons.16x16.HTMLIcon.png create mode 100644 data/resources/image/BitmapResources/backendicons/miscFiles/Icons.16x16.MiscFiles.png create mode 100644 data/resources/image/BitmapResources/backendicons/miscFiles/Icons.16x16.ResourceFileIcon.png create mode 100644 data/resources/image/BitmapResources/backendicons/miscFiles/Icons.16x16.SolutionIcon.png create mode 100644 data/resources/image/BitmapResources/backendicons/miscFiles/Icons.16x16.TextFileIcon.png create mode 100644 data/resources/image/BitmapResources/backendicons/miscFiles/Icons.16x16.XMLFileIcon.png create mode 100644 data/resources/image/BitmapResources/backendicons/miscFiles/Icons.32x32.ASPFileIcon.png create mode 100644 data/resources/image/BitmapResources/backendicons/miscFiles/Icons.32x32.CombineIcon.png create mode 100644 data/resources/image/BitmapResources/backendicons/miscFiles/Icons.32x32.EmptyFileIcon.png create mode 100644 data/resources/image/BitmapResources/backendicons/miscFiles/Icons.32x32.EmptyProjectIcon.png create mode 100644 data/resources/image/BitmapResources/backendicons/miscFiles/Icons.32x32.HTMLFileIcon.png create mode 100644 data/resources/image/BitmapResources/backendicons/miscFiles/Icons.32x32.ResourceFileIcon.png create mode 100644 data/resources/image/BitmapResources/backendicons/miscFiles/Icons.32x32.TextFileIcon.png create mode 100644 data/resources/image/BitmapResources/backendicons/miscFiles/Icons.32x32.XMLFileIcon.png create mode 100644 data/resources/image/BitmapResources/backendicons/miscFiles/XmlFileIcon.png create mode 100644 data/resources/image/BitmapResources/build.bat create mode 100644 data/resources/languages/.xvpics/russia.png create mode 100644 data/resources/languages/.xvpics/south_korea.png create mode 100644 data/resources/languages/.xvpics/sweden.png create mode 100644 data/resources/languages/Arabic.png create mode 100644 data/resources/languages/LanguageDefinition.xml create mode 100644 data/resources/languages/Serbia.png create mode 100644 data/resources/languages/badgoisern.png create mode 100644 data/resources/languages/brazil.png create mode 100644 data/resources/languages/bulgaria.png create mode 100644 data/resources/languages/chinalg.png create mode 100644 data/resources/languages/czech.png create mode 100644 data/resources/languages/denmark.png create mode 100644 data/resources/languages/england.png create mode 100644 data/resources/languages/finnish.png create mode 100644 data/resources/languages/france.png create mode 100644 data/resources/languages/germany.png create mode 100644 data/resources/languages/hungary.png create mode 100644 data/resources/languages/italy.png create mode 100644 data/resources/languages/japan.png create mode 100644 data/resources/languages/lithuania.png create mode 100644 data/resources/languages/mexico.png create mode 100644 data/resources/languages/netherlands.png create mode 100644 data/resources/languages/poland.png create mode 100644 data/resources/languages/portugal.png create mode 100644 data/resources/languages/romania.png create mode 100644 data/resources/languages/russia.png create mode 100644 data/resources/languages/slovenia.png create mode 100644 data/resources/languages/south_korea.png create mode 100644 data/resources/languages/spain.png create mode 100644 data/resources/languages/sweden.png create mode 100644 data/resources/languages/uk.png create mode 100644 data/resources/languages/usa.png create mode 100644 data/resources/layouts/Debug.xml create mode 100644 data/resources/layouts/Default.xml create mode 100644 data/resources/layouts/LayoutConfig.xml create mode 100644 data/resources/layouts/Plain.xml create mode 100644 data/resources/startpage/Layout/blue/balken_links.gif create mode 100644 data/resources/startpage/Layout/blue/balken_mitte.gif create mode 100644 data/resources/startpage/Layout/blue/balken_rechts.gif create mode 100644 data/resources/startpage/Layout/brown/balken_links.gif create mode 100644 data/resources/startpage/Layout/brown/balken_mitte.gif create mode 100644 data/resources/startpage/Layout/brown/balken_rechts.gif create mode 100644 data/resources/startpage/Layout/common/blind.gif create mode 100644 data/resources/startpage/Layout/common/dot_listing.gif create mode 100644 data/resources/startpage/Layout/common/klinker_milestone.gif create mode 100644 data/resources/startpage/Layout/common/line_hor_black.gif create mode 100644 data/resources/startpage/Layout/common/milestone_col_head.gif create mode 100644 data/resources/startpage/Layout/common/pixel_weiss.gif create mode 100644 data/resources/startpage/Layout/default.css create mode 100644 data/resources/startpage/Layout/green/balken_links.gif create mode 100644 data/resources/startpage/Layout/green/balken_mitte.gif create mode 100644 data/resources/startpage/Layout/green/balken_rechts.gif create mode 100644 data/resources/startpage/Layout/orange/balken_links.gif create mode 100644 data/resources/startpage/Layout/orange/balken_mitte.gif create mode 100644 data/resources/startpage/Layout/orange/balken_rechts.gif create mode 100644 data/resources/startpage/Layout/red/balken_links.gif create mode 100644 data/resources/startpage/Layout/red/balken_mitte.gif create mode 100644 data/resources/startpage/Layout/red/balken_rechts.gif create mode 100644 data/templates/file/CPPNet/CPP.Empty.xft create mode 100644 data/templates/file/CPPNet/CPP.Header.xft create mode 100644 data/templates/file/CPPNet/CPP.Wizards.NewClass.xft create mode 100644 data/templates/file/CSharp/CSharp.Empty.xft create mode 100644 data/templates/file/CSharp/CSharp.EmptyClass.xft create mode 100644 data/templates/file/CSharp/CSharp.Forms.Form.xft create mode 100644 data/templates/file/CSharp/CSharp.Forms.UserControl.xft create mode 100644 data/templates/file/CSharp/CSharp.Patterns.Singleton.xft create mode 100644 data/templates/file/CSharp/CSharp.UnitTest.xft create mode 100644 data/templates/file/CSharp/CSharp.Wizards.TypedCollection.xft create mode 100644 data/templates/file/CSharp/CSharp.Wizards.TypedHashtable.xft create mode 100644 data/templates/file/Misc/EmptyHTMLFile.xft create mode 100644 data/templates/file/Misc/EmptyResourceFile.xft create mode 100644 data/templates/file/Misc/EmptyTextFile.xft create mode 100644 data/templates/file/Misc/EmptyXMLFile.xft create mode 100644 data/templates/file/Misc/EmptyXmlForm.xft create mode 100644 data/templates/file/Misc/EmptyXmlUserControl.xft create mode 100644 data/templates/file/SharpDevelop/AddInOptions.xft create mode 100644 data/templates/file/SharpDevelop/ExampleMenuCommand.xft create mode 100644 data/templates/file/SharpDevelop/ExampleOptionPanel.xft create mode 100644 data/templates/file/SharpDevelop/ExamplePad.xft create mode 100644 data/templates/file/SharpDevelop/ExampleView.xft create mode 100644 data/templates/file/SharpDevelop/SimpleCommand.xft create mode 100644 data/templates/file/VBNet/VBNet.Empty.xft create mode 100644 data/templates/file/VBNet/VBNet.EmptyClass.xft create mode 100644 data/templates/file/VBNet/VBNet.Forms.Form.xft create mode 100644 data/templates/file/VBNet/VBNet.Forms.UserControl.xft create mode 100644 data/templates/file/VBNet/VBNet.Patterns.Singleton.xft create mode 100644 data/templates/file/VBNet/VBNet.UnitTest.xft create mode 100644 data/templates/file/VBNet/VBNet.Wizards.TypedCollection.xft create mode 100644 data/templates/file/VBNet/VBNet.Wizards.TypedHashtable.xft create mode 100644 data/templates/project/CPPNet/ConsoleProject.xpt create mode 100644 data/templates/project/CPPNet/EmptyProject.xpt create mode 100644 data/templates/project/CPPNet/FormsProject.xpt create mode 100644 data/templates/project/CSharp/ConsoleProject.xpt create mode 100644 data/templates/project/CSharp/ControlLibrary.xpt create mode 100644 data/templates/project/CSharp/Direct3DProject.xpt create mode 100644 data/templates/project/CSharp/EmptyProject.xpt create mode 100644 data/templates/project/CSharp/FormsProject.xpt create mode 100644 data/templates/project/CSharp/Library.xpt create mode 100644 data/templates/project/CSharp/Service.xpt create mode 100644 data/templates/project/ComplexExample.xpt.test create mode 100644 data/templates/project/ILAsm/ConsoleProject.xpt create mode 100644 data/templates/project/Misc/BlankCombine.xpt create mode 100644 data/templates/project/Setup/WixProject.xpt create mode 100644 data/templates/project/VBNet/ConsoleProject.xpt create mode 100644 data/templates/project/VBNet/ControlLibrary.xpt create mode 100644 data/templates/project/VBNet/Direct3DProject.xpt create mode 100644 data/templates/project/VBNet/EmptyProject.xpt create mode 100644 data/templates/project/VBNet/FormsProject.xpt create mode 100644 data/templates/project/VBNet/Library.xpt create mode 100644 data/templates/project/VBNet/Service.xpt create mode 100644 doc/BuiltWithSharpDevelop.png create mode 100644 doc/ChangeLog.xml create mode 100644 doc/RENAMED.txt create mode 100644 doc/SharpDevelopTODO.txt create mode 100644 doc/copyright.txt create mode 100644 doc/license.txt create mode 100644 doc/readme.rtf create mode 100644 doc/technotes/AddInBuildingGuide.sxw create mode 100644 doc/technotes/CodingStyleGuide.sxw create mode 100644 doc/technotes/TechicalWritingMadeEasier.sxw create mode 100644 doc/technotes/TheFineArtOfCommenting.sxw create mode 100644 setup/Corsavy.nsi create mode 100644 setup/SharpDevelop.wxs create mode 100644 setup/fileassoc.nsh create mode 100644 setup/readme.txt create mode 100644 setup/wizard-image.bmp create mode 100644 src/AddIns/AddIns/DisplayBindings/ResourceEditor.dll create mode 100644 src/AddIns/AddIns/DisplayBindings/ResourceEditor.pdb create mode 100644 src/AddIns/AddIns/Misc/FiletypeRegisterer/ICSharpCode.FiletypeRegisterer.dll create mode 100644 src/AddIns/AddIns/Misc/FiletypeRegisterer/ICSharpCode.FiletypeRegisterer.pdb create mode 100644 src/AddIns/BackendBindings/CPPNetBinding/Doc/TODO.txt create mode 100644 src/AddIns/BackendBindings/CPPNetBinding/Project/Resources/CPPNetBinding.addin create mode 100644 src/AddIns/BackendBindings/CPPNetBinding/Project/Src/AssemblyInfo.cs create mode 100644 src/AddIns/BackendBindings/CPPNetBinding/Project/Src/CPPNetBindingCompilerManager.cs create mode 100644 src/AddIns/BackendBindings/CPPNetBinding/Project/Src/CPPNetBindingExecutionManager.cs create mode 100644 src/AddIns/BackendBindings/CPPNetBinding/Project/Src/CPPNetLanguageBinding.cs create mode 100644 src/AddIns/BackendBindings/CPPNetBinding/Project/Src/Dependences.cs create mode 100644 src/AddIns/BackendBindings/CPPNetBinding/Project/Src/FormattingStrategy/CPPNetFormattingStrategy.cs create mode 100644 src/AddIns/BackendBindings/CPPNetBinding/Project/Src/Gui/CPPCodeGenerationPanel.cs create mode 100644 src/AddIns/BackendBindings/CPPNetBinding/Project/Src/IncludeParser.cs create mode 100644 src/AddIns/BackendBindings/CPPNetBinding/Project/Src/Project/CPPNetCompilerParameters.cs create mode 100644 src/AddIns/BackendBindings/CPPNetBinding/Project/Src/Project/CPPNetProject.cs create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj.user create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Configuration/AssemblyInfo.cs create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Resources/AdvancedBuildOptionsDialog.xfrm create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Resources/ApplicationSettings.xfrm create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Resources/BuildEvents.xfrm create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Resources/BuildOptions.xfrm create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Resources/DebugOptions.xfrm create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Resources/Publish.xfrm create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Resources/ReferencePaths.xfrm create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Resources/Signing.xfrm create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpAmbience.cs create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpBindingExecutionManager.cs create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/DocumentAccessor.cs create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/Indentation.cs create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/ApplicationSettings.cs create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildEvents.cs create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptions.cs create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/DebugOptions.cs create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/Publish.cs create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/ReferencePaths.cs create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/Signing.cs create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/ExpressionFinder.cs create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/Parser.cs create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs create mode 100644 src/AddIns/BackendBindings/ILAsmBinding/Project/ILAsmBinding.csproj create mode 100644 src/AddIns/BackendBindings/ILAsmBinding/Project/ILAsmBinding.csproj.user create mode 100644 src/AddIns/BackendBindings/ILAsmBinding/Project/Project/ILAsmCompilerParameters.cs create mode 100644 src/AddIns/BackendBindings/ILAsmBinding/Project/Project/ILAsmProject.cs create mode 100644 src/AddIns/BackendBindings/ILAsmBinding/Project/Src/AssemblyInfo.cs create mode 100644 src/AddIns/BackendBindings/ILAsmBinding/Project/Src/Gui/ChooseRuntimePanel.cs create mode 100644 src/AddIns/BackendBindings/ILAsmBinding/Project/Src/Gui/CompilerParametersPanel.cs create mode 100644 src/AddIns/BackendBindings/ILAsmBinding/Project/Src/ILAsmCompilerManager.cs create mode 100644 src/AddIns/BackendBindings/ILAsmBinding/Project/Src/ILAsmExecutionManager.cs create mode 100644 src/AddIns/BackendBindings/ILAsmBinding/Project/Src/ILAsmLanguageBinding.cs create mode 100644 src/AddIns/BackendBindings/ILAsmBinding/Project/Src/Resources/ChooseRuntimePanel.xfrm create mode 100644 src/AddIns/BackendBindings/ILAsmBinding/Project/Src/Resources/ILAsm-Mode.xshd create mode 100644 src/AddIns/BackendBindings/ILAsmBinding/Project/Src/Resources/ILAsmBinding.addin create mode 100644 src/AddIns/BackendBindings/VBNetBinding/Project/Resources/VBNetBinding.addin create mode 100644 src/AddIns/BackendBindings/VBNetBinding/Project/Src/AssemblyInfo.cs create mode 100644 src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBFormattingStrategy.cs create mode 100644 src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/CodeGenerationPanel.cs create mode 100644 src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/GuiMessageRecipient.cs create mode 100644 src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/OutputOptionsPanel.cs create mode 100644 src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/TextEditorOptionsPanel.cs create mode 100644 src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/VBCompilerPanel.cs create mode 100644 src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/VBDocConfigurationPanel.cs create mode 100644 src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/ExpressionFinder.cs create mode 100644 src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/Parser.cs create mode 100644 src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBCompilerParameters.cs create mode 100644 src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBProject.cs create mode 100644 src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBAmbience.cs create mode 100644 src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBBindingCompilerServices.cs create mode 100644 src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBBindingExecutionServices.cs create mode 100644 src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBDOCCommand.cs create mode 100644 src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBLanguageBinding.cs create mode 100644 src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj create mode 100644 src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj.user create mode 100644 src/AddIns/BackendBindings/VBNetBinding/RequiredLibraries/CommentExtractor.dll create mode 100644 src/AddIns/BackendBindings/WixBinding/Project/Resources/WixBinding.addin create mode 100644 src/AddIns/BackendBindings/WixBinding/Project/Src/AssemblyInfo.cs create mode 100644 src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/CompilerParametersPanel.cs create mode 100644 src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/LinkerParametersPanel.cs create mode 100644 src/AddIns/BackendBindings/WixBinding/Project/Src/Project/WixCompilerParameters.cs create mode 100644 src/AddIns/BackendBindings/WixBinding/Project/Src/Project/WixProject.cs create mode 100644 src/AddIns/BackendBindings/WixBinding/Project/Src/WixCompilerManager.cs create mode 100644 src/AddIns/BackendBindings/WixBinding/Project/Src/WixExecutionManager.cs create mode 100644 src/AddIns/BackendBindings/WixBinding/Project/Src/WixLanguageBinding.cs create mode 100644 src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj create mode 100644 src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj.user create mode 100644 src/AddIns/DisplayBindings/AssemblyScout/Project/Resources/AssemblyScout.addin create mode 100644 src/AddIns/DisplayBindings/AssemblyScout/Project/Resources/AssemblyScoutOptions.xfrm create mode 100644 src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyInfo.cs create mode 100644 src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyScoutBinding.cs create mode 100644 src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyScoutCommand.cs create mode 100644 src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyScoutCommands.cs create mode 100644 src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyScoutOptionPanel.cs create mode 100644 src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyScoutViewContent.cs create mode 100644 src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyTree.cs create mode 100644 src/AddIns/DisplayBindings/AssemblyScout/Project/Src/ExtendedPropPanel.cs create mode 100644 src/AddIns/DisplayBindings/AssemblyScout/Project/Src/ILDasmView.cs create mode 100644 src/AddIns/DisplayBindings/AssemblyScout/Project/Src/InfoView.cs create mode 100644 src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/AssemblyTreeNode.cs create mode 100644 src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/FolderNode.cs create mode 100644 src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/MemberNode.cs create mode 100644 src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/MethodNode.cs create mode 100644 src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/ResourceNode.cs create mode 100644 src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/TypeNode.cs create mode 100644 src/AddIns/DisplayBindings/AssemblyScout/Project/Src/SearchPanel.cs create mode 100644 src/AddIns/DisplayBindings/AssemblyScout/Project/Src/SourceView.cs create mode 100644 src/AddIns/DisplayBindings/AssemblyScout/Project/Src/TempProject.cs create mode 100644 src/AddIns/DisplayBindings/AssemblyScout/Project/Src/XmlView.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Configuration/AssemblyInfo.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/FormDesigner.addin create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/FormDesigner.csproj create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/FormDesigner.csproj.user create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Resources/AddSidebarComponentsDialog.xfrm create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Resources/ConfigureSidebarDialog.xfrm create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Resources/RenameSidebarCategoryDialog.xfrm create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Resources/WindowsFormsGridOptions.xfrm create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/Commands/FormCommands.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/Commands/SideBarCommands.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/CSharpDesignerGenerator.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/CodeDOMGenerator.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/IDesignerGenerator.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/XmlDesignerGenerator.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerLoader/NRefactoryDesignerLoader.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerLoader/XmlDesignerLoader.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/FormDesignerSecondaryDisplayBinding.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/FormDesignerViewContent.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/FormKeyHandler.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/AddComponentsDialog.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/AssemblyList.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/ComponentLibraryLoader.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/ConfigureSideBarDialog.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/CustomComponentsSideTab.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/ICSharpCode.SharpDevelop.FormDesigner.Gui.AssemblyList.resources create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/ICSharpCode.SharpDevelop.Gui.Dialogs.OptionPanels.ControlLibrariesPanel.resources create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/OptionPanels/GridOptions.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/RenameCategoryDialog.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/ShowTabOrder/ITabOrder.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/ShowTabOrder/TabIndexControl.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/SideTabDesigner.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/SideTabItemDesigner.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/AbstractMenuEditorControl.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/ContextMenuEditorControl.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/ItemEditor.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/MainMenuEditorControl.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/MenuDesigner.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/MenuEditorService.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/SubMenuEditorControl.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/DefaultServiceContainer.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/DesignerEventService.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/DesignerOptionService.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/DesignerResourceService.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/EventBindingService.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/HelpService.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/MenuCommandService.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/PropertyValueUIService.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/ToolboxService.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/TypeDescriptorFilterService.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/TypeResolutionService.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/UIService.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/ToolboxProvider.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/UndoRedo/ComponentAddedUndoAction.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/UndoRedo/ComponentChangedUndoAction.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/UndoRedo/ComponentRemovedUndoAction.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/UndoRedo/SelectComponentsUndoAction.cs create mode 100644 src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/UndoRedo/UndoHandler.cs create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/Configuration/AssemblyInfo.cs create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.addin create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj.user create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/AddNewFileCommand.cs create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/AddStringEntryCommand.cs create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/ClipboardCommands.cs create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/CopyResourceNameCommand.cs create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/DeleteEntryCommand.cs create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/RenameEntryCommand.cs create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/SaveEntryAsCommand.cs create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/Src/DisplayDefinition.cs create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/AbstractImageView.cs create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/BinaryView.cs create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/BitmapView.cs create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/BooleanView.cs create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/CursorView.cs create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/IResourceView.cs create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/IconView.cs create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceEditor.cs create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceItem.cs create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceItemHashtable.cs create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceList.cs create mode 100644 src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/TextView.cs create mode 100644 src/AddIns/Misc/AddinScout/AddinScout.sln create mode 100644 src/AddIns/Misc/AddinScout/Project/AddinScout.csproj create mode 100644 src/AddIns/Misc/AddinScout/Project/AddinScout.csproj.user create mode 100644 src/AddIns/Misc/AddinScout/Project/Resources/AddInScout.addin create mode 100644 src/AddIns/Misc/AddinScout/Project/Src/AddInScoutCommand.cs create mode 100644 src/AddIns/Misc/AddinScout/Project/Src/AddInScoutViewContent.cs create mode 100644 src/AddIns/Misc/AddinScout/Project/Src/AssemblyInfo.cs create mode 100644 src/AddIns/Misc/AddinScout/Project/Src/Gui/AddInDetailsPanel.cs create mode 100644 src/AddIns/Misc/AddinScout/Project/Src/Gui/AddinTreeView.cs create mode 100644 src/AddIns/Misc/AddinScout/Project/Src/Gui/CodonListPanel.cs create mode 100644 src/AddIns/Misc/AddinScout/Project/Src/Gui/TreeTreeView.cs create mode 100644 src/AddIns/Misc/FiletypeRegisterer/Doc/Description.txt create mode 100644 src/AddIns/Misc/FiletypeRegisterer/Project/Configuration/AssemblyInfo.cs create mode 100644 src/AddIns/Misc/FiletypeRegisterer/Project/FiletypeRegisterer.addin create mode 100644 src/AddIns/Misc/FiletypeRegisterer/Project/FiletypeRegisterer.csproj create mode 100644 src/AddIns/Misc/FiletypeRegisterer/Project/FiletypeRegisterer.csproj.user create mode 100644 src/AddIns/Misc/FiletypeRegisterer/Project/Src/RegisterFiletypesCommand.cs create mode 100644 src/AddIns/Misc/FiletypeRegisterer/Project/Src/RegisterFiletypesPanel.cs create mode 100644 src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/Filetypes.xml create mode 100644 src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/cmbx.ico create mode 100644 src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/cs.ico create mode 100644 src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/java.ico create mode 100644 src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/prjx.ico create mode 100644 src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/resx.ico create mode 100644 src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/vb.ico create mode 100644 src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/xfrm.ico create mode 100644 src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/xml.ico create mode 100644 src/AddIns/Misc/FiletypeRegisterer/Project/Unregister/Main.cs create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Configuration/AssemblyInfo.cs create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/HighlightingEditor.addin create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/HighlightingEditor.csproj create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/HighlightingEditor.csproj.user create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Resources/ColorDialog.xfrm create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Resources/Digits.xfrm create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Resources/EditDialog.xfrm create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Resources/Environment.xfrm create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Resources/KeywordList.xfrm create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Resources/KeywordLists.xfrm create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Resources/Marker.xfrm create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Resources/Markers.xfrm create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Resources/OptionPanel.xfrm create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Resources/Properties.xfrm create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Resources/RuleSet.xfrm create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Resources/RuleSets.xfrm create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Resources/Scheme.xfrm create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Resources/Span.xfrm create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Resources/Spans.xfrm create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Src/ColorButton.cs create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Src/ColorDialog.cs create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Src/EditHighlightingColorDialog.cs create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Src/EditHighlightingDialog.cs create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Src/EditHighlightingPanel.cs create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Src/EditorHighlightColor.cs create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/AbstractNode.cs create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/DigitsNode.cs create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/EnvironmentNode.cs create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/KeywordListNode.cs create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/KeywordListsNode.cs create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/MarkerNode.cs create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/MarkersNode.cs create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/NodeOptionPanel.cs create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/PropertiesNode.cs create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/RuleSetNode.cs create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/RuleSetsNode.cs create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/SchemeNode.cs create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/SpanNode.cs create mode 100644 src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/SpansNode.cs create mode 100644 src/AddIns/Misc/NUnitPad/Project/Configuration/AssemblyInfo.cs create mode 100644 src/AddIns/Misc/NUnitPad/Project/NUnitPad.csproj create mode 100644 src/AddIns/Misc/NUnitPad/Project/NUnitPad.csproj.user create mode 100644 src/AddIns/Misc/NUnitPad/Project/Resources/NUnitPad.addin create mode 100644 src/AddIns/Misc/NUnitPad/Project/Src/Commands/MenuCommands.cs create mode 100644 src/AddIns/Misc/NUnitPad/Project/Src/Commands/TestTreeViewContextMenuCommands.cs create mode 100644 src/AddIns/Misc/NUnitPad/Project/Src/Gui/NUnitPadContent.cs create mode 100644 src/AddIns/Misc/NUnitPad/Project/Src/Gui/TestTreeView.cs create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/AssemblyInfo.cs create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/Commands/ExportProjectCommand.cs create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/Commands/ImportProjectCommand.cs create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/Converters/AbstractInputConverter.cs create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/Converters/AbstractOutputConverter.cs create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/Converters/LanguageConversion/AbstractLanguageConverterOutput.cs create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/Converters/LanguageConversion/CSharpToVBNetLanguageConverterOutput.cs create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/Converters/LanguageConversion/VBNetToCSharpLanguageConverterOutput.cs create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/Converters/VSNet/SolutionConverterTool.cs create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/Converters/VSNet/SolutionInputConverter.cs create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/Converters/VSNet/SolutionOutputConverter.cs create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/Converters/VSNet/SolutionOutputConverterTool.cs create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/Converters/VSNet/VSProjectInputConverter.cs create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/Dialogs/ChooseProjectLocationDialog.cs create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/Dialogs/ExportProjectDialog.cs create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/Dialogs/ImportProjectDialog.cs create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/Resources/CSSolutionConversion.xsl create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/Resources/ChooseProjectLocationDialog.xfrm create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/Resources/ExportProjectDialog.xfrm create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/Resources/ImportProjectDialog.xfrm create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/Resources/ProjectImporterExporter.addin create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/Resources/ProjectToVSNetProjectConversion.xsl create mode 100644 src/AddIns/Misc/ProjectImporterExporter/Project/Resources/VBSolutionConversion.xsl create mode 100644 src/AddIns/Misc/RegExpTk/Project/Configuration/AssemblyInfo.cs create mode 100644 src/AddIns/Misc/RegExpTk/Project/RegExpTk.addin create mode 100644 src/AddIns/Misc/RegExpTk/Project/RegExpTk.csproj create mode 100644 src/AddIns/Misc/RegExpTk/Project/RegExpTk.csproj.user create mode 100644 src/AddIns/Misc/RegExpTk/Project/Resources/RegExpTkGroupForm.xfrm create mode 100644 src/AddIns/Misc/RegExpTk/Project/Resources/RegExpTkMainForm.xfrm create mode 100644 src/AddIns/Misc/RegExpTk/Project/Src/Commands/MenuCommand.cs create mode 100644 src/AddIns/Misc/RegExpTk/Project/Src/Dialogs/GroupForm.cs create mode 100644 src/AddIns/Misc/RegExpTk/Project/Src/Dialogs/MainWindow.cs create mode 100644 src/AddIns/Misc/RegExpTk/RegExpTkPad.cs.old create mode 100644 src/AddIns/Misc/StartPage/Project/Configuration/AssemblyInfo.cs create mode 100644 src/AddIns/Misc/StartPage/Project/Src/ICSharpCodePage.cs create mode 100644 src/AddIns/Misc/StartPage/Project/Src/Main.cs create mode 100644 src/AddIns/Misc/StartPage/Project/Src/StartPage.cs create mode 100644 src/AddIns/Misc/StartPage/Project/StartPage.addin create mode 100644 src/AddIns/Misc/StartPage/Project/StartPage.csproj create mode 100644 src/AddIns/Misc/StartPage/Project/StartPage.csproj.user create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Configuration/AssemblyInfo.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Resources/CheckoutDialog.xfrm create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Resources/ClientCertDialog.xfrm create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Resources/ClientCertPassphraseDialog.xfrm create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Resources/CommitDialog.xfrm create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Resources/ContentPanel.xfrm create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Resources/DiffPanel.xfrm create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Resources/ExportDialog.xfrm create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Resources/ICSharpCode.Svn.addin create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Resources/InfoPanel.xfrm create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Resources/LoginDialog.xfrm create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Resources/SslServerTrustDialog.xfrm create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Resources/SubversionOptionsPanel.xfrm create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/AddInOptions.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/Commands/AutostartCommands.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/Commands/Checkout/CheckoutCommand.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/Commands/Checkout/CheckoutDialog.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/Commands/Commit/CommitCommand.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/Commands/Commit/CommitDialog.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/Commands/Export/ExportCommand.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/Commands/Export/ExportDialog.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/Commands/ProjectBrowserCommands.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/AuthentificationDialogs/ClientCertDialog.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/AuthentificationDialogs/ClientCertPassphraseDialog.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/AuthentificationDialogs/LoginDialog.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/AuthentificationDialogs/SslServerTrustDialog.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/HistoryViewDisplayBinding/ContentPanel.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/HistoryViewDisplayBinding/DiffPanel.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/HistoryViewDisplayBinding/HistoryView.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/HistoryViewDisplayBinding/HistoryViewDisplayBinding.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/HistoryViewDisplayBinding/HistoryViewPanel.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/HistoryViewDisplayBinding/InfoPanel.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/ProjectBrowserVisitor/SvnProjectBrowserVisitor.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/SubversionOptionsPanel.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/InOperationDialog.cs create mode 100644 src/AddIns/Misc/SubversionAddIn/Project/Src/SvnClient.cs create mode 100644 src/AddIns/Wizards/MessageBoxBuilder/Doc/CreationProcess.txt create mode 100644 src/AddIns/Wizards/MessageBoxBuilder/Project/Configuration/AssemblyInfo.cs create mode 100644 src/AddIns/Wizards/MessageBoxBuilder/Project/Resources/CodeGenerationPanel.xfrm create mode 100644 src/AddIns/Wizards/MessageBoxBuilder/Project/Resources/MessageBoxBuilder.addin create mode 100644 src/AddIns/Wizards/MessageBoxBuilder/Project/Resources/VisiblePropertiesPanel.xfrm create mode 100644 src/AddIns/Wizards/MessageBoxBuilder/Project/Src/Command/NewClass1.cs create mode 100644 src/AddIns/Wizards/MessageBoxBuilder/Project/Src/Command/WizardCommand.cs create mode 100644 src/AddIns/Wizards/MessageBoxBuilder/Project/Src/DialogPanels/CodeGenerationPanel.cs create mode 100644 src/AddIns/Wizards/MessageBoxBuilder/Project/Src/DialogPanels/ViewPropertyPanel.cs create mode 100644 src/AddIns/Wizards/MessageBoxBuilder/Project/Src/Generator/MessageBoxGenerator.cs create mode 100644 src/AddIns/Wizards/MessageBoxBuilder/Project/Src/Xml/MessageBoxBuilder.addin create mode 100644 src/Libraries/DockPanel_Src/DockSample/AboutDialog.cs create mode 100644 src/Libraries/DockPanel_Src/DockSample/AboutDialog.resx create mode 100644 src/Libraries/DockPanel_Src/DockSample/App.ico create mode 100644 src/Libraries/DockPanel_Src/DockSample/AssemblyInfo.cs create mode 100644 src/Libraries/DockPanel_Src/DockSample/DockSample.csproj create mode 100644 src/Libraries/DockPanel_Src/DockSample/DockSample.csproj.user create mode 100644 src/Libraries/DockPanel_Src/DockSample/DummyDoc.cs create mode 100644 src/Libraries/DockPanel_Src/DockSample/DummyDoc.resx create mode 100644 src/Libraries/DockPanel_Src/DockSample/DummyOutputWindow.cs create mode 100644 src/Libraries/DockPanel_Src/DockSample/DummyOutputWindow.resx create mode 100644 src/Libraries/DockPanel_Src/DockSample/DummyPropertyWindow.cs create mode 100644 src/Libraries/DockPanel_Src/DockSample/DummyPropertyWindow.resx create mode 100644 src/Libraries/DockPanel_Src/DockSample/DummySolutionExplorer.cs create mode 100644 src/Libraries/DockPanel_Src/DockSample/DummySolutionExplorer.resx create mode 100644 src/Libraries/DockPanel_Src/DockSample/DummyTaskList.cs create mode 100644 src/Libraries/DockPanel_Src/DockSample/DummyTaskList.resx create mode 100644 src/Libraries/DockPanel_Src/DockSample/DummyToolbox.cs create mode 100644 src/Libraries/DockPanel_Src/DockSample/DummyToolbox.resx create mode 100644 src/Libraries/DockPanel_Src/DockSample/Images/ArrowDown.bmp create mode 100644 src/Libraries/DockPanel_Src/DockSample/Images/ArrowUp.bmp create mode 100644 src/Libraries/DockPanel_Src/DockSample/Images/Bitmap.ico create mode 100644 src/Libraries/DockPanel_Src/DockSample/Images/BlankIcon.ico create mode 100644 src/Libraries/DockPanel_Src/DockSample/Images/CSFile.ico create mode 100644 src/Libraries/DockPanel_Src/DockSample/Images/CSProject.ico create mode 100644 src/Libraries/DockPanel_Src/DockSample/Images/ClosedFolder.ICO create mode 100644 src/Libraries/DockPanel_Src/DockSample/Images/Form.ico create mode 100644 src/Libraries/DockPanel_Src/DockSample/Images/Mouse.bmp create mode 100644 src/Libraries/DockPanel_Src/DockSample/Images/New.ico create mode 100644 src/Libraries/DockPanel_Src/DockSample/Images/Open.ico create mode 100644 src/Libraries/DockPanel_Src/DockSample/Images/OpenFolder.ICO create mode 100644 src/Libraries/DockPanel_Src/DockSample/Images/OutputWindow.ico create mode 100644 src/Libraries/DockPanel_Src/DockSample/Images/PropertyWindow.ico create mode 100644 src/Libraries/DockPanel_Src/DockSample/Images/Reference.ico create mode 100644 src/Libraries/DockPanel_Src/DockSample/Images/References.ico create mode 100644 src/Libraries/DockPanel_Src/DockSample/Images/SolutionExplorer.ico create mode 100644 src/Libraries/DockPanel_Src/DockSample/Images/TaskListWindow.ico create mode 100644 src/Libraries/DockPanel_Src/DockSample/Images/ToolboxWindow.ico create mode 100644 src/Libraries/DockPanel_Src/DockSample/Images/msenv22.ico create mode 100644 src/Libraries/DockPanel_Src/DockSample/MainForm.cs create mode 100644 src/Libraries/DockPanel_Src/DockSample/MainForm.resx create mode 100644 src/Libraries/DockPanel_Src/DockSample/Options.cs create mode 100644 src/Libraries/DockPanel_Src/DockSample/OptionsDialog.cs create mode 100644 src/Libraries/DockPanel_Src/DockSample/OptionsDialog.resx create mode 100644 src/Libraries/DockPanel_Src/DockSample/RtfFiles/DummyDoc.cs.rtf create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI.sln create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI.suo create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/AssemblyInfo.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/AutoHideWindow.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/AutoHideWindowSplitter.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/DisplayingDockList.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/DockAreasEditor.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/DockContent.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/DockContentCollection.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/DockHelper.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/DockList.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/DockPane.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/DockPaneCollection.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/DockPaneSplitter.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/DockPanel.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/DockPanelPersist.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/DockWindow.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/DockWindowCollection.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/DockWindowSplitter.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/DragHandler.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/DragHandlerBase.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/DrawHelper.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/DummyControl.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/Enums.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/EventArgs.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/FloatWindow.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/FloatWindowCollection.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/HiddenMdiChild.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/InertButton.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/Interfaces.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/LocalWindowsHook.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/Localization.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/Measures.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/NestedDockingStatus.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/ResourceHelper.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/Resources/DockPane.AutoHideNo.bmp create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/Resources/DockPane.AutoHideYes.bmp create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/Resources/DockPane.DocumentCloseDisabled.bmp create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/Resources/DockPane.DocumentCloseEnabled.bmp create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/Resources/DockPane.ScrollLeftDisabled.bmp create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/Resources/DockPane.ScrollLeftEnabled.bmp create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/Resources/DockPane.ScrollRightDisabled.bmp create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/Resources/DockPane.ScrollRightEnabled.bmp create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/Resources/DockPane.ToolWindowCloseDisabled.bmp create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/Resources/DockPane.ToolWindowCloseEnabled.bmp create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/Resources/Thumbs.db create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/SplitterBase.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/Strings.ResX create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/Win32/Enums.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/Win32/Gdi32.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/Win32/Structs.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/Win32/User32.cs create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/WinFormsUI.csproj create mode 100644 src/Libraries/DockPanel_Src/WinFormsUI/WinFormsUI.csproj.user create mode 100644 src/Libraries/ICSharpCode.TextEditor/ICSharpCode.TextEditor.sln create mode 100644 src/Libraries/ICSharpCode.TextEditor/ICSharpCode.TextEditor.suo create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Configuration/AssemblyInfo.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/ICSharpCode.TextEditor.csproj create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/ICSharpCode.TextEditor.csproj.user create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Resources/ASPX.xshd create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Resources/BAT-Mode.xshd create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Resources/CPP-Mode.xshd create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Resources/CSharp-Mode.xshd create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Resources/Coco-Mode.xshd create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Resources/HTML-Mode.xshd create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Resources/ICSharpCode.TextEditor.TextEditorControl.bmp create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Resources/ICSharpCode.TextEditor.snk create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Resources/Java-Mode.xshd create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Resources/JavaScript-Mode.xshd create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Resources/Mode.xsd create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Resources/PHP-Mode.xshd create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Resources/RightArrow.cur create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Resources/SyntaxModes.xml create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Resources/Tex-Mode.xshd create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Resources/VBNET-Mode.xshd create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Resources/XML-Mode.xshd create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/BookmarkActions.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/CaretActions.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/ClipBoardActions.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/FoldActions.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/FormatActions.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/HomeEndActions.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/IEditAction.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/MiscActions.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/SelectionActions.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/AbstractSegment.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/BookmarkManager/Bookmark.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/BookmarkManager/BookmarkEventHandler.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/BookmarkManager/BookmarkManager.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/BookmarkManager/BookmarkManagerMemento.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/DefaultDocument.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/DefaultTextEditorProperties.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/DocumentEventArgs.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/DocumentFactory.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/FoldingStrategy/FoldMarker.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/FoldingStrategy/FoldingManager.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/FoldingStrategy/IFoldingStrategy.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/FoldingStrategy/IndentFoldingStrategy.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/FormattingStrategy/DefaultFormattingStrategy.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/FormattingStrategy/IFormattingStrategy.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/DefaultHighlightingStrategy.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/FontContainer.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/HighlightBackground.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/HighlightColor.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/HighlightInfo.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/HighlightRuleSet.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/HighlightingColorNotFoundException.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/HighlightingDefinitionParser.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/HighlightingManager.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/HighlightingStrategyFactory.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/IHighlightingStrategy.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/NextMarker.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/PrevMarker.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/Span.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/SyntaxModes/FileSyntaxModeProvider.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/SyntaxModes/ISyntaxModeFileProvider.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/SyntaxModes/ResourceSyntaxModeProvider.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/SyntaxModes/SyntaxMode.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/TextWord.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/IDocument.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/ISegment.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/ITextEditorProperties.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/LineManager/DefaultLineManager.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/LineManager/ILineManager.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/LineManager/LineManagerEventArgs.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/LineManager/LineSegment.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/MarkerStrategy/MarkerStrategy.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/MarkerStrategy/TextMarker.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/Selection/ColumnRange.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/Selection/DefaultSelection.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/Selection/ISelection.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/Selection/SelectionManager.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/TextBufferStrategy/GapTextBufferStrategy.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/TextBufferStrategy/ITextBufferStrategy.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/TextBufferStrategy/StringTextBufferStrategy.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/TextUtilities.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/AbstractMargin.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/BracketHighlighter.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/BrushRegistry.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/Caret.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/AbstractCompletionWindow.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/CodeCompletionListView.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/CodeCompletionWindow.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/DeclarationViewWindow.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/ICompletionData.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/ICompletionDataProvider.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/FoldMargin.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/GutterMargin.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/HRuler.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/IconBarMargin.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/Ime.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/InsightWindow/IInsightDataProvider.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/InsightWindow/InsightWindow.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaClipboardHandler.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaControl.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaDragDropHandler.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaMouseHandler.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaUpdate.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextEditorControl.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextEditorControlBase.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextView.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Undo/IUndoableOperation.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Undo/UndoQueue.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Undo/UndoStack.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Undo/UndoableDelete.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Undo/UndoableInsert.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Undo/UndoableReplace.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Util/LookupTable.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Util/RtfWriter.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Util/TextUtility.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Util/TipPainter.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Util/TipPainterTools.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Util/TipSection.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Util/TipSpacer.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Util/TipSplitter.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Project/Src/Util/TipText.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Test/AssemblyInfo.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Test/DocumentTests.cs create mode 100644 src/Libraries/ICSharpCode.TextEditor/Test/ICSharpCode.TextEditor.Test.csproj create mode 100644 src/Libraries/ICSharpCode.TextEditor/Test/ICSharpCode.TextEditor.Test.csproj.user create mode 100644 src/Libraries/NRefactory/NRefactory.sln create mode 100644 src/Libraries/NRefactory/Project/Configuration/AssemblyInfo.cs create mode 100644 src/Libraries/NRefactory/Project/NRefactory.csproj create mode 100644 src/Libraries/NRefactory/Project/NRefactory.csproj.user create mode 100644 src/Libraries/NRefactory/Project/Resources/ICSharpCode.NRefactory.snk create mode 100644 src/Libraries/NRefactory/Project/Src/Lexer/AbstractLexer.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Lexer/BuildKeywords.pl create mode 100644 src/Libraries/NRefactory/Project/Src/Lexer/CSharp/CSharpKeywordList.txt create mode 100644 src/Libraries/NRefactory/Project/Src/Lexer/CSharp/Keywords.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Lexer/CSharp/Lexer.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Lexer/CSharp/Tokens.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Lexer/ILexer.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Lexer/LookupTable.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Lexer/Special/BlankLine.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Lexer/Special/Comment.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Lexer/Special/CommentType.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Lexer/Special/PreProcessingDirective.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Lexer/Special/SpecialTracker.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Lexer/Special/SpecialType.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Lexer/Special/TagComment.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Lexer/Token.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Lexer/VBNet/Keywords.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Lexer/VBNet/Lexer.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Lexer/VBNet/Tokens.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Lexer/VBNet/VBNetKeywordList.txt create mode 100644 src/Libraries/NRefactory/Project/Src/Main.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Output/AbstractOutputFormatter.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Output/AbstractPrettyPrintOptions.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Output/CSharp/CSharpOutputVisitor.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Output/CSharp/OutputFormatter.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Output/CSharp/PrettyPrintOptions.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Output/CodeDOM/CodeDOMOutputVisitor.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Output/IOutputASTVisitor.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Output/NodeInformVisitor.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Output/VBNet/VBNetOutputFormatter.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Output/VBNet/VBNetOutputVisitor.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Output/VBNet/VBNetPrettyPrintOptions.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/AbstractNode.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/AttributedNode.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/CSharp/Expressions/CheckedExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/CSharp/Expressions/ConditionalExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/CSharp/Expressions/DirectionExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/CSharp/Expressions/IndexerExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/CSharp/Expressions/PointerReferenceExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/CSharp/Expressions/SizeOfExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/CSharp/Expressions/StackAllocExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/CSharp/Expressions/UncheckedExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/CSharp/Statements/CheckedStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/CSharp/Statements/EmptyStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/CSharp/Statements/FixedStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/CSharp/Statements/GotoCaseStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/CSharp/Statements/UncheckedStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/CSharp/Statements/UnsafeStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/CSharp/Statements/UsingStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/CSharp/Statements/YieldStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/CSharp/TypeLevel/DestructorDeclaration.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/CSharp/TypeLevel/IndexerDeclaration.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/CSharp/TypeLevel/OperatorDeclaration.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/AttributeSection.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Enums.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/ArrayCreateExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/ArrayInitializerExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/AssignmentExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/BaseReferenceExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/BinaryOperatorExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/CastExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/Expression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/FieldReferenceExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/IdentifierExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/InvocationExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/ObjectCreateExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/ParenthesizedExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/PrimitiveExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/ThisReferenceExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/TypeOfExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/TypeReferenceExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/UnaryOperatorExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/GlobalScope/CompilationUnit.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/GlobalScope/DelegateDeclaration.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/GlobalScope/NamespaceDeclaration.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/GlobalScope/TypeDeclaration.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/GlobalScope/UsingDeclaration.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/INullable.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Statements/BlockStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Statements/BreakStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Statements/ContinueStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Statements/DoLoopStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Statements/ForStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Statements/ForeachStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Statements/GotoStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Statements/IfElseStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Statements/LabelStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Statements/LocalVariableDeclaration.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Statements/LockStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Statements/ReturnStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Statements/Statement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Statements/StatementExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Statements/SwitchStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Statements/ThrowStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Statements/TryCatchStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/Statements/VariableDeclaration.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/TypeLevel/ConstructorDeclaration.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/TypeLevel/ConstructorInitializer.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/TypeLevel/EventAddRemoveRegion.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/TypeLevel/EventDeclaration.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/TypeLevel/FieldDeclaration.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/TypeLevel/MethodDeclaration.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/TypeLevel/ParameterDeclarationExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/TypeLevel/PropertyDeclaration.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/TypeLevel/PropertyGetSetRegion.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/General/TypeReference.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/INode.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/ParametrizedNode.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/VBNet/Expressions/AddressOfExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/VBNet/Expressions/ClassReferenceExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/VBNet/Expressions/TypeOfIsExpression.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/VBNet/GlobalScope/OptionDeclaration.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/VBNet/Statements/AddHandlerStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/VBNet/Statements/EndStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/VBNet/Statements/EraseStatements.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/VBNet/Statements/ErrorStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/VBNet/Statements/ExitStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/VBNet/Statements/ForNextStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/VBNet/Statements/OnErrorStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/VBNet/Statements/RaiseEventStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/VBNet/Statements/ReDimStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/VBNet/Statements/RemoveHandlerStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/VBNet/Statements/ResumeStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/VBNet/Statements/StopStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/VBNet/Statements/WithStatement.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AST/VBNet/TypeLevel/DeclareDeclaration.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/AbstractParser.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/CSharp/cs.ATG create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/CSharp/trace.txt create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/Errors.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/Frames/OldSharpCoco.exe create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/Frames/Parser.frame create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/Frames/Parser.frame.new create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/Frames/Parser.frame.old create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/Frames/Scanner.frame create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/Frames/SharpCoco.exe create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/Frames/trace.txt create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/IParser.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/Modifiers.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/ParserFactory.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/VBNet/ParamModifier.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/Visitors/AbstractASTVisitor.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/Visitors/IASTVisitor.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/Visitors/LookupTableVisitor.cs create mode 100644 src/Libraries/NRefactory/Project/Src/Parser/gen.bat create mode 100644 src/Libraries/NRefactory/Test/AssemblyInfo.cs create mode 100644 src/Libraries/NRefactory/Test/General/UnitTest.cs create mode 100644 src/Libraries/NRefactory/Test/Lexer/CSharp/LexerTest.cs create mode 100644 src/Libraries/NRefactory/Test/Lexer/VBNet/LexerTests.cs create mode 100644 src/Libraries/NRefactory/Test/Main.cs create mode 100644 src/Libraries/NRefactory/Test/NRefactoryTests.csproj create mode 100644 src/Libraries/NRefactory/Test/NRefactoryTests.csproj.user create mode 100644 src/Libraries/NRefactory/Test/Output/CSharp/CSharpOutputTest.cs create mode 100644 src/Libraries/NRefactory/Test/Output/CodeDOM/CodeDOMParenthesizedExpressionTest.cs create mode 100644 src/Libraries/NRefactory/Test/Output/CodeDOM/CodeDOMPrimitiveExpressionTest.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/ArrayCreateExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/AssignmentExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/BaseReferenceExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/BinaryOperatorExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/CastExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/CheckedExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/ClassReferenceExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/ConditionalExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/FieldReferenceExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/IdentifierExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/IndexerExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/InvocationExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/ObjectCreateExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/ParenthesizedExpressionTest.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/PointerReferenceExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/PrimitiveExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/SizeOfExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/StackAllocExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/ThisReferenceExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/TypeOfExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/TypeOfIsExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/UnaryOperatorExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Expressions/UncheckedExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/GlobalScope/AttributeSectionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/GlobalScope/DelegateDeclarationTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/GlobalScope/NamespaceDeclarationTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/GlobalScope/OptionDeclarationTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/GlobalScope/TypeDeclarationTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/GlobalScope/UsingDeclarationTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/ParseUtilCSharp.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/ParseUtilVBNet.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/AddHandlerStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/BlockStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/BreakStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/CheckedStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/ContinueStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/DoLoopStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/EmptyStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/EndStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/EraseStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/ErrorStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/FixedStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/ForNextStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/ForStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/ForeachStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/GotoCaseStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/GotoStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/IfElseStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/LabelStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/LocalVariableDeclarationTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/LockStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/OnErrorStatementTest.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/RaiseEventStatementTest.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/ReDimStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/RemoveHandlerStatement.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/ResumeStatement.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/ReturnStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/StatementExpressionTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/StopStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/SwitchStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/ThrowStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/TryCatchStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/UncheckedStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/UnsafeStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/UsingStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/Statements/WithStatementTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/TypeLevel/ConstructorDeclarationTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/TypeLevel/DeclareDeclarationTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/TypeLevel/DestructorDeclarationTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/TypeLevel/EventDeclarationTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/TypeLevel/FieldDeclarationTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/TypeLevel/IndexerDeclarationTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/TypeLevel/MethodDeclarationTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/TypeLevel/OperatorDeclarationTests.cs create mode 100644 src/Libraries/NRefactory/Test/Parser/TypeLevel/PropertyDeclarationTests.cs create mode 100644 src/Libraries/NUnitFramework/license.rtf create mode 100644 src/Libraries/NUnitFramework/nunit.key create mode 100644 src/Libraries/NUnitFramework/resources/NUnit.Util.Transform.resources create mode 100644 src/Libraries/NUnitFramework/src/core/AssemblyInfo.cs create mode 100644 src/Libraries/NUnitFramework/src/core/CategoryFilter.cs create mode 100644 src/Libraries/NUnitFramework/src/core/CategoryManager.cs create mode 100644 src/Libraries/NUnitFramework/src/core/EmptyFilter.cs create mode 100644 src/Libraries/NUnitFramework/src/core/EventListener.cs create mode 100644 src/Libraries/NUnitFramework/src/core/ExpectedExceptionTestCase.cs create mode 100644 src/Libraries/NUnitFramework/src/core/Filter.cs create mode 100644 src/Libraries/NUnitFramework/src/core/ITest.cs create mode 100644 src/Libraries/NUnitFramework/src/core/ITestEvents.cs create mode 100644 src/Libraries/NUnitFramework/src/core/InvalidSuiteException.cs create mode 100644 src/Libraries/NUnitFramework/src/core/InvalidTestFixtureException.cs create mode 100644 src/Libraries/NUnitFramework/src/core/LegacySuite.cs create mode 100644 src/Libraries/NUnitFramework/src/core/LongLivingMarshalByRefObject.cs create mode 100644 src/Libraries/NUnitFramework/src/core/NameFilter.cs create mode 100644 src/Libraries/NUnitFramework/src/core/NamespaceSuite.cs create mode 100644 src/Libraries/NUnitFramework/src/core/NoTestFixturesException.cs create mode 100644 src/Libraries/NUnitFramework/src/core/NormalTestCase.cs create mode 100644 src/Libraries/NUnitFramework/src/core/NotRunnableTestCase.cs create mode 100644 src/Libraries/NUnitFramework/src/core/NullListener.cs create mode 100644 src/Libraries/NUnitFramework/src/core/NunitException.cs create mode 100644 src/Libraries/NUnitFramework/src/core/Reflect.cs create mode 100644 src/Libraries/NUnitFramework/src/core/RemoteTestRunner.cs create mode 100644 src/Libraries/NUnitFramework/src/core/ResultVisitor.cs create mode 100644 src/Libraries/NUnitFramework/src/core/Results.xsd create mode 100644 src/Libraries/NUnitFramework/src/core/RootTestSuite.cs create mode 100644 src/Libraries/NUnitFramework/src/core/StringTextWriter.cs create mode 100644 src/Libraries/NUnitFramework/src/core/Summary.xslt create mode 100644 src/Libraries/NUnitFramework/src/core/TemplateTestCase.cs create mode 100644 src/Libraries/NUnitFramework/src/core/Test.cs create mode 100644 src/Libraries/NUnitFramework/src/core/TestAssembly.cs create mode 100644 src/Libraries/NUnitFramework/src/core/TestCase.cs create mode 100644 src/Libraries/NUnitFramework/src/core/TestCaseBuilder.cs create mode 100644 src/Libraries/NUnitFramework/src/core/TestCaseResult.cs create mode 100644 src/Libraries/NUnitFramework/src/core/TestEventArgs.cs create mode 100644 src/Libraries/NUnitFramework/src/core/TestEventDispatcher.cs create mode 100644 src/Libraries/NUnitFramework/src/core/TestFixture.cs create mode 100644 src/Libraries/NUnitFramework/src/core/TestResult.cs create mode 100644 src/Libraries/NUnitFramework/src/core/TestRunner.cs create mode 100644 src/Libraries/NUnitFramework/src/core/TestRunnerThread.cs create mode 100644 src/Libraries/NUnitFramework/src/core/TestSuite.cs create mode 100644 src/Libraries/NUnitFramework/src/core/TestSuiteBuilder.cs create mode 100644 src/Libraries/NUnitFramework/src/core/TestSuiteResult.cs create mode 100644 src/Libraries/NUnitFramework/src/core/nunit.core.build create mode 100644 src/Libraries/NUnitFramework/src/core/nunit.core.dll.csproj create mode 100644 src/Libraries/NUnitFramework/src/framework/AssemblyInfo.cs create mode 100644 src/Libraries/NUnitFramework/src/framework/Assert.cs create mode 100644 src/Libraries/NUnitFramework/src/framework/Assertion.cs create mode 100644 src/Libraries/NUnitFramework/src/framework/AssertionException.cs create mode 100644 src/Libraries/NUnitFramework/src/framework/AssertionFailureMessage.cs create mode 100644 src/Libraries/NUnitFramework/src/framework/CategoryAttribute.cs create mode 100644 src/Libraries/NUnitFramework/src/framework/ExpectedExceptionAttribute.cs create mode 100644 src/Libraries/NUnitFramework/src/framework/ExplicitAttribute.cs create mode 100644 src/Libraries/NUnitFramework/src/framework/IgnoreAttribute.cs create mode 100644 src/Libraries/NUnitFramework/src/framework/IgnoreException.cs create mode 100644 src/Libraries/NUnitFramework/src/framework/OldTestCase.cs create mode 100644 src/Libraries/NUnitFramework/src/framework/SetUpAttribute.cs create mode 100644 src/Libraries/NUnitFramework/src/framework/SuiteAttribute.cs create mode 100644 src/Libraries/NUnitFramework/src/framework/TearDownAttribute.cs create mode 100644 src/Libraries/NUnitFramework/src/framework/TestAttribute.cs create mode 100644 src/Libraries/NUnitFramework/src/framework/TestFixtureAttribute.cs create mode 100644 src/Libraries/NUnitFramework/src/framework/TestFixtureSetUpAttribute.cs create mode 100644 src/Libraries/NUnitFramework/src/framework/TestFixtureTearDownAttribute.cs create mode 100644 src/Libraries/NUnitFramework/src/framework/nunit.framework.build create mode 100644 src/Libraries/NUnitFramework/src/framework/nunit.framework.dll.csproj create mode 100644 src/Libraries/NUnitFramework/src/util/AssemblyInfo.cs create mode 100644 src/Libraries/NUnitFramework/src/util/AssemblyList.cs create mode 100644 src/Libraries/NUnitFramework/src/util/AssemblyListItem.cs create mode 100644 src/Libraries/NUnitFramework/src/util/AssemblyWatcher.cs create mode 100644 src/Libraries/NUnitFramework/src/util/CommandLineOptions.cs create mode 100644 src/Libraries/NUnitFramework/src/util/ConsoleOptions.cs create mode 100644 src/Libraries/NUnitFramework/src/util/ConsoleWriter.cs create mode 100644 src/Libraries/NUnitFramework/src/util/FormSettings.cs create mode 100644 src/Libraries/NUnitFramework/src/util/GuiOptions.cs create mode 100644 src/Libraries/NUnitFramework/src/util/ITestEvents.cs create mode 100644 src/Libraries/NUnitFramework/src/util/ITestLoader.cs create mode 100644 src/Libraries/NUnitFramework/src/util/NUnitGuiSettings.cs create mode 100644 src/Libraries/NUnitFramework/src/util/NUnitProject.cs create mode 100644 src/Libraries/NUnitFramework/src/util/NUnitRegistry.cs create mode 100644 src/Libraries/NUnitFramework/src/util/OptionSettings.cs create mode 100644 src/Libraries/NUnitFramework/src/util/ProjectConfig.cs create mode 100644 src/Libraries/NUnitFramework/src/util/ProjectConfigCollection.cs create mode 100644 src/Libraries/NUnitFramework/src/util/ProjectFormatException.cs create mode 100644 src/Libraries/NUnitFramework/src/util/ProjectPath.cs create mode 100644 src/Libraries/NUnitFramework/src/util/RecentFileSettings.cs create mode 100644 src/Libraries/NUnitFramework/src/util/RecentProjectSettings.cs create mode 100644 src/Libraries/NUnitFramework/src/util/RegistrySettingsStorage.cs create mode 100644 src/Libraries/NUnitFramework/src/util/ResultSummarizer.cs create mode 100644 src/Libraries/NUnitFramework/src/util/SettingsGroup.cs create mode 100644 src/Libraries/NUnitFramework/src/util/SettingsStorage.cs create mode 100644 src/Libraries/NUnitFramework/src/util/StackTraceFilter.cs create mode 100644 src/Libraries/NUnitFramework/src/util/SummaryVisitor.cs create mode 100644 src/Libraries/NUnitFramework/src/util/TestDomain.cs create mode 100644 src/Libraries/NUnitFramework/src/util/TestEventArgs.cs create mode 100644 src/Libraries/NUnitFramework/src/util/TestEventDispatcher.cs create mode 100644 src/Libraries/NUnitFramework/src/util/TestExceptionHandler.cs create mode 100644 src/Libraries/NUnitFramework/src/util/TestLoader.cs create mode 100644 src/Libraries/NUnitFramework/src/util/TestResultItem.cs create mode 100644 src/Libraries/NUnitFramework/src/util/Transform.resx create mode 100644 src/Libraries/NUnitFramework/src/util/UIHelper.cs create mode 100644 src/Libraries/NUnitFramework/src/util/UITestNode.cs create mode 100644 src/Libraries/NUnitFramework/src/util/UserSettings.cs create mode 100644 src/Libraries/NUnitFramework/src/util/VSProject.cs create mode 100644 src/Libraries/NUnitFramework/src/util/VSProjectConfig.cs create mode 100644 src/Libraries/NUnitFramework/src/util/VSProjectConfigCollection.cs create mode 100644 src/Libraries/NUnitFramework/src/util/XmlResultVisitor.cs create mode 100644 src/Libraries/NUnitFramework/src/util/nunit.util.build create mode 100644 src/Libraries/NUnitFramework/src/util/nunit.util.dll.csproj create mode 100644 src/Main/Base/Project/Configuration/AssemblyInfo.cs create mode 100644 src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj create mode 100644 src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj.user create mode 100644 src/Main/Base/Project/Resources/BehaviorTextEditorPanel.xfrm create mode 100644 src/Main/Base/Project/Resources/CodeGenerationOptionsPanel.xfrm create mode 100644 src/Main/Base/Project/Resources/CodeTemplatePanel.xfrm create mode 100644 src/Main/Base/Project/Resources/CombineStartupPanel.xfrm create mode 100644 src/Main/Base/Project/Resources/CommonAboutDialog.xfrm create mode 100644 src/Main/Base/Project/Resources/CompileFileProjectOptions.xfrm create mode 100644 src/Main/Base/Project/Resources/DeployFileOptions.xfrm create mode 100644 src/Main/Base/Project/Resources/EditStandardHeaderPanel.xfrm create mode 100644 src/Main/Base/Project/Resources/EditTemplateDialog.xfrm create mode 100644 src/Main/Base/Project/Resources/ExternalToolOptions.xfrm create mode 100644 src/Main/Base/Project/Resources/FindPanel.xfrm create mode 100644 src/Main/Base/Project/Resources/FontSelectionPanel.xfrm create mode 100644 src/Main/Base/Project/Resources/GeneralProjectOptions.xfrm create mode 100644 src/Main/Base/Project/Resources/GeneralTextEditorPanel.xfrm create mode 100644 src/Main/Base/Project/Resources/GotoLineNumberDialog.xfrm create mode 100644 src/Main/Base/Project/Resources/ICSharpCode.SharpDevelop.snk create mode 100644 src/Main/Base/Project/Resources/InputBox.xfrm create mode 100644 src/Main/Base/Project/Resources/LoadSaveOptionPanel.xfrm create mode 100644 src/Main/Base/Project/Resources/MarkersTextEditorPanel.xfrm create mode 100644 src/Main/Base/Project/Resources/NewFileDialog.xfrm create mode 100644 src/Main/Base/Project/Resources/NewFileWithNameDialog.xfrm create mode 100644 src/Main/Base/Project/Resources/NewProjectDialog.xfrm create mode 100644 src/Main/Base/Project/Resources/OutputWindowOptionsPanel.xfrm create mode 100644 src/Main/Base/Project/Resources/ProjectAndCombineOptions.xfrm create mode 100644 src/Main/Base/Project/Resources/ReplacePanel.xfrm create mode 100644 src/Main/Base/Project/Resources/SelectStylePanel.xfrm create mode 100644 src/Main/Base/Project/Resources/SortOptionsDialog.xfrm create mode 100644 src/Main/Base/Project/Resources/TabbedOptionsDialog.xfrm create mode 100644 src/Main/Base/Project/Resources/TaskListOptions.xfrm create mode 100644 src/Main/Base/Project/Resources/TreeViewOptionsDialog.xfrm create mode 100644 src/Main/Base/Project/Resources/ViewGPLDialog.xfrm create mode 100644 src/Main/Base/Project/Resources/WordCountDialog.xfrm create mode 100644 src/Main/Base/Project/Src/Commands/AutostartCommands.cs create mode 100644 src/Main/Base/Project/Src/Commands/BuildCommands.cs create mode 100644 src/Main/Base/Project/Src/Commands/ChooseConfigurationCommand.cs create mode 100644 src/Main/Base/Project/Src/Commands/ChooseLayoutCommand.cs create mode 100644 src/Main/Base/Project/Src/Commands/CustomStringTagProvider.cs create mode 100644 src/Main/Base/Project/Src/Commands/DebugCommands.cs create mode 100644 src/Main/Base/Project/Src/Commands/EditCommands.cs create mode 100644 src/Main/Base/Project/Src/Commands/FileCommands.cs create mode 100644 src/Main/Base/Project/Src/Commands/FileMenuCommands.cs create mode 100644 src/Main/Base/Project/Src/Commands/FileTabStripCommands.cs create mode 100644 src/Main/Base/Project/Src/Commands/HelpCommands.cs create mode 100644 src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs create mode 100644 src/Main/Base/Project/Src/Commands/ProjectBrowserCommands/ResourceFolderNodeCommands.cs create mode 100644 src/Main/Base/Project/Src/Commands/ProjectMenuCommands.cs create mode 100644 src/Main/Base/Project/Src/Commands/SideBarCommands.cs create mode 100644 src/Main/Base/Project/Src/Commands/ToolsCommands.cs create mode 100644 src/Main/Base/Project/Src/Commands/VBConverter/CSharpConvertBuffer.cs create mode 100644 src/Main/Base/Project/Src/Commands/VBConverter/ConvertBuffer.cs create mode 100644 src/Main/Base/Project/Src/Commands/WindowCommands.cs create mode 100644 src/Main/Base/Project/Src/Dom/ClassType.cs create mode 100644 src/Main/Base/Project/Src/Dom/Comment.cs create mode 100644 src/Main/Base/Project/Src/Dom/FoldingRegion.cs create mode 100644 src/Main/Base/Project/Src/Dom/IAttribute.cs create mode 100644 src/Main/Base/Project/Src/Dom/IAttributeSection.cs create mode 100644 src/Main/Base/Project/Src/Dom/IClass.cs create mode 100644 src/Main/Base/Project/Src/Dom/IComment.cs create mode 100644 src/Main/Base/Project/Src/Dom/ICompilationUnit.cs create mode 100644 src/Main/Base/Project/Src/Dom/ICompilationUnitBase.cs create mode 100644 src/Main/Base/Project/Src/Dom/IDecoration.cs create mode 100644 src/Main/Base/Project/Src/Dom/IEvent.cs create mode 100644 src/Main/Base/Project/Src/Dom/IExpressionFinder.cs create mode 100644 src/Main/Base/Project/Src/Dom/IField.cs create mode 100644 src/Main/Base/Project/Src/Dom/IIndexer.cs create mode 100644 src/Main/Base/Project/Src/Dom/IMember.cs create mode 100644 src/Main/Base/Project/Src/Dom/IMethod.cs create mode 100644 src/Main/Base/Project/Src/Dom/IParameter.cs create mode 100644 src/Main/Base/Project/Src/Dom/IParser.cs create mode 100644 src/Main/Base/Project/Src/Dom/IProperty.cs create mode 100644 src/Main/Base/Project/Src/Dom/IRegion.cs create mode 100644 src/Main/Base/Project/Src/Dom/IResolver.cs create mode 100644 src/Main/Base/Project/Src/Dom/IReturnType.cs create mode 100644 src/Main/Base/Project/Src/Dom/IUsing.cs create mode 100644 src/Main/Base/Project/Src/Dom/Implementations/AbstractAttribute.cs create mode 100644 src/Main/Base/Project/Src/Dom/Implementations/AbstractClass.cs create mode 100644 src/Main/Base/Project/Src/Dom/Implementations/AbstractComment.cs create mode 100644 src/Main/Base/Project/Src/Dom/Implementations/AbstractCompilationUnit.cs create mode 100644 src/Main/Base/Project/Src/Dom/Implementations/AbstractDecoration.cs create mode 100644 src/Main/Base/Project/Src/Dom/Implementations/AbstractEvent.cs create mode 100644 src/Main/Base/Project/Src/Dom/Implementations/AbstractField.cs create mode 100644 src/Main/Base/Project/Src/Dom/Implementations/AbstractIndexer.cs create mode 100644 src/Main/Base/Project/Src/Dom/Implementations/AbstractMember.cs create mode 100644 src/Main/Base/Project/Src/Dom/Implementations/AbstractMethod.cs create mode 100644 src/Main/Base/Project/Src/Dom/Implementations/AbstractNamedEntity.cs create mode 100644 src/Main/Base/Project/Src/Dom/Implementations/AbstractParameter.cs create mode 100644 src/Main/Base/Project/Src/Dom/Implementations/AbstractProperty.cs create mode 100644 src/Main/Base/Project/Src/Dom/Implementations/AbstractReturnType.cs create mode 100644 src/Main/Base/Project/Src/Dom/Implementations/AbstractUsing.cs create mode 100644 src/Main/Base/Project/Src/Dom/Implementations/DefaultRegion.cs create mode 100644 src/Main/Base/Project/Src/Dom/ModifierEnum.cs create mode 100644 src/Main/Base/Project/Src/Dom/NRefactoryResolver/AttributeSection.cs create mode 100644 src/Main/Base/Project/Src/Dom/NRefactoryResolver/Class.cs create mode 100644 src/Main/Base/Project/Src/Dom/NRefactoryResolver/Constructor.cs create mode 100644 src/Main/Base/Project/Src/Dom/NRefactoryResolver/Destructor.cs create mode 100644 src/Main/Base/Project/Src/Dom/NRefactoryResolver/Event.cs create mode 100644 src/Main/Base/Project/Src/Dom/NRefactoryResolver/Field.cs create mode 100644 src/Main/Base/Project/Src/Dom/NRefactoryResolver/Indexer.cs create mode 100644 src/Main/Base/Project/Src/Dom/NRefactoryResolver/Method.cs create mode 100644 src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs create mode 100644 src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs create mode 100644 src/Main/Base/Project/Src/Dom/NRefactoryResolver/Parameter.cs create mode 100644 src/Main/Base/Project/Src/Dom/NRefactoryResolver/Property.cs create mode 100644 src/Main/Base/Project/Src/Dom/NRefactoryResolver/ReturnType.cs create mode 100644 src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs create mode 100644 src/Main/Base/Project/Src/Dom/ParameterModifier.cs create mode 100644 src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionClass.cs create mode 100644 src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionEvent.cs create mode 100644 src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionField.cs create mode 100644 src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionIndexer.cs create mode 100644 src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionMethod.cs create mode 100644 src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionParameter.cs create mode 100644 src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionProperty.cs create mode 100644 src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionReturnType.cs create mode 100644 src/Main/Base/Project/Src/Dom/Tag.cs create mode 100644 src/Main/Base/Project/Src/Gui/AbstractBaseViewContent.cs create mode 100644 src/Main/Base/Project/Src/Gui/AbstractPadContent.cs create mode 100644 src/Main/Base/Project/Src/Gui/AbstractSecondaryViewContent.cs create mode 100644 src/Main/Base/Project/Src/Gui/AbstractViewContent.cs create mode 100644 src/Main/Base/Project/Src/Gui/BrowserDisplayBinding/BrowserDisplayBinding.cs create mode 100644 src/Main/Base/Project/Src/Gui/BrowserDisplayBinding/HtmlViewPane.cs create mode 100644 src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtFolderNode.cs create mode 100644 src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs create mode 100644 src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs create mode 100644 src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeViewComparer.cs create mode 100644 src/Main/Base/Project/Src/Gui/Components/FontSelectionPanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/CustomTypeConverter/BooleanTypeConverter.cs create mode 100644 src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/CustomTypeConverter/TemplateTypeConverter.cs create mode 100644 src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/LocalizedObject.cs create mode 100644 src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/LocalizedProperty.cs create mode 100644 src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/LocalizedPropertyAttribute.cs create mode 100644 src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/LocalizedPropertyDescriptor.cs create mode 100644 src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/LocalizedTypeDescriptor.cs create mode 100644 src/Main/Base/Project/Src/Gui/Components/SideBar/AxSideBar.cs create mode 100644 src/Main/Base/Project/Src/Gui/Components/SideBar/AxSideTab.cs create mode 100644 src/Main/Base/Project/Src/Gui/Components/SideBar/AxSideTabItem.cs create mode 100644 src/Main/Base/Project/Src/Gui/Components/SideBar/SharpDevelopSideBar.cs create mode 100644 src/Main/Base/Project/Src/Gui/Components/SideBar/SharpDevelopSideTabItem.cs create mode 100644 src/Main/Base/Project/Src/Gui/Components/StatusBar/SdStatusBar.cs create mode 100644 src/Main/Base/Project/Src/Gui/ContentInterfaces/IClipboardHandler.cs create mode 100644 src/Main/Base/Project/Src/Gui/ContentInterfaces/ICustomizedCommands.cs create mode 100644 src/Main/Base/Project/Src/Gui/ContentInterfaces/IEditable.cs create mode 100644 src/Main/Base/Project/Src/Gui/ContentInterfaces/IHelpProvider.cs create mode 100644 src/Main/Base/Project/Src/Gui/ContentInterfaces/IParsableContent.cs create mode 100644 src/Main/Base/Project/Src/Gui/ContentInterfaces/IParseInformationListener.cs create mode 100644 src/Main/Base/Project/Src/Gui/ContentInterfaces/IPositionable.cs create mode 100644 src/Main/Base/Project/Src/Gui/ContentInterfaces/IPrintable.cs create mode 100644 src/Main/Base/Project/Src/Gui/ContentInterfaces/IUndoHandler.cs create mode 100644 src/Main/Base/Project/Src/Gui/ContentInterfaces/IViewContentMemento.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/AbstractOptionPanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/CombineConfiguration/CombineConfigurationPanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/CombineConfiguration/CombineDependencyPanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/CombineConfiguration/CombineStartupPanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/CombineConfiguration/ConfigurationManager.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/CommonAboutDialog.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/DirtyFilesDialog.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/FolderDialog.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/InputBox.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/EditTemplateDialog.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ExternalToolPanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/CodeGenerationPanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/EditStandardHeaderPanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/LoadSavePanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/ProjectAndCombinePanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/SelectCulturePanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/SelectStylePanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/TaskListOptions.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/OutputWindowOptionsPanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/CompileFileProjectOptions.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/DeployFileOptions.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/GeneralProjectOptions.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/PropertyGridPanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/ProjectOptionsDialog.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/ProjectOptionsView.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/AddWebReferenceDialog.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/AssemblyReferencePanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/COMReferencePanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/FusionNative.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/GacReferencePanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ProjectReferencePanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/SelectReferenceDialog.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/WebReference.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/SharpDevelopAboutPanels.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/TabbedOptions.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/TipOfTheDay.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/TreeViewOptions.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/ViewGPLDialog.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/Wizard/AbstractWizardPanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/Wizard/CurrentPanelPanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/Wizard/IWizardPanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/Wizard/StatusPanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/Wizard/WizardDialog.cs create mode 100644 src/Main/Base/Project/Src/Gui/Dialogs/WordCountDialog.cs create mode 100644 src/Main/Base/Project/Src/Gui/IBaseViewContent.cs create mode 100644 src/Main/Base/Project/Src/Gui/IMementoCapable.cs create mode 100644 src/Main/Base/Project/Src/Gui/IPadContent.cs create mode 100644 src/Main/Base/Project/Src/Gui/IProgressMonitor.cs create mode 100644 src/Main/Base/Project/Src/Gui/ISecondaryViewContent.cs create mode 100644 src/Main/Base/Project/Src/Gui/IViewContent.cs create mode 100644 src/Main/Base/Project/Src/Gui/IWorkbench.cs create mode 100644 src/Main/Base/Project/Src/Gui/IWorkbenchLayout.cs create mode 100644 src/Main/Base/Project/Src/Gui/IWorkbenchWindow.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowser.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowserToolbarCommands.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/BaseTypesNode.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/ClassNode.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/DerivedTypesNode.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/MemberNode.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/ProjectNode.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/ReferenceFolderNode.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompilerMessageView.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompulerMessageViewToolbarCommands.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/FileLineReference.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/MessageViewCategory.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/OutputTextLineParser.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/TextEventHandler.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorList.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorListToolbarCommands.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/FileScout.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/HelpBrowser/HelpBrowser.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/OpenTaskView.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/ClipboardHandlerNodeCommands.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/DefaultFileNodeCommands.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/ProjectNodeCommands.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/ReferenceFolderNodeCommands.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/ToolbarCommands.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/NodeBuilder/DefaultDotNetNodeBuilder.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/NodeBuilder/IProjectNodeBuilder.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserPad.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserPanel.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/AbstractProjectBrowserTreeNode.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/CustomFolderNode.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/CustomNode.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ProjectNode.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ReferenceFolder.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ReferenceNode.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionFolderNode.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionNode.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/Util/FileRemoveTreeNodeVisitor.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/Util/FileRenameTreeNodeVisitor.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/Util/ProjectBrowserTreeNodeVisitor.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/Util/SolutionFolderRemoveVisitor.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/Util/UpdateReferencesVisitor.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyPad.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyPadCommands.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/SideBarView.cs create mode 100644 src/Main/Base/Project/Src/Gui/Pads/TreeViewMemento.cs create mode 100644 src/Main/Base/Project/Src/Gui/Workbench/DefaultWorkbench.cs create mode 100644 src/Main/Base/Project/Src/Gui/Workbench/Layouts/LayoutConfiguration.cs create mode 100644 src/Main/Base/Project/Src/Gui/Workbench/Layouts/SdiWorkspaceLayout.cs create mode 100644 src/Main/Base/Project/Src/Gui/Workbench/Layouts/SdiWorkspaceWindow.cs create mode 100644 src/Main/Base/Project/Src/Gui/Workbench/ViewContentEventHandler.cs create mode 100644 src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs create mode 100644 src/Main/Base/Project/Src/Gui/XmlForms/BaseSharpDevelopForm.cs create mode 100644 src/Main/Base/Project/Src/Gui/XmlForms/BaseSharpDevelopUserControl.cs create mode 100644 src/Main/Base/Project/Src/Gui/XmlForms/Lib/DefaultObjectCreator.cs create mode 100644 src/Main/Base/Project/Src/Gui/XmlForms/Lib/IObjectCreator.cs create mode 100644 src/Main/Base/Project/Src/Gui/XmlForms/Lib/IPropertyValueCreator.cs create mode 100644 src/Main/Base/Project/Src/Gui/XmlForms/Lib/IStringValueFilter.cs create mode 100644 src/Main/Base/Project/Src/Gui/XmlForms/Lib/StringWrapper.cs create mode 100644 src/Main/Base/Project/Src/Gui/XmlForms/Lib/XmlForm.cs create mode 100644 src/Main/Base/Project/Src/Gui/XmlForms/Lib/XmlLoader.cs create mode 100644 src/Main/Base/Project/Src/Gui/XmlForms/Lib/XmlUserControl.cs create mode 100644 src/Main/Base/Project/Src/Gui/XmlForms/SharpDevelopObjectCreator.cs create mode 100644 src/Main/Base/Project/Src/Gui/XmlForms/SharpDevelopPropertyValueCreator.cs create mode 100644 src/Main/Base/Project/Src/Gui/XmlForms/SharpDevelopStringValueFilter.cs create mode 100644 src/Main/Base/Project/Src/Internal/Auswerter/ActiveContentExtensionAuswerter.cs create mode 100644 src/Main/Base/Project/Src/Internal/Auswerter/ActiveViewContentUntitledAuswerter.cs create mode 100644 src/Main/Base/Project/Src/Internal/Auswerter/ActiveWindowStateAuswerter.cs create mode 100644 src/Main/Base/Project/Src/Internal/Auswerter/CombineOpenAuswerter.cs create mode 100644 src/Main/Base/Project/Src/Internal/Auswerter/DebuggerSupportsAuswerter.cs create mode 100644 src/Main/Base/Project/Src/Internal/Auswerter/IsProcessRunningAuswerter.cs create mode 100644 src/Main/Base/Project/Src/Internal/Auswerter/OpenWindowStateAuswerter.cs create mode 100644 src/Main/Base/Project/Src/Internal/Auswerter/ProjectActiveAuswerter.cs create mode 100644 src/Main/Base/Project/Src/Internal/Auswerter/ProjectOpenAuswerter.cs create mode 100644 src/Main/Base/Project/Src/Internal/Auswerter/WindowActiveAuswerter.cs create mode 100644 src/Main/Base/Project/Src/Internal/Auswerter/WindowOpenAuswerter.cs create mode 100644 src/Main/Base/Project/Src/Internal/DiffUtility.cs create mode 100644 src/Main/Base/Project/Src/Internal/Erbauer/DefaultDialogPanelDescriptor.cs create mode 100644 src/Main/Base/Project/Src/Internal/Erbauer/DialogPanelErbauer.cs create mode 100644 src/Main/Base/Project/Src/Internal/Erbauer/IDialogPanel.cs create mode 100644 src/Main/Base/Project/Src/Internal/Erbauer/IDialogPanelDescriptor.cs create mode 100644 src/Main/Base/Project/Src/Internal/Erbauer/PadDescriptor.cs create mode 100644 src/Main/Base/Project/Src/Internal/Erbauer/PadErbauer.cs create mode 100644 src/Main/Base/Project/Src/Internal/ExternalTool/ExternalTool.cs create mode 100644 src/Main/Base/Project/Src/Internal/ExternalTool/ToolLoader.cs create mode 100644 src/Main/Base/Project/Src/Internal/Templates/CodeTemplate.cs create mode 100644 src/Main/Base/Project/Src/Internal/Templates/CodeTemplateGroup.cs create mode 100644 src/Main/Base/Project/Src/Internal/Templates/CodeTemplateLoader.cs create mode 100644 src/Main/Base/Project/Src/Internal/Templates/File/FileDescriptionTemplate.cs create mode 100644 src/Main/Base/Project/Src/Internal/Templates/File/FileTemplate.cs create mode 100644 src/Main/Base/Project/Src/Internal/Templates/File/INewFileCreator.cs create mode 100644 src/Main/Base/Project/Src/Internal/Templates/File/ScriptRunner.cs create mode 100644 src/Main/Base/Project/Src/Internal/Templates/Project/CombineDescriptor.cs create mode 100644 src/Main/Base/Project/Src/Internal/Templates/Project/ProjectCreateInformation.cs create mode 100644 src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs create mode 100644 src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs create mode 100644 src/Main/Base/Project/Src/Internal/Templates/StandardHeaders.cs create mode 100644 src/Main/Base/Project/Src/Internal/Templates/TextTemplate.cs create mode 100644 src/Main/Base/Project/Src/Internal/Undo/IUndoableOperation.cs create mode 100644 src/Main/Base/Project/Src/Internal/Undo/UndoQueue.cs create mode 100644 src/Main/Base/Project/Src/Internal/Undo/UndoStack.cs create mode 100644 src/Main/Base/Project/Src/Project/Converter/CombineToSolution.cs create mode 100644 src/Main/Base/Project/Src/Project/Converter/PrjxToSolutionProject.cs create mode 100644 src/Main/Base/Project/Src/Project/IProject.cs create mode 100644 src/Main/Base/Project/Src/Project/Items/ComReferenceProjectItem.cs create mode 100644 src/Main/Base/Project/Src/Project/Items/FileProjectItem.cs create mode 100644 src/Main/Base/Project/Src/Project/Items/ProjectItem.cs create mode 100644 src/Main/Base/Project/Src/Project/Items/ProjectItemFactory.cs create mode 100644 src/Main/Base/Project/Src/Project/Items/ProjectReferenceProjectItem.cs create mode 100644 src/Main/Base/Project/Src/Project/Items/ReferenceProjectItem.cs create mode 100644 src/Main/Base/Project/Src/Project/Items/TypeLibrary.cs create mode 100644 src/Main/Base/Project/Src/Project/Items/UnknownProjectItem.cs create mode 100644 src/Main/Base/Project/Src/Project/MSBuildProject.cs create mode 100644 src/Main/Base/Project/Src/Project/MissingProject.cs create mode 100644 src/Main/Base/Project/Src/Project/PropertyGroup.cs create mode 100644 src/Main/Base/Project/Src/Project/Solution/AbstractProject.cs create mode 100644 src/Main/Base/Project/Src/Project/Solution/AbstractSolutionFolder.cs create mode 100644 src/Main/Base/Project/Src/Project/Solution/ISolutionFolder.cs create mode 100644 src/Main/Base/Project/Src/Project/Solution/ISolutionFolderContainer.cs create mode 100644 src/Main/Base/Project/Src/Project/Solution/ProjectSection.cs create mode 100644 src/Main/Base/Project/Src/Project/Solution/Solution.cs create mode 100644 src/Main/Base/Project/Src/Project/Solution/SolutionFolder.cs create mode 100644 src/Main/Base/Project/Src/Project/Solution/SolutionItem.cs create mode 100644 src/Main/Base/Project/Src/Project/UnknownProject.cs create mode 100644 src/Main/Base/Project/Src/Project/WebReferenceUrl.cs create mode 100644 src/Main/Base/Project/Src/Services/AmbienceService/AbstractAmbience.cs create mode 100644 src/Main/Base/Project/Src/Services/AmbienceService/AmbienceReflectionDecorator.cs create mode 100644 src/Main/Base/Project/Src/Services/AmbienceService/AmbienceService.cs create mode 100644 src/Main/Base/Project/Src/Services/AmbienceService/CodeDOMGeneratorUtility.cs create mode 100644 src/Main/Base/Project/Src/Services/AmbienceService/IAmbience.cs create mode 100644 src/Main/Base/Project/Src/Services/AmbienceService/NetAmbience.cs create mode 100644 src/Main/Base/Project/Src/Services/ClassBrowserIcons/ClassBrowserIconService.cs create mode 100644 src/Main/Base/Project/Src/Services/Debugger/BreakEventHandler.cs create mode 100644 src/Main/Base/Project/Src/Services/Debugger/DebugClasses.cs create mode 100644 src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs create mode 100644 src/Main/Base/Project/Src/Services/Debugger/DefaultDebugger.cs create mode 100644 src/Main/Base/Project/Src/Services/Debugger/IDebugger.cs create mode 100644 src/Main/Base/Project/Src/Services/DisplayBinding/DisplayBindingDescriptor.cs create mode 100644 src/Main/Base/Project/Src/Services/DisplayBinding/DisplayBindingErbauer.cs create mode 100644 src/Main/Base/Project/Src/Services/DisplayBinding/DisplayBindingService.cs create mode 100644 src/Main/Base/Project/Src/Services/DisplayBinding/IDisplayBinding.cs create mode 100644 src/Main/Base/Project/Src/Services/DisplayBinding/ISubDisplayBinding.cs create mode 100644 src/Main/Base/Project/Src/Services/File/FileEventArgs.cs create mode 100644 src/Main/Base/Project/Src/Services/File/FileRenameEventArgs.cs create mode 100644 src/Main/Base/Project/Src/Services/File/FileService.cs create mode 100644 src/Main/Base/Project/Src/Services/File/RecentOpen.cs create mode 100644 src/Main/Base/Project/Src/Services/IconService.cs create mode 100644 src/Main/Base/Project/Src/Services/Language/Language.cs create mode 100644 src/Main/Base/Project/Src/Services/Language/LanguageService.cs create mode 100644 src/Main/Base/Project/Src/Services/LanguageBinding/ILanguageBinding.cs create mode 100644 src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingDescriptor.cs create mode 100644 src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingErbauer.cs create mode 100644 src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingService.cs create mode 100644 src/Main/Base/Project/Src/Services/ParserService/AssemblyInformation.cs create mode 100644 src/Main/Base/Project/Src/Services/ParserService/CaseInsentitiveProjectContent.cs create mode 100644 src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs create mode 100644 src/Main/Base/Project/Src/Services/ParserService/Erbauer/ParserDescriptor.cs create mode 100644 src/Main/Base/Project/Src/Services/ParserService/Erbauer/ParserErbauer.cs create mode 100644 src/Main/Base/Project/Src/Services/ParserService/IProjectContent.cs create mode 100644 src/Main/Base/Project/Src/Services/ParserService/ParseInformation.cs create mode 100644 src/Main/Base/Project/Src/Services/ParserService/ParseInformationEventHandler.cs create mode 100644 src/Main/Base/Project/Src/Services/ParserService/ParserService.cs create mode 100644 src/Main/Base/Project/Src/Services/ParserService/Position.cs create mode 100644 src/Main/Base/Project/Src/Services/ProjectService/ProjectConfigurationEventHandler.cs create mode 100644 src/Main/Base/Project/Src/Services/ProjectService/ProjectEventHandler.cs create mode 100644 src/Main/Base/Project/Src/Services/ProjectService/ProjectReferenceEventHandler.cs create mode 100644 src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs create mode 100644 src/Main/Base/Project/Src/Services/ProjectService/SolutionConfigurationEventHandler.cs create mode 100644 src/Main/Base/Project/Src/Services/ProjectService/SolutionEventHandler.cs create mode 100644 src/Main/Base/Project/Src/Services/ProjectService/SolutionFolderEventHandler.cs create mode 100644 src/Main/Base/Project/Src/Services/StatusBar/StatusBarService.cs create mode 100644 src/Main/Base/Project/Src/Services/Tasks/Task.cs create mode 100644 src/Main/Base/Project/Src/Services/Tasks/TaskService.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Actions.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Bookmarks/Bookmark.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Bookmarks/BookmarkEventHandler.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Bookmarks/BookmarkManager.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Bookmarks/Commands/MenuCommands.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Bookmarks/Pad/BookmarkPad.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Bookmarks/Pad/BookmarkPadToolbarCommands.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Bookmarks/Pad/Nodes/BookmarkFolderNode.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Bookmarks/Pad/Nodes/BookmarkNode.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/CharacterEncodings.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Codons/AddInTreeSyntaxModeProvider.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Codons/EditActionErbauer.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Codons/SyntaxModeErbauer.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/AbstractClassImplementorCodeGenerator.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/AbstractFieldCodeGenerator.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/AbstractPropertyCodeGenerator.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/CodeGenerator.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/ConstructorCodeGenerator.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/EqualsCodeGenerator.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/GetterAndSetterCodeGenerator.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/GetterCodeGenerator.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/InterfaceImplementorCodeGenerator.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/OnXXXMethodsCodeGenerator.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/OverrideMethodsCodeGenerator.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/SetterCodeGenerator.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/ToStringCodeGenerator.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Commands/CommentRegionCommand.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Commands/FoldingCommands.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Commands/FormatCommands.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Commands/GenerateCodeCommand.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Commands/ProjectCommands.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Commands/SearchCommands.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Commands/TextAreaContextmenuCommands.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Commands/ToolCommands.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Conditions/TextContentCondition.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Gui/Dialogs/ExportProjectToHtmlDialog.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Gui/Dialogs/GotoLineNumberDialog.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Gui/Dialogs/SortOptionsDialog.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionData.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionDataProvider.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CommentCompletionDataProvider.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/HtmlDeclarationViewWindow.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/TemplateCompletionDataProvider.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Gui/Editor/ErrorDrawer.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Gui/Editor/ITextAreaControlProvider.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/IndexerInsightDataProvider.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/MethodInsightDataProvider.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Gui/Editor/ParserFoldingStrategy.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextAreaControl.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextEditorProperties.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Gui/Editor/TextEditorDisplayBinding.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Gui/OptionPanels/BehaviorTextEditorPanel.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Gui/OptionPanels/CodeTemplatePanel.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Gui/OptionPanels/GeneralTextEditorPanel.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/Gui/OptionPanels/MarkersTextEditorPanel.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Commands/SearchMainMenuCommands.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Commands/SearchToolbarCommands.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/DocumentIterator/AllOpenDocumentIterator.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/DocumentIterator/CurrentDocumentIterator.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/DocumentIterator/DirectoryDocumentIterator.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/DocumentIterator/IDocumentIterator.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/DocumentIterator/ProvidedDocumentInformation.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/DocumentIterator/WholeProjectDocumentIterator.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/DocumentIterator/WholeSolutionDocumentIterator.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/ITextIteratorBuilder.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/Search.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/SearchAllFinishedEventHandler.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/SearchReplaceInFilesManager.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/SearchReplaceManager.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/SearchReplaceUtilities.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/SearchStrategy/BruteForceSearchStrategy.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/SearchStrategy/ISearchStrategy.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/SearchStrategy/KMPSearchStrategy.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/SearchStrategy/RegExSearchStrategy.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/SearchStrategy/SearchResult.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/SearchStrategy/WildcardSearchStrategy.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/TextIterator/ForwardTextIterator.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/TextIterator/ForwardTextIteratorBuilder.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/TextIterator/ITextIterator.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Gui/SearchAndReplaceDialog.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Gui/SearchAndReplacePanel.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Pad/Nodes/SearchFolderNode.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Pad/Nodes/SearchResultNode.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Pad/Nodes/SearchRootNode.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Pad/SearchResultPanel.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Pad/SearchResultPanelToolbarCommands.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/SearchAndReplace/SearchOptions.cs create mode 100644 src/Main/Base/Project/Src/TextEditor/XmlFormattingStrategy.cs create mode 100644 src/Main/Base/RequiredLibraries/ICSharpCode.SharpZipLib.dll create mode 100644 src/Main/Base/Test/AssemblyInfo.cs create mode 100644 src/Main/Base/Test/NRefactoryResolverTests.cs create mode 100644 src/Main/Core/Project/Configuration/AssemblyInfo.cs create mode 100644 src/Main/Core/Project/ICSharpCode.Core.csproj create mode 100644 src/Main/Core/Project/ICSharpCode.Core.csproj.user create mode 100644 src/Main/Core/Project/Resources/ICSharpCode.Core.doc create mode 100644 src/Main/Core/Project/Resources/ICSharpCode.Core.snk create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/AddIn.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/AddInLoadException.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/Codon.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/ComplexCondition.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/Condition.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/ExtensionPath.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/IAuswerter.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/ICondition.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/IErbauer.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/Runtime.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardAuswerter/CompareAuswerter.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardAuswerter/LazyLoadAuswerter.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardAuswerter/OwnerStateAuswerter.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/ClassErbauer.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/FileFilterErbauer.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/Icon/IconDescriptor.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/Icon/IconErbauer.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/LazyLoaderErbauer.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/AbstractCheckableMenuCommand.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/AbstractMenuCommand.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/Gui/IStatusUpdate.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/Gui/Menu.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/Gui/MenuCheckBox.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/Gui/MenuCommand.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/Gui/MenuSeparator.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/ICheckableMenuCommand.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/IMenuCommand.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/ISubmenuBuilder.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/MenuItemErbauer.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/ToolBarItem/AbstractComboBoxCommand.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/ToolBarItem/Gui/ToolBarCheckBox.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/ToolBarItem/Gui/ToolBarComboBox.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/ToolBarItem/Gui/ToolBarCommand.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/ToolBarItem/Gui/ToolBarDropDownButton.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/ToolBarItem/Gui/ToolBarSeparator.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/ToolBarItem/IComboBoxCommand.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/ToolBarItem/ToolBarItemErbauer.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddInTree.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/AddInTreeNode.cs create mode 100644 src/Main/Core/Project/Src/AddInTree/TreePathNotFoundException.cs create mode 100644 src/Main/Core/Project/Src/CoreException.cs create mode 100644 src/Main/Core/Project/Src/Services/FileUtility/FileNameEventHandler.cs create mode 100644 src/Main/Core/Project/Src/Services/FileUtility/FileUtility.cs create mode 100644 src/Main/Core/Project/Src/Services/FileUtility/SaveErrorChooseDialog.cs create mode 100644 src/Main/Core/Project/Src/Services/FileUtility/SaveErrorInformDialog.cs create mode 100644 src/Main/Core/Project/Src/Services/MenuService/MenuService.cs create mode 100644 src/Main/Core/Project/Src/Services/MessageService/CustomDialog.cs create mode 100644 src/Main/Core/Project/Src/Services/MessageService/MessageService.cs create mode 100644 src/Main/Core/Project/Src/Services/PropertyService/Properties.cs create mode 100644 src/Main/Core/Project/Src/Services/PropertyService/PropertyChangedEvent.cs create mode 100644 src/Main/Core/Project/Src/Services/PropertyService/PropertyService.cs create mode 100644 src/Main/Core/Project/Src/Services/ResourceService/ResourceNotFoundException.cs create mode 100644 src/Main/Core/Project/Src/Services/ResourceService/ResourceService.cs create mode 100644 src/Main/Core/Project/Src/Services/StringParser/IStringTagProvider.cs create mode 100644 src/Main/Core/Project/Src/Services/StringParser/StringParser.cs create mode 100644 src/Main/Core/Project/Src/Services/ToolBarService/ToolBarService.cs create mode 100644 src/Main/Core/Project/Src/Util/AbstractCommand.cs create mode 100644 src/Main/Core/Project/Src/Util/ICommand.cs create mode 100644 src/Main/Core/Project/Src/Util/RightToLeftConverter.cs create mode 100644 src/Main/Core/Test/AddInTreeTests/AddInTreeLoadingTests.cs create mode 100644 src/Main/Core/Test/AddInTreeTests/ExtPathTests.cs create mode 100644 src/Main/Core/Test/AssemblyInfo.cs create mode 100644 src/Main/Core/Test/ICSharpCode.Core.Tests.csproj create mode 100644 src/Main/StartUp/Project/Configuration/AssemblyInfo.cs create mode 100644 src/Main/StartUp/Project/Dialogs/AddInTreeSettingsHandler.cs create mode 100644 src/Main/StartUp/Project/Dialogs/ExceptionBox.cs create mode 100644 src/Main/StartUp/Project/Dialogs/SplashScreen.cs create mode 100644 src/Main/StartUp/Project/Resources/BitmapResources.resources create mode 100644 src/Main/StartUp/Project/Resources/SharpDevelop.exe.manifest create mode 100644 src/Main/StartUp/Project/Resources/SharpDevelop.ico create mode 100644 src/Main/StartUp/Project/Resources/SplashScreen.jpg create mode 100644 src/Main/StartUp/Project/Resources/StartUp.snk create mode 100644 src/Main/StartUp/Project/Resources/StringResources.resources create mode 100644 src/Main/StartUp/Project/SharpDevelop.exe.manifest create mode 100644 src/Main/StartUp/Project/SharpDevelopMain.cs create mode 100644 src/Main/StartUp/Project/StartUp.csproj create mode 100644 src/Main/StartUp/Project/StartUp.csproj.user create mode 100644 src/SharpDevelop.sln create mode 100644 src/Tools/BuildHelpIndex/AssemblyInfo.cs create mode 100644 src/Tools/BuildHelpIndex/BuildHelpIndex.csproj create mode 100644 src/Tools/BuildHelpIndex/BuildHelpIndex.csproj.user create mode 100644 src/Tools/BuildHelpIndex/HelperFunctions.cs create mode 100644 src/Tools/BuildHelpIndex/Main.cs create mode 100644 src/Tools/GacUtil2/AssemblyCache.cs create mode 100644 src/Tools/GacUtil2/AssemblyInfo.cs create mode 100644 src/Tools/GacUtil2/CommandLineSwitchAttribute.cs create mode 100644 src/Tools/GacUtil2/FusionNative.cs create mode 100644 src/Tools/GacUtil2/GacUtil2.exe create mode 100644 src/Tools/GacUtil2/Main.cs create mode 100644 src/Tools/GacUtil2/Parser.cs create mode 100644 src/Tools/HelpConverter/AssemblyInfo.cs create mode 100644 src/Tools/HelpConverter/HelpConverter.csproj create mode 100644 src/Tools/HelpConverter/HelpConverter.csproj.user create mode 100644 src/Tools/HelpConverter/HelpTreeBuilder/AssemblyLoader.cs create mode 100644 src/Tools/HelpConverter/HelpTreeBuilder/ClassNodeBuilder.cs create mode 100644 src/Tools/HelpConverter/HelpTreeBuilder/DelegateNodeBuilder.cs create mode 100644 src/Tools/HelpConverter/HelpTreeBuilder/EnumNodeBuilder.cs create mode 100644 src/Tools/HelpConverter/HelpTreeBuilder/Generator.cs create mode 100644 src/Tools/HelpConverter/HelpTreeBuilder/ITypeNodeBuilder.cs create mode 100644 src/Tools/HelpConverter/HelpTreeBuilder/InterfaceNodeBuilder.cs create mode 100644 src/Tools/HelpConverter/HelpTreeBuilder/StructNodeBuilder.cs create mode 100644 src/Tools/HelpConverter/HelpTreeBuilder/TypeNodeFactory.cs create mode 100644 src/Tools/HelpConverter/HhcFileParser.cs create mode 100644 src/Tools/HelpConverter/Main.cs create mode 100644 src/Tools/LocalizationDbToResFile/AssemblyInfo.cs create mode 100644 src/Tools/LocalizationDbToResFile/LocalizationDbToResFile.csproj create mode 100644 src/Tools/LocalizationDbToResFile/LocalizationDbToResFile.csproj.user create mode 100644 src/Tools/LocalizationDbToResFile/Main.cs create mode 100644 src/Tools/LocalizationXmlToResFile/LocalizationXmlToResFile.cs create mode 100644 src/Tools/LocalizationXmlToResFile/LocalizationXmlToResFile.csproj create mode 100644 src/Tools/LocalizationXmlToResFile/LocalizationXmlToResFile.csproj.user create mode 100644 src/Tools/ResAsmTask/AssemblyInfo.cs create mode 100644 src/Tools/ResAsmTask/Main.cs create mode 100644 src/Tools/ResAsmTask/ResAsm.cs create mode 100644 src/Tools/ResourceAssembler/AssemblyInfo.cs create mode 100644 src/Tools/ResourceAssembler/ResAsm.cs create mode 100644 src/Tools/ResourceAssembler/ResourceAssembler.csproj create mode 100644 src/Tools/ResourceAssembler/ResourceAssembler.csproj.user create mode 100644 src/Tools/SVNChangeLogToXml/Main.cs create mode 100644 src/Tools/SVNChangeLogToXml/SVNChangelogToXml.csproj create mode 100644 src/Tools/SVNChangeLogToXml/SVNChangelogToXml.csproj.user create mode 100644 src/Tools/SharpCoco/bin/Debug/SharpCoco.exe create mode 100644 src/Tools/SharpCoco/bin/Debug/SharpCoco.pdb create mode 100644 src/Tools/SharpCoco/readme.txt create mode 100644 src/Tools/SharpCoco/src/AssemblyInfo.cs create mode 100644 src/Tools/SharpCoco/src/Coco.atg create mode 100644 src/Tools/SharpCoco/src/Coco.cs create mode 100644 src/Tools/SharpCoco/src/DFA.cs create mode 100644 src/Tools/SharpCoco/src/Parser.cs create mode 100644 src/Tools/SharpCoco/src/Parser.frame create mode 100644 src/Tools/SharpCoco/src/ParserGen.cs create mode 100644 src/Tools/SharpCoco/src/Scanner.cs create mode 100644 src/Tools/SharpCoco/src/Scanner.frame create mode 100644 src/Tools/SharpCoco/src/SharpCoco.csproj create mode 100644 src/Tools/SharpCoco/src/SharpCoco.csproj.user create mode 100644 src/Tools/SharpCoco/src/Tab.cs create mode 100644 src/Tools/SharpCoco/src/Trace.cs create mode 100644 src/Tools/StringResourceSniffer/AssemblyInfo.cs create mode 100644 src/Tools/StringResourceSniffer/Main.cs create mode 100644 src/build.bat create mode 100644 src/clean.bat diff --git a/AddIns/ICSharpCode.SharpDevelop.addin b/AddIns/ICSharpCode.SharpDevelop.addin new file mode 100644 index 0000000000..ffb412ed5b --- /dev/null +++ b/AddIns/ICSharpCode.SharpDevelop.addin @@ -0,0 +1,1852 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bin/setup/BuildHelpIndex.pdb b/bin/setup/BuildHelpIndex.pdb new file mode 100644 index 0000000000000000000000000000000000000000..bc9851dcb45f642b7b2ab4e19cd984749bb8f318 GIT binary patch literal 17920 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 literal 0 HcmV?d00001 diff --git a/bin/setup/PostInstallTasks.bat b/bin/setup/PostInstallTasks.bat new file mode 100644 index 0000000000..a142e8fd69 --- /dev/null +++ b/bin/setup/PostInstallTasks.bat @@ -0,0 +1,15 @@ +@echo off +echo Installing NUnit assemblies into the GAC +echo. +echo NUnit.Core.dll +..\tools\gacutil2.exe /i ..\nunit.core.dll +echo. +echo NUnit.Framework.dll +..\tools\gacutil2.exe /i ..\nunit.framework.dll +echo. +echo ICSharpCode.SharpZipLib.dll +..\tools\gacutil2.exe /i ..\ICSharpCode.SharpZipLib.dll +echo. +echo Installing and configuring help system +BuildHelpIndex.exe +REM pause diff --git a/bin/setup/PostInstallTasks.vbs b/bin/setup/PostInstallTasks.vbs new file mode 100644 index 0000000000..94625452f3 --- /dev/null +++ b/bin/setup/PostInstallTasks.vbs @@ -0,0 +1,40 @@ +Dim WshShell +Set WshShell = CreateObject("WScript.Shell") +WshShell.CurrentDirectory = GetSetupPath() + +WScript.Echo "Installing shared assemblies into the GAC" & vbCrLf + +WScript.Echo "ICSharpCode.SharpZipLib.dll" +RegisterInGAC "..\ICSharpCode.SharpZipLib.dll" + +WScript.Echo "NUnit.Core.dll" +RegisterInGAC "..\nunit.core.dll" + +WScript.Echo "NUnit.Framework.dll" +RegisterInGAC "..\nunit.framework.dll" + +Execute "BuildHelpIndex.exe" + +' SHARED FUNCTIONS + +Public Sub RegisterInGAC(strAssemblyRelativePath) + Execute "..\tools\gacutil2.exe /i:" & strAssemblyRelativePath +End Sub + +Public Sub Execute(strProgram) + Dim oExec + + Set oExec = WshShell.Exec(strProgram) + + Do While oExec.Status = 0 + WScript.Sleep 100 + Loop + + WScript.Echo oExec.StdOut.ReadAll +End Sub + +Public Function GetSetupPath() + Dim strSetupDirPath + strSetupDirPath = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\")) + GetSetupPath = strSetupDirPath +End Function diff --git a/bin/setup/PreUninstallTasks.bat b/bin/setup/PreUninstallTasks.bat new file mode 100644 index 0000000000..02ca7b0c13 --- /dev/null +++ b/bin/setup/PreUninstallTasks.bat @@ -0,0 +1,9 @@ +@echo off +echo Removing NUnit assemblies from the GAC +echo. +..\tools\gacutil2.exe /u ..\nunit.core.dll +echo. +..\tools\gacutil2.exe /u ..\nunit.framework.dll +echo. +..\tools\gacutil2.exe /u ..\ICSharpCode.SharpZipLib.dll +REM pause diff --git a/bin/setup/PreUninstallTasks.vbs b/bin/setup/PreUninstallTasks.vbs new file mode 100644 index 0000000000..9efaa14d21 --- /dev/null +++ b/bin/setup/PreUninstallTasks.vbs @@ -0,0 +1,38 @@ +Dim WshShell +Set WshShell = CreateObject("WScript.Shell") +WshShell.CurrentDirectory = GetSetupPath() + +WScript.Echo "Removing shared assemblies from the GAC" & vbCrLf + +WScript.Echo "ICSharpCode.SharpZipLib.dll" +RemoveFromGAC "..\ICSharpCode.SharpZipLib.dll" + +WScript.Echo "NUnit.Core.dll" +RemoveFromGAC "..\nunit.core.dll" + +WScript.Echo "NUnit.Framework.dll" +RemoveFromGAC "..\nunit.framework.dll" + +' SHARED FUNCTIONS + +Public Sub RemoveFromGAC(strAssemblyRelativePath) + Execute "..\tools\gacutil2.exe /u:" & strAssemblyRelativePath +End Sub + +Public Sub Execute(strProgram) + Dim oExec + + Set oExec = WshShell.Exec(strProgram) + + Do While oExec.Status = 0 + WScript.Sleep 100 + Loop + + WScript.Echo oExec.StdOut.ReadAll +End Sub + +Public Function GetSetupPath() + Dim strSetupDirPath + strSetupDirPath = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\")) + GetSetupPath = strSetupDirPath +End Function diff --git a/bin/setup/readme.txt b/bin/setup/readme.txt new file mode 100644 index 0000000000..6e335f869c --- /dev/null +++ b/bin/setup/readme.txt @@ -0,0 +1 @@ +This folder is exlusively used by the setup program of #develop \ No newline at end of file diff --git a/data/ConversionStyleSheets/CSharp_prjx2csproj.xsl b/data/ConversionStyleSheets/CSharp_prjx2csproj.xsl new file mode 100644 index 0000000000..5efcbae97b --- /dev/null +++ b/data/ConversionStyleSheets/CSharp_prjx2csproj.xsl @@ -0,0 +1,124 @@ + + + + + + + + + + + + + '$(Configuration)' == '' + + + '$(Platform)' == '' AnyCPU + 8.0.40607 + 2.0 + + + + + + + + + + + + + + + + OnSuccessfulBuild + + + + + + + + + '$(Configuration)|$(Platform)' == '|AnyCPU' + + + + + + + + + + + + + System + System.Data + System.Drawing + System.Windows.Forms + System.Xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {00000000-0000-0000-0000-000000000000} + + + + + + + $(MSBuildBinPath)\Microsoft.CSHARP.Targets + + + + + + + diff --git a/data/ConversionStyleSheets/CSharp_prjx2csproj_user.xsl b/data/ConversionStyleSheets/CSharp_prjx2csproj_user.xsl new file mode 100644 index 0000000000..f104b2f122 --- /dev/null +++ b/data/ConversionStyleSheets/CSharp_prjx2csproj_user.xsl @@ -0,0 +1,21 @@ + + + + + + + + + + + '$(Configuration)|$(Platform)' == '|AnyCPU' + + + + + + + + + + diff --git a/data/ConversionStyleSheets/ConvertPrjx10to11.xsl b/data/ConversionStyleSheets/ConvertPrjx10to11.xsl new file mode 100644 index 0000000000..d8fcc92175 --- /dev/null +++ b/data/ConversionStyleSheets/ConvertPrjx10to11.xsl @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/ConversionStyleSheets/SVNChangelogToXml.xsl b/data/ConversionStyleSheets/SVNChangelogToXml.xsl new file mode 100644 index 0000000000..ade2924d91 --- /dev/null +++ b/data/ConversionStyleSheets/SVNChangelogToXml.xsl @@ -0,0 +1,61 @@ + + + + + + + + + + + Mike Krueger + + + Roman Taranchenko + + + Georg Brandl + + + Andrea Paatz + + + Daniel Grunwald + + + Denis Erchoff + + + Markus Palme + + + Ivo Kovacka + + + John Reilly + + + Christoph Wille + + + Alexandre Semenov + + + Nikola Kavaldjiev + + + + + + + + + + + + + + + + + diff --git a/data/ConversionStyleSheets/ShowChangeLog.xsl b/data/ConversionStyleSheets/ShowChangeLog.xsl new file mode 100644 index 0000000000..0ff1a14596 --- /dev/null +++ b/data/ConversionStyleSheets/ShowChangeLog.xsl @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + +
AuthorDateChange
+ + +
+
diff --git a/data/ConversionStyleSheets/ShowXmlDocumentation.xsl b/data/ConversionStyleSheets/ShowXmlDocumentation.xsl new file mode 100644 index 0000000000..7846694a04 --- /dev/null +++ b/data/ConversionStyleSheets/ShowXmlDocumentation.xsl @@ -0,0 +1,276 @@ + + + + + + + +
+ +
+ +
+ + + + + + + +

Parameters

+
+
+ + +

Return Value

+ +
+ + +

Value

+ +
+ + +

Exceptions

+
+ + + + + + +
Exception TypeCondition
+
+
+ + +

Permission

+
+ + + + + + +
MemberDescription
+
+
+ + +

Remarks

+ +
+ + +

Example

+ +
+ + +

See Also

+ +
+

+
+ + + + + + + +
+			
+		
+
+ + + + + + + urn:member: + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + +
+ + + + + + + +
+
+
+ +
    + +
  • + + + +
  • +
    +
+
+ +
    + +
  1. + + + +
  2. +
    +
+
+
+ + +
+ +
+
+ +
+
+ + + + + + + + + + + + + urn:member: + + + + + + + + + + + + + + + + + + + + + + urn:member: + + + + + + + + + + + + + + + + + + + + + + + + + + urn:member: + + + + + + + + + + + + | + + + +

+ +

+
+ + +
+			
+				[]
+				
+
+ +
+
+ +
diff --git a/data/modes/C64CSharp.xshd b/data/modes/C64CSharp.xshd new file mode 100644 index 0000000000..1576547c1f --- /dev/null +++ b/data/modes/C64CSharp.xshd @@ -0,0 +1,313 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ~!%^*()-+=|\#/{}[]:;"'<&> , .? + + # + + + + /// + + + + //@!/@ + + + + /* + */ + + + + " + " + + + + @@" + " + + + + ' + ' + + + ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ~!@%^*()-+=|\#/{}[]:;"'<> , .? + + + + + + + + + + + + + ~!@%^*()-+=|\#/{}[]:;"'<> , .? + + + < + > + + + + + + + + + ~!@%^*()-+=|\#/{}[]:;"'<> , .? + + + " + " + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/modes/CSharp-Mode-VSEnh.xshd b/data/modes/CSharp-Mode-VSEnh.xshd new file mode 100644 index 0000000000..c09090b617 --- /dev/null +++ b/data/modes/CSharp-Mode-VSEnh.xshd @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + &<>~!@%^*()-+=|\#/{}[]:;"' , .? + + # + + + + /// + + + + //@!/@ + + + + /* + */ + + + + " + " + + + + @@" + " + + + + ' + ' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <>~!@%^*()-+=|\#/{}[]:;"' , .? + + + + + + + + + + + + <>~!@%^*()-+=|\#/{}[]:;"' , .? + + + < + > + + + + + + + + + + + + + + + <>~!@%^*()-+=|\#/{}[]:;"' , .? + + + " + " + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/modes/Jay-Mode.xshd b/data/modes/Jay-Mode.xshd new file mode 100644 index 0000000000..af171c362a --- /dev/null +++ b/data/modes/Jay-Mode.xshd @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %{ + %} + + + + %% + %% + + + + // + + + + /* + */ + + + + " + " + + + + ' + ' + + + + + + + + + + + + + + /= + + + + + + + + + + + + &<>~!@%^*()-+=|\#/{}[]:;"' , .? + + + { + } + + + + // + + + + /* + */ + + + : + + + + + + + + + + + + diff --git a/data/options/SharpDevelop-templates.xml b/data/options/SharpDevelop-templates.xml new file mode 100644 index 0000000000..26215f2067 --- /dev/null +++ b/data/options/SharpDevelop-templates.xml @@ -0,0 +1,72 @@ + + + public class | +{ + ${Selection} +} + for (|; ; ) { +${Selection} +} + for (|; ; ) +${Selection} + if (|) { + ${Selection} +} + if (|) { + ${Selection} +} else { + +} + if (|) +${Selection} + switch (|) { +case: +break; +default: +${Selection} +break; +} + switch (|) { +case : +${Selection} +break; +} + try { +${Selection}| +} catch (Exception) { + +} + try { +${Selection}| +} catch (Exception) { + +} finally { + +} + try { +${Selection}| +} finally { + +} + while (|) { +${Selection} +} + while (|) +${Selection} + System.Console.WriteLine(${Selection}|); + System.Console.Write(${Selection}|); + + + <b>|${Selection}</b> + <!--|${Selection}--> + <h1>|${Selection}</h1> + <h2>|${Selection}</h2> + <h3>|${Selection}</h3> + <h4>|${Selection}</h4> + <i>|${Selection}</i> + <p>|${Selection}</p> + + + <!--|${Selection}--> + + \ No newline at end of file diff --git a/data/options/SharpDevelop-tools.xml b/data/options/SharpDevelop-tools.xml new file mode 100644 index 0000000000..1cd1259812 --- /dev/null +++ b/data/options/SharpDevelop-tools.xml @@ -0,0 +1,23 @@ + + + ${ItemDir} + "${ItemPath}" + Notepad + Notepad + False + + + ${TargetDir} + "/R:${TargetPath}" "/W:${TargetDir}" + ${StartupPath}\nprof\NProf.Application.exe + NProf + True + + + ${TargetDir} + "${TargetPath}" + ILDasm.exe + IL Dasm + False + + diff --git a/data/options/SharpDevelopControlLibrary.sdcl b/data/options/SharpDevelopControlLibrary.sdcl new file mode 100644 index 0000000000..38e67778e4 --- /dev/null +++ b/data/options/SharpDevelopControlLibrary.sdcl @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/options/SharpDevelopProperties.xml b/data/options/SharpDevelopProperties.xml new file mode 100644 index 0000000000..ed82fbd7a1 --- /dev/null +++ b/data/options/SharpDevelopProperties.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/data/options/StandardHeader.xml b/data/options/StandardHeader.xml new file mode 100644 index 0000000000..c1d29d78cb --- /dev/null +++ b/data/options/StandardHeader.xml @@ -0,0 +1,29 @@ + + /* + * Created by SharpDevelop. + * User: ${USER} + * Date: ${DATE} + * Time: ${TIME} + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ + + ' +' Created by SharpDevelop. +' User: ${USER} +' Date: ${DATE} +' Time: ${TIME} +' +' To change this template use Tools | Options | Coding | Edit Standard Headers. +' + + /* + * Created by SharpDevelop. + * User: ${USER} + * Date: ${DATE} + * Time: ${TIME} + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ + + diff --git a/data/options/TextLib/ASCIITable.xml b/data/options/TextLib/ASCIITable.xml new file mode 100644 index 0000000000..ba77bed5e9 --- /dev/null +++ b/data/options/TextLib/ASCIITable.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/options/TextLib/CSharpDocumentationTags.xml b/data/options/TextLib/CSharpDocumentationTags.xml new file mode 100644 index 0000000000..dfb193f608 --- /dev/null +++ b/data/options/TextLib/CSharpDocumentationTags.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/options/TextLib/Licenses.xml b/data/options/TextLib/Licenses.xml new file mode 100644 index 0000000000..91b985b1bc --- /dev/null +++ b/data/options/TextLib/Licenses.xml @@ -0,0 +1,909 @@ + + + + + + + + + + + diff --git a/data/options/TextLib/SharpDevelop.xml b/data/options/TextLib/SharpDevelop.xml new file mode 100644 index 0000000000..870ad55733 --- /dev/null +++ b/data/options/TextLib/SharpDevelop.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/options/TextLib/XSLT.xml b/data/options/TextLib/XSLT.xml new file mode 100644 index 0000000000..f3bf0e74d0 --- /dev/null +++ b/data/options/TextLib/XSLT.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/options/TipsOfTheDay.xml b/data/options/TipsOfTheDay.xml new file mode 100644 index 0000000000..b1dccfd5cc --- /dev/null +++ b/data/options/TipsOfTheDay.xml @@ -0,0 +1,5 @@ + + + ${res:XML.StartupTips.Tip1} + ${res:XML.StartupTips.Tip2} + diff --git a/data/resources/InstallerBitmaps/default-banner.bmp b/data/resources/InstallerBitmaps/default-banner.bmp new file mode 100644 index 0000000000000000000000000000000000000000..810e8a10cf02e8ddd7fbeab9ba906bdd073a7299 GIT binary patch literal 2396 zcmeHJ%Wm5+5S-Pnq{Oc{0o($)7|5xY9`XeRdMuDX$jA7%ax>6hYR<|mCDO~phGFE; zLra4q#mCG(hLnFkJzpc0UwnRJ{Ug8+wt_2G;EwaZS7UAY?$ygM3>et%_j~MiI}Gy5 z<(E8P1dk0a{mm1L@4a{{4tpMC)lXjk@V*LdDNCb zXDTAv8@kl7Wu2F8jnB1KkC=;V2K-Fn@jyn(-Dpx)o;cM_R^r~%|o2~Mf;wKHZjl( zH8SwcI&!d$9A76C#xS5m!5p;8A;V12=eg(sk;uG2pHi@3-)ijpjGcFT>+UvK6EiER z#^g-Lh!c8|@ZVt;OEy$vMo9SdapbA-_~scjW`r>#COhw9a5dSdz2L!pMpMA1DK~ta zK@;&i#>sJ+IhGLX7~`TwSLy^9a#kpUjv@zj$I>UIC~i|$Pim2C6CQUI+{}5<3`ZgZ zKPA^RC`H|HGe*m($>_y0;wf6ews*l}^#5O$^YO|na@_vTKY_FVcH|A%tB%S5 literal 0 HcmV?d00001 diff --git a/data/resources/InstallerBitmaps/default-dialog.bmp b/data/resources/InstallerBitmaps/default-dialog.bmp new file mode 100644 index 0000000000000000000000000000000000000000..4970fa29babe2b24762f1a9fd11414c3658fa028 GIT binary patch literal 36744 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 literal 0 HcmV?d00001 diff --git a/data/resources/InstallerBitmaps/exclamic.bmp b/data/resources/InstallerBitmaps/exclamic.bmp new file mode 100644 index 0000000000000000000000000000000000000000..906ce3246dba72e290f6a3008b19ea129233f213 GIT binary patch literal 766 zcma))v2KGv42DfF5@Q-6bq#75ItJXmsN}tJkH(`gX3Ur&iu>EX>!nOJ`Z@mdeYQam zRk+&rl{79dL~mF>pcWdTiZ-|tMda2o&ojjsk%TlveEsL0x!;v&m%$jca0d$R{t35{ zf4ggmF1@>#Q{c~W=J!KRt=1b+y%2>Nzgb*K_n@%2>MPDdTQI8q-Szb#Ql0VVsYIfx W5}8#&WKq>3SJhVJwimgdMdJrzKB>e2 literal 0 HcmV?d00001 diff --git a/data/resources/InstallerBitmaps/info.bmp b/data/resources/InstallerBitmaps/info.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7e0ff7f14c24ace2d59e24260b666ca60ef57482 GIT binary patch literal 1078 zcmbW0y-ve06opR-l9@=}pq)_PqC8SIv&9<=QeMd$43&6=ZZKveLsj!#J1I(4B!t`J z>vMnI>sx818*Mg?Y<=EH56Gq|e7lnFD`|^v10KOjx9n2D_xcJLv4l_rJ4X-{W5kg1 zS1H*E@G+Hb^K$KcD$-x@3wwRR(}KHt!M%rjKNlc%Z+ucX-Eos3KbP#GDUB#{M4>2L zcBr$}wjn#5X(DH<4u0ITvP0`~GzxPggEMIkSvvo;;K6qbKKzec{hViLOa4sQLR;$3 z+^O8}W&dWXk>A_dVTvE%Ibhq4i;&5ChRb3=&ZQVnzlQAj!bc04A{!KpBu^Lj!~Yl0YWIfddDC zG)Uq<7%}|+4`Kl^5Q2n21UlFa1RH>Y#L_VR++bZW9?>+&2@U*cm>0w0`Ys0yAd=1E8#zj literal 0 HcmV?d00001 diff --git a/data/resources/InstallerBitmaps/up.bmp b/data/resources/InstallerBitmaps/up.bmp new file mode 100644 index 0000000000000000000000000000000000000000..86f6b5a84755483dee8175ebc821d3af0ce866b8 GIT binary patch literal 318 zcma)&F%Ez*3jinPaBfq3iVrS`7_(?ej5C}1lGoRa7bAIcM3XBn@W5%19)2 zpi~0CfR3A`90Zc8)(X4P;;1!e1a8Ujwl!?g%}lJWd!z?T2-Gq9(9iqVy9{0F7kh<5 P<5%!Eb(Xf+-TO;BySGdd literal 0 HcmV?d00001 diff --git a/data/resources/MenuStyle0.png b/data/resources/MenuStyle0.png new file mode 100644 index 0000000000000000000000000000000000000000..a6f702884a22a81497e0b7a4f09f9a516ea688ea GIT binary patch literal 949 zcmV;m14{gfP)WdKxlWgs#!AVGC!ATls8F(5HBIx;dkH8CJ7FflMNCEhBD00007bV*G` z2hj)>3m7AAD36Q)000SaNLh0L01FZT01FZU(%pXi00004XF*Lt006O%3;baP0009F zNklmnT-pqvhv2rY3@(L*KIS_>OZKPJsb1=x#uI}x;kKo4ae4Lq{!ZG8M!d!o za|c1%4AtCzyPZED9-pKQX~h2+6W(H#!}UShghrs>k;*vL2K^2|fhGV&qb9V?M2`kT zJi)k7FK?p3y95RU)!CG4f_J(oJ1KXGUdy$EZ;T>Mgo@i;Gr0U~FGX=3j5{A|{|ef` z-xu}P(a<{5NNwI!*NME?*BK0j>hX#6U=wWzBdRrldnrOuUsUsQZIDf=pKzb@*wmIs zjx31@5Kok_pNmXt;bbo@{lnwa^N;6o=E^mWV**(uHPMBW7!ddgK!GLz1)2a9XaZ26 z2|$4+0Ht)UeAyT5Sgt-Hj!y3;7{<2Ej_jbMcW7M7nBL)UJM22TyoG7mq^}pO(`c@| zwmb1I*&Sg%njP7qkGvRzSA`=yN68aU4Am&S`3J&y;)!O9YZ6gqOn0!w6U*zZ zH0T3sYDy^5gp$`@dDDaxvcWhepgWdKcYZXhx+AVGC!ATls8F(5HCIx;mnG%+A6FflMNM!<6u00007bV*G` z2hj)=3?UkVTKnDr000SaNLh0L01FZT01FZU(%pXi00004XF*Lt006O%3;baP0009X zNkl37@g&lx=g)eQ71XZoSB(_6cej84{1&SYOs3oaUM??E%K&-t zCA9#MBd`TvDAE=u-xo!fFU*AIbe1BvZyRC70yWw-_zKv6HnwK7ivDpV0bTzTDl!*AN=Dx}1z(wR;?rCt|z!QC02g zekHah^7Y$kHA`is3>~I1eI_zbl6M0#z!rYg?FLPeYa$>v?QXY|tgo7}Mcs6`PJnRz z&oRj9H-M?J{$sub{FvCs&=EZ#ahu-!91^H;KN5ni7*pRAx2ytS5=YrurTtA3{!0 z&5kZAv+6dI5V*G>&hSl&mUjv#*W3_pe!G3!sBhjTUn-l!Kr(YS>#L{r^ULc?0Z%!B zJQ>*nT}3`*WDAfFumxa%Edayk1XX`w3jp*MfC07u46p@YfGq&S$ePH>da+%){*Sis zo}Lvmy4_0b@QyE)c{wBDHh7iMkDg>aos!7j8Ivn8ZLW6$)IVbF1YWoz+r&AJ{ zFsewhr)R}@?W%b=YggXEL002ovPDHLkV1l45o<9Hp literal 0 HcmV?d00001 diff --git a/data/resources/MenuStyle2.png b/data/resources/MenuStyle2.png new file mode 100644 index 0000000000000000000000000000000000000000..29dba0dbf2fcaff2420e1f633400c57742896f84 GIT binary patch literal 1311 zcmV+)1>pLLP)WdKcYZXhx+AVGC!ATls8F(5HCIx;poGB+SAFflMN2uSp;00007bV*G` z2hj)=3?T?{8nu5P;=EgZ(H8k|6>501c4EMTXeu)G=d!fWpm|DRrj6=ul+r*r|v; z6!j9oeSiSTkRVMAVP1|inlzC;_0K`Q~=@#3&`=zemFgcpz3!nF2FRQq_ zy)$g_(}VUquC`%a1IW+nwi(_cDQhyoPpY^#5Es$y8LUYLI#_f81GWi9t~Ma8yI`XPLCGzoXbLK;<7Ap_2I21T zD}AvYI-gJ~8o*3ltLr3g!6Siz++stD>U|wE+xp75mYssNsksGQCfo!@^$iE0@bN3q zHY=oVP=y4-SzPY)!q*W&)>rMS+=6)qDNVWvOrW5}P{Yuj(+R1ZRFj68d^5N4nN~IW z=l#xc+swo7;b>f$qq4H34*AHx6R9WG!+;skE!Lyj-oPp4nFyjAbPGg6qb5-iQRn05 zuQa#V+S#*h3E~PD-!43!a!w!bZQFx5#BwLHy^Ake)}5z^=&4d{gL*ye*ftEYMz=HM zGVVkW3FsDxgc7*L_3ta&Ce)7NAAVntesZ~ce6nFxvYhRD%u(MgeRLCux2a@*>El<@5A#w|Po<$574ZPlcE3q_iB6$~#z5QkAFM;~ zW^z<|a=qlrs9c7V8e|*7*uzL%vPDD=%nZQn4^s3J&7!P)gh&JSRbV93DsqF$bA=cw zF`$_i8;Rn>vv78Hdd3v} z%RZM82%9rAZ`Sf!EbfxNA~F#Sgy9UgAmhqLmy{}b#?_CjD7WCI$6n5(Mayq-1(Xqp zF!u1Hfdx8a5#iB-lq$Jr?^BOhOyU98NaRHPKwLv9w;-iz);W&{WL@BSgCsU2;s=t6 z;XF(!w@}}sa!AZzc>~FxNt4(b$-YX9CCCa`e;UgzmM`r||1_uia|=8ws{k+0Q>B;o za>NOw0^q}ML;|`6A_3h3k$`T2NLX%AH~jBw`TJf-1)y%h{z4~$a2f}1a0`lv{0Eel Vt7*1xWQPC%002ovPDHLkV1jVJYQq2k literal 0 HcmV?d00001 diff --git a/data/resources/StringResources.ar.resources b/data/resources/StringResources.ar.resources new file mode 100644 index 0000000000000000000000000000000000000000..c84f7ecc4d85d1ef5cbf781be441f71fca71b5e3 GIT binary patch literal 65638 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 literal 0 HcmV?d00001 diff --git a/data/resources/StringResources.cn-big.resources b/data/resources/StringResources.cn-big.resources new file mode 100644 index 0000000000000000000000000000000000000000..e36f7b05ab31d94c288f12ef4f876e794f18b817 GIT binary patch literal 82122 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%0A<0rBV#m=P`;p!4sR#{ZUsOcjHg@Dxe?Lk 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 literal 0 HcmV?d00001 diff --git a/data/resources/StringResources.cz.resources b/data/resources/StringResources.cz.resources new file mode 100644 index 0000000000000000000000000000000000000000..e3d64273e0edbe12496a80a72da8a3c97fb3dfc1 GIT binary patch literal 121296 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 Wgul-xGOE~eiD34W!jmB&Huztqe{UlI literal 0 HcmV?d00001 diff --git a/data/resources/StringResources.de.resources b/data/resources/StringResources.de.resources new file mode 100644 index 0000000000000000000000000000000000000000..9843da396f83ef500ccb47c6a8e5e7046fb0a4ac GIT binary patch literal 242490 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 literal 0 HcmV?d00001 diff --git a/data/resources/StringResources.dk.resources b/data/resources/StringResources.dk.resources new file mode 100644 index 0000000000000000000000000000000000000000..f2ef23c525a436807acfbe5ba4c3f70a10fe86fd GIT binary patch literal 135364 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 Q`P?^iWhB!?eF@b62jUJ(5dZ)H literal 0 HcmV?d00001 diff --git a/data/resources/StringResources.es-mx.resources b/data/resources/StringResources.es-mx.resources new file mode 100644 index 0000000000000000000000000000000000000000..c5234a13fb61140589bb58dd744ea4e328c02eba GIT binary patch literal 244775 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

izta|dzT@nYtVxXInj%ysRt(u)Mu7dG zKdJ^@F0!;epTwOq#?XFBMR^LoK9k&rG%2N%grt!zlcPh*fy(cs&}E-DkY$R|?87Go z@Ko9r36y90j`*8jWaWd7kSze%62H~HLZ78ZcjO&_#_}6A*Tl*t+iXANne?B^qsw}u zJMp2E#?n$Rq(^?6hSZOd&*%t=ds2a)glht;_Kqu%`4myHm!r>yk071#be25nWJ}iW zoZPxvnbHlHN|!xHKsIBcC3oG#Cuq3r;l86d^${nV$_UVBzaNmsSZJA4X=Hn~>hj;{ zM3;T4Q10&kJJM98!2cm>Ea*6-F%}x}e3U(wJII_#LNGVx7i)93Se(i$zfFucS9UcX z8YNdc*}HupRq|%}G8!dEDqY@w9kR_gQg-1jEh63riUe>&kJ@^+JxgS{uTNxwG?t0t2&R*HL-HZ zHhT(rj8$nGCXX)bMSB{r6(~!^tESw5Q0w!V|y5{zLDkQI+bn4^(ns#QM&`8?>c?fb@Me|eWQLIB0u`!{7(->pFKA~qG3iy-o#5JTkjSmF@6qDoFuwz)!RQM zyonLi4L0G3)SWM7&y(sReYSfF35~V1Cv!DiLfMwp0#X8L4U4v+FxLamWQPW7fvVBX0{IBUzm$j?V?Ee>XR;3c5DG|YP-@pm$9n$g2%DI;Q zEg)+lk@0hU;w6%O?HnXAevVI^B)Yt6Mwl_Ntq(FgZ%CKAit+1M^%eRsBU>+H>PgKt zv2w|FYYusg*UvCS9$nVU-`jXnHNpId&nJ>PWIR{mPQTb6=9OYbdV5?YzD1Mw4s(Ay z{%b_SAeFJ!%nX%Ew%le&W2{X&hDf8!ZXNmLg8Lb-oJqcX zvJKZkE@LgkCr>V2R{a3!{x;G?Qd>H2ln+7w?AUh4zol|QnsCQo@=DzO`chhGf1=(0 z4@V+<%07(X!2h!m=<=!k1B_R8$=(w5Pl+R!qe;Q@(gTf$q=v~P+c_Mv7;C{V>9Xju zSo1-AXr^)6NxCF54#HoCl*U3*V@WAnweVo$Enpc#I$d@Sg^d5l-MhfYbyer$vw_5k z^LFAq2!V-XMow`ii3tG|V=POutsvW~B|G6!$VeK?8b5bk3d!HzyVE22O*P*WPhTl7~Gn<&DOJ@liUd z6)lzfG>bOlMW0LC*$05@pqh0Di>uq|Zvw|(Iqm3~wDbFZV(?xIFAt6uETT59^Y^s9 z{xYx|wAa!(dp_*k?mqq}Plev=on}e<`7Yo#Xs=}o89(0OP(zMSUzHW5S<(|}dwSVV z4PFZ-&7T)Tx333**`Ts;s#*HQENO4Q4*Uic+bVu?&X+flu%X@8&HgWGdpY^C!KM29 z!N~31i-5_X3c$T$lC)PBzkG1b51s8?E{1i{KdmQ^4fUAW1)hWA`N84o_VpdWZ&2Bj z!Qhv)+us3}gObcnEHx{~%E}^kI8Tk`o>vS`GW)^E?ci?!lR-&lub3q5)$3n5IP0CH z-F+QO|2FBFG<`bus=-AqN%Q8%&F$Yw;54YHrGK1~c5?qu4^nsWwu@!!>9Cr@1`OWG z$Gem2_NX|E|EgozWZ1?56v@)1?dH3H-=L0q$Zdve!O!jJmx0%yGL>t?D`{89er9mh z1mA~=^S=LE+77-GxD2S9!k?}?DsHp>5-1F+$1Xn(NgMOJpB-G_ttUE@9GSHgs{aKz z4(gQgU~qIhdCjW_7n-ddx1=3j1crm+HN{Y!7n<(;Eh6s)CIjl+=>-wDS>FNzgSuNO zF9u0l^0TiQJkz+gR<^YHcfhg7s0GW$gI&zv@K_=J&3SyArX$zAc5wcIqm)|O-Z6B0 zcq=d)RBW?W%#!x@$j|X*u!G6EI{YROBP?Uj*rmlomGowo(14oMKju?8YLo;<+MZwc z^L%yX>5sYNg(YD8Tcoo1}f){`x{;DNR7=;WR;Dd4arpTL=k0j$asxH0|vmY^ZG5I}Fl9(cNPF z!f^rb{(9J zh<_Kne`~gmPMi7*m^$?~WgVP7^{rU{as1cIwEuu<)0=to%_{H>GXEV^1L_5^U?87fRbSOv=C{RUCD2HbWeSSnxF$?Vea- z1QXZSCIq+R=DkUKbu|l5ifr0SZ^wl5Yn^Zr+ud!VIwrb3ZKC})_0DEo#yV_&kAFi> zl2ax8f4-uE&#B?P7r@gci7BV3rBGzE-#?|VgwWSP=qTm_=Lpe^iusJve#&;$O_j_w+g~UzgLubhOYX z@HcM?jUp&Eop*@RJ*PEVEL;N=4yLhKZzz!2biG>vHjBBA0?8)KV^sAeQ`CnWUl2ET z$r?po%E&i{(vNHb`U3uXDzHee1@y8yeMOGUugbY>qa2#BI&k1c2y~@XVe*J|^!eWa zJ})tYpf+dX$|=?=a_&36w3+8E8aQH044e`e$2f8K&UxdYcF4_3TS&-o~Zf#Q(*t0?>p?{ z@BaF0tRl5y(TjqmPfq`rLZ{ZcY(4b&w{aBCc~e%&zBe5B;u2BW%LR$N%GRDTp|uhi z6^Y#D@jJg&LNB7zx2!rAS`ZK|Ysk#2LSoRh&(y zRPXpsU{1F4EuhTZw)dW^i^9l-&Vk%}egJfs!Mgaa!_C0%;YWm;I-^hHF<{HP+Igb_ zji@+PBKM93N9>MOt>Y7SKyL&7sX4NA;_B;bNn|0Jz7bc|jr_t%`NkD`pC|FGj&ox8 z1|X1LljsKnA14Ns#Eh3nC}zF~cn~b=@^|jdz7D^QZ_esm9wdHgxX3jNzQ-)@uwo*B zSGTIaJUehqRjkD~oyH!{gO;28#ObX0l zeXJ324ZjCW)4PZJ+5JJ$R1Ml^f#F+C?{-@y(U%rVt5fD{-F3y#y-ebZrzx&9k+ND> zJorc8n%)!iNbNk|Oh+TT2!rFl2>guuvpT6B8SH3$v>c;*eF^YNuRJ|6c_~t3IKOJ^X@ePG5$4O}GlAJ7t*w)IpUFF?tvfZJkMkbj zJlKd-eg59|nK&=OvalxM&tb=*~8dh*>Viq4ihh4rE@Dr z)^Muvb20DnYwv!$5C6DVam8(xB{5=(`~R8 z{_fNfR|AVTpOT&SZB^9IJP~Qzlq{?tE2;i+8h014JT)3OKbB+GS}|)a*+5=)E0);h zTb~U)Pfc``A5Zq8v4bKSexhQ zK%k#mS-RNnh1z9Gk1h#QudbpNPsHkz6qyrXLt#cfMRO{bmGV%^39kh3`@r`P1}fl+ zMKAbv_9j!D=s-$6I_`eEf{diaoQOUCR|{9vyz$-&!bqr4Knt z!!O(gU`;O8m`=>t?V{L?whWXTwE=k~=wjcbp{#@}>jjyA-O3mwl zX+O#MQ;lhSAL7B~+ktmK1<5qLHHh_PUEaW~MLp4zVnOI}ux!Qj5c_rF*nI`qy=Z`v znFl*xr|a&X^|t;(@U>8B0`jwDZAKLqnce_9^F;n{gZ3lU*e0`#U*s5JoO+K3*8L>J z)`B(pO;e(s;SN0;Hg>QZi;e4Zg*$_E!7ae`k>*3?2JX1pXz>-}iKJ%(yI(iGw?nLj zlKHVK+f!2H0s8O4AWE zb{sTf)!kq;{8`}HM-OoCXeMvlx(E7Wr$No1MwX4hEA_l$dgR(WT57d# z!h|n=MEF-{Ok4V`z@!f))6deYP$|@cOgPbDP=hcB6#D5G7$gp9_@vS8e*w=^qG;l1CM%jt-+qb&IzD|UUYPKdh*9T+On__5It`Ix-eC?t z>n@;hYQ!i%4r%Q0eBkzoutOA8O&5L~)A!@Xbk{J^`Qq+`&Ywn>F95HXoDwq-$18r= zTlv-nX=lCTRGFkGF3tl^qskM3Nk8e)UU#cICTSQx85s5x{P&8XiaFEZYBSYN&=uVe zJo-t~4jPX%I^7QZ`Z)8|KYGg6FT}(ze*^@}ZII5KMv7Mfqx1`t*5YGE#fw>vBlwS5 z1G&OY!b_HQd2Mh5QPhdTZvvZs3gf-*Og?PVX!gGEA zaD&*{PAt^`ZU@_d~XoPlPL%l)K@f)&JQ z)+6py%b8a_w|X~pi)47CnkU{&|2bgXPlH}QjH7cWW307pzv>ws$I2ZWmy}Okg>m@7 z{<4&V!(MF*_eQRuX0DEx_1zZi05f+>UN^)da6WZB5~W-+#e3zEp9jY2ukz`|DkgDt ze;CL4_&dO{pC-q_aY83m<2cGK0IV3RAF}s13Wd-2p~IpyldD9f`ID7ib`G%-l>UWi zjc6AJbqT8je3!j8R+A3P_A@y-`n*)!$k)-|qFAUTIO%*oR`>8JUL9*MS{W1_>FWAX z{Njgb({#A29)A+}_frFj&YQhEYs25IT{-HC-|Vktc`Z2mJQs!IuP(}odf1Rx9I>Jo zy@+Szd$0UwXx2_)<%q>OUQY<3GteQ)o|Q9jt58XQO!Z{3DGuH-J5!NGMg9SLqTy_nl;C~B+FJY2n zos&d4POON#=haO`$)U{CeiK~sy;F|!hTc^u%=SN>-mk!CjkGS9+V49VpsX;ZGv&t0JHwG7TT6b7LH#pY~9paL?eTcYvjvjJ>y12<*xt672AH zXxxp-4|ktDx__O*O|h8Ae||vy06^yuXbjff@yH~tiTZTg*5 zanh~gWly^-L8%1X22(kZF-h7MekYM{2DlV)N&@E;PxO#de6RNPhNUl;Nm$+saARro z*zF9$6Bl755`v3P3aY0kNl@(TCt9w4Ak{;`xtP0r0N;fa$t(N8|SyzZGC6 z^Mm25h34=-+0i5TRFCcNgXxs>HGw4J)Lu9-a(eeY>6pa<(dn55E(_KN<8{={07Fuc zIm|`S^aB96H+iX90BOreyF0Np4Z9UocYlz7nLc)`WH5pgR%dVe=Kv_hT4iCy_dT_& z>o|=)rNhaEwhCVbxD>(f4lWAnKL9F)b+bTCfYeN2(=s{x<8Q=;|07j7W&x%XB-QW7 z13-#)&jP@kuIDYwl6{{DAbn6uEsVdQ>jA0{&N=`ZiH`MwJ+(i)G@Igs+5u20!ktAY zu}}-Zjwi=`fMWpI2jOR6WJQSBHo6}`rh1n{dXI}%tf_zLPy3i1>TjvhYwdi1cK~3D zevQ+v(;0AD>{xyXr?Aav1%3W#o!%z2RlF7U*^jI;yG&r;XChC zgKaEV@11+~Aiz648wdYJfX^wPY2KOJ(YFFvigW8zj0R4C=_NAyD&je)AyV0ad>25b zIGS;gOdPaeHYOnrEdcodhUVN`#&}G|)iHF|oBh+hfY3we^q$=UJ`WJ@G5cVNh!gLg z7_-{rZv5*CP)z^2qaRA3V;$d843m#%@TF>L>4W%zs`#^n>fR{haQ_?NzB~SYAD+cN zWc@IG2aq5|re%1qp*cOFI<&ua#MZFsq9dRe-9L@n+_e7D9*6z* z--U|reM-86(e5%`!$APt+b=+IyN-qgc{zaX><1WYGm6n~0LW~=K*;puNx7U|GBe4P z`~ar;;ohgw33z^z2O|z+^Vr!f=@5#-onY`Kyl+9)l;j-gL9tH(h58^-(7cg^6E2q0 z3D1AHFNRHDv;LAE5Iq4?-ZRKG>Xed3jp~PZH1=FfKDOWPPgK!o)nb@Nb*DG!*q$i7 z41jj^4oGb>Eh)A5&jZZ!`vb$Y8(nP$$zYTx;O+)sKYjHMOffUKDQLKO&BRjSPXPFN zg97ZE3H7l591}nwDNMa=775ZxoX#zD{Ni7G5KUHm11KCH6bjreS5oOjC_43p??ub? zshL_?W-;Kx=)_OK#C_~5S2qV+xMD*Z<_Tu;S5$7q1G*g(K%e)zuQXY%KpJKJB=%Xx zG&dgr7J4Ssmk%b_M<6MFwZ{3~KY^i}vxYL+MaBNhcyLSBgG7v(uNJ(6ci`b2Sr0q? z9M#*})YvNgETa}dvIJIa0uAhzd2Uwvh%O>s8~e*Fh> z1CS042^=KFK&HF`0CwiXzz4w4z(qUP^o|7;9#u5^K3atv`UAi`HCqZ=g`K?vU`@Je zdrn%|om=|>z|^ZO;zZ%u0FaZFl#qw5X!72zISlS;7u-7$T^90A0LioojvqBBQ)Yf4 zhUSz%#^$r3{JjYSbIKnFE@8LHx;pPS@}n&I&E4V5kN#k8lx3){eg*?`Zj?G}?)>3f zFu02bReeJxtaH96KeC$PqJSJJd=&$8?x_rL1o~F~Ic2CK`*R=aX->ZONQb@?Lv!*G z=WK-oU-{wO1GPdZ06vI;IT?@wPnAa%%*~+_@h82^ORrB?I`)y=Tts(K(quaLg&17U zr*u_PzS(VvdR5N2{3nKF@(x{Nxl4t{g(vPb&c9`~i)nL1eJ7A*V)ehD2N0Q(;y_Rv zsndB6hUG;1R?wB1awXA=^CPXqihId#1c*%jbx11+k)4NnA2F=W2W9p>S+uRPpxH-0UA ztPA&RbwU&I)NiCh8(`}goT-}p!Ols$8^bc=VHy~Ew7loyhw*Uc8vTdaV$OhsZw_<~ z*)QpaW)y@vD{sKCOwNi9^FRGEhGxo^|8O*`NVJ=Ucl3s`vc$VFY;Tr5jLxgWTJYYP z3lO=Mw}7?^5BIhR2TZx{lK{|VpPe{-9uIffXZNs%^U=J(SNa1%Ayt6?4G@_*9X0I5 z-$SQa7Nu_k8`iqK8^#KclI`DHFnQ=`^V-FAnK zbX#eywq@U;L@!IHp7{2ec#*qD1>`$N#W5+wM+xDqFgcZEzG+2R?Rn;6fo+i5= z)w@3J_5j0QI1Om0QB<5e4+Fn1AR-L%=Y}OY6=-?m#QRj{WBtf4jocsG|7as&z zzQu}oGC+6Ww*dV9eBe7fK9%NC;!FYLt!o9TTh%Ju1#o-U3QigR#Q-+5R$$U_6W9P`TMnw_gs6J|7d!4jOxz$lu_jm}U*SO*Dt{bgR$=xXJ#p zR&Z?hV*agJco6{Z>K~vc9bXGDYtXq-`FbOOtwFx1XtbXE?zMwjg4ehRkRJf3HSDCE zL7?+2Mpm`ra=1>AzAZNfRJSA5xe5Q9` zx*eUEeKkMLRC73B4yVc|b7^0Hfh;_$uI%x_I*1EZqX)8a*f%{XO0u73aqjn6f$8Dfd9t&RMm~A_b5B zpXd;S4`SN-V5f~ji?4ITr+Q|~B+|OQIs$+>1v$y}jw+gy`LNR>X>_S7h4QZi;I9I} zSlAHNno>7R3K^W$)HguLYbnWrN1%EZ3ZDh=r;$1ffv-D*o?y8HkkPQOkULMYd>4a< z^A2`5HmQek=BHr^^AC4-y|C?{<)zC2U@Sj?CYC8@!Q+y2H2~d^7tlDeLi->SPsX6! zt7k%iHvmyPGG19K?8NZh`R8Qo6;D&MV~sZ-OKOj8V8~Vg)Xu!1Tpm--sVY9V14!=O z@ZaXCCCobjU~gV5d;m$W|6BsFZTW%eZPBmjg%Xn>9TPrm74diG=Kv)4#_q#*)&YWk z8YQM$cylkq)yr``?GIx3uDmOs!t6ZGM82T+%6p9Ec+-afCN}|PI(DLb4#RHFJ3F5v zSJFmQ3xD4W;?be})CvgsEr8k49|jCts0PpbOiv)F2ajSH^P%L4Blvq0K;)JNKXa&D z@YG&#pra}=jn9Xp0Fhg)eP7oH@+<(!y`dVeiF%#J&_wm>C+DTTg*?E7y|S|eK;%XW z*mLs(a!THH$c#hD@wjob@Dcz@(s1%@3`x`r=|lL-9EK&zLwuNELsb$* zbrAq2`J?Yaje`_4XWUyk56ZL~O`C?|Wn7K1jHkqI^Ten=@$&$9dp1A?@3Q&qMU*Ms zcfOCK{QF>cY&!u-AE{I&oRyX0(#HYN%2N9BlK?6{t_1cO06N_JvL&66z349hwDm}O z!_l>DIV`^cP*d4hG6U*re4<9!Gsnwn zDNQf`Y*!r9z&X(IeJ%s2b%N4qmZh7Y;v1e>aSJ;2$!P_xW7Xy%n2HR{TDebfIC)NT` z&l>KLdbA({OP5#ox?HEVPAq-&(R>`(hx z-mRdNyCB`+vJJp?^@_`_Uu6ujyvCm1)abkhUceUkMPm=Lg}d@$~8}(-sSu z>u~7`7vlXN41b#2x3uAG z(c_ChSfZz_k%#6BH~bmSxpyDT>IT>C@Y#idp6O4URm=s6#;cd5dz;<;qCi_;r^0Q1d!_&9*#XsZ8u$>$=Xn6?}@+-;?T zxCtP(Cojo~yx++fU(R6wxS=}$Dk?X$o^Mv(-POi_df!tEvdMd4+l8M5fSbF|N^M5< z*YmBN&e9PpLM`ORzk@;L?zHA0EoMLF^SPLUJ}1xlG3(bVoQFX<_B08T z%kmAS8k7QwBS{HEQ`C~bIcj*_z%mBzOhTp%bt|_Qv&g&*-74vks0fHcx;cIJIFRV3 zOkiM&+{$rixdeds-f zf)`?1BN)iSBVE|tP&69z%aPw&ZUIQye0TbYt z)&`J@P&1!G-+x-$(mMevZ6EzbYx3JxXUfg)3z(gzfGU_*=kOX-7eh+8qSN8&jV!)K@ z5&Xy4#)0`IfPw3s4;!VzJ1{7bhz^jWf(~+XK7`?k8=5?vcQ1=2)6}W&gS;2Okjcxp z01XV&!F>|o;1gwmqZ32c7hjB~fy}4N{1N~lbwB`2Wb13UnEP?>_m!iSO?=0j)FchV zEDBv0x><~O|HUn=cR&ZM0ce79Oe7J#EL~EvT)4(obZC%RKBX_K%pu!A&z-$(X@?V^_~)>OgPKCOX%B$*j5pawCDD;0 z4e!JK;GH&w;@tqy*GstNa{|^H2bJhZwbWi7%PXqkqAiyiW z7yLyZ%%_1~8g(BBpu2j-(g9W6Rsd#uHkfD%QLeP7{7FjV#{l5gYyjhyaoRSWPzUK* z`Ab{Y%ev!}3{DsHTL7>(FFsm)NW( z(Ee=vB>ScJORCVY0bVZ5Y(aeJiZJO<8ow4Gj|>)M8X0~CQ+3gAY1s4V{sgLRW8jY6 z@Bo?6X&3$+0O$L|JsDsc=HFc#=JcQBz#g3j7KirzuQg%b2`~-wyD(7~j?SVviOZ~) zhRTZnuLJC{{wbdZHf&85E=H7F+v{{gUF{HSE&_@%BkNR(cbJL7-jy*B+2 zD*qH|M0*^j?&5kTug-Vl;w0M*pv(QNN7IIS3?y1hj%ra&BIuYYO!^b%k)Ab;u6F>N z`r43@cgh|GOKL_#>Qej&Cg@@y7=bZiCTVe&5}o^#My6i^ z*e)JlHdw{)lidN4JXG)g!rgZY=t}_9#dUOpoa?CHb=#=#0DPCAQyDs01*TE*v0p|e zlUSrDDY^kx5)1=Wm%VnNRAgpC9hHXR6u@@b>uj)!--+%^)mMd*AanuKaC$vJJuRDR zouCwt_hWDuN0s`Tc^`QVpsO{qe8hq~GgmI(@@W9vk&R6nK*g!>m9Fd?1#t*?Fd3&V z5L+_psq{J*;Cotf8hFKb3;=g#FIl?Ze5uuM6v*uWa=1Sr-Q=|a(24RYK9Sxe#&bDL z9q?sAq@-(sP2;>*0dS(c<_E0He{WtKojzvY)GT(LPCL7rlKJs7d2vh!tT-0GippHl z7R8qxRl2yPR7`nf|p=sD01jrvq2RRNNBfXSSUW&(W%Kx~q z1kdvQGzMnuS9~5fFb(n71K_saFyV&355sQleOMY69|O3j^#YCzr+r>u!{DiY2d825 zuK>EM7od81lmy$l(cb}>*|me=Q3iQm6&HTQDjo8Zbe**dkNR7b0R}M*yEYesWPu*o zqsvG3WfGxPcmk$+{-CFd67Lz9VrQ>Y@bnCwJEijNJVNbRySrZ(D{NDzN`452WS*6Fd6WiJaTpHG!zCIwV+ZO8yfEx(b z0xk{fB}_8_uHk7<>L|u)OW>YX;ne^<0Iul-oVJo*8`MhT`spi!T1gym+Dg7Vn3Z&@ zj_3T{K=z~)aN0_mm~a5x#a?V_u?Th2U{=xzIBg|=iU~8Kmrm`<-ZN&*tA+o-(2VFM zYiJrakN*1}!x0v(m_6T&fjxyIIxr2BG5}^o%bkm3c0r5L;;RePlq zixi~OkM>F@9hip6%X_8MZC0a7?P>*BwF__Sl}?=?(y;pwKxah5n%q}c{cp3W6MvkZ zGq;>ca`KZLH1_Wr_*VeTNJ8`uFm0h5{{dOTbYCX#MA4jLt8fdz9veK^v{l@J=`xg2 z@+#ytpRd8tj8H9WsO!^yBY>Uhx8G;U6>YLnmM!BxcNf4F+b|hxCDIm^=vp_x3^~Vxq_R z>HPV3i0lNgI|coIOf}cFJXe7%pk!sK5ZA){d1;I z-nj*CXd2x%0Ax>eb0GPbdmrp|0MrxR(g3AlI)Mp#60c;ZZ608HQtdt%;@l``+efQ# z0>Cl~3Y{B5U_2wn6F#rP;EaMo_TV%sy#+vf5^ud^|1U7GCmX5*(=hoP037Z`A{C%G z359>@(dUg0Ps8d0fbD6=9N1Q28wU5ZWB%YYjK%=8oJA+8D*N?<;~0`D3Y|mz`?oY8 z`VoN1v^4p^_@H^yp}ggIvG7v>pOGO?PJeRq<(4qT(g(j6;HeBx;$JGn3Z5Rd)`=+# zp6YxPCe4g#dS6r0q?4GAcc8xw(`Dof2ern7mL_Zk|Lwu=8H;gx9ovThKGQksoqPnp zT=?wZ33b?RIjfU%35@VJm@w0@C9TBgCFQ?=2cVugDhUu13UZQ~teV7CylV8^f6c71 zCUcYzSn-Zd7bg~{dOW7;S^kso*6J9&6xWhc2KaVwimjYTmK5-4rV+z~x6Caa>rwXLQZ%6^pNx?+F&H)%sX00*es*^JsWox-ipCJ`wj=dOY>M%GwgeKFTiBF`$;%-f??-$vJig^ z6J!+cll5TI1WB9mIRMWL0+O(&Gq(sLuv3p6d#Y&v7Qiyoz`X!t3yy#%^F-V7zk`W- z=G!!^vnJv>ZGGd5`9@|JO7cGRGbvmB=Ak=}7S?0RjNYHMOsRg(227C|?IiEnQS8ax zC>OIPzzb5GOkTGZfD%?lk7Mr!z&==1FqB%SlZF`p%S^l^EjR8mBx}370J?Vrmk)Ls z?>LbzBAq+U%)SIzob1)&D{yrnb&|L`*XQ(i9_5YN*Pni5r;i)fU&Qn;eB@T&X;I$} z1TrdddX1H8%y;AQj1*Y>aYlf=c-VG?VrWKLI%{ZJ0RD#nnPCw-L5{(9rhmuQ?Kya? zOzA8a{t93+ylH(*X+Ug}z@%aM?*N~XF7E`t2Zg1{!o~k5v%e>8SQ-|O1Go&=qZ1qx zUQBjz*-ymajPyzN;53YG1kjAqU?)(vXP>~1RT1>^rf>Q+w*yFqvyl%-8ipqUJR>F7 z348`v@iy@Rh7SsINlw zR1D9^olRkzc}Ri^U59MPkc=`$(hy!J#KV1ZDO$6z8z3^QX&w-1^q2?e8`9|!%|Gjs zUfpd;e$rY82?ji`)_^#?soRpegGgJ_+W|U5K$DkLF0icPI?q1_AQ=Lh4@eq@e+l3j z1|SW1{PpeM0+;4^G4AeE^!F!?J-& zd8PR8nK~>Fh&1e;3eXvujyPy~2t3r4w6li*DkBo?1ymZgcVUVQjoUc|+uB}*K^ehW z@}M*fegVKTj2QD5j5m1+yb8`oFeHP-NkgQatqCFGt?PH%V=PVl`-cFPLE>IOr7iI5 zm?A@flBZz#lR318BVm`qJWTt8f!Q^-RBHP-)oi#S|G9G@AtM z4&l8gF9DDY3z`o|8iub2@C*x@415pxu#Nwi0hF^f?*Nz#+mshf8kTm_u2;>2ghTWS0IwSVW13Idw-U)yiS?b;areXexelTaO zs0Tvh+;H)C`oKI3U>fE_m?$HQMUd?5R3m&Ck7w+D{Bas!mX3~tg?Q+Q-s}i)e>C~xK)$GSc`*p)cIX)F0_OqikMJ696FLy^10 zoY3a)W-9sofYLDCiwU-;hf19jP@r3uix{*w3vUO2o;EEGAPuwk18_!GrW3Phu>M&L z&p58oZFm}1e+jS|PDUqKzI24St2+yFWt3dN`3-={a5D0ONyGA@|H!38iR4HGt(T$A7{lP`Uc?8iJZR*u|F9(F)t5!+>{!;yq`~5-`f0Ev);$Jr5Vxn9WYj!c`ca zVgHk6_lKv^XBc36Qb=lSoc(A3L`L4O6El88+vQ(|uiEX00W2eL=ieZvLtc&{8459J zNEz?l;m-KK{T#q#C`A8JojD0i8lm6b50(_0;}I-B(GQlLVA8PsbAZp_@nj;fg@X;| z?ZUS)JcCKQ4Nt@BQUC4LKb&B$U|ucj^39i2%QqIT%Kz}T!Y|_CTh&=oc^v`OnI4wV zl8vY26}RbrkQsH-zX))%y@KO3e37=aG4u2|T@m*Uvk0tuxcB(}Go}f1zj?9dG`xn) z;D0ywjwAa-)?;XBnDWl6R#{(Ibuoa1&Us!S46+zM@_fQ(00?TDM=oVvmLVtod9B6rdwTTk!m|LxTr_^qa--R< zG>gm4#);}&yJ61KugqDc-HqmAh2NFNs;zcysbMZDO$84YYfJOB^(6Vyj^R z&o^4b=F&aYrE0S>S6h8(iQwi|ADXW%G|Z;)#abIv)s~KM4dL(e)#a7oakG=p0E6^L ziq)lJr8#%BcD&IlPVE{iZn=KGI=iy)+$X*8x*xi>Y%UtB9;q#1n%3%ri?fY-qh)S7 zv{Wh9Ypr&L=!D-FEAzFvT4SkFueK}{jH?cB=Yu-{Xp1bPSv+2C){fNXfN*08PXYvp zHQQ*;R~Bp4C2YlQd7lL0wf5rb1MS*egKGrfM)UgC%Ch|fILsZb&fQs^*R?!W0naz) zRu(Z=K(yQUO_~|`t+*1Bqj=W}h}~Ff1FLGWUTGDp?Hayo<1Zo|g#j`G4AqjxJTHIHuEnzQO%hfr%bn;QVw%mwLfiJlj@)-w|0c;Wf4sUOtShmm}H(gsI zMn`H3y2C{e5^dqbkM4)?A}mug#X{>vc0S-cpG3mEv-xSt&Mz=js)2Tx^(~qSc-U zlxxi;2bSBlMT-)ar>wiE--b*Z{8BtxnZ*j)6`gOv@_w^eJyxAtX;)^+TUbx4xLn0n ztiB6OdqTcwuHL^~gTP?=hRj*jeZO+5+7!HXnxWcKs|q4EhRn|JMDmD3@b)E2*8OI@9%^)v z0w)@fAdAil6xG<|B#35dg~tL3Tz!awj%O-McorC0{<7RyE>5jf`Hemc+NC{9Vr$wih0aI$d0*WFH|vrR_q=?A#y_ zpFUb?E{|2QNsVQ5acKmbcMPkq-ZNJXAfI&@%qw%0MjOk}8RpFWc7?$l?g97Lxue23 zg4{-k6-7c&EN;GcH+1EF<_h^*Z8W}z6^78a?=u@h`vj`cL{wYmVtud$3Dqwj`;ias zS*gH~gy3OGSFkm$XPOHFn&>y?0vi0eiuDYrbIn=$ggH;4l;np}@Y!6TjssNQ-Wgbp zbH>7*8a7u?SHZ@X6UfPtO|-5>*<3n7CA+lx@M5(onnpHgLur4O51 zs?sc%%jW!1m|)6Z@kj%#Yu4?rF2D#@%+SbPE2|GeNm$;U$5&RI=Javsr%JtDEt`!Y z1S%&8-EzGGuji}@*pWKSgxLn80Gk!E8)QYGY*}epalzV_o0z6etx8AeT60kdv;`ik zE>?!Uud4J5$d`}Tr|40DiK*29Y^8-wt2Ktr1XY0*Cb~NHDpjTRUtr`s6=AWdQjS0d zxI(oyv_93*igH!iJZ}70b#b|F9}(>N?COJjc-WjhZV6-wDt}_RuqTTZbN<8<$le0= z+SPmDjI7@W?xW5F(_JuHYtF4K9jRB3HHurFf2}!lbOpM+X|8k+*{y+@#&mVr+w(;T zL1*mde8pU>5AzxMvSBvJLoK*5q6uIbHUvCj-Hia)`hdqs&W#EP>I0y#Vf3lY716Ij zxs|#&I_CU?)dko#+9>RFJ>Ug9yj~=eQMiW91IA~jd369+sN}(Yc;5N~!cw5re9gKL zkV|Z5m3{^`gcbuk4~0YIEHTUL6@7SqP^xaPNiFp$PrwOSs1)bGjNH{tvO$|<&Z8CD z3F>33zRKo2h$Pw8a@epL+P4B`f!!8^708NUiYdiCngsuWmR73Ao%x@u zSB`@sw~b=wLZ85XDY`%KgE8mo{Q-6OBs?qv7S3y_S|H0tC|5R*pAtUQvRE-huL?c^B+EhKFjt_6;P==M zcm|+XEaxgMpuV^TWYx^gD4U}_P8Fb9tUyi}Y~-KmaiC;mC3G#pCJpfOu(|#aHI5L_ za!7pLmOHi<+vNJy2bN43ERgsN-3iMB9)hK zwM+%m4hsmKFQA}p#^LWkFBVrHhTsDz?Ty$4d|)^OR$K&&5JC`oS;Ulg!hnii;-)Q| zfE}FNM7q+-XPZPBet(Q8e3ZPoe8 z{IGeV_vG@*Kwzuv#e#zDliV}!SA;tx zH=YxHbe&A6@pZES4@A_ZWJ)9tAV94JDHliP+Q`D#5Oymy;p)RnQ2K6`Fk?bLxwvT( zsRwwSe14OCeh#BG4N}CPfn@@u_--N}gV@lzg?J7d4%Kqf`Vll(Vup(VN0zW|Qs9~d zywTvCbZ5$;XM8R^S)phZ>6|kTlh)?UA6%i2X3ih0))6BjhN58|Hh=VJFfHgun#HLs z!7xK$v2IJpY)EJ&8Fsxz(u?JF5br$M$>;NoF4yxz(jzQv!MCbWuyU6-&^B1RRx z^7`o-9JO|J9^|nO5~#QU;evr4Z3Kw8RKk1%WVZ$|_{j#Uk#Cxn)dx>%?n`{RMjJvO zIATEd1Y;u`Jps{#ox-{ghRKU^5eYibjWnCD+7y8ol>sVpA5gb3ieU$B0F4Zk4Fv$9 zTbx z#gDVgMVJkGEAfrS%+^JQEn-l~hzJC?u9!teB~u(n00`V2rlAnIAlqQ`t6Qy?M7*Lq z=Mf(Y3mFQR$Hg=V4UrLCM*iVM5y4u-bPi*##TqOp^bJ@s0drv_;;;U;hI-(gCeofH z4cr7Kopq`T>@$+f_{qxd7Q3IISL<5gWyv;$0Qn%$wtAWS<*m59-X?IslJ~&HM5^I9 z)iKyDAaSsjcAG0UcCg&#M=@XmO->_G%Q$c=7j3gjfqHM*bgw!C7N*2FjB;f!{fWZm z44VsQ2#}i@_#)<&kFh+Unh(DSyO4)Ey?L>Hfp>(wHwl5PGOek|Ax!T=6Mjv3{UH!R ztTG@a2HloBB*RU1t+lYoK$Hk@1=;{=O@cadZ?np@cpxiPS$ zZb8H5%n5i>NE>XM>?9Ai4w)MKN|TZhRh%^{`2b{8!1SOX6t&s7J4k;-=Xo@~HlH-( za2RC9O`y>xd{S&2LfHgKog=N&jo&$ zth8({-yddoV^qDt-yS+Ij^s(S#2%IQ`(~Caiz;j}wRSH%OhpB*Sp{L_EcVcwC~*8J zoLCh8ANvVZ0v{G>exZb;Cy5mIhcPCABT2l+FjO_yCYfFWm-LB4V%WU((UVwA@Qp3` zWm+Q@8PNbK7|B*`#U_iB7la02psoujZV9}jC0!SSLI|;?k)@DL+g&S$Gl)vTn92Z7 zH*405gHT97jTSQOk&I%X#)_~5mqZC;RkmbC zE64)d@-@YP>h~D^q`)$6apg+uuy$Clh{{As<){%r>eF&NwF$i{m zWGV&zP0O6mLPMAWgy`&No&@`(Rd>iAlqaknz62+Fm5-r`rMdbFTo{{Li3}mb!qD4> z2J{F_uRestM+mYc1I$IGuqFX>V5=FAMhVB9R~oIfs|$@Ll0(?x^DIimk)UjZYDB2l z0+8ma$vVs6QZr~+&5P+ZtTne!(P5rL!VS_y+ZK!q2hd=*5C8>Aoecos{Q3f{B#K`Q ziD6p7HB@{aVA#Ua6w(85B=O6zIbSf5%M_1z9{ogJB&8Xmgtr zYusW@3AIeChVrB0?!a;CL$fZmd{#h}VRL0j9!+|c6bJn1VrqiPeW&bI8@(l6DP6BKc(2+ai-_-!n#LE5{n<%v~!CSj|Q9Z?P20j#(#P4V!ZV z;o+{g%tZ&)b88lDS*vBvDY@^=dhhQG+}~70;Ok%-At@Rk>a2_eUsmzJMr7f!f#Nhn zUttyaNUvbAF^^nK%lyDc?gwGQJ(JlolJP=oAI;*`c(Ujp3hGvb6c)!VpW)Y=wJ+qN3kZV&K-@dZ;1PAk?)k9t;r5Ztgcb z<2hs1zP6qqzL%DfCTgVc9ARQn7neZV`$OlyXrHAa%1brWD6EWa zh&L_Tg5pjklJn#V^Voz@s}GmpSvMerBh3Zdj07P)3q^I? zl3*f}mjt1UBM6lQqm3n`b>O1Y-LE)ES6H2)Ed-ISwI_tyD^$|r*4q7r1J4@s$|776 zBnjF2cAnHG_2aoSa8+PyX=wnu$MrKj0}G-Mo`vm#CBaXAM`%NVH4X@BD&!^T%oRB48J_9G_(3(d!^oh z;@^v280l~WOJ8Q|J;%Y~70?+|m!!$VTw01E2O+Y|xX~YOeMPp{ST&+8Q(*K1)XXpo z8}`+zNSwm5)?oIUFtNktf*CZN`CnY)O3B0kd2SgZ&hYB}O?3O2^A7+6*WhBVV7V3f z%s{eTPYcS`;iPa9&@tsr>b_XF&$cQx&8Faw;&G`1!h9T;0Im*)caC*+^AvrCy>fxO z29}1!0KRmxl5u{V4hu^3Pyx++GOEubT7{(;hjRsbYavThkVcVMDmrRk)?BXTo|x%WN%;*I7|OKNs>aVVp(}lTjP%!(2GJU7F3RDN4g4^|6*5 z=yhtmft6mH^aLqaDVCz$i>6G)gE|M4$ZWmA899+Oni3%l@o`G+N!?sJBq=|*tk#9p zz(hI%Y|~@QoHq)mKw3bp!(AF*nybuK(GS-!XO||c(AJe>RrC1348k=Ce#J&;yCc@; zyi|tgUT<2la$*IZ1@N{_I#>Ag$4cbaebZz6%_TyjaLepZXykz`fFbDA7@~L!JZ=8r_lPmT3z}ZU9bSD9)L?vO<51lj z5Mv+g5xXglLMdA?*J~@%I{o7@hn8yhn02?I?%ue&WuE9SHlT_u4{2dqMDZiHG2H+% z+h!?>lJrwpPPb8B(A|n((2jTn65QxH({S1S zI2ok1J19Vh&2DsH!-r%Y4M8DuF{sZ}Q6uaT;p??=%PNZ;D~vlrPgP9gUCdJt9)9UJ@J8Iva^ImRiRO_uGk<=M+h4PeVJEH%-7iODb|)KV3bwrM=B?W z&9=RMs|?s`^+7OE&}HHUoeYd>782^z0mvvUb4l>E8^t!6ryZ=M z9c0B8SjatMo9r(PB?NipDxw*4&VeIf^J;P14L96?7A%!yv*B9&zrdIP$HM$kZ8SwBnrb|QR~%+$x=4}YAC=E7Rb6e(T|sp z``zByT^ef^63n_l@t6z3T!(C`xj6iy6qZxyPWfeRb5m(b+mXd_C-d7rGP1dz8i=K% z%+;f%#*%H^LL6^vWVT?;)(5GbK|VvXg-iun-`S5u|%lod9$sNAO(L zY_gtBsA|E-O&b7G_)9W3OXkRD!R?6AY~4Y4X3bW`Tsnio2HL(sDvSyVVa}1dp`}Sc z2${(b@W>l3rW#_<1+SgTImi!C0rMmR2nUup&JJzt_thhF@cr-4`OA=LArE>e%E z>zl_tr_orn>LWtj#ZqIXRW<9x*4526l^c?93W-Z>y)@4gk0rPn3qg$ytDaN3i*H-lAV`RwT4vNYX#0Xv}`qLEE-U zN+8m%BKby?l)KUDDBh%`NQeQVLY-O}&M6}897(7%`;YH3vzH&@WvQL** za0=lB9}O%*Y|Wqtn8e0w<|)c<@m>Qj$w30fGPBRnVYcx_#3nYvuK*B26}YY-07PsM z$$Dr$+FTj3C-|a@9yDlvSUn6qybEpA(Y{b~t{>f)%fhjE+%tD*gbuwt&{a$8o>!B0 zR0=V6aKZ^(z>I2;Y6Wo0GY&O~eshVBOMU0kMLFhNPbhyvbj=dhQv_x09A>nu+~k8sWj(|QtuQ?_TCW7`%f~Q#CmxDp9 zP)eUbSiL}~ybP&keuM@bzJb+7bX}}RiMkn6OgrEWOGyREc31%#8{2YWTL!`G)w!d= z@id5bbqNdurxZEb`xoK3qt$ELp3%Uef*|P;9NK`_tIGw*Am$F zk9*(&Aku1->d>y9-PO2CDjbgseF^0~IoedRXPY+euay#x+&pmLBwB%`N8^eIswT*=#}#FQt?4Ay1{rGqJ4e^`YstSwVW3e?1oX4 zv`|x0)Zk48S-=e;7ay)w@1Aa>0OR-uOFdF6g~$5LWr%=|)Nste+Rf1Uw8gkcqV({t z^4Nh zS`@{Ogg;N1KrC9zjU`q!kaa4`DIu^+SiZC(6`uOAXAmLj%PUCv+d$iDj9}NwNaM0S z5_xBH^G7}i=0az;ZJ1;x8div=$fA%2|Cy!;*|rndlQ97_s;h90cbiGr_y7<^6HbUV z5m8jNMHwN;9AGicj21PX?qbC3cYmOX@DQ9MdqlyePom)A8wjbSJcRhe)_{&y(6m8= zx7=KP=$;y)zT?%C(!Rwaa1e)SlCo@W(uI+7l4NkJ;%3T1LXR7z7^teVQCzW#2>C+s zuB!CjWXZOr1wg_hIcF(zn9KDqLiU3}q&=2Fr0 zSl!R=@YtjGjEtJ~t`27|izGWrU(4cYi?*eY8iMb0&CvMUaT6SL_eIKyS_!nxC> z@N?5VhAC8Y@$||JWy$wNi!OJUQuxk??oRyYh{S*R7R+Oz*q zaS~y%Wv8jthv6Ndu~~ifvv;#`gXd?>CYv+ngyEU9j;;8&Gn74wjU!~!;*(wC$=YOe zO2BqedO-1@Pq8?U6Y!{n+7fOU-vkB)O$^sT&h_XrI-bIss6C>EiU<60*kjAOsA95U zUPtd85Aw2`DL79VPKLd5z(S^1NNBbbeLG}{)CcBUb^N!NB zXW1>EYsL~A!MV}WFTX9WK6D(9Y_ZB)>b57iw-y!1Qxi8RU{}F(2zdy~tGFPvq??6R zA|i9g!2loVLC=QG>(~&>p0aqBG4y7JYO8F#eyo_b=y`DYTyVO=Du-;bkqgnC}YaV18D+TJZxP_u2psjsd?+A*|ZIV zGRua(q9_+9@nv|97aNF11*k@L^4p=9n@ETpK!g22pm$auB0a;OxO;Il%`ZF#z!NZM zBCmL3`9>=%$RWe|hF+#&g9KY=9MHDiRNS|VU=b(Mtw)D5Eh=ONl82o5JRDhYhZXRE z^QSPjwz62f30}pv^3BCPdr#6;F5Xz&V<8rxEi+nIh!W_q2eElS0JE=fpV7LEVT;v8o~Wi4W1cd=P`VjI*xR0RGZ)FtYT~?C z027P|5vs-qJ zPNL85>=`{cZElc-Gipc_p^k~oi_e^*nTE%L3j#O+6!9YZ{$Ms?8R05JIABM^oelf0 zNIteJ=bMLGNgH5Ek}iuXUI$EYd?#o~l-8;a3gsiM-AQ&qN$QbnBm$$8>Pa98fR(^g z7^Zo%nz?gXw)vk*#)>8z%|IEEH1Gt80ai#DX6-lhj~H2N$PjWMP0$1qasUdc1bYb6 zT36XX0!r9KJGTr1!$8-BF%FB{z>nc3ngMM$Zni(!ZRFPqv4 zE$YbyoK1;`ey}Y9@L4I_#G9s6A~tc@0)podf?%h(H-VynIueUcAj*SKJP5X|3&acz z1OfgV)1M%SC7Kw6z{81!IV4pW4>gcOq`!b$GQ!2j=onqOssT#@b2SPi$PJ5?BZi&g zb)#jcD9oe>VNB`LVLj$|jFm_S3%b{>R%v9HWtDomMY7L2I05otBJ`*iLqX<#A>4!U zQv#DlzRP31Ygz&ko#<*p#1TNM+eC0afKDUtt#@PSC1F$ujki?jsY2U#+pb#mq`77@ z!x&p@u<#+JmaBN*2TZjCTJvMPh zyTNk9SyRC|ezR!=+JTHAGp$r-ZP6kUF(W;TK}e9`894NG1I>lj8^l*QafRQIlzcqS z-)h=_Yw_M2?~5esc*lj51d3bm;I-j6e7y0#YtdR46b#nwCOFid)~hRkzt3Q$61RS6 zPT2cvL+~B-)G|tRvq&C^4Q2DJDOkQ(f41AlYCs_DJ$WYRX9gt+DMZ-o#_V4xV2;Y8Xvot`Sk`SXjzDLjr?nKMJJ=l=c=>GHqfr2iOMU5ZGKHe? zD6qi;XIP7Y&%4l0&Phws=3>sUG&WwuZ|fcOXIMBKDY2;q8S({to)j0AfF2MV1fB?{ zTjol)Y-Qh2lFa$RR~nyq_tvz`g&au&g>rFDn7%0PFpoO$EOVw@Ysb{TG-jZFU(&=J zT8FJq4Cyl$23UpHa{*xr3Vu3g#NC2rZXOS1iKfnFG{jEQG_~NygxMJDT|nM{5aT50 zYDGtvMb?1OL8FICsEBKY7FZTVE)J|E@wWG~{u<2>2D}GixHOjex(N@1d0$gK$w3ap zxWd}=Kv~qYb*}*>IG-VM0)o@iFEg0EhIk(FctTt4SC?&ocnh6V-%s`VKQm z#KemXR)`Ivfq<_7OC$|MRw|LRWkE$k6*7>cS#dim*VP?zyVHJzd-rX>-hP8^n`OiT z_ahL_P%o5=+h?0QCL@6=Rx!MN7I4NHytd($@2j?2l?B3^-N72PUaBR{knR$!OC}_= zjtIRu=ODtbU=0v+9wj`9mU0ojb0@re5}^^bZB_Dqj};vi=%EVD5)!O*!&~NzgFH5D zK4zvFx>`kLAJ}~F49x@5t9Y(;UpSz+#m)$AKML~m{=(Mq=6gqRlM_sP-Tv0PZ)-7l z2tS2ic|sHp#=!_T_%>X;hV}~%_n*ZR-Y?-onP|gL!DrI91=|r3)mvz|rA@LjOTUdP zCSzhJ!B%jB$o?2;OTzXX$Fig`L73-)Xu`?jswy0WpaKXnD_9u*jg4;sI0X_X3^HRa zFeg~3Y?dXJ&5=&|*$d>XWreb{!8VwbdA2BEV6H4WgX&wH}U(f3#Th~vYU`n#=qdC%+ zfz_cMiC=HOzOqBbm=yI1VY9f@FyZ9bFdpru6fvpx3Z)tWp+^TC1we0W-tvF#>Qj zrpK$03~}m_ozbS@==_SdRj*cGFJbeM4In9apACaRhi=)dnz1S(W8`r_i4ara<9HvZyx-c8d$k^r$kBSeVXa}B*JS2Kj`WMjAgIL#vJ1Bx7Sry!k00S1} zPvb(E0F(9|yv=QJ^)&*f+La4eLK6z!jiI!q4i+A^nN9Z;;nQ{1#?z%<& z0b1N<1Eto3ya?MHgY2fy|Kd;fsAf@OL|u`}x~!{07N5CVPwCokklq-p)}3GDD_yHg z^w=i?wnMA|^oii(PStud1}fvZ&RfAsgNYdb+r`Ov_=|C8#O}FuactI@{$(+a1>>UQ zyy!dBKS4FcmNt~;0>t)cOEhH9-ZJe*hb}aaATBX7&jQ^8FitUu$3s~ZyDdc)xtNR8 zTtssuue1OVoLoTt#yWguvoadA9NDCs93-UnvOnW#MD`p64(jNw2}ry7Uh)xtjXG=8 zdBMd|Qb5Ag!HUb~K#b?0SA!c`!|Evxw*U`eyjF2&w1K>g71W`v#i1WusjlG0=SFd8 z8a>c=4w=<6d~S3-A9?uEfo_#2+=rnZ-UpvQ)yv4X>LI=WI=+OHgeXMU;lX(ye4v); z=}}lhu;1I~dv#tMAB8dro^v>FzrMDk%xLWpfA=pZ5}{0*xPLxW(*I)65e4|CNj zZtO&AW;e(kHB}W_y{-bu>bUm zPcR4sENsSCqVru1-ah@m))+@iz16TP! zE>}#WUjFQ4Rm40p7(@M?{K_aKaVBUIJ{0D>dd^YH%x7Y)mt^&-NPRM6Ps~$eDg#Q1 z_x4)b1$BjJ*ZRY1sbH(|bGtfZmiGtOMWX8_!hre+g+{^w-4Up&5PTV}a?+K_sxk|D zAv-hkf)p<6=2WcBsyzf*Ha}txqI@kkWqtM{Xa zK?vM^Zq=6k)KQEQTAfEd3$A1e;%^v(_=)hirVM8 zut;ofu%ZZ~(l!j4XQVMHf3^$78a?)mfG(RuA;UqG!{4a-yRWH(>2%7n8I3InWrE;H zJoz0*f2@a+xGMfO(p+c_nU6+zsTW7ls!a=INBCza=Y&W(oB|GFAv2kYJa8Sp;y#|r z@g4{`==mXu!H!9DcBgbyw!JCHJhzN9(Jwc@%UOot8a)U{)l!<00<~m)vtp1YI)D@K zb8Ykcj~Zq6gW3Ro7oHZo51z3}=sL8dzzCgs8)}C0w6;Q#aP$ko$kTneL;PL#qw!gu6KLlDnP(%$P4Y-+jsesLEBhN@b zC&5Y|Z`9_CZWH&S3{$T*w+M6u+=x3|6dOdrOcnLZ&^UD-!oa_uB3uO{SMd zj|C0~>hn`5ek}63*T|Cy%e)AqKMIx2(?*im1{?41IqEDp{ANv6aY!gIWd32mJaZSq zK&!X8|6&&5|I~KKd{&3`#8%2qA$xs)v(;U`{zzgf#8@KcS^Jwruc!ta?ZE{9@8VrO$Lc+zZ!AB1;zSni=#$~AB0Dgic zA8S??MwaHs(8g?qEPOIh$6k#ADlzc3sCANYNvCN_93P#O3i?T;rU%_><4~>QijtLT z9UEAr{xLsiay~7Hag1j0kpQG9*;F3HnEoXq5z87jZ4h2-!#6HHVDsqkQE^fltx*sW z&Dg3t3XR8(U?@G*6C<^m95e}5rQv~(CRd7M5ZG>o1Fk$+MVsrAujasoFl<2!rzkuO z0nvF{j}|VbsuFCR-3n@H^MOZOGuN+)19v#9)lC;ovI8q}k}nicWo*?@_Lw^eOqs~7 z)5BE_?Fejn_>FG@%PFzw8m(N=>MvUtwS~%ueR^sciz%DGiP~0W3y&R0LSgohuPj}B zo{BMDvUv^VnuVG^HzsjM5O{^cW(~M)6OOtjhOd}PSY0QxtDzi1r22&cTjXpOXE1DU zo~K`_XuyJ?7zB04-axuc(#)z3V7NEd(65#6lgN9D_}w&o^P9Xgc{#6(1s3|5T`}V; zOdSma>#!(j4QFm0Db8J0s2j;@jvRrvIAq#~m^nk<0^z!CLPztU_0Lh&so;bx|6$W{ zU>pGIdX#V5)Tx1P4sCB_D(tdMW(}|P((H_O=gmu_Lh9L8nJ6llf&U?CEljM|AgEeY z=OdCEN~K1_l9UOEKnKPlRyHsBo?_yWWD_@2$sFWPVi6Pyz>jDQc8a2(<1YBoog627 zCGVotD-bi{#ZWPN*rS%Y&24AyL=MH+%t^q+(X@&79Sxa3G>7`EM1{>uLp#Dhed7zo z$dKAQpo65mSAxn&FerKnt}R>{n?>2bQm=c{29E7u%TXSD`mph|V3;b>gMG7XT7*iW zeh0l<(z%PQM1*44>RFd7?_3Xi&^w=y_u;obhg`>%I1laC`km@I-zF?z#^29 zw>Y&-JNB4TPn&_*hvnZjgcB3g+qN+YzoG6yP78E>NFp}!s2=xl2qrC?pEYV8Kqal( z(%0t^L;D)jz&=RU7%vB~hl2u8ClM*|9aN#hriA;-ocU()YJ!&-u)Et|MPPiuBTAx^ zWpiW9?0Ja$Vyp^(Xky4b2jc5?DMZf~G|nv7;E~^8B_Lx}19 z`-g$GWDZbwK=8z5pDzk%$h?j1muOe4@=Z%hg`)Ba#;43@?Xv61k{%1*4I{aNuyN29 z_CN)m8bL3Z4dv_$d2M$cVpe>OLY8CAE>kM)_n~8{+Vt7aN%-b_rLzjPH{S}Sd5UOo zV0$gvwW927hGVQ5ZWp9Fh_8@a_ z;gE$Tb62CHuFlF(!c#-$|3-{%Zxy0x-XmITpD0i9irf?BiKH2JBz@~!iNH8x%TU9y zJL6Z(Bicg}?@Xgu<&iL5f;u_WtS3Gg*y(Drm5FUcx=sR&G< ztiEi1Dzt-LlntaL0N_(kRS=a=M;l98ks(#d*f(hD#$b;UFm_%Id}J2kxp7M2kYhp^xj1npZC z6}H2LKD2njX%L}HeV9UppD~GK7@+g4nbtJ@-igyK;aYvOENLyq5ec-?q|s0or!hH` z(<+A9pOpMo7fw@jgvRqiVw>)f6#pWtK!w0yzzPmrf_irtB~5*B>&k ziA!g|QF*LX7?MnQ5O;VV^7|4FfUKyJ$eNLGtyg^z@Ry$H(VMN(UGqkZ*E9g0U zWt?7}o);2JIZXV-fpP#7_KL85Vs*7xGJx619~wNR6d!_*caS3I5fq_qVvo+aw2}IO zK7;?s@t%YKm@Di}l{W|AhJWkSAGy%Ozp~rJIMEoOvrIG%q4EAL|D5k-5Z(c#P&Mr+#3M_n=nSaiiZo9fY^Y~B`zle=o8AwX{& zlpe=R`+`P~Qv=wWu$xyq8Xm!c zh=Ieq-b^L_Jp82SBf(W@!6_ZNpa6alN-XxK5js|K2Zpvpi)>my9l}sH$42-TZaGjk zkM5l;?B?V5oyd3(m5#MGaw1#A#cwvMNKo`5Smn4tohn>eJynqX^Sa%I=Ks*Oy zXDQQy@wVRdyfZzy(5aIYf@-$7bAmU|$5=s@BE}=|xjKs;Xjov;<8@}Tvj`!-p*De{ z2Q5IiD#r*d$nx?S-oR2*>*3VBvs|jQIkPzMuEgOvRF5iI)&UWW_A9-gn}6@VQII3O6*GOB*Th1a~GZE+b_2jMD;kD5{R!}CQ+DE`L8 zI8o67Pu_YR>?Rwzg29 zUSM>AVd~OWcl`&Gb4IZ}jw>%&WqPJdse#6NM{?&D%gx=?xb$@Sj~t7&QYmXMn>#cg z>DOhfSFOXb#lgW^x=0=A_6U-5NBQ12Zvxo;oqE+oni}dd0bZdyW*rqdA8IbKLAdO4 zV-{&=9Ir3)U6(ER;mxA^)m%Ly7p-9e^wQebBgqkyE%xkit#PfnNFUiPFZUh2##|ix z>ekBf3SJ1C42rkZ!451@6s{RVW~ts-HWxv(?A>tgtBpE7mQ=&G}=vm-QM*e6W@4@ZwnX9X0vB;@}-y zW`*v9_aYDy5nzQkKz&{!3XLMSvys|3Ll2rkN$NGFyuriX+)f=F4i%VsGdbHByqgz? z?R`m>Kfsh&8g8cbHg?Fd$9+Tg1}^bZmF8&4=ha#ufaB~2jfKU!Y_|DZ53P$+U@`$| zL}9dJEl$je;%2WhU#2Pyiy!3*rzspxZY!gkStuc$A7C;`Pl942aPBKm-@>H9rF3!& zsNL!aQEJHd+D0Djb(G;NFe(ni@56V`f=aBDRCp44=TbS%YJ(x_ShFX z0t7i+m>XOU#dy`0C*l5tmBj;k1TpzZAmx`i_UWMA3$CK!i z;dNzD2lC;-5qp!F{NB3H>;jUCnqIPO=_H;753sPmFYq0=7C-XAD5>j>XPSFF-r}#g zNLvI3`pdeW5T)RjD7+H@x$I$fiwB2Mh+OBTszL7<8v^kDZzz}$Cm@7&dXZ4`ES;Hm z>3syd?+@(#TO%h+W;7f5Odqt$q{Yn zrX|Gi3+#%+M;a2oFg@tD2;Q}Ww@A24U?Ok8z)SLY=G$B}?(WJ6zPc1|2@KpEa0u$L z^6GJO9+C{MTMu?JcqKVinDupVMUjGyy?bMWfF`2)@*i`f6(pQ`jY$&L%J7d3FqE@7 zv_>s7cpm7P=3v($R?-|kfF0b`0gkdJv;*cPdON38#kvlkZ0EQOSz3JOUhwK1(WK=4{ATE0y_X4N(bS zJYH|(jZAobq5l#UoTbtSir)9QxjlH>D2#>zG@B3LXcZ~zeTn-Wk5p!HHVa8q%h-G? zT1k8<5BSEB(lOXsjD;?6bDlY}G>13lnJ37tr=YUE2HmoX~t@chSdl@UuZ3A!X!woYOjW#R>f}{&cO5hN(1*y73W(IDKSuuNjA0`{hJ>z=fJ1?q)z&-MLu9vEfJ%RA$3jEjEMIpSP4Z!ym4#Nq?1bRmM8+yhjK3tu;kQLSB#^1qe2O9OT4zcetdf7Kym+p;>hmt(V3Cr_+)YP zz}Uo|1I68k#`n*Rm(5Q^e73+;MW+P6L224|C)oQumE!E$8aP5nAE7 zWc6bun64GJFL<4kzrR?)ks7S1oi;KJHGimR@m3Jf8MKFmJ!+e&Ne{Qx)GE=@*X<~J zx+*59*P1hMnK9lBem1Vkf;){ozIjfHD#whtCIe|6Od;>SDzC>Vy!wcKC%n=*h7H!q zvqnDjJi|A;;8rDNaqCiw?+1~7Ik!)#QFU{`7hTZ?!d&;p&ot)QU2kOB4R5pFCHziN^S z(M^R9*3FS{*jy6wecgo;=CX0mFZCZkM>KN_R|7ZDawbV9o!Kf9r10?DR%lqfVg)P% zBW9(Ec1AN4Fz*Nq@Xjg}>%hv8Us%6jF?efr;-YaOE1Vp>h?J^Zt-CJ2lN>s2*<2c3 zi~e9dZ)YmN(L8n+>W)wva{G=-4&PkRFbnZl5!$cedI2A9wvFEudb#*)1|Rs3{m8b% z1F20WuyBdDU~Sb^;5&OSEQIZ(xNwg{w64PvC?6qkEUs^@VPJo{{JuS+?uPpjyztgJX|d95@5jC-Uhru2Fr<^NhQjK5t59R z0b53xq-v^CIl5qkb(?b}jGa(5^F8LpFH@C=JmoDfQx!hMJj~O~Cz;>Bd-d9TA4x!F zQWbNw_qy#~z52eo)8T1HG0Kq{Vhy3jZ@ahE}^AE^irSPXT zIw-P?__u{iRQL>H4^72d*<_;RN+T2XdO<7ld4_x`Zat9E~>;0_yRw9VZL5&(_ z+Mf{s%6to|F;=!4ZLi!+Kith(3z~7*)XM;YPPDDmByhKDQ^k-)*)YEs;R-N2Blo3E zDOvD$-SwA&ul$~$%FpuuUjE(I3|D^NEa(3Sjnl2+$`EO-1Ea7Wp*7F@SICi!$*3}zOC~bxwvgoV;*l!kPIPS-&ElYO{Y{mP^0OMHxWR*;vWiE&Z$-Ts zOLnmUN7I|{5SLK;vkXGCjfr%F9m!{h7A-jVsTWabO(agyB?~&cUY1Pz(Xvo-c%r%s z0-N@o10{YQtY*V(Vr4rKEGf|q<+&Pi#RtEHC9VST2d4R7#cFAW2n+Qt#v(J!=AmIp zcliW~KB~sx4qp4r3->G;n_a6Le)p;Gp%+gr{H6s8z-n@OkqN3tE9e9SEF$|N>$qzV zad9q2l0_t-Y?L9Y9ZSTOmFqExmNlY4I2n!S?#zBRb$9mJMEdU(WAPzw)#{L##{AW> zFgw}elbPNqtE|1n=zWLP;;Zzu=usgOlg8x8btw!M`(euxO;*nhg?-8y2A8wyk-n$H z&08nPddSmee9lfDby`@?DfA>2$?tIzqsNbk0hIg(PXjB|r5wl93xO z1gBsj$`rRp*ELmhwDm7}6O_NfL{7-UEaYo{_kX?w-&j@)d;zZx?(KnbBOQ!eQf+SYJpZhPL5%#0xJJuB zjaNpqk@QK~1Lzc=o<+)G%}^T6)|zVZkzT_@ite!|ONeT1bT-3=(r)V#a_*`P3`kAN zSx0P`u+-$bX@0|$Q_`j7E zDawt8U$Q>Or+%do7p$iJvvlPi)l#vv%0eV&6&eH|Mn2+IV)~?f&32X_#J0y&43%qb zM1hhUJSwF#IwhFWkK4m&6{tB&D^SqoXO%=Q`GnN{VUI(~Glg5>224lWs&K-Mg}{wk zK!j?R+@+gQ5dm&sR#Epq+(c{XY{`@p8%i5@p96T;uF~ZgI!H-tI5+_|8QdbHx6N%J z6P)`wRyL$=8SDhcW+&5)zX3WjVEYa+NIHn&X6^Z()0ru}TByeq$OsKl8} zWwn})>s$Mw`Y^T^&1xx8jpwo1vm^X0X5SM!0_G*SPssjqnHb!tThtZ~&*I#1VgIn2)^3Va`alA{4zs*kE4 zZme!2$;sgid5_O&381V=1(vlW!)mPvLyPnqqdRhyr{mL z@69b?+inL?t!(EJZZ46zNCpS<#P6;}HaV?|NM!*P%FKOsmZvB*c3_|X`G!hToBN5k zQGW<+XX1r@;renw<%Np3J2IP9lJJ4mwVZe}GloIx7}kcA)M_z|5R>Vk8y(V_*(fz6 zh!pI@Y}J-#RYi`qxcEas)yY~LX`{U_!K+1wQc=mLCZ9Kh2C;>^3L~|d2fOB_b?{8K!!)m0b z;L4NW48pWux2)vgngkRMRF(mC2ggy9?AXRzCU@zBb89ob!MfG`x+c2f)5uOFB!X|L zygE$1`b6>I-)#23t`=tgku9OEju168-v5$AVQijAxPG6D>UK;(1$aw_(Bl=~yX#=c z&y@*<~s*n}iWQ(n9-5PLg zkC-m0L0K;gv=2-JNknE&2tr`chJ269o0I8tn*_?cMQo&LGi+}=Mwb%q#{JB7W;%*l zcLHr-)@^-;FyFro31$Z({5yD{4GUV^Yr8wzvP@>wO4svovoOz2enhieIRrg#9EON{ z#kyBbp{XM{rGHB=`{?+($EKSV<6HI<+J$^AZ@wL>W&TX|Z%r(9*@a9P(${P%Xy+a- zFqwey;=GoqbIApPW|`^SY#~}gh=!G>|9a`dnMtse$VLyGh7`&7$A}FSmN)AftbS*iOEC%< zg@)sZTy&7DadvuqjNut&-@qjWEipDkIG;}=L*`3_F0=m@r)!*n8FgkS(l;;dH`u`t zAnU0*W_xP$QSzy;s8Zw#?nEa8m~U`IXv=e$uZQF|F|>AJPY4SuBy(pxejBPbU0hxxb2(W+|q zKqkE*I=IKzrPI^dXjM*wx?ajphvim3B{KL^9Cuew1cLBqpr^KJ0*u{g!aMg?JS;5M zJak0TrI+Ba7I!{k6Y{0soVN?F78bl5wjk&asyVn#U(ZXIyPjlcfOzcKGTfy+e=~-< zn^W%+`Yvy>ZmG4j70OwLUxUZ_h@c!T2(9FC7^KHDQE*eZiXhlrO>m3~e$)a=&QjFE z81T=85!;fd7T6>lRE+<+eKda|eHGOu9Wb6)MAb2~Ing6bi`v5oy9s&rkju4`$qQ~~ z5AnBEfQ|2xKxE675=Br6@J(+vlAB3qB4j$I_VOJpu&zKwd%>VN=jq_{e-))jBe!6R zggr`h{K(ENXA*SZQ*3pX(b3{xQ^fC-Bar9{$k^Y(Gl?wNJvAI$eL>igp-@=?kT?qW zW3BStw%Z!0dbvTMMjDGJ1^n#$p^VF_a#~xZ;R{}YI3qx9Q7J}Sa8w_@ zy;JuHsi1;yoPnjydfhzLZ)GwdQ`d(ZXzfIO0OGvrboRCd9k?fu=TSTPTON5 z-Dj&x%dfjSK#y7TR4H}Ow`6sZMLbO(GDdOEf`Y0#je!$oAs2ViUlf0_0=J8FxY)#? z7M;a(m_MM%q#qOuinLb$gAg%l?Ov^}VW>eOfR@WnY`&Ahc)GBEk3@_u)*p+8-#yw7 zW03LmPQ(t@OQnPBmXJFU$Wv2wjxNj?0xsr0=|XfiH@O5DpVA0x_uW>6Ei>fX@v4re zS)I*Oj>h|z9Cf03X5vyO_O2b)a9DtnVLUJyb0;d40_t3j=fu^1~fwctcn3=VRupsGeKC*SYeNCI@@YT2 znN9^0FUXVr5LQmoz;dl<4`-7PTac$^(!8mV;zr`?SBqAbz36%Vw-`Z&l`W9NOKrPl zqR1iGv7p>w_j2F{OIi8CZ?UD!<^}s7^dEzfIqTsdXa&m+8s~7G;fl0H3 zU0cuq|NT86T}J5a+|4wz|GX@}IjJ^XOZXtdItw-0?iXNCca);)Lr%Xy1hc$&tw){&3jSt9O*oY%%g}zO#t;)B(8|1@)^ie zuE^r}&3g+5hGdOR6Eq6Lg+TW6dmhf1@-7E{Q4tX}5eL?Y*x6V?Mo@wXIVG%jI_MNQ zjYB#bc}QncJ~GLdu31Tbw&b^)={?R+rUw2jj&-Y=xeKtMPRAG`bV!RznQOA=qTrKCm^%Q>~y=?|yyeNJyS?~#ku}pywqCO<*Rnaz~EV*v<57riZ zD{U339gVp*6Z_t=adQPd&pS?e^yoSB}L%smV@p6@~ zPJ-(ToM!^AX}7pMfVMrREx*3%Z|-c3r%Pqn>Fd|kXlZMU221?^k^Oo!o<^HCm#qmx z>)Yj-jzvg}_I7>o>3I54d7oV^h(ty%eX;alhOO0yT1;r}L#3qpnH^(1`pP zZ#fQrl?fql90$s3gy# zuN@#6HQeIJefj*VsfFpex%BSrwu14qKcy>liw1IW?cCJbI_bmzXvTf8db_vPBaYJa zThk%e((8AqT%pL$K|1i8g*zYIPe1!oyZQXjTowC%Fs_kgwt&J>_Ci)7LIqUucx7-6 z`^9+U*t#~rk8+Z}`RW$*bZfJprdo8w?_`S9qhvl6|TYwlhBCe-n;2- zCo&}^0E;z~g!h_Al8Fsm8d^bw76H;~(vZUDBO%{!P6L%C5pZ*WarN0O1$J{GVMY+h zq@3^d`iT71xx4vh6f4wE$8hNNds;w`J(DSIImaD!Hi5~HbMi1ZW?F?7C*fQl|#PK?73$vu(pi+~Mh zUuw`i=I(&=u;J!od9cnHr;VEpH$7GEzG39sR`ggpnVAalaQVr`Zb>(*HvljCRn;YY z-o3?75g<@ZE>-eCVxv+phz_3jXs5Aqzl&^nQbb~$@tf&*tiY{(>7#w;2TVRnHJ+!R z+g@3JcIjq1ajW+j1ggtN9Q6lz$fFCyZudQeZ8M!%sO`_vc&y>44H!p*LKzk2cxvXMmn%|da2tte(VI2@TE`!r&Nq(h9K+ah`B)d|DLWVzF8|V@? zD5pB+T`(6%q6m2w$LvJJRmmB|1!#3t()Iw85-bJ9VRbW?A@4_SakZd&ppq1u>DR36 z3HcL@ym8XAcUV#_-_jissTtw|vS=ui?=a+c9%kWAOysDM5eH&V{$YJqdhbiyDWtZz z?!i!YA5xxGg_#r2L)i^0v+u?h3rK9eb#$Na@%V zadL$J5OATa7=M39w|I2(CqEI46}Dro`A5nPe*$4~$`w;@CXl-_k-mC)^ax|HbXt-lSIJTZkF=O1i zW1Y?k6mw{j7&*%KxU>@O4YdHzfC7eFVyuYmacK|V((v%xlB4GiuyshRklSf36lQsq!ftm@?$H(OD_hBxo@blIWi zak^T1y#(xUn@HuKU7VDyfi9JSJUCA+2_odI66^N;z^-SXbW2O~Dt#z;DNModUOR&l z4Q<^BRr4l`f^-&doPG?w7n$$F4K*9y7~K%IL;0dHbkk+1Q$tRr3^h;>pcZ&{UK6Gj zy8`9O?v~QoGFYJ!c<}B7)~elY(r0`_wDFZMK^-xf2sQlJiMeuvQYSdLE5ws&HW7Ic zzU{ugb8U9{Rug;#OnjL1i+yI<14?eX6Fm7O(NIw5>{Om3tEK=QS*iER!|L#2rclDM z@BDJ@_Qwbzr`y9?WH67@+4fosFkw6>1P031_S|Z>WyvLi&e(cJnl@N>v=GE;MN;*v zy9;wzPRh8=08aYvwMRFs%6sGJ<6=l)U2KgsQOIO#Q#$zjL3e*LCi+lcW&~y(k*wk7 zK1&$hxDJGy{=2s>2A0_QDhA0fo6?hil0iFbY<+}tDHCoG74kI^hHpz_M z&DOzeq0>o`VBE2BOmEh@1(0ZKw*g+%HcW~KvuW|r{90{p&7#q`)Kj~e(9eImSm!EM ze(}r`9)XLP)X|DgPp#DoVqqWjv7SnwjWRnB{%>xyNA_mir>#H0iHN~W=jQxspUk?^ z+Bb82zc<1pAlMot$G>n`vb@C!FwSo=j?&=%3CyqzjP1xq^E)W?cb{JHfDrpOaEfAA z_sisVvL&u$w5wodF;i!(m|*YeVUaKF^{Ue!o9g5;z?%>t?LY~LkbWn!WT*FX{sK17 zQ&AYDak-@Vh*xcP`9-54AX{kCD>WJ|nG-y#f~@F2jc0@>!J{PnN6v+e1&VIvsRu9# z9f^oXuFzfn__{7a{B|#dK=n19*9mBbOBa(~byLo^aYFWbOZPEIU+gt+8xxwguR4|X zzxQpku`k&FRhrb_E26gZ5TXYE zQ|T4{w$Kg^$9$G$KP)O6`(D*`}j$`r0Db>62r=OP2d9X7_DZZ}nHUQmVKh8B zB{0;j#BHNCOg*S9%Gbv^9%J9dNJ+2LKCa|8Gt!&DhKJx&jB?+Jpn6Oe7JJNN${&~i zKI6PpcEeU%vd@?g2Kn?8c9>=h->@?H_Bh0ODkOO;E0-6H3>(lG{bJD zH}9%ME@o`L(3}$xlKf7($nE(%8t@S7tN0C{x%2#wMAqoxdwK|>=i^!V8+~JkFI2Zt zk&JUPky2gIfD8KOoO9{^w|B^cH`K_LV(swi;ttME&cN`<@7uQ(?1{W6GXWltY)K_9?(4|ck5SuS^@wfk(&It7i7<%K_g4M%x8 zJYSP|9{oREoLUCOA+JKY{@hCqL7_!9;BnE)dJElERdXP+Z z=JRP?KnDV5>5*<^mnt!E@kOvD8Pfa8vbkQ{Ph3oVCv$FFQhO=?)@F~HuyvIY8upbI zW7KA4n_cowfZIYri;!M2{!!saoA?WB?|5*n?Ez`hwe`o_|LUkw)TZRaOt#>=U=)Rqm9icR+v7R zg*e9|Z{ZqBkMJ$tRJE#bC zM+UzpW2t;_MQHX$+&O55Z^oua$>9Er7ml4*vH$p&+&$)cZYu+V2xNA%rQc;2np1Vy zi-1G)B?upK0hjf>n&gd0QZ0cvN9Do0FgNRZvuojaYH+koYnuFEy2zR+W= z*ggzs_-Vkcqo3E==WZC(q5pF;v+1pw&h>=~`DhEbiZ)TSdOWko&=K9jC(SFEDI(=BP#1!7D8s5~v9-=Da&#a!fCx z*KZIbS_ACcFv~f%BiNRa0D$;jBWeUI;qZ47e(|AUx>~K}D>o-V6Y+=`jg||@<5hN! ze6Y_q6L-E>^Tw_{_CQ;YF3bvQi}2$6ZtOFfL>SY4yuBwi!?ev^l-82s^b_K@mMyj2 zjTl~3>2S^!(Po#*n~(M#YRP4Dt-oivO-dgrH&QEDv>2E2)8Z|UC9TUOM5nD?ZO(Ne z%xQ8P1L8{Q{o)S_jx$IXO5W(LCM?Dbzg$-7x>2xd>;Bf8-Ps@6O*xCkLx=kK6&KJ# zPU6bCgz;#NMjgjOxnkfDAOO1HLSZC%laVnkzpKlxyWXA(+^GvQd9&3aFr~aaJhNJJ zi5sQtJlA~)&KA2HieO34{`&n)IQ%)6rl5hMvd745!3lz@=M%{YZ3O^d$1*Il&y667 z+OVJX)vq9OXab95R`&7=NcSx_7&~QIbj%Drefiz=a~Jd-mAdF&l2RG;8PHyxg{e7#7oVKU`T0MUp; zBlRJB#fgv34=F1SR;n^BaM2uQ@chptu(fym<%Ebc)(SS%L69Cnt|&9C;xv*wX#}>{ P$Is7|R<$twc;bHnNexiv literal 0 HcmV?d00001 diff --git a/data/resources/StringResources.es.resources b/data/resources/StringResources.es.resources new file mode 100644 index 0000000000000000000000000000000000000000..121f2c7d4b32e1bd2699ff1ec5f469e9d61daf9c GIT binary patch literal 243367 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 W1&Ik(C)M3)PlyrQ1kd>H)c*zIgy?|) literal 0 HcmV?d00001 diff --git a/data/resources/StringResources.fr.resources b/data/resources/StringResources.fr.resources new file mode 100644 index 0000000000000000000000000000000000000000..b5adb477e98311ab7fa712fa008d0e8fc790cb8f GIT binary patch literal 222881 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 z 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 LBVa#9BboSLK}st& literal 0 HcmV?d00001 diff --git a/data/resources/StringResources.it.resources b/data/resources/StringResources.it.resources new file mode 100644 index 0000000000000000000000000000000000000000..54323a5fda8633d429dd991db420acc72ef08c55 GIT binary patch literal 241724 zcmdR11zZ(t)1N(dU^gm?U8o>-0it3Hh$to!(nzS-tyk>8ZpBvYj%#;dcXxN|_aFA| z-95`W0*8b5{qFstc+T$3JkvAJ?6aqiz1l4h(G>gyIYoqqc?MWGdWHsthjjA{{r5LV z&#oSxA?1q%gmw!G@%M2rU&O^TB-AG;u#TlgB@3&nl`2_ODqqAd+&?Tl#IsJIXLwjh zSO4-wT7|p&`*dsS8Q~n{=NVYXy;`-d*4?bDR<2=H#j{fN8pYz{3l9wQ3GkE%aPkb( zfUfFk@dy5EWz(Qls-bxYJvd!;P(??FK@mZn1}(PhHK@pv6@%7%UNPu$*(-yhE0!2M zH@g1dFC(G`uh=(xaHYDt2iwjqHpITv*&$adJ{i(Bq{h%+!$OBz25ujExzOpM_5*GW zJ=8}ScI!*YVIlL&4s)q*J#23Mj>F8$E*rL>XpZ4S4;CMO(6;>Wgj99j#&4}_5UL$HB4;)cGZRm*hllP6tu>8mfhnF`-MD8v=(%Rf(q}%tNBi9aH zF>-OeH6sU|xIWUN!^@G+7W^7HGQ@XOtzv^mHF`K@)EAE#qwe_a7}ay}?NR1?9*k;| z_1CCJSJVBqxt7Ua6N(o3>)nIAqqkkHJojBl|u%9Ql0wiOBJ79z>RG@F~(Y>Qkf} zeuU3oB5!69##m(=J|?2^%rP@M-X3%LcTbs18%DclDlnZr1Us&S_$&{#c$V>a|PBDF2QxFpKA!J4RSgEvOKxxXo@?~2n=nbJ}1o^pCM_o=xsugsGy^J*N*HLqW$qVtC5Z9Xq& z->-mX7kh3FE!t`y3>5C49@fY&W6pe z@onJzj!kFGuaI@l{DE^f&u`)SdH%4zV-`5Y9$IkU`pklkF0U5MjLyCASmwM754)CF zc(X?3g|DC5E&TAc<3h8Bofr0N)^B04Gm{tg`LS$auGK3RK5^K$aCM!l3sW7swXkco z0*ltXHeGZmm-!;w1D1<22U#x)A85TO*JS%eBTGzKw7=qvMMtfEELzvPUHQGeaK07jcn$ zy4~mR(O1LLFP$(Z)6y8L{7VaVE3LR;Jul9`Swz_5(pVjSphOc%H=)HQD(}dMt z{i0S^f3kEn<=(TpLUr3U*B*qfA-||KZM+Vz=@N5g&7kE4)-G+)d+j#20c$&7idtLs z-t4tgq8F|m8T4!IyZRBMji8=0Hcb%W}$#o0b zonQCn)r)m~qJFF!9s6_L^VMnA*O*y$eM3!$^;7fuuQz?yd;O9V`_{WoJ+i*~)VJ$b zekigb{SS)`1CA};VBde;h7k{TZus?d=Y}5M*EfV;d%R(p$?FZLI)rR2@i=s2b(?`3 zA1#X9c&G5$jis}{+E~dg)u!MLyy%(pNCc0Jo0VD&6fR} zZvH!6i_KGV4A{JI^Ow!Vnwf1`5?*>suq7TbC6x7OU*!Fnb{cY)Mns0Zz+;jWL z5B;`VO&_v7tk%};&l_&rer?ya?L#-!+~M{!Y)6h2eRg!)Jak7utFb$ZS6sT|`o&c{ zM(-`V({5sgott~w?ew_Oc<1o-zB}9R{kZdPp>(?{nwadO$L702qOEpq%F%R}OWmQn zvOgNP%OPmnu29PtyG*bSeKCU|$A*wEdtJag@tzQ=4&)hZTy z?*0tgvv%6)J?DbH?OD3cd~fNw7JI+e9K5&C`cZrR=bhhc+dA*xmxn$7dsXAC`?{6- zxNk1i-+#~P=>D-WxAw=3Ha(DgLz4sU=?@&}zq0AUqcMI5tv)V1*#6`0gZ0)HIJCQ+ z)1j9u1|Jflw;yWt=Hj9K``;cqeKz~yrVT0_Uj1R&;pe?_9cg~E@R45r9gY;9+~G(~ z&+sFb*;gGIQQ*Ll7|#<&nrAtEq(qkVM_-!fI-2TozN6dL6+61`uXaaMe;atzVaS=I z4c-?%)_QY^W1Z9696MXH@v+7YT#lWnIqaC@@cqZuoxFeS)EWEZ7t$^|{xxRRai8pe zohTnN=fr~6^H0Q3^od=04xMN67dqVuyYS=FfD5j@_g@(K@WzEtPPZ?lF?GF|Kii~>qZ)0$c>i6_ zOR+Cw_N$Jx5@a|^#Wewu0O3d|N6Y{N3YN6-sZ-(%bjm@d^`Nc-mEb<%Ge#d zk?+y58+R^zzfrz_&YL>}^WV%JTk2-P9y4yP+qwQ`i1&t@Z(A0=<=wT^t%wcww@x%~ zdu#Z^h+8A)RJ! zR=ZueMV;GA>NdFD(=X_D^sV%F#^%g<=kWQace;LwyyN)u!<}=}{O*=%-{-F7jwN^V zG5&9ivcDx}i0 z)XfJxb2vWpS;1wCo}G=l@N8tGs?R6&uJ+tyM6>6E0|z{J?mzi?Y@?OWJzk%D-m2Z* z=i3(Ce}1gx+vl6Ee0%=TD%XpCdCgyB8dLg3r|WZHd~kd6!m+>o%ViIOUoM{7?`0N; zp)Yf~j(vI3ee26dZwkGtrm6BOwn4~61?|ZF+P6@J*Zu9SUvIuq{dMIBZm<1@ zdB1M`Vae-a_G@3)-f`!39sJbAPlmepUw>##Z>Ht4d$X{O)0-DRXTSNlea@Tb&WqlR zY;F2B)VK26L369T%{`>*+bxTI-tLL%`L=Sk(Qn;rwtaW>{IGZH@0EJLy=A@kosW)v zfBx*!_pu8PzJDoLeyFv`>cfDI^*_9s-QvT26Q>WKPWAfm?eeJ)m*&TQxajibL$3ij zK9<^4?Bivj%*TU^Dtvr5blJykm9~BSVDtFnxuFF=tv2oQDZ9J-r*msVKGl9v=(FF& zDxWQCI(&A$*8KCK*dCuJH5~N0aJ}W9Cr5nvoOYt-OO~L5U(Tg!{H5#E#$Se}Y4xSg z&PiY1onP|h;G?r&nufpsV&-W2wM?H@Ujsa!d_BAK>(?o+*}qlvsr@Y^tK+xRtHynM z9}x9zOwi$PCl8_jH{LeV^B-?f3n8I(>idAN0L&sUhFbteo}z@~8?w ze2TC7aW-qopSF3+{w#c={m&KUy8QGF81ZvvnejiTUb^}7!_nry>c49B%d+ywUsJZM z{B`%-#$V>S^N?lWX!7VZnerdnP6hDuHOD17>h_dAUwuubO!5e2&+igk-|Z4MOgJSR zcX%K)E@7%M*lmZy-TJ9!nA=BR92q*+#}4y><}YWu*}sg4w1n(EZi&8Zfh zKALLMx38&6=FgKlYqMsl7o2xW-TX{o>bkXpQfGZTAobe;8&eBMHl|+KCUu&S$joWn z3k^;)FUPPn0kfy2$(Q~`noQkurnR1In|7wzy0n?S&!ye{!X{nQyB*UV4ak~)z=*=> z7u|oEJ}e-6hKD=rWOy-tb%syx4`wK{`(cL8r=Dh5pZ!yYj5R)GaB*yw(I;nA#^q0P zWLklrmH6?iS|Zb0^V69YZ+)4mMcvYwPcE*U`Bs2yW|xH?nQOcsp1HvIn9OgZH)L)X zek8NcuhJ$~3(J}Ob)}_A7xQi=U-t!?nB?tm^1kIblg$(6nDp4Z)g%NzOVXKTG3#14 zi|do_SsZuY%+h~t(X4huZL?0=vm)z>Pg}B{E3z+ZmnCnqzW<=f*6?Udw$#TTXS18H z$)4$ak?eVo_RM~A_LuA%BeLXp(6T{}RMj1Fd~poSVX}W@4(oRJbKHAlopa^+ra7&B zU2?j$@XFcCY*fzY?lCztn4Ql#yv(hfBN}LOWp-(lYuDWkxy%ct%YA*4f9|6d!gBkU zADlaL^nu)`yWPoMwDjHFgZAXhb74Y}JYUR8Ak6!zcw^IFxt9O?lgOQYoFQs_czV{`q->Un%td>ri&R=bj9^XpB2nCGjkDRydm#bVnd>J)oD zcw4cM88?ebZsEA;fNZQ)b2okhn^{uV7~ zMp%?O*~g;s#z7UA{Tx@ZWbna?ISak67!_<%X+jpyN)5(-sPwsM=E_H{3Rb4Eft9Bm z?_1eq^SH_#y6vhw^;YP}2AuePpX*J>}m53D8}7*TEY z!1vW&k8e{wB&uWe!1wOe3wT=A_-n6qjS9}yYs8M|Qlnp{Pc_!`$XRn+M2VU`+$?Hd zZ8W83vplD3_6~Yc^R7jXS`*ByY8A5duH}1mSS^d{XKP)&^tjgZu7S0mc8;q3D|CJB zb+aGUF1hkU?VY*5*IwBzU!8q*de(8;zr4;BGokM8IXUW9%v`8$ksJfjRll6+ zx%zecU8~>leG8km>0NCem+5MgX6i7TPBDjV94lyS=TFIH`@yZKt!6@1+k1flw$}Fo zYzu{-vK_bF#Lld8PP>m2%Gwp()zHpx1lGIz`xJoOaA^tI1tEw;s>zZdHA4 zSG|Ag1~zNcHrVdjtik-qW(`WM@6=%Xmxu_c9;FjSwHOuId^U-_y#vj7ZBR;+`8z7HyeIzXp!!F z!}{woHTs&aaHA#9OEsEvwRNM4r8+lS6Y{9h*Ne2fU78UNi@e7xJj!0 z;Z44MSlVP>rOS9msV*{*F=%e7`(TUN_?tfgD(S1k*CNZ)GzIIC90msqzNTsXGX#5x~a zb?W}9)%L}uTQ~Kq*t%eafvuf7Pj9`|;#2GDU-LLV+GpxGBUKg0%#*zxU)~OJ>^d&Y z@!FKzj=Ay_cA8eeMRK&NR#t~)iKmB!hsO>XBS`C2%io8H;E#EqTK?iF4*``M0f z)60HWo37IzwE1)|v&;I;6p919Npn-_U#>Zw~y`cqhg+po2M4+7(3@^M|ZcA9ZRfy z-|vr0g+pg1${4+Z3%`vl6(fxBe)hIEyQ(((8ovK=V>{POhY3JG3Y&*~R z)w}av=c%1%FIv{wdCAt!ZKv+&>`c^U^{v8PTHX%pVxNC~7r)WrUER7r>FWIKRo9vu z-gmt~CER!BsO#Q;eq;BrGc(-x9@yjFtI%clF#oIWW1ZS{+qCs!x8T(uyES=|(W79l zN*^{h_>`RWWL<<`j>T{*&99a{O~Qmm(TgqUPH6A z@G3Js%4@^H8D1Tp?eJ=4bep%oP^< zw$5C}?@;MRe#_T+`(+&1*Uu*Za=)yX*7&*h-R~Ffe9-Ue?Sp=$tZ(?8YX8k|VoVAD z+&(<%rA@{_JM4@D*vRhEJ+dGyLf( z&v2W~{lm97%?wCVe zw7=(@bY*&_nOMKqlVO8;y@}YaS`d&YNtZ(l#SNe{8TC3m2oGtq8%N5wKX8r;FmOPl>ul$AO_N)=8bU%ScVWXyYZ4JGfM0BeM(W_%bq4@Ao z5rGP<70CRgKnL<_XjD!Oy|5*6*(lKRU-+yq(P3wS)|Dp8ypJdvyDFcGV?SksKnq%E zsOvnU5+jHnwiD?11%aLi3pCA}==?{4mXy~}Ccyc=lqhdL4IMA7p*LxWRy`-G{9K?4 zF+_!iXy|rEqBQ+A^#B zqcr4PohW-(4fP$Nq0xYudzC=x&J(4L5~y<%q6(y;{mnG=YZKA5@A&?JKp7Sj6}?UL zHkXDT*kC=oh|B@|!(ST8K1ZOkpnF&e4NWgC(9K-nmqtUA_6n4z4N zkcM2GH1yMfXrwPuL@Ev4Xi0Rvu|Qodi3X<@$QQhu4;QA69o&)U@lDpiZfa+*M|Tm{;BpJ*s_Wd2L&*l?nn zy#>noUZ5L;1lo{BpedUKTG<+UQeGgxFIf9-qI4^WT2uyaZV_$Ep&^g10u^!9P?mE< z3m!ms>@}1gyy{V#=vfV-OR)mA?oBixvxcVZ5U364-}^wI;@1VrR7XRx?KCte6Zm`r z@Vjg1)=Q#g;Aw}O&@s?3w;)j-4e&*S_JSJPTUA5HaBtIVL_eXwr~NgQ3VeQrdxjh$ z+L4dwC4RDi|94EFBSj!r$mFys(UN@v+2H!t)rk5+Rx_FrJ%2$o`?x^EAft=Zh=y;5 z9Y6<77ZKgS=eu7MnOqa7_G+R&^`S4TA?Jrg^Ps;oX5#Z_p!>8yZyFPQg`V|DFVHot zv*{b?JM?J%4x&d{iGJiKTGJi!!QaK32~@=fH1-t89riLJJJI{9;B!6D>8v5o83KK_ zfXpfi^r@JJ+EgIQ8BOGwMnl~T5P4Y;eZv|~L-&UdgIz)%?Jg1d9w*AQ96#_C;n2w| zxOTz-qLr|pxd8%Y%>a2`B(m;`;Co9T>yZNWpHCF&1$zMfZp|UzAPoiGA)3CCNOJ)E zY^|Zc>Jo*$A{que^BpJ9sUV_L!(j9MiJHJ?{5m6$*%pCHWYy4)0dP!V&~XUu`~=u| zu!fccW?#sv@fV`4D+QX4>+V(%XwX5TJyt|>z^A<*AotI(yD*}z18{viqQ909)iWnD zTOiP^a1Bjxf*%B*g0B;`&qh=Oc5@m$Yw!bfFB8ZryM`vd5NP5MqMMM(g)KyrA-`p? zwf58D8~uo$VlDX#6P*CfcCf$Jd5Jbd4%=|A20RJ`--D|QGy(k1gtg2G(U1k~qyY4* zye~e3t~TxqUlJ+MYpknYAIQT`LmL(fbiX7vrrp4Uy0BHqafF3Hb>J(qof2q71`Rn) zC$fP*Xmbj-17Du5r9hht!_W1H-3bD%hu?Uz6>@=HMV%C=z8QG?3qCI#J`4KXcCJ8U z9RH-~m4u$8hu#$wC^d9H%>ts1fEV)}{s`;M z0A7|EuA#9{ppT#6yPgs4`U`*OgztPSkUe~3-EQ!mSXZf8&_%$y+)6_y@q0vP4SBK%VebuLa0>3U~xR<%SqDpreLDZVGhu3DJc;@SB-n zgJmEa4RpUcQ3LqC?$xkv;6J#EsNhoY3OZNTizuKCdp*v)ff#8f*vhBg#2NUhN{$r-^b7RqC|GEpG%Op4ebA3E$B9K zjtrZK0zF~R`4Ma2bN#(FiLamA--R_9WeoMZfFw?ErGmd!w22t90~T&5PW#i8?hWZ&?X(^ z2cOdXoIp(w@rc#E5bv?x z%<$O_!MCZ1Q={QOUI!vBcY|E;Goliaa~7hepgj%rS16~UnjMH-vuG$MevX27t74F2 zH6S|ahWjQ#Z+jvxf}dT!!*3%uS@1)kz65=Zgul2W&_3u~YOL>W1oYx5><)a(kM&%G z4_GsW$T2O})JC8j(5v?CHB>pXhE6yk55RZ(J|ee*-+u;Pd^-%gbVrOw%;+&#pl0w@ zsi4O>K>u3k>Z*zG2PFjB0b7~~Umev}L$*~h_ftVb?;C1pv9CZqA44wybIWDuBJ^(p z^mq+yU`Q^+P!HI58Tc{eV~6nj?Vr%~9s-rQ1f8CQcwGvg)r7uSLRZWYGiM`jm`A*bvFigHIhg`aB=e{=r;;I${Z+6MalmZ)u8 z#No2gao9swtm_7@y_XL834RWz1rG4Qe+J@RYxqFOyavF<%lwNFHEx8FF3krXl^~^Bz^*|h!E%tY-<-}_2M=BMoH*Es6a#N3iLFShC0~@}fJYpOCd3p`4&IUc~k9EaDZ}1avR-m=ek+2#X8axv^k9CbbO*H5p^gTCt z?}L~FUYr5%&)kJCtOMS_4}EWs*y;{@dL~fxOVk@HQD@XaJpYWi0AFPTK0SRRP`{SQ z1N$M@1kVb3BR7C=%V2@{0G)9!1)Bl>LFELxT@0|GB5Z2!w zHdP5YG~)&GFGutV@vQ6yq9>IQtKhp#I%?=@HTWH8f$AaFPcs#$26Czw9;mnKYiR0H zqS$n(U*K!5Bj@y6E>QCz)Kbv*KD7`Zi+~33{l-y&E;U6w1^@Dax1TEsWD1#>A$I#g zW&<3c^H~2c*x}Ac@cUQbt9xk3>M7zDbnakIfwtrq=*Tw26OIj_%{7u}2<){^9}U&& zt)Xxe4f#UH)VS|4;-Bb`60fR z$NgTg)$5Sw2-tLmIYhfNYN$ALuoP^hU|rMzjSB2SKiyf+GT)*1ASg}uRM*5(ml zp8_?Q41Vo`9~h6kV;B4_bYsdV{2i&G3y2X%zTo=@;0bIvl_UJ{Vdw;Oq;)KO*IM`) z@N0m*hU(kG7p!4k!jFL0VUT~Z%mRf%R>yO~R`Gk^`Op{0t3B)|2jbOM@NfGx#AeuU zqtwV_A?wlLq5DMC4mpv}UPZowpH%sv&wb%f!MF3Ufl%mc#%IutwBR*-NpHyNG<3?T z1=d^=H8j2-y&Unp7;5}kuvHE04tdCl4X7iro*&4!E7>8hsSjO8e(LKl(BBrQ4b~$! zIE`8#e(VQ)v3oeyYmVF-e408Lsca(+Jp=zL{f+u`4Df6xI$jC3K8~n9baygxsFqHM znXt`aGj6eBC3|>fmueMfgX^btu+o z3A;L(SwpiBk59TluK=qx^l3Pu_6^t20>nDF1}YApV*3p?H=L-_2>20uz^RSAw+iwY z$S5;-@a`q@K^yp1$a+c(flk*#{RA7>Zz2E!ejg&x0O(5p70A00pE@HKu`dM~!I!VO zL3Hq(Ko;<|m!QK>5GRHswwpnJR{CkE7vcy(e?LJUSzf^}z=!;O95EWYw0aEU0_^(>n{|e5UV=Z!h}KCV1+Jowo6@U4a6 zUmW0jof{+eL6@H)5A}ndecz62;K$~6hdnmH-^CDvwhGh(aV>KV_<^MY1&v1Svj8>d z1*`)$(mfsWQt0=Ci~{9D%s$r!_P$J@kfz9U03+LXqK^Ziv&c=$OhrwMb?t=B6@_24 zge{&ti2ee2*Rd1&JFqX8JmA@2#5L$?6UfoY6#PRzQXhH0+fIQhBDbno8gVt3KzFRc zug)4Og1FcUIL^Bu2YiFI<0lp5crO#;X9>uvoQD4X8}vLxjKiAp0Zw{H&<%dI7zAI7 znEP!p(fm1}uPl5c^!q{vb_8_dPu?|TxJf*-kY8@(FHdio;d zdU>I zC?oX!3v9r&K5P*A!SkZf?E&}+%+@?al4+N zq5H!$Q~){1cJTW7I{54bSU%_&Gy%Fd33dh^H-+x?LOgANI5DyddV%nHna>bez@LP` zKejQ!@7n|l>jgW3A8c6wHjg+`q$K>)JgnIYG2IXH&W&8657rC*A3qDZ7lz-Tg81(V zT>>xGfxg4=iQn!ZS3^$MrUU#r{A{COqTGlB?`FWa_-m+DA*{C$dPRUU0=8PU6LQcT zsI9UPg}Wk`bw&=@T0?K)XRL?APfkEBG#Yu+a`<1!q)8|Eg4Lk)FXZ1Hh^B(B0<)3J z_kq8z0Gk>Cn+N|3nj&t&Urq(StC!I;gWq4$P(vjj;6C7V$xP(8AM_W1%@@J_e{ z--Yi6Yy#a_Q-pf1mP|d-|R?x#y$gB3C&jS0Y z1fM!4KXQNMY7Rr8*O0?U&@=?`#TN14@(;-47<3!9-UGafd?rw%K?02fP3z!8_JEc- zsDrX0hnSBwZ*7A3TR|X4_>�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 XvmW`n-a3&ICPiL|LG6x++k^iF4kNmG literal 0 HcmV?d00001 diff --git a/data/resources/StringResources.jp.resources b/data/resources/StringResources.jp.resources new file mode 100644 index 0000000000000000000000000000000000000000..2569ec3aecb25a08b1347e767538514c3bdb2294 GIT binary patch literal 218597 zcmdR11z1#D*WL%ayRfmaFc7;aI{^_}2@$0vRP02r-Q9uR-Cnx`ySuwv|98!~`<|E? z2M#lQ_y4|!t1@%ediUC^cbwD5U+)nZW0Ua{;vN+q;TL4*<`*6k8Rp{`{_o%1{5tvi zg_SB06z&re78u}Ns(`0oSa?84aEnwp0P<$iRrmFuxkXevuJjodQc0 zXcp-m7~s>;FUljNn_qAZ?@EZY1nyyj9_MJ!{y=-TT=u%OgqpP0? zjxLovJi7Iy{n4qGAC0d6>Spw)J%xum*!T`_^P|V`wL?}6UtDX=@PQ|947Y3hYWVX7 zzlRSG>pG(Dqsb$_`py_}x7*GUJr>^?VYBz)hz1#ck9d47#a~;hrTc4q!2*B1f0$$B z_G{%vUMO09WbmvRBmFP$8d<3<8;YxQ-#g!E{EK|;##fmX zFn-9V>Ep8`J32n*{G;)MrsSQ_^Y3yKHeX#e;d)GtiRmv@o*1yZ?!>eyyG{ Wn8Q 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

$BVpyJh4P2@$7We z6e|-3U9s2nsqIS;Jls1K?-QJl-3%nCfLmO4sl~}JI+%^I;J_pbv1vUs=yH`;g^(N| zK@qTTycMUM@%Um_6B}V&b3tdY0j4t!&R=}3y2}S5O36gz{&`Tn5yMZ6nI|BSz17E1 zmTo={BT073T1p;6jH5;iEn*&Ane(y%C!6H@r+pedgP~0kkRKda)=C?OCE4=*L{tQ= zSB5m}*Y~zL(l$P#Mm)}qH$<4n_Q-E-bjc`M++Gl z;VAG+L^2lBX+jP9r?Sm|h;D=)(=$6&h-SflkY2E=6jpFI3qKRMH6C0-c=6IN7(Y~h zlL>R@0qx4nusvZK%rn^a=;**axwbvMw@#XZNpZK9-;%}G3%&J%tT{HM#fHZw^Nd`X zjhq&k$S`BDBCxV))rLoT89W_8S$?e0gJ%8-mBEZ**9x+(FB#w@a!*w;F^ zQj=OvD)dW`pGWx3O;<+UaALvm(2#~cG_gr~IKvEdqDh;3{82Fxem_IDy^7GrE~)0Z zd^UR5y>&R-;!7A}+4Lyrl|&;-GHiU`kB#qqk_lay^+!bOld>Lqm9wY#-YwGQ{-F8H z5Ih*(?=7h$5T0=>?@)*@mkH;Sq;>1BZWIJkQwrkNrCu$Jtjn??R*5cQM&Hm2&tGRX zg1Ep9lgjd@m}jybt@nR6{{)h#+wN#1+QC<87=k^mrzy&^?`fR(mMRCn61w z0aepi>5Ifo!MY&y2DAh>XE8@3B8WJRSKVwfYfy}awRWS8anCp@Y}V>G&6xM#?Tls+ zn{$zg!zqor`xl#{7`Fus@_<^FNSB!_u8~XSM`5<7FY4!GmzsjfOf2ZF5wT5+Sgrap zYZS~)GB8rQGiOb^W76%@kOnu?qdd`HfMDqoAW}o!V>(-sqkm#|LSX=0COxwIX*UkV z`~t8Dtq$S}xDzS>Q6tS&xakSnSyhan&pV~)Z-bZ&D2xmoP}oco9gz=qYV3JpcZOJ@ z*{#@bZLV(I5>^$Q=;@DrpQn+Nz08S29DldKL5I}<5CPcMi0o1D4lf_r1f=w>V8Qj& zEofU{=|!&9t>E}nP@(8L!qXzBm_}GU|4Yv{wu}&+x5*~m$FRcQo8Tn9jU}eHn~LEj zEo2zot~7{;VYW4#vvWak;K==;Z{89-YOGIU?94uv@13GNgeaoG z7C1kt26VYub10KA!O9#g4!!riEwkMuZ?N-e_Gzs*5#7VX1ag{tZpA25a(#vYC{Zzs zQV>g`qMnO~0mFSKRAxV3J-iloABwGILzNM1AVE!T;WUvw!^99Lui#`f`r0Du`Izbe z_EHxdBf#<;V5JMJ6*gc&h213TbDU-Wv&^`-7j%^6%m>97_(fuJ_A;DJaLZ%}kZwO3 zC*(N9n|Ws0<^n`uYE1~|usrzC9DJ(|K{7!vHH1)+gvkYeAP%-S<$YDau$N%w*r7*ATvKNd&o20$uxlc5MOUnG-u#j;godC&k@9ShDgpVN_B zohSgk2a(O^{blm;ALj2o0nv>$WGD3HRmq`nI*`7tsR~p*YaOgl*!T{#j-!YGu!+YG z1HX|sGQt*-9&L1KrSDDAaB(n{7`go}191&4_~xTpzd1X77`mgTB+WVdagV87V>UJ0Gf(3XH9J` zFE)pwQWF!!2Ad&)mK20~_f7A@F(7=T_G`u2Q$G&}+*l#i1EToDD8dHHa5qsHeM~QO z4i%J~W4bOeFC1aRHt%kn#gPqYkpPD?xoKu9%@FW}-`+7>(z{HKz~$?dcL`H@&RVh# z98}Vrrab2XrHS*pZicIbz**V&+DG|BECezX#t5PHb@E(Vi@f2{_3{WgQ{8>SlN%nL z*m<*7SU0gL>I|gb9v3w0O&ee}e9lhoYIW_mPHuc$$N;{y%LQc~p5%l6W8k*8Dfl3E zv2mHQ?q%Z#q=vAP02_XygI6t!;^y1!eK>=JUN{KCU!Pfq0GHPaiVTq5ne^6!BfGWq z4tp{xAh8W>BuVhmPEjo3dMAWvw*>~Fx3Ls<8AYtb{X^irU1VD~Gu0p2z%Thioydl= zjY!d{DR|i80(kHoAbmYhOf?{~dhkuaJ|_2j9Ti*X&P0OL0;9)y01a}5;&ldT-(Qf4kPBNO3a@l?B-aPSvVH3xGmP!n3 zOcCai1)(FkSp-80$pz^hv04C1e9!98dr)_*(&Ha(RgihVa#`HrRotToo>3N z9n3`{^9su+ZUc)XrMajfeJFaA{=>iS#R=6LY74^pH^K%(_TSxGGOIk}i_!~Qpz&~M)sSgLFcG`vzF3(pfe)Hf`d+$Xi#H1DaS1f}D>#cOeR)#*MG1z2ibt)`_n)RnxA?q5Revm9U zJMxM-`c{ah=()ZiBC~i(w?M@v6!^Ge4lR<~qzX7cSVKLR2Ef z1g9=?nzIIHMRg?{BUsmjAEIdvYEp(opy1=8%U%es=fCv&_W8NMxOmwZO@MC*PD7j& zObdI4VU4Wr(s*atr#jiQ1>6SL)Z-c2xpRPn$qf0 zpYrKV04Tx@>8ATEH~O*#6$wuMLm4vI>NW8 zfCH0(v*9sdDhKd+8*bL=hh)wN^+e8WJyqf2X?|C4I#4>lHZZn9(wCZl=&Qh6{MF8?T(w7 zw?8Ar*kDLxLiD`HfiP-DO}D4@gicTk&@{U>)$mQ^8-gY!kM*VwFe8Q2B`m3F=OrHF zi_CPl<353s9OXfb337tcI9OX8s&8=ZP%VlL*8++U^poNBVzIuMvOVH}n)wU-`FO9e z?xV~hkITGTBeFm^$FMo&V7zOkf(eTQ_eXPQc1Sk-v``a@Evzb1zd@uqtrI_cz>bOA z){%8~_A5k&S*a+R+yUnaOME6&zc~R97m5dt6%s6Jo|hZ>{P>JHI5&*kYeI9$5sb4{ z*~_dn5w!wl$qZ*gig1(*Jc>ZJ4A1Bn7NW0AU@b$0_a#AKE-^aJr;447oYo1ikir#8 z_RI(v92#Te8|G6_VJZ~Q_2w{~qdz1%0eT5q8rvQ47eM{Q0`%@yx``r$o{Q5A_S(1@ zXW!mhp5IvXd5Krop}YWAcWK^ZGxgecsDVck(Qtv)R}3bF-%#KQXr7HTvWToI!-P;a z9|hZ}dl!m3THuUrl8bD^U{jDp!Q0Y;*UlmQN#m_KVn=loo^(Qf1j?&VY&d>~NWi(` z;HJ2N$_T0riv=Gb4l@(+_+E_hUN_c`wOJEl-O<*48s#2*P z%(t>-Hu!*&UC5Bkac+n#gKF5K|E+Q8*;&TbC3qULSoYoX&l`c{OLQ-2bbw8 z(Wyu@#CvVXE9spf4wn|4k~INL65VK{Ff6z0r#`+Zsib{NWU3;=4BdPbEVLCfpH_r9#o!H_a|2r=c zTOm?auC798ufuNG$LPUv8H62(wxX_9>JHr)1&7hp1<4t0RQ2)4s(TM1p7BVFj@C7u zE-oKjC|-XH&huW~VdE}`krG+-xFo4UzX)z@(l3IuB%w0W4U|?y1F)|!z2cMlmw0h$ z%?1hi!5*xZEWsBg=&lcf9z4~JBrGhiqcm4^BfGeT`3?++fiBKhgTaKjmhxywm5NIj zKYKZEV4M(qc5+8oTXTC$acW8K$S-vjXLm1YY3=ao&OY;6%B*KcKm4??t7AzgKHfUz ziYwyn=680Y&3yc~NPb#0AvhOT7Q`@^UnbAQ{P1|2#q%DT5PU|xQj=4THPMOSXaa`o zY+XR)n!7pt;uZ;;psP(>8b_dYe#eC1W4CFER{Z7tz)mkMij8+aE;5>s>Wju2iqWDz zaXc6wq^nf!Skg7WR0h8I8B-nmiK(*D1d{{vfY6-|IBEaT0#53oPJAKxTzr!=Hr4}3 zNnEWTewJ($w2|&qzikd&#@d(L+9w3p-CLR$2ehc0bj06n_@}wt`H=iGU;n{!pN~{f zG2Th`%=t!Mz(WJlTNLT8#q!-#*f*dA?SmW&4t67?05_vp0m&46rVx=n=8H~vYr+MI z^r4851;n-+)mHG4NwcTSoEbKSX$n3@u38Zb(jun`Ii4yo4G!+uzQG0L`X1!)& zMX^QC%uGzeoBf4ZBr2@~s0f{i?|SI5NvOqW@5@r~k6atO;ivEPqRhi8*Kn4SK?OJ@ zkl=8^vp|3d0RpLw!Kd=OUX}s}oQ&qLsngjZ+0}s1{9PznEf5FkFXSZg0}`tER1w#Q zn_NhFMP8aWxcGG0z%zTmLmDoR!R>N9E@9iltlA}3n<}O@xg5w$izNmi4Q7Pnl_vc! z(r=3+0CP!!fUKbCQ0nVo-YM$Am~cpwld-VT0|Y!GQnZ{iMxh+obGX!YJ8okI% z<3|FI=wmrE8heKBiFU}npChzIJR4?|@WpTUQ0Fc8TX$;9v8eBAo;Rb^+=8fbEE!fv z6N|kY3|MLtc!(mQ)Ix!i2Bu#q##VP&w%-JIb+Mv`sKQ`MCl z0ie2SGabgn14s^3?jGu#K9k?m9W*eye$?;`Wqf>75JzU|1G;n*+6c<{`azf-ih2oY zi5F8&dae)2UI=gya<=*yn3?`F&l}=H*)Ofe-MzDrdPQ~g@@IMPZ%5mb#qFq`7Nx=m zi<-Ndac6DUqro^>Ww^($A{~r0HY8`2wXd*SaI5h*zGl=%jgkH`C<=tw0VENtHH^%p zZ}fCh_%it1z>eoCSgqb&=BTyYQZ5&3q$zQT0m&6Xs}Cjs&#)-F{g=VDbT=T|Vwnw* zAuwpVwAjFR>&-;58Gm$@)P{|*WH8-=xqiDi3<>VQ2(aTY`l2EGV1-biyHwN?cFsiU z`mc1XARNfxfZAQHW;yaqaK1qzj2HKA#rX}A@$@i;48~hbU0?>5woxF$1!@8IIXl_V zb$(8$)8qR*4hlL$XQng>&Qq9@EB2hPU~KwxfHZfZ0OaIKA5uRcli9J5mnIJIWWppV z95#$J?VOOM2;WD5QFx#rV8)MB$QGb3j5!k}U^F9eYb}vfTcT3K!ZLa_r8fzA@%T@) zE-22KHhWGH7O(h;60TWWFdhgRlk{~tkd62=^7%`COpSfSpYZNS*3gPt9h=2)FIcT; zBdQP|U;=K%ACsPm?+7EpFs6^w7Ee-oh_@LcHeCX)XOri}^ZHsMc~n1pYHPW(qg-l0 z_+=-3T{>*jGJW;1iJ-H>x)|x9!Nkkn)fPi%^tei6VrnQjUF{$}0KEg{ zHQ^61#}1N~MMW(B9N6;C;2T&6fkrI@zJb+qIvy?QiMjRlCviE^5{1__Q4b9EO&n6}?I;c9n0s^ueErUif>1 z_t|f10Crl1vx@j@5`jT}cN=y!`pBK4vbx2Saf5(G-Lwr_j~_t>UL5i? z;%TnfemX9cccbA4k3tYbqb>eU3a+v*hKYDq&t$q0CSgf-8O3IuBAW&mn~<`gbqopf zCaRi6KoC&)S1>avAcL<>ZSBHU5Z6z&8^n-k%oZwEJ)khx2f0oMQ3qBT=;6- z*~H3|j#)2*J8z#o(@sE~I!^jkF0U!*+#B-wHc>uaqvXP2s5AqeXc#;YLQS6z7&Xp8 z*^*KR9j~?H=0J;a+WoeRY_v$M7FlMwvtHGA#$0OW_e;XD(m@5k6gEIs3M;i<;-i}7 z>711Aj9cFn7FfYD4?wjy6EMqhmgFq(81{X?#Pt{XPe^)R(*9LPB7!f$l71z&4jW z+n@p)LFQ^S*8S+u!8rpfpTl63ef~Kn6({G}^Cj4>cv3S6!U$LR>6utZ&XEx!R%Evp z)#Wz8tj_bStL|(qm%5n?aZSg`EwE)scTnER ztMqRWi$l{PJ_wj#J5b3SAx-n*nezkJFC6bV5i>jjNA^5Gfv*pjLg5b?@3PrsHIE z9%}6Vu`1IR!#PpS!PkAWcQE9}tp->M5?wt*Rcyy%36{bi`xoT5gvMIqGkQ0c9vnHW zH(E|{=As=E(LHktUy@H}{=7}g+52bXAo{}+8RjZW*VWR1HHe?~b&hfD4RsFFz|cVR zMv&0HCxxceZ&g^;cq9H@pDhKkMIi$`Yff9X@>m(vDq@y%FfR0;4@X|}HYhcBq>$oeo_APIKV z_Oxf-@7%V5%%7?SmQ|!zXJS}91sNqC`ganHAysBJhnurlwJtdq^;3AShN;>an`;1+ zn=y~B@?ArVMKchXN;x%fDxEb4_YM`?9A`=x1>9}qX@o;0XDs@xz5k#Vj%pzY}LDZizt8lZ3 zhK)(ADOn(y@r-tKb)Lv3TPRt;Y)Qb>Oty=!k9?&oLmX3qg<9%;l9tRwjX+%&i{z8H z$`(W`J(!{DoIg`R(`wY8O#tR-=HKMqH0;tDRSR2;zbbTAnn8a_jn^(K+yhxi%*QiE zZmO;J%nuLu%r3nte-4&r=0_S_U6F&C5MN(ukk5q31$t7t^@5g(Vluoab6K}FpAElJ4Y`b|EsqjVz3RES8<*PURRZFYj1yjknPAQX2x zFgamsg-CCqn8TiT%TZ5s1CRJRyc-6)-k*Xg8r^fhks(z>VhIUu-3`PI1YK)575T70=JJJK=#nMjmVbW$5J&XKu5?u z+nu33HVg;7&Z1!uv<|V~p0m{4QU37jv)bSZ$PH8G;iYR-r1}K?Hb&>2S`c1g?IDes z3EVR(lqB4!u4{bNxrdPyUhQJHRrsoN>GPSNq`=94h-Q+0XGc$#`-PlVs^Y!wM1)Wg z6af9w9aJ*lMMo0-6`z7gFkzLSwN1m$Z!(X&$LM*g;Qqf|{s62vx z%)~bxa73&KFK9HbA$+P87h$2PLjAuNbeX1mCqY>0ir^OV7R3IrWSMPu7iLl2QL;;9 z1#2417M>%jImg?hm?*NsNheI8?0SZ&%!^TST z^Mh)-WJ1*v5u>ODVN10Hf@0){o)r?R`G*=s|AXmqDp0`Uje{QxN$GT@55r^@4XzRG z-ny!bzBw#UX?`$CwN3aaPWB^|S~@EKK{&@*;IR67CH?qN3pY-Al2T3(toGO^&bJYJ z8YzQHg^h#ifQ1q`1Z78$b*}tUgAJjxs`YkvQ;H8%5yLU z#5?3ZZT5E-@H0jb{CvW1a}EF9F%1p8

SlYR4BqiSDBt{y1lg{=!S`=R*~S zndep+D;vMWV?y1~648MsH8Uzg3pB<>=s(I?PUh2i_c_reDJqE6FiduM;s%z`jd3Dz zNLe>lP?+aXdt{Vje?{?`Zqsfqy5!VKT4cyErEwLaldFSrrY5E#Y=$&qYGvAZGM zxm(0x98&7e)kTO5<=W`ffNftf`v`NdJ8`S?7uG>2nZ)#1HFq1NsOVav9V{|B*mT@x zUs2?yk(iRZ8C$eMY#(QGrHrL+;hTf|hl=4|Z-e!iK(g>$m4wuaalyOl+c4?~X_*B& zy-E&)f_^Vs^h|cSU@U4rJw6$^;Uc8<!M^VUz54dZ=827k_rEH=O-6+v(}LIQ zYs3z@MfO&}j7~qi^sW1iCef6vySd8ZPOC~g_(Cs&q@Y*qk^`GcZQNX`xul+H>1_o< zuu+SK;i1kko+VD$w5~YJrasx|xLfPi-R9r{ZvRnj!0OW#x?kdv#dFnXix_O5C>k?h zLQwz#Oejor?f2~#>w-9E9f%>|HE(P8c)N%`SCq7&ABZLpp09ni2-p~|Q7@XCs($!$ z)#r^G zR$vV~xW&Rk6+(NPi$&F?9GL9qmFuZn$xQ~UFN(ddjF@0{SaI|3bR zQ*oz6Zjnn_HEUMg4Kqch8FI9p-(2o5JCbaE3 literal 0 HcmV?d00001 diff --git a/data/resources/StringResources.kr.resources b/data/resources/StringResources.kr.resources new file mode 100644 index 0000000000000000000000000000000000000000..77b6380c99f978ba10f1edf49dc3070043180efb GIT binary patch literal 138115 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 LW3Y{uvA6I)@-$-+ literal 0 HcmV?d00001 diff --git a/data/resources/StringResources.nl.resources b/data/resources/StringResources.nl.resources new file mode 100644 index 0000000000000000000000000000000000000000..4e9a5cdcaaec93db16a7c1069a4d500549a4e962 GIT binary patch literal 171310 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 Yr-Ll{L9OM2@bt?#doa}NY#XQhKPOaUhX4Qo literal 0 HcmV?d00001 diff --git a/data/resources/StringResources.pt.resources b/data/resources/StringResources.pt.resources new file mode 100644 index 0000000000000000000000000000000000000000..e43f84e6585a5b85066af366144a02f952007654 GIT binary patch literal 243956 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 literal 0 HcmV?d00001 diff --git a/data/resources/StringResources.ru.resources b/data/resources/StringResources.ru.resources new file mode 100644 index 0000000000000000000000000000000000000000..f83ccfb96adcabe03229287de079357d18f15548 GIT binary patch literal 218554 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

5F#;r?!{@F(TYuH$ z{QMz(epw)oPtm#nm#lw+ypLQ3jjh^A=Z8ZS6NO=72PV|cEXO-TfoBcq8)q@jDX&(fYk}xuUhy8dU`Fqr zp?Jd$&sb(qXVAY%lOZluV9Wk_Djc{v zi0;8$G9(j=0Q!+uVuSKbhWyTVW6bzDl-`PNDWT9Qa4M6$;T)-obH|_blA=IV`%W;f z`uMH#8^-9WHH@y(vlLxDpc?cJ0InL+%>og+`D!}9(-8Fb)P;4r`%tVvjZrrq)J^!0 zP$y~Ddr&pdLR3-uDc0fsy3j`zIBmc>>dF#I!j18!&2U@_VN7u3UBkg#@%WC^>?dQA z(roqi3MC%;cf&|U$W)*-S_NrCNmD%3-j9mxxXuqmgF)_sGje%{^Z5GWTG8!_UA#NBWx zg5XHkk9-9sJ&cK+KO8q9@>Y(#=;covLtSP>9K{fSIBwKUuo8MzNPN&X2U_FiW*%NK zdV3{+?_r=Kp&B4{&`7<->Wf;>VlL#Z(+@wB8Zg0%lqfrroVUglVm&A^YL5KjxD|qK zx1cU{WV}@3C=drH%m};?f|}_nPpbSmvBp;V5(s@0ijZ#mG=(VnNQ{jbL*$G;Fm1xq zJu6h2(yM2czadQ$0}B0DJTxnX<2(Rv+>&T6RT(Kbv2kx7^Nud>=JKZ~SES6I@9ld4 zK5a&nuqqXNY|9iC_dvx#!5F8FS*my=N(eMYTp7hvrOl|j`1P@V`F&kf<}07Dg(iyI z9WLNMNszA3Q1(6S@!MX&#XptDrni6oe_RP)vwS5fMlrVS|D8;DvYQ{&@B4p8y?STP z9jh?9_YfbmppZ*DtK_J-G1}?^u==-Z5|)AlqdQLVAwlg6$h%AXYW!36rgoXpbVw`y zoWx=y7Gv|{K>mh_Dqq8c2dNGPCN-MdizjNwWQh z$5i1^5gH6Nq}^eWV)`##*2LAazD{DqOB!)ddfvsL-)PNaoVk3Oh?uM#P~zcI{DhG5 zS1{An)%-a}{GJ*u;VkVK#+GPcAcv$+0ar#bG`R!6FEG=|J2Cu-SB29+6(td5GF(9^ zxsZMp8?=KHad|drzs3HX-P&o zO>*O-L{3y}T|mD0KQpjS)Cur|H=&N^@+V;eL$Yim=gmIEDLlP5s~LAREjFJpA`WJ|6YbjDmA zR77j0l8Lr?#7(|H!!{?ez_7qlj}9&&9UiHCzKIyE7l zT~Zf3GeF&{MAk#|sS}SO(g-N+C5swz2o!5cbP^)__)sivsVZr{2bwj^O>mOQDf>dT z_&5>oYDE7t>Ln%@WHvNJMVr*2P*HKBf*evL`w9}Y>>eeY2A+&@#!v@G3W>=kYwNB$ zVTEEE6{<_3IB)oCANjsCADkpr63sw#$I8CHwEJ5E^l0g`Sc@KG6W;EiQ^Oog{K+&d zwk1HXMV%~#-xyoAfG(rMpT-mV_>;v0=xrbzs=WBKe!ZfNYoCd ziFEFp^G?yWiD*e0jIpO2Xw$NdW12Q)ZDOvY*$H~A<7l+eV~lT)K&Mq4jhaluj;8cf zD;cyJJvV53Ahe1Z=_8cC@RSCuX~xP2scvhKpk*&U{;DdL;k<;E(_l;;`hm7YQ3oZv zco(JFG;75jB|ddJ!SNeoix21;Zj~^grb|6J&-GTSmnMN0>x3jFEp%45Gok<`riP98 zBq-4`N*7;6Hcg2!3U7fzEp>Q&DdZ+b-9a8Rc|uC5=x@-WrN3rrI*jot-}E?6^CTp% zQmT~1Ca%`*Ks+W93`-xgF;@74BI9R=EyoLLI4IxZXREsu$wyc3P{l__L571GEqf{P zRUGrEF~+l{|02)yDbG6N-{YA+HO6>W7*uN6oUnvs^{M0m&>2)|*%h-cRmOPe18TKw zrI@DHbQm^9({j+%Ngn~7F_t$pXh2!Kii`FTsM$e->eLA0pNLH#e^g)rIB!A8V<5gq zKLISqOvb$Rktn^bevgEs;>TYI1s&WVpnkH$;U4%GkvkY@a3V3jtr#U(j!b>J;>;}F ztx~3dQ|dwI-;`&E{_K z_F_YnI(j4(x=N1-kv^6Gi{^X9D=;Im-A4BYP=1d_Fwi1{j~`lh6ehfJCr2VGIVXTd z4rt(j&aM+W=^2U9CxIT9=UEE91X#MCm`sV9-u(UxiHrtw@CsAY$d&RFhXsgWN)o6O zP5Mh`n?hwKF&UuEusCC&xsoV9msZF1^8wJ{$dQ_T^s#tKOx%y4oLr=mZUyP z1O(2U9JPy7<^!h0oFuBg17H%sG&3Iz-3jG`|BDj!$G?JAM_U&d=bYS##W=(J zK$00rzHOax%G7`;vG4{hbo{nH7U>JM6)7YR2IG?u@N^FVHa5J}xBybTAl?N*G;|Ra zMbHR#-27$AsiQoZ#*;+Lp~>6F0A$3x;-acC07dB1Gk3_8k~&&w1hxi@8op_8N>C*M z%82U51e`GNxq;N z0Hr~*T%cK^kCg*kpp7ot>!%c24r(1h88Pm-7%fJq08mGVH{<|!0H6lOdw?#{h-mZg zG=R9qUwV|G(NU5JER*OGZ#d${eMQ?+m1ivFOML)|#M!a&FqWO9R)9E(T!qFH52fS3HN z8oUF*n`xiMvNK7d?f_;aFO_qQ0-OkpPu+-Ti3~~C2Oy0knre_#oJSyR(A*eVLKGe~ zQ?^t`QST)fk9y0Bh;i`&A@-KUYaJw>Ob3W9LUTkSqKR(RZJ_fWJymm#${9$JL0wgc zvcwcpez;bOB9sprE78>xYU=NjaZ7hBNwlv8?G4peUYWiGi*$^?OPt@f9ScyQ@dqVd zPRQ@CrVK-z|D-+vQ7zW&@&PT0`btaS;^U8!(m~}O0bfHq0Bo!kpqO@b!3;K8cL-Yz zVD+>Bql;)bke2}BtrZ9H9P#%flm-dGmL!4qX2fzrY6@|LJAtr)p^XX zJIP9X4d|2-^)R50v<_;nG9mxdLM7r|+T=>B^TFDpbSXa7&EEK%(r(0z;4Kiqzr|Os zN~2V&z9ID~xC}{#3#j0eu5$aJhHia`UA{vgWhxGMv`Ac!@;AS=z!yuz^+h6#IzbT# z4(;*fI&pnj@>fbf#!z3S}*Xk2Y!iSdRETN+!(XPeVLv9~ZGotfKXk7Lo0X zO$uVze1M5_&2li3z^bjlOW(}JF7NtI!Gm$C8j(otg@dLsh+h;HJ46>8=)r4vutwaZ zNe`-TJda?ZD@|w+Cy?qLk}2(@h$s0X*#D9DCUACD*PU)1&%uOXJYsBf8H^-`VlW}N ztcXEkv>1$J?4RQ#l%x^}m#UPi5?~Y30*ogx80>b4!X$7UyI-6LSpqSMm&8eTCg+wj zb&{8 z7nKmm%NCUVaX_pb4E-28`hJMGDe%8MH~?)pY&4O)iKWEL1pf>G=MIKJ3P7Pl(Z2t8 z!($M2pz5;rq-IBs8Xkc5K_{@2Dzr_HoUs@HDngFeDYz}sjq|Sgsew`Udf$cl%o`XwAj&>8uKueG9FS45JXmy9uKB`(7Bmt{ zMmWxS9m57hHdcHj-)N!?-04skPbEOo zb>Hiq0YE1cs{j-r#rKfRj_ep_{=)bb#QOvQI;B7*Hnp{>KCFG(*nAUZVrt~`fasL| zSgo&D?%7~{Vgb{X4laVUf5WiOd{_=9R@v_5;m$Rt59^)_ud$|YI(%>;G|M1ju<`|l zbxKxwSo+sKhIZ;!`f#~Wb)m88XNN;Mip1|Q?BXteSe`cy(_5@m3vj)TZ;JY(;TBN< zi&FOw09b&}g*qJe#ZL`Li0F*ZWWZH19*7Z_b`v+)qCGQISBca^ zF|YS{sGE<=WyR9YIr+t)$~3{!Q^u zEg7*Jvv{)mx$4H~GvNJ~{|fQeopC7@{FP|2pi?;A>ZLEg!+QVx{}bz7$JWml_^-3R z+JBY;R#$t}(<39l{jYMh;-I4LSp1H9R%~`(#@asnZMHTUWW9DxdpS2IT@}}Z>;2y* zxE7Wo()13nd*qvpU5qrM%aZk)3wBhtjEu&5=HmwHtljXb&}SQ;>ps$5VELtQdn~J~ zC{m6>a({-E{NlfYm8gfRI1?p56}eNaxrDeX=L!=2v-w2P@tRXWcDzrEka z_$iufzI^hsZ+pzk(RN|8#=-mpOQBBX3EWMkA-}#?fn0%m(QUY$>F-+-mM?DpA|H-t zF@68<)8O@P_s_8_#1U5sP1Z@tUp!M0^QBp8{?*q_#_#;662_U4-vaoWg@OBo@sLXl zP*my`uIfShTL4|P6o6!NFR(SKo#U;~($l;YVD;)3;i;^-0KWn7mk$QMDaH14EM?+6 z0LV)Z7Gz}A?8u)0?&5<57X|*G0k-~Nfn5#-b#1kDCrZTO&n+3?GI|#Q_@Eh71~~`F z0VTDa=k@yg&j5A+H5J{u!KPLDCV&ub2v|*{S_lZ&lKf*KzVcXntM46r)c^+_U7msxWr$cqBzs-#N zCIHW0Jiu6V{42m5gv~AM*FOR5AoNRyCT{W`{ro|Lnj&i43dmCdbr78NMtKF#>O`C! zc{|{)Sv=vj4>V`JtqLhrVN%6#Tcw5idM0`A;wOozRJ&Pugb7wHJi%pz60>M~6y!7v z`V~N|To^zgi6yTQ@c*6}(3zyT~>JHP_BtAB22ewHP#j@=Id za!7twK^FLZ4PaB{ubbkrbgBBie45K|@Qy61_AFK9arw`4q0rJ!c@d^|W9dl2`)g`& zAJa}Q?X+cR)pd@1X=t%*B5lE|>j5|*tX#%K80nr+6CuJq*8a@HxdBKPxDs9;Mlk-lal?lRsBfQtvkA_dU&UXG^$cE;eqrl5{0ll#EkSf5` zYhnCY&}D!bn1DW=Iym0Ru(Jl8UC&7>{mkc&41;)isQ#J_guDwds}_fWjEagIUlt9S=WH0@EGJx7r=O2Lj998h88izb!}FmgJkJ2UcL05!@+9itf-*#u%g zAR4W96-4xwtIfo^-`F(rlK;@6oo&OTvs2OJ1~8I*Y#KRpv0%!CeIH;(n{=g$jr_Uy zgnXPKjdr1Zh`!myutt5T4s&c|O3J7{34pcwG7WMrfE03P;;pvG^}9|!ZOdB_M@Qbt zUz-ely&|}H;_Co>cQ?QYz9_h>htH=hK1*YqD8EPj(t_C50eSzW_9XlzuxXpZ8UUIu zwJ*O3V8o}`rMe10R}a5z&-l9+{T@JDL^2$XMORgU%A)Db&4@Y+i@Rv6 zIp?Q^>tR^MqXXPr0=bMSr^HLI8-L3O5Up4C_}sXn=ye9j#_dj6Kq=S3f>N&_mc`u z1|O-r1BLx&?6gARO_i;2#3;Ty9cZT-PISrn;rQoKrS5~NcmcY0^Gjj}1;}3ln?`4y|n%ejCHrF1&ndKer-%9r&^s@S%iVtB#I2;xFOtZZIVq4KfkQr4!roR0(Gw1okbhdw#jth$D3 zj(_p$qFHoPSANco{3QU+T6k7jGc_=zXuolOAcRxlnHV{pK`oM>l1YP9l~I{`&Ti2X z`WG-b38GRqrGx#D{1#H0_csd82EZhSw+&2P4+^r~HQ3q}ENwOwnk9aIgh8VV(^`Y# z7Vntqb<1_kXJQRWKfW*UHkr8v90|hfNin=gMy7o{euS&DlT?E zppxidG4v~}@ozX@Y2@UQ-C$j>E?+L){|G32)M7y?CXN*$2l$5H7#X>4DFLRh^Ki1w zBAf1@S1}n$&eCCj37}5XNGp)AzRzZs~P^k+v`TEpz#EW;5rg zWcll6iU=vm~Do-Rc@6@QKb2In+5m^g4H1F@O)fjXeAWbs;Pu@)@+PF>Gq zn{l`lP=r3ifr@y%kHJ{U`r!C_0li1Z_YV9TlrBu}0vO59u)rcNKf!R~r~2^XvxWF^ z01!lSgMkovH?q8F+t%~DM<0JM3>c|_N~)Xrr`)Ch^ACU_^d1bGNQIaFb_)>;Km`@z zpkmHfGQ5$Y&BN;lXwn$uD1cGP8*BkFF?7cm&*P-vRsoKfs0&dDNnffk@G^$q5Urj)Ppf`S%j^bl zfdQYhlx7lYYWJb-{NL{{j88MT$iKsW2jLtPpI88G!{+q>8yg;2#N|AOFF>0#5LyVE zcLQz#UNwV@_}mA8HQmdJr-f7ul1PYa#b*)F&j9E>iwCsOLVpGDS9OC|L0jkYqCBPb z%QkNQ!@|q&1{;@u*?%N&>c-DA@bZgRjAlWX+gG;;SQ!+ySSoLNJ2=c`!~Lj@Ouq`$*Zl55VO|H=hWWo?q6H+n zO=3iI5m#O)hU*dkUjXd&i>G`W*tS*t-Tua#$r~HmfHoe zePiHarnupoJ4GAOeu$~BT+Gx8c4FLECE4Qu-L@E@v2+o;!^`_wWh)vJnKN9AP#lq>CT`TdcR4<6+5hnul&=@)~^L2`c~M2fmp zA`Y;_*vUX@JC>?faUX=XK`_58q!q1TPPyg@c+uoj3WGLBh$|Uc7cem8*Iey8wÑT(xg%_ViK!^Xqf}vwEsE9%1XA3cE z4DjpqaC<%z1-jV;wo!5pz!x4I;7EdffLegp1&&c=*5@{=4a2Vjb^%^@gN^u|_=gKF z^_@tc@=_5*Az&L$KLDt+yQx+O74i58gBJ)?Wv|us;BVC`_B&L<)}~+VX7bANCjq#s z8=E$O5vMN!Vu8%34C0;Op@KjRfwV2Gd*+%k><_!-Ht-SOu|Hyms(Z=afs<-&{3HU| z0g$T~2V^0A{c%7y>Z^yt@eUxh>nqjMyEjD1q7AQ&lD`PxMtvO|a9sW?|9C(g3wx~I zjSX;JLAyFDnz?;8fCs{{9dN|)SwOwJiAB}rx*V!NBtKI9wi(Yq0eE8_qdL4Bc*OOs zf5QD8gW#&IdllKVk^UBFcpedPJeOG1RNJV#iD?EBtwE=W_8 z;$HR!!%6TQlMICWV3S1LzXI5SY(*KY7@C&An`QWK06vhd=ms8f9sM(u*thsqlWuR@ zEN{1}YQ5be6Zs0=e?37t-1km5m{nc_;FBX@9avK!QS5qXaT@?p?2X;ZfK|f`5Dtpc zmBVXGYhvVHKwN!rAli)G6M$Yj9B9ARMr`oSNNq|M%lg3o*;V zgHb!RHvaV*@_2Ab^5pr+?8pkH*}N3fsB`SvP%Math7|Hid{smsIby0GSn8?D#Ji0t z&K-6Nb?_^=iR|C}2Hhr(zqd52xdbMv zMMxXXTA6apL;rk9R?`H!Z8hJ+lSQ7s+doVe4L>j*-O{ZHf$aSJ0bYCBlXjr{bmbgF}B!>$kLj%+v<_hYDj?B8@!r~0@eXR%yG za>m3kAJHezv}OX#JCGs8^-4{Nk>Vr&NT0SeUxECiLVbU%)lN1 z3?;r*0Bs9;9>5*7ytV~Z4ZxoQ<~_rROT@2i-rKPJXTWy^7j-P-sfH8&duJ@rKCmGD zS%4VI0>`-v5N*p^4d^w)P^|!6rrUb~G?e{q1Js7;2brKFCa=>`_$fb~8~Kk6?TE>{ zhPGkz)nVyYV58rPH#xrM?}wyY8=y8!FJgkB)T=pY+YFeYOnVAOI8TqnwvXA7I{?

hc90&r{?jf?<2NVtaK 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 literal 0 HcmV?d00001 diff --git a/data/resources/StringResources.se.resources b/data/resources/StringResources.se.resources new file mode 100644 index 0000000000000000000000000000000000000000..bbb74e7f5f3218536022abdc35147d9dfd9eb8af GIT binary patch literal 238639 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

jYKczX+LEMzaXz> zckQdip(q3;3*r#3X~Fy9dk!omwIvI}fvVXI$a_<_e9rM_eR)MkVu}OWJfc=gffilM ztx=QwEaFC{ym3^OiN1RTx4;o!akc+Lo?cWa(>O(lb6awAf{*G9z<${KJS`p_+W_I0 z5qLjYqhT3=wCu0u+%q8S!>U{v?0Q3)eF|q$zBt~2Mz~D zp&Y^ZDskJ}LeU#H+|4P9kWehGvY~UZMlIr#k3;wgB6?+5JQE>?rQ4^hVK(fkO@-Sm z(*~H~`Zq1HISz0z1Qk_V#EBNO2p)&T!(fyQTgi>7n+YupK*^pjfL>a*tW&x+R;JGe zsL|fu_6zG`StJ!q=<}Twyj#esY8G}n_1}esVIiv)PU)_rG>bfX7(pyplwUxfJ0(A` zyL5?GuA1LJYLWM^hA6&BfFDd;^fL~*=g&;v%^#VjMYz#h{Bv{MH)v`CiT1Z+oYohp z(e}kA@chD=tDJ(*;QZtw#z?QUnwlEkuPGl;y;Tt{$R>}}a6#k@*BL0^hsShCoV~qA z))aG>uujO{;UoRw``^#2OY6AZU0eIPj#E+GetZ8}ZWYJu(9n>^wf!1PHVXkxu$%y} zBzUat`v?6-p9)gLB_Y0*#JDfwHm<@|&PJDnMwg)5T)7`NX%lY+Wo4WPh7xwHVK6q} z5Jdbkt`rTTcQmTHMrmNqlB;iM_;9DKq5|b3Tq9bL+#><$2dHskD&eQ-Ie}AX+?Q%G z{3&`aqLw1~ztFlf^oHnbzpG*jfQ^h!6rs!n0fFf&4Z>jQ!!2@RGN;r!NL(+_W}xqV uN~2RFJ%e06<=v6R0)e*wPq!aV7^r{(k_efH8Rh literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.ClassBrowserIcon.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.ClassBrowserIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..9d3998bea8f97385bf47b306c9924f6ed1bc808b GIT binary patch literal 459 zcmV;+0W|)JP)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGma{vGma{-JZxd#9M0W?WOK~zXf-ByVW!ypVSn`bmO zOKrf(nL=VHj;c~2@zs~}ANGBJ;Rqq#BBo{Bqz{s1aQLL8vVU#&jx)=P_VWZ(=V@nXNZt1>C7>E~-X{ zLe^002ovPDHLkV1fcn Bw=4hv literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.FileScoutIcon.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.FileScoutIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..6dd0091d5d4cb593edd0f774899084ad1bf1a544 GIT binary patch literal 1336 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 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.TipOfTheDayIcon.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.TipOfTheDayIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..703bc5fa267428686d89a981a8cfbb186d73c73c GIT binary patch literal 575 zcmV-F0>J%=P)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGma{vGma{-JZxd#9M0jNntK~z{rtyTdN!ypJ-U%u{V z{h1qDDj;Zd_O7>Gtt5m9JyJ@q+3WK;noaL_I%ebK_lW>{pXV#l?QN-Rc)Xna40r*i ztNRPboFY&`3x)GMsSNqIk}B9mSWJl_+ba2u!*D+k0;*Ni%Ah1b0vbF+DFU`ExC&hY zQT8o?))TZBQDK>Y?}1wSjRd5;tq-D8v5|lj$upXFBul^8SOVz$tNyTsKry>#lYSpS z!J$S}noU~8f5Cx%NTz5960)7UQKdhs2xC%rh>gd(O z=(?^%_Z9_6swYz;Cq3siT2jD)0^*y&PuA9kL3$+YH011?p?rU^a7@n!p$TQS(pVx` ztAKI8Oa?X~zt~ekcERWW0yxx&A|(`wMerd3He^I%rRKI2!*4>A1iQUwIM{^Viz81U zhWm>^q{M3GOa>}}WNwvM&3u`FRbsa0OC}t7B5E?o^XU@Uav&hRcfLxE1q)y3MhgG{ N002ovPDHLkV1fY@<*xt$ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/NewMarker.xcf b/data/resources/image/BitmapResources/BitmapResources-data/NewMarker.xcf new file mode 100644 index 0000000000000000000000000000000000000000..c6b74749f70859b71cb5a98e5ebdeac392682d1f GIT binary patch literal 757 zcmYe#%q>u;NKR8o%gjk-00MR>2C)T!n2`}k2m>*P(*yCMf`Og^7+_%-LZvi;T9dG7g~==6W`ML-6c;2WXXd3V7{crV3RYqh zgo^2w=4F-u9iN<$3UYNtep*^_Y6;wdAl;Zk5D`?ZpzweK#%>r3NW%gj6y_YRNvV0M z3WgwQP&k7C8xVuS{XYT!-Tid<^R4$AKYsc0kq5noqDtE&9x72X1;iK@chgrYhu=}ShOl|Q*pcL?k$@i@82-m literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/SplashScreen.xcf b/data/resources/image/BitmapResources/BitmapResources-data/SplashScreen.xcf new file mode 100644 index 0000000000000000000000000000000000000000..7223cc0d85dfb90fa734cc86e9d5b05a9f25e7de GIT binary patch literal 218350 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%0D>`+`s{u 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 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/deleteMarker.xcf b/data/resources/image/BitmapResources/BitmapResources-data/deleteMarker.xcf new file mode 100644 index 0000000000000000000000000000000000000000..5e1e2196cadfd3dea383f24cff08324ef40d014a GIT binary patch literal 1153 zcmZ`&y>HV{5I?7(l+uC`AF~IBb_h5L85ke|2`NHIRAQkLgVWS;O}XswK6TUm`Hmd%IrJ#{B>Dx8DepYyU&K>3@YwWiF4N33Qn}WpSuGSSz5efkRQ*4-#~duBesGgs?tzJK zoDc(`e$HgWP8qdECG25@=TP6N{|tSKW6D3lF&^O{DTnMNy1+C0@a#T(8Zq4^>^K5Z zBjzpiF%(JjMDbqCjodrPMe_7L!X`lq0)LDvAh7@fPx7_{=KJ`1zu)T(hXF*u3wE}5 z0#qE020MR{_&)ZA1FyFWF!o2D$A-W9W8d=vyk&Q=)$_eEOu*Rd`)>-L;24ZD$@C`1 zesmV0lSrgHzgx);z{l(H`2Dm)0-LwhYnvqS_DbR@3HY^SVma{~VE0xk^(t6bi=##= z^_m2pU4FP#|4ah!pZKjzmjq;xyCh(%VB?D0u12RL1E_MF1iA`kpuh_NGZeT3a21LG zJ#643{{dvZ1%M_A6e0WN?gtX+EczRcN&+r(RT9v;pfToZvduJrjLTTpT_6GVD`lX- z24gk}$PUI3f{IDD+-43jHVN3w$v7GbXl)#Vn9}TxhV?kNQYz=HV)%a-BNi*w!sMe? m>J-K(pH>ZjHeMc@*bbt(MHdkWP2{6x9^hPboxaB*&i(@1*dWpX literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources.res b/data/resources/image/BitmapResources/BitmapResources.res new file mode 100644 index 0000000000..018a7eb66e --- /dev/null +++ b/data/resources/image/BitmapResources/BitmapResources.res @@ -0,0 +1,402 @@ +# this file was automatically generated by ResAsm + +Icons.Svn.StatusImages = SubversionIcons\StatusImages.bmp + +# Nes project browser icons +ProjectBrowser.Folder.Closed = ProjectBrowserIcons\Folder.Closed.png +ProjectBrowser.Folder.Open = ProjectBrowserIcons\Folder.Open.png +ProjectBrowser.GhostFolder.Closed = ProjectBrowserIcons\GhostFolder.Closed.png +ProjectBrowser.GhostFolder.Open = ProjectBrowserIcons\GhostFolder.Open.png +ProjectBrowser.PropertyFolder.Closed = ProjectBrowserIcons\PropertyFolder.Closed.png +ProjectBrowser.PropertyFolder.Open = ProjectBrowserIcons\PropertyFolder.Open.png +ProjectBrowser.ReferenceFolder.Closed = ProjectBrowserIcons\ReferenceFolder.Closed.png +ProjectBrowser.ReferenceFolder.Open = ProjectBrowserIcons\ReferenceFolder.Open.png +ProjectBrowser.GhostFile = ProjectBrowserIcons\GhostFile.png +ProjectBrowser.CodeBehind = ProjectBrowserIcons\CodeBehind.png +ProjectBrowser.MissingFile = ProjectBrowserIcons\MissingFile.png +ProjectBrowser.ProjectWarning = ProjectBrowserIcons\ProjectWarning.png +ProjectBrowser.MissingProject = ProjectBrowserIcons\MissingProject.png +ProjectBrowser.MissingSolution = ProjectBrowserIcons\MissingSolution.png +ProjectBrowser.Solution = ProjectBrowserIcons\Solution.png +ProjectBrowser.Toolbar.Refresh = ProjectBrowserIcons\Toolbar.Refresh.png +ProjectBrowser.Toolbar.ShowHiddenFiles = ProjectBrowserIcons\Toolbar.ShowHiddenFiles.png +ProjectBrowser.SolutionFolder.Closed = ProjectBrowserIcons\SolutionFolder.Closed.png +ProjectBrowser.SolutionFolder.Open = ProjectBrowserIcons\SolutionFolder.Open.png +ProjectBrowser.SolutionFolder.CreateNew = ProjectBrowserIcons\SolutionFolder.CreateNew.png + +ProjectBrowser.WebReferenceFolder.Closed = ProjectBrowserIcons\WebReferenceFolder.Closed.png +ProjectBrowser.WebReferenceFolder.Open = ProjectBrowserIcons\WebReferenceFolder.Open.png +ProjectBrowser.WebReference = ProjectBrowserIcons\WebReference.png + +#Output pad + +OutputPad.Toolbar.ClearOutputWindow = OutputPadIcons\ClearOutputWindow.png +OutputPad.Toolbar.ToggleWordWrap = OutputPadIcons\ToggleWordWrap.png + + +Icons.16x16.OpenFolderBitmap = ProjectBrowserIcons\Folder.Open.png +Icons.16x16.ClosedFolderBitmap = ProjectBrowserIcons\Folder.Closed.png + +Icons.16x16.OpenReferenceFolder = ProjectBrowserIcons\GhostFolder.Open.png +Icons.16x16.ClosedReferenceFolder = ProjectBrowserIcons\GhostFolder.Closed.png + +Icons.16x16.OpenResourceFolder = ProjectBrowserIcons\PropertyFolder.Open.png +Icons.16x16.ClosedResourceFolder = ProjectBrowserIcons\PropertyFolder.Closed.png + + +Icons.16x16.Debug.Start = DebuggerIcons\Icons.16x16.Debug.Start.png +Icons.16x16.Debug.StartWithoutDebugging = DebuggerIcons\Icons.16x16.Debug.StartWithoutDebugging.png +Icons.16x16.Debug.StopProcess = DebuggerIcons\Icons.16x16.Debug.StopProcess.png +Icons.16x16.Debug.Break = DebuggerIcons\Icons.16x16.Debug.Break.png +Icons.16x16.Debug.Continue = DebuggerIcons\Icons.16x16.Debug.Continue.png +Icons.16x16.Debug.StepOver = DebuggerIcons\Icons.16x16.Debug.StepOver.png +Icons.16x16.Debug.StepInto = DebuggerIcons\Icons.16x16.Debug.StepInto.png +Icons.16x16.Debug.StepOut = DebuggerIcons\Icons.16x16.Debug.StepOut.png + +Icons.16x16.TestRunner.Yellow = BitmapResources-data\Icons.16x16.TestRunner.Yellow.png +Icons.16x16.TestRunner.Red = BitmapResources-data\Icons.16x16.TestRunner.Red.png +Icons.16x16.TestRunner.Green = BitmapResources-data\Icons.16x16.TestRunner.Green.png +Icons.16x16.TestRunner.Gray = BitmapResources-data\Icons.16x16.TestRunner.Gray.png +ErrorReport = BitmapResources-data\ErrorReport.png +Icons.16x16.Shell = Icons.16x16.Shell.png +Icons.16x16.StopProcess = BitmapResources-data\Icons.16x16.StopProcess.png +Icons.16x16.Desktop = BitmapResources-data\Icons.16x16.Desktop.png +Icons.16x16.MyComputer = BitmapResources-data\Icons.16x16.MyComputer.png +Icons.16x16.PersonalFiles = BitmapResources-data\Icons.16x16.PersonalFiles.png +Icons.16x16.NewProjectIcon = BitmapResources-data\Icons.16x16.NewProjectIcon.png +Icons.TipOfTheDayIcon = BitmapResources-data\Icons.TipOfTheDayIcon.png +Icons.16x16.Indent = BitmapResources-data\Icons.16x16.Indent.png +Icons.16x16.ResourceEditor.icon = BitmapResources-data\Icons.16x16.ResourceEditor.icon.ico +Icons.16x16.FullScreen = BitmapResources-data\Icons.16x16.FullScreen.png +Icons.16x16.AdjustBackgroundColor = BitmapResources-data\Icons.16x16.AdjustBackgroundColor.png +Icons.16x16.HelpOpenFolder = BitmapResources-data\Icons.16x16.HelpOpenFolder.png +Icons.16x16.SmallIconsIcon = BitmapResources-data\Icons.16x16.SmallIconsIcon.png +Icons.16x16.HtmlElements.AnchorElement = BitmapResources-data\Icons.16x16.HtmlElements.AnchorElement.png +Icons.16x16.Assembly = BitmapResources-data\Icons.16x16.Assembly.png +Icons.16x16.TipOfTheDay = BitmapResources-data\Icons.16x16.TipOfTheDay.png +Icons.16x16.Right = BitmapResources-data\Icons.16x16.Right.png +Icons.16x16.CDROM = BitmapResources-data\Icons.16x16.CDROM.png +Icons.16x16.RedoIcon = BitmapResources-data\Icons.16x16.RedoIcon.png +Icons.16x16.CloseAllDocuments = BitmapResources-data\Icons.16x16.CloseAllDocuments.png +Icons.16x16.HtmlElements.InputRadioElement = BitmapResources-data\Icons.16x16.HtmlElements.InputRadioElement.png +Icons.16x16.FormsDesigner.SendToBack = BitmapResources-data\Icons.16x16.FormsDesigner.SendToBack.png +Icons.16x16.BrowserAfter = BitmapResources-data\Icons.16x16.BrowserAfter.png +Icons.SharpDevelopIcon = BitmapResources-data\Icons.SharpDevelopIcon.ico +Icons.16x16.HtmlElements.InputPasswordElement = BitmapResources-data\Icons.16x16.HtmlElements.InputPasswordElement.png +Icons.16x16.HtmlElements.InputCheckBoxElement = BitmapResources-data\Icons.16x16.HtmlElements.InputCheckBoxElement.png +Icons.16x16.FormsDesigner.AlignCenters = BitmapResources-data\Icons.16x16.FormsDesigner.AlignCenters.png +Icons.16x16.Center = BitmapResources-data\Icons.16x16.Center.png +Icons.16x16.FormsDesigner.CenterHorizontally = BitmapResources-data\Icons.16x16.FormsDesigner.CenterHorizontally.png +Icons.16x16.FormsDesigner.LockControls = BitmapResources-data\Icons.16x16.FormsDesigner.LockControls.png +Icons.16x16.FormsDesigner.DecreaseVerticalSpace = BitmapResources-data\Icons.16x16.FormsDesigner.DecreaseVerticalSpace.png +Icons.16x16.NewFolderIcon = BitmapResources-data\Icons.16x16.NewFolderIcon.png +Icons.16x16.UnderlineText = BitmapResources-data\Icons.16x16.UnderlineText.png +Icons.16x16.RunProgramIcon = BitmapResources-data\Icons.16x16.RunProgramIcon.png +Icons.16x16.HtmlElements.TableElement = BitmapResources-data\Icons.16x16.HtmlElements.TableElement.png +Icons.16x16.ResourceEditor.obj = BitmapResources-data\Icons.16x16.ResourceEditor.obj.ico +Icons.16x16.ResourceEditor.bin = BitmapResources-data\Icons.16x16.ResourceEditor.bin.ico +Icons.16x16.DesignPanel = BitmapResources-data\Icons.16x16.DesignPanel.png +Icons.ClassBrowserIcon = BitmapResources-data\Icons.ClassBrowserIcon.png +Icons.16x16.HtmlElements.InputImageElement = BitmapResources-data\Icons.16x16.HtmlElements.InputImageElement.png +Icons.16x16.FormsDesigner.AlignBottoms = BitmapResources-data\Icons.16x16.FormsDesigner.AlignBottoms.png +Icons.16x16.FormsDesigner.RemoveVerticalSpace = BitmapResources-data\Icons.16x16.FormsDesigner.RemoveVerticalSpace.png +Icons.16x16.ResourceEditor.string = BitmapResources-data\Icons.16x16.ResourceEditor.string.ico +Icons.32x32.Error = BitmapResources-data\Icons.32x32.Error.png +Icons.16x16.LargeIconsIcon = BitmapResources-data\Icons.16x16.LargeIconsIcon.png +Icons.16x16.NextWindowIcon = BitmapResources-data\Icons.16x16.NextWindowIcon.png +Icons.16x16.FormsDesigner.CenterVertically = BitmapResources-data\Icons.16x16.FormsDesigner.CenterVertically.png +Icons.16x16.Options = BitmapResources-data\Icons.16x16.Options.png +Icons.16x16.FormsDesigner.EqualizeHorizontalSpace = BitmapResources-data\Icons.16x16.FormsDesigner.EqualizeHorizontalSpace.png +Icons.16x16.FormsDesigner.IncreaseHorizontalSpace = BitmapResources-data\Icons.16x16.FormsDesigner.IncreaseHorizontalSpace.png +Icons.16x16.HtmlElements.ImageElement = BitmapResources-data\Icons.16x16.HtmlElements.ImageElement.png +Icons.16x16.HtmlElements.LabelElement = BitmapResources-data\Icons.16x16.HtmlElements.LabelElement.png +Icons.16x16.WebSearchIcon = BitmapResources-data\Icons.16x16.WebSearchIcon.png +Icons.16x16.FormsDesigner.AlignToGrid = BitmapResources-data\Icons.16x16.FormsDesigner.AlignToGrid.png +Icons.16x16.HtmlElements.InputResetElement = BitmapResources-data\Icons.16x16.HtmlElements.InputResetElement.png +Icons.16x16.CommentRegion = BitmapResources-data\Icons.16x16.CommentRegion.png +Icons.16x16.PreView = BitmapResources-data\Icons.16x16.PreView.png +Icons.16x16.UMLNote = BitmapResources-data\Icons.16x16.UMLNote.png +Icons.16x16.FormsDesigner.AlignRights = BitmapResources-data\Icons.16x16.FormsDesigner.AlignRights.png +Icons.FileScoutIcon = BitmapResources-data\Icons.FileScoutIcon.png +Icons.ProjectScoutIcon = BitmapResources-data\Icons.ProjectScoutIcon.png +Icons.16x16.HtmlElements.PanelElement = BitmapResources-data\Icons.16x16.HtmlElements.PanelElement.png +Icons.16x16.AdjustColor = BitmapResources-data\Icons.16x16.AdjustColor.png +Icons.16x16.SideBarDocument = BitmapResources-data\Icons.16x16.SideBarDocument.png +Icons.16x16.Information = BitmapResources-data\Icons.16x16.Information.png +Icons.16x16.CopyLeftIcon = BitmapResources-data\Icons.16x16.CopyLeftIcon.png +Icons.16x16.FormsDesigner.AlignLefts = BitmapResources-data\Icons.16x16.FormsDesigner.AlignLefts.png +Icons.16x16.FormsDesigner.MakeSameHeight = BitmapResources-data\Icons.16x16.FormsDesigner.MakeSameHeight.png +Icons.16x16.BrowserCancel = BitmapResources-data\Icons.16x16.BrowserCancel.png +Icons.16x16.HtmlElements.DivElement = BitmapResources-data\Icons.16x16.HtmlElements.DivElement.png +Icons.16x16.BuildCurrentSelectedProject = BitmapResources-data\Icons.16x16.BuildCurrentSelectedProject.png +Icons.16x16.HelpTopic = BitmapResources-data\Icons.16x16.HelpTopic.png +Icons.16x16.PrevWindowIcon = BitmapResources-data\Icons.16x16.PrevWindowIcon.png +Icons.16x16.HtmlElements.SelectElement = BitmapResources-data\Icons.16x16.HtmlElements.SelectElement.png +Icons.16x16.OpenAssembly = BitmapResources-data\Icons.16x16.OpenAssembly.png +Icons.16x16.HtmlElements.InputSubmitElement = BitmapResources-data\Icons.16x16.HtmlElements.InputSubmitElement.png +Icons.16x16.CancelIcon = BitmapResources-data\Icons.16x16.CancelIcon.png +Icons.16x16.ItalicText = BitmapResources-data\Icons.16x16.ItalicText.png +Icons.16x16.BrowserBefore = BitmapResources-data\Icons.16x16.BrowserBefore.png +Icons.16x16.HtmlElements.InputTextElement = BitmapResources-data\Icons.16x16.HtmlElements.InputTextElement.png +Icons.16x16.HelpClosedFolder = BitmapResources-data\Icons.16x16.HelpClosedFolder.png +Icons.16x16.CutIcon = BitmapResources-data\Icons.16x16.CutIcon.png +Icons.16x16.BoldText = BitmapResources-data\Icons.16x16.BoldText.png +GeneralWizardBackground = BitmapResources-data\GeneralWizardBackground.png +Icons.16x16.HtmlElements.TextAreaElement = BitmapResources-data\Icons.16x16.HtmlElements.TextAreaElement.png +Icons.16x16.SaveAllIcon = BitmapResources-data\Icons.16x16.SaveAllIcon.png +Icons.16x16.UMLClass = BitmapResources-data\Icons.16x16.UMLClass.png +Icons.16x16.Left = BitmapResources-data\Icons.16x16.Left.png +Icons.16x16.FormsDesigner.SizeToGrid = BitmapResources-data\Icons.16x16.FormsDesigner.SizeToGrid.png +Icons.16x16.HtmlElements.FormElement = BitmapResources-data\Icons.16x16.HtmlElements.FormElement.png +Icons.16x16.HtmlElements.InputFileElement = BitmapResources-data\Icons.16x16.HtmlElements.InputFileElement.png +Icons.16x16.NewDocumentIcon = BitmapResources-data\Icons.16x16.NewDocumentIcon.png +Icons.16x16.UMLImplementation = BitmapResources-data\Icons.16x16.UMLImplementation.png +Icons.16x16.SelectionArrow = BitmapResources-data\Icons.16x16.SelectionArrow.png +Icons.16x16.Question = BitmapResources-data\Icons.16x16.Question.png +Icons.16x16.PasteIcon = BitmapResources-data\Icons.16x16.PasteIcon.png +Icons.32x32.Warning = BitmapResources-data\Icons.32x32.Warning.png +Icons.16x16.FormsDesigner.MakeSameSize = BitmapResources-data\Icons.16x16.FormsDesigner.MakeSameSize.png +Icons.16x16.Error = BitmapResources-data\Icons.16x16.Error.png +Icons.16x16.HtmlElements.InputButtonElement = BitmapResources-data\Icons.16x16.HtmlElements.InputButtonElement.png +Icons.16x16.NETWORK = BitmapResources-data\Icons.16x16.NETWORK.png +Icons.16x16.Library = BitmapResources-data\Icons.16x16.Library.png +Icons.16x16.AboutIcon = BitmapResources-data\Icons.16x16.AboutIcon.png +Icons.16x16.LowerToUpperCase = BitmapResources-data\Icons.16x16.LowerToUpperCase.png +Icons.16x16.UndoIcon = BitmapResources-data\Icons.16x16.UndoIcon.png +Icons.16x16.FormsDesigner.AlignMiddles = BitmapResources-data\Icons.16x16.FormsDesigner.AlignMiddles.png +Icons.16x16.ReplaceIcon = BitmapResources-data\Icons.16x16.ReplaceIcon.png +Icons.16x16.FormsDesigner.MakeSameWidth = BitmapResources-data\Icons.16x16.FormsDesigner.MakeSameWidth.png +Icons.16x16.OpenProjectIcon = BitmapResources-data\Icons.16x16.OpenProjectIcon.png +Icons.16x16.HtmlElements.InputHiddenElement = BitmapResources-data\Icons.16x16.HtmlElements.InputHiddenElement.png +Icons.16x16.SuperTypes = BitmapResources-data\Icons.16x16.SuperTypes.png +Icons.16x16.BuildCombine = BitmapResources-data\Icons.16x16.BuildCombine.png +Icons.16x16.HelpIcon = BitmapResources-data\Icons.16x16.HelpIcon.png +Icons.16x16.ReplaceInFiles = BitmapResources-data\Icons.16x16.ReplaceInFiles.png +Icons.16x16.FLOPPY = BitmapResources-data\Icons.16x16.FLOPPY.png +Icons.AboutImage = BitmapResources-data\Icons.AboutImage.png +Icons.16x16.UMLStructure = BitmapResources-data\Icons.16x16.UMLStructure.png +Icons.16x16.HtmlElements.HorizontalRuleElement = BitmapResources-data\Icons.16x16.HtmlElements.HorizontalRuleElement.png +Icons.16x16.FormsDesigner.ShowTabOrder = BitmapResources-data\Icons.16x16.FormsDesigner.ShowTabOrder.png +Icons.16x16.FindInFiles = BitmapResources-data\Icons.16x16.FindInFiles.png +Icons.16x16.ResourceEditor.cursor = BitmapResources-data\Icons.16x16.ResourceEditor.cursor.ico +Icons.16x16.FormsDesigner.PointerIcon = BitmapResources-data\Icons.16x16.FormsDesigner.PointerIcon.png +Icons.16x16.CopyIcon = BitmapResources-data\Icons.16x16.CopyIcon.png +Icons.16x16.PropertiesIcon = BitmapResources-data\Icons.16x16.PropertiesIcon.png +Icons.16x16.OutDent = BitmapResources-data\Icons.16x16.OutDent.png +Icons.16x16.DeleteIcon = BitmapResources-data\Icons.16x16.DeleteIcon.png +Icons.16x16.FormsDesigner.IncreaseVerticalSpace = BitmapResources-data\Icons.16x16.FormsDesigner.IncreaseVerticalSpace.png +Icons.16x16.UpperToLowerCase = BitmapResources-data\Icons.16x16.UpperToLowerCase.png +Icons.16x16.FindNextIcon = BitmapResources-data\Icons.16x16.FindNextIcon.png +Icons.32x32.Information = BitmapResources-data\Icons.32x32.Information.png +Icons.16x16.FormsDesigner.BringToFront = BitmapResources-data\Icons.16x16.FormsDesigner.BringToFront.png +Icons.16x16.BrowserRefresh = BitmapResources-data\Icons.16x16.BrowserRefresh.png +Icons.16x16.HtmlElements.ListBoxElement = BitmapResources-data\Icons.16x16.HtmlElements.ListBoxElement.png +Icons.16x16.FormsDesigner.DecreaseHorizontalSpace = BitmapResources-data\Icons.16x16.FormsDesigner.DecreaseHorizontalSpace.png +Icons.16x16.ResourceEditor.bmp = BitmapResources-data\Icons.16x16.ResourceEditor.bmp.ico +Icons.16x16.SubTypes = BitmapResources-data\Icons.16x16.SubTypes.png +Icons.16x16.DRIVE = BitmapResources-data\Icons.16x16.DRIVE.png +Icons.16x16.HtmlElements.ButtonElement = BitmapResources-data\Icons.16x16.HtmlElements.ButtonElement.png +Icons.16x16.Print = BitmapResources-data\Icons.16x16.Print.png +Icons.32x32.Question = BitmapResources-data\Icons.32x32.Question.png +Icons.16x16.FormsDesigner.ViewCode = BitmapResources-data\Icons.16x16.FormsDesigner.ViewCode.png +Icons.16x16.FormsDesigner.AlignTops = BitmapResources-data\Icons.16x16.FormsDesigner.AlignTops.png +Icons.16x16.Warning = BitmapResources-data\Icons.16x16.Warning.png +Icons.16x16.HtmlElements.SpanElement = BitmapResources-data\Icons.16x16.HtmlElements.SpanElement.png +Icons.16x16.FormsDesigner.RemoveHorizontalSpace = BitmapResources-data\Icons.16x16.FormsDesigner.RemoveHorizontalSpace.png +Icons.16x16.HtmlElements.IFrameElement = BitmapResources-data\Icons.16x16.HtmlElements.IFrameElement.png +Icons.16x16.FormsDesigner.EqualizeVerticalSpace = BitmapResources-data\Icons.16x16.FormsDesigner.EqualizeVerticalSpace.png +Icons.16x16.FindIcon = BitmapResources-data\Icons.16x16.FindIcon.png +Icons.16x16.HtmlElements.Element = BitmapResources-data\Icons.16x16.HtmlElements.Element.png +Icons.16x16.SaveIcon = BitmapResources-data\Icons.16x16.SaveIcon.png +Icons.16x16.ILDasm = BitmapResources-data\Icons.16x16.ILDasm.png +Icons.16x16.CloseFileIcon = BitmapResources-data\Icons.16x16.CloseFileIcon.png +Icons.16x16.OpenFileIcon = BitmapResources-data\Icons.16x16.OpenFileIcon.png +Icons.16x16.HtmlElements.FieldSetElement = BitmapResources-data\Icons.16x16.HtmlElements.FieldSetElement.png +Icons.16x16.SplitWindow = BitmapResources-data\Icons.16x16.SplitWindow.png + +#pad icons +PadIcons.ErrorList = PadIcons\ErrorList.png +PadIcons.TaskList = PadIcons\TaskList.png +PadIcons.Output = PadIcons\Output.png +PadIcons.Toolbar = PadIcons\Toolbar.png +PadIcons.UnitTest = PadIcons\UnitTest.png +PadIcons.FindResults = PadIcons\FindResults.png +PadIcons.FileBrowser = PadIcons\FileBrowser.png +PadIcons.ClassBrowser = PadIcons\ClassBrowser.png +PadIcons.ProjectBrowser = PadIcons\ProjectBrowser.png +PadIcons.Bookmarks = PadIcons\Bookmarks.png + +#classbrowser icons +Icons.16x16.NameSpace = ClassBrowserIcons\Icons.16x16.NameSpace.png +Icons.16x16.Literal = ClassBrowserIcons\Icons.16x16.Literal.png +Icons.16x16.Reference = ClassBrowserIcons\Icons.16x16.Reference.png + + +Icons.16x16.Class = ClassBrowserIcons\Icons.16x16.Class.png +Icons.16x16.Struct = ClassBrowserIcons\Icons.16x16.Struct.png +Icons.16x16.Enum = ClassBrowserIcons\Icons.16x16.Enum.png +Icons.16x16.Interface = ClassBrowserIcons\Icons.16x16.Interface.png +Icons.16x16.Delegate = ClassBrowserIcons\Icons.16x16.Delegate.png +Icons.16x16.Method = ClassBrowserIcons\Icons.16x16.Method.png +Icons.16x16.Property = ClassBrowserIcons\Icons.16x16.Property.png +Icons.16x16.Indexer = ClassBrowserIcons\Icons.16x16.Indexer.png +Icons.16x16.Field = ClassBrowserIcons\Icons.16x16.Field.png +Icons.16x16.Event = ClassBrowserIcons\Icons.16x16.Event.png + +Icons.16x16.PrivateClass = ClassBrowserIcons\Icons.16x16.PrivateClass.png +Icons.16x16.PrivateStruct = ClassBrowserIcons\Icons.16x16.PrivateStruct.png +Icons.16x16.PrivateEnum = ClassBrowserIcons\Icons.16x16.PrivateEnum.png +Icons.16x16.PrivateInterface = ClassBrowserIcons\Icons.16x16.PrivateInterface.png +Icons.16x16.PrivateDelegate = ClassBrowserIcons\Icons.16x16.PrivateDelegate.png +Icons.16x16.PrivateMethod = ClassBrowserIcons\Icons.16x16.PrivateMethod.png +Icons.16x16.PrivateProperty = ClassBrowserIcons\Icons.16x16.PrivateProperty.png +Icons.16x16.PrivateIndexer = ClassBrowserIcons\Icons.16x16.PrivateIndexer.png +Icons.16x16.PrivateField = ClassBrowserIcons\Icons.16x16.PrivateField.png +Icons.16x16.PrivateEvent = ClassBrowserIcons\Icons.16x16.PrivateEvent.png + +Icons.16x16.ProtectedClass = ClassBrowserIcons\Icons.16x16.ProtectedClass.png +Icons.16x16.ProtectedStruct = ClassBrowserIcons\Icons.16x16.ProtectedStruct.png +Icons.16x16.ProtectedEnum = ClassBrowserIcons\Icons.16x16.ProtectedEnum.png +Icons.16x16.ProtectedInterface = ClassBrowserIcons\Icons.16x16.ProtectedInterface.png +Icons.16x16.ProtectedDelegate = ClassBrowserIcons\Icons.16x16.ProtectedDelegate.png +Icons.16x16.ProtectedMethod = ClassBrowserIcons\Icons.16x16.ProtectedMethod.png +Icons.16x16.ProtectedProperty = ClassBrowserIcons\Icons.16x16.ProtectedProperty.png +Icons.16x16.ProtectedIndexer = ClassBrowserIcons\Icons.16x16.ProtectedIndexer.png +Icons.16x16.ProtectedField = ClassBrowserIcons\Icons.16x16.ProtectedField.png +Icons.16x16.ProtectedEvent = ClassBrowserIcons\Icons.16x16.ProtectedEvent.png + +Icons.16x16.InternalClass = ClassBrowserIcons\Icons.16x16.InternalClass.png +Icons.16x16.InternalStruct = ClassBrowserIcons\Icons.16x16.InternalStruct.png +Icons.16x16.InternalEnum = ClassBrowserIcons\Icons.16x16.InternalEnum.png +Icons.16x16.InternalInterface = ClassBrowserIcons\Icons.16x16.InternalInterface.png +Icons.16x16.InternalDelegate = ClassBrowserIcons\Icons.16x16.InternalDelegate.png +Icons.16x16.InternalMethod = ClassBrowserIcons\Icons.16x16.InternalMethod.png +Icons.16x16.InternalProperty = ClassBrowserIcons\Icons.16x16.InternalProperty.png +Icons.16x16.InternalIndexer = ClassBrowserIcons\Icons.16x16.InternalIndexer.png +Icons.16x16.InternalField = ClassBrowserIcons\Icons.16x16.InternalField.png +Icons.16x16.InternalEvent = ClassBrowserIcons\Icons.16x16.InternalEvent.png + +#bookmark icons +Bookmarks.ClearAll = Bookmarks\ClearAll.png +Bookmarks.GotoNext = Bookmarks\GotoNext.png +Bookmarks.GotoNextInFile = Bookmarks\GotoNextInFile.png +Bookmarks.GotoNextInFolder = Bookmarks\GotoNextInFolder.png +Bookmarks.GotoPrev = Bookmarks\GotoPrev.png +Bookmarks.GotoPrevInFile = Bookmarks\GotoPrevInFile.png +Bookmarks.GotoPrevInFolder = Bookmarks\GotoPrevInFolder.png +Bookmarks.ToggleMark = Bookmarks\ToggleMark.png +Bookmarks.DeleteMark = Bookmarks\DeleteMark.png +Bookmarks.EnableDisableAll = Bookmarks\EnableDisableAll.png +Bookmarks.EnableDisableMark = Bookmarks\EnableDisableMark.png + +#backend icons +C#.ProjectIcon = backendicons\CSharp\SmallProject.png +C#.FileIcon = backendicons\CSharp\SmallFile.png + +C#.File.EmptyFile = backendicons\CSharp\file\EmptyFile.png +C#.File.Form = backendicons\CSharp\file\Form.png +C#.File.FullFile = backendicons\CSharp\file\FullFile.png +C#.File.NewClass = backendicons\CSharp\file\NewClass.png +C#.File.WebFile = backendicons\CSharp\file\WebFile.png +C#.Project.EmptyProject = backendicons\CSharp\project\EmptyProject.png +C#.Project.DOSProject = backendicons\CSharp\project\DOSProject.png +C#.Project.Form = backendicons\CSharp\project\Form.png +C#.Project.FullProject = backendicons\CSharp\project\FullProject.png +C#.Project.ServiceProject = backendicons\CSharp\project\ServiceProject.png +C#.Project.UserControl = backendicons\CSharp\project\UserControl.png +C#.Project.WebProject = backendicons\CSharp\project\WebProject.png +C#.Project.Library = backendicons\CSharp\project\Library.png +C#.Project.ControlLibrary = backendicons\CSharp\project\ControlLibrary.png + +VB.ProjectIcon = backendicons\VBNet\SmallProject.png +VB.FileIcon = backendicons\VBNet\SmallFile.png + +VB.File.EmptyFile = backendicons\VBNet\file\EmptyFile.png +VB.File.Form = backendicons\VBNet\file\Form.png +VB.File.FullFile = backendicons\VBNet\file\FullFile.png +VB.File.NewClass = backendicons\VBNet\file\NewClass.png +VB.File.WebFile = backendicons\VBNet\file\WebFile.png +VB.Project.EmptyProject = backendicons\VBNet\project\EmptyProject.png +VB.Project.DOSProject = backendicons\VBNet\project\DOSProject.png +VB.Project.Form = backendicons\VBNet\project\Form.png +VB.Project.FullProject = backendicons\VBNet\project\FullProject.png +VB.Project.ServiceProject = backendicons\VBNet\project\ServiceProject.png +VB.Project.UserControl = backendicons\VBNet\project\UserControl.png +VB.Project.WebProject = backendicons\VBNet\project\WebProject.png +VB.Project.Library = backendicons\VBNet\project\Library.png +VB.Project.ControlLibrary = backendicons\VBNet\project\ControlLibrary.png + +Java.ProjectIcon = backendicons\Java\SmallProject.png +Java.FileIcon = backendicons\Java\SmallFile.png + +Java.File.EmptyFile = backendicons\Java\file\EmptyFile.png +Java.File.Form = backendicons\Java\file\Form.png +Java.File.FullFile = backendicons\Java\file\FullFile.png +Java.File.NewClass = backendicons\Java\file\NewClass.png +Java.File.WebFile = backendicons\Java\file\WebFile.png +Java.Project.EmptyProject = backendicons\Java\project\EmptyProject.png +Java.Project.DOSProject = backendicons\Java\project\DOSProject.png +Java.Project.Form = backendicons\Java\project\Form.png +Java.Project.FullProject = backendicons\Java\project\FullProject.png +Java.Project.ServiceProject = backendicons\Java\project\ServiceProject.png +Java.Project.UserControl = backendicons\Java\project\UserControl.png +Java.Project.WebProject = backendicons\Java\project\WebProject.png +Java.Project.Library = backendicons\Java\project\Library.png +Java.Project.ControlLibrary = backendicons\Java\project\ControlLibrary.png + + +JScript.ProjectIcon = backendicons\JScript\SmallProject.png +JScript.FileIcon = backendicons\JScript\SmallFile.png + +JScript.File.EmptyFile = backendicons\JScript\file\EmptyFile.png +JScript.File.Form = backendicons\JScript\file\Form.png +JScript.File.FullFile = backendicons\JScript\file\FullFile.png +JScript.File.NewClass = backendicons\JScript\file\NewClass.png +JScript.File.WebFile = backendicons\JScript\file\WebFile.png +JScript.Project.EmptyProject = backendicons\JScript\project\EmptyProject.png +JScript.Project.DOSProject = backendicons\JScript\project\DOSProject.png +JScript.Project.Form = backendicons\JScript\project\Form.png +JScript.Project.FullProject = backendicons\JScript\project\FullProject.png +JScript.Project.ServiceProject = backendicons\JScript\project\ServiceProject.png +JScript.Project.UserControl = backendicons\JScript\project\UserControl.png +JScript.Project.WebProject = backendicons\JScript\project\WebProject.png +JScript.Project.Library = backendicons\JScript\project\Library.png +JScript.Project.ControlLibrary = backendicons\JScript\project\ControlLibrary.png + +C++.ProjectIcon = backendicons\cpp\SmallProject.png +C++.FileIcon = backendicons\cpp\SmallFile.png + +C++.File.EmptyFile = backendicons\cpp\file\EmptyFile.png +C++.File.Form = backendicons\cpp\file\Form.png +C++.File.FullFile = backendicons\cpp\file\FullFile.png +C++.File.NewClass = backendicons\cpp\file\NewClass.png +C++.File.WebFile = backendicons\cpp\file\WebFile.png +C++.Project.EmptyProject = backendicons\cpp\project\EmptyProject.png +C++.Project.DOSProject = backendicons\cpp\project\DOSProject.png +C++.Project.Form = backendicons\cpp\project\Form.png +C++.Project.FullProject = backendicons\cpp\project\FullProject.png +C++.Project.ServiceProject = backendicons\cpp\project\ServiceProject.png +C++.Project.UserControl = backendicons\cpp\project\UserControl.png +C++.Project.WebProject = backendicons\cpp\project\WebProject.png +C++.Project.Library = backendicons\cpp\project\Library.png +C++.Project.ControlLibrary = backendicons\cpp\project\ControlLibrary.png + +# misc backend icons +FileIcons.XmlIcon = backendicons\miscFiles\XmlFileIcon.png +Icons.16x16.ResourceFileIcon = backendicons\miscFiles\Icons.16x16.ResourceFileIcon.png +Icons.16x16.HTMLIcon = backendicons\miscFiles\Icons.16x16.HTMLIcon.png +Icons.16x16.XMLFileIcon = backendicons\miscFiles\Icons.16x16.XMLFileIcon.png +Icons.16x16.TextFileIcon = backendicons\miscFiles\Icons.16x16.TextFileIcon.png +Icons.16x16.CombineIcon = backendicons\miscFiles\Icons.16x16.CombineIcon.png +Icons.16x16.MiscFiles = backendicons\miscFiles\Icons.16x16.MiscFiles.png +Icons.16x16.SolutionIcon = backendicons\miscFiles\Icons.16x16.SolutionIcon.png + +Icons.32x32.EmptyFileIcon = backendicons\miscFiles\Icons.32x32.EmptyFileIcon.png +Icons.32x32.HTMLFileIcon = backendicons\miscFiles\Icons.32x32.HTMLFileIcon.png +Icons.32x32.XMLFileIcon = backendicons\miscFiles\Icons.32x32.XMLFileIcon.png +Icons.32x32.TextFileIcon = backendicons\miscFiles\Icons.32x32.TextFileIcon.png +Icons.32x32.ASPFileIcon = backendicons\miscFiles\Icons.32x32.ASPFileIcon.png +Icons.32x32.EmptyProjectIcon = backendicons\miscFiles\Icons.32x32.EmptyProjectIcon.png +Icons.32x32.CombineIcon = backendicons\miscFiles\Icons.32x32.CombineIcon.png +Icons.32x32.ResourceFileIcon = backendicons\miscFiles\Icons.32x32.ResourceFileIcon.png + diff --git a/data/resources/image/BitmapResources/Bookmarks/Bookmark.xcf b/data/resources/image/BitmapResources/Bookmarks/Bookmark.xcf new file mode 100644 index 0000000000000000000000000000000000000000..4f810c487ebc15b64b08e3dbe9a02f2afa709261 GIT binary patch literal 8817 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 YpSKk(T$#>Ux1Bp&MWuz$_S7{016JD)O#lD@ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/Bookmarks/DeleteMark.png b/data/resources/image/BitmapResources/Bookmarks/DeleteMark.png new file mode 100644 index 0000000000000000000000000000000000000000..f390d8c33478009801d41d247937b9097b8cfb82 GIT binary patch literal 1148 zcmbtTZAep57=F%myYr)|xXfu^NI%4+FUbB#kfpf&&@?Kt4^Uzii4dhwQ3)f+h#(3= zLb6c*NK7&aB4QRI*w2)pq6G`WuZktM?e1>3_nfmkH|k#(-h1Bjp67kv=Y7t-H=COp z?73yR0PJp8-2qw)xn-;L-neA6(~@(})p`NQb8usL(C?(6t;^k5Z<|?F=5SPaMjD<0 zmbLD>+JnwgR%rPdBgFqb%uK)X>bs#u7-C_v2q1jgYhmsysdy|I8z0CMxfWjFs(;aN zu4b?*5N1(Ud~3R&WyTpgLSf^rFNd+7@kOJU29`huGg+lX>93qwvv>oFGZ||=%%H?H z3FKg5M9fNnEHVxhM$9bSQhSMwML`9kCJ>awfs||(6RV8L282nS0Xj8TbY6g}ryp=| z#pg*>4_-on5v9(&J8z(*e9lJa40Meja266IX#(qSdr;uJhpJOMU{6Go4J4bwxd6(p z9|s>_jv&;Rb4jWUfg8^eH>ks05SvbJhhzQ=RBBT4;t`6DRwC^25(CQN4E`nBk2U4^ zG&+k7r*}b_4Z?A3GvfOW!Sa3zp{HMwaFmJyLW7n0r5+}WNNzs9J$?smOAT~lW6Vrp zX=obpBBvNTc?+2;i{v!XbZa(ZoxM=$lT+q{P~Z6Eb<@~FgW>K1_OL%GVA{2DRw{wk z4fY`a%x)k-VmF?E>TQSZ-4mEc93x&_Pi-@|`z8IyYWJjAT z&{9GYh{0?r5x8I`peub@a9|csw*rqhdfZ>@6l;h+4639=Fdr&{=J6R+1aw%H0+u1* z)iqci4PJ`7+7{vS^()zm%_U%PnO}#g3wShv{j*4tlG0jMvXF>Vu~ZO?5>N+B0UTex zp}O4oR!L<;1Q!P$1?E5!yf|E0!^u_TS0(k`Q5>$PD-ubtzchgxdmcqqe^;WO@oZ}h zKPh2#9_o)t*(UX9cL&HTewQi~0qLCzNd)eY%!PBL5|-{(q>)fciVHM2_i+L>NG@2?(ub9_PdfDepe5kY nM6!S4_!BI1`EUG>2?o1WQ}O4udo{tKX@{|PQ#iB{?3wxij@{L4 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/Bookmarks/EnableDisableMark.png b/data/resources/image/BitmapResources/Bookmarks/EnableDisableMark.png new file mode 100644 index 0000000000000000000000000000000000000000..eef918ff0ca63d243e2e71c1d02f04ea0994a6f8 GIT binary patch literal 1148 zcmbVLyGjE=6umQUo+c0oND_ru`UTnv$|hz7g9JguM!~`|5WhgH{DElj4@@H#f};ZWAh~e&?%X-&%$eEQ@^*eB8cv0YC~D=*0&0vi=*Kht)jdQB z6?1zfqS-j7po>ZZ&A^GZl?gmVQt^ekoA>=Jkuh(XYdeXgh#8+9vAlWI1#GIQ-CmNM ziU|^vIi?cOWEL>^F&JjCOm;(3yDmngr2F&GApEyLwp6CYq$K~0pnw$QH;||Sj8%o- zl|q|p)u1QhZGp*YkbNNdKu{@Akp@@pOG#H1K})O7us{dB9;ioRqBmA#9s>h$rzJ)R zG$k1dNXjn18zAs@lpDOOc?dhe>hKPcRsFnzA~Hz}q4G9(4q_}a(t+J{$-E-KOwwCW zPS~B>b6R@+fqT$_16J2WLkYPe?#k*6fcdsZoWbK=2`8*=q5`8Guqb~<7D%TA)j#?I z-Wjl|>RE)$;}+RNmk1ZDAyj{m%p6ZZU(dfcjX{$Frusj|B;dF?(M61#{7*mlwEK4b P{QAOJE0Z^?>j$Slx$SWu literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/Bookmarks/GotoNext.png b/data/resources/image/BitmapResources/Bookmarks/GotoNext.png new file mode 100644 index 0000000000000000000000000000000000000000..2a4b34b1c67cd07a5ceab755f9453552bf316e51 GIT binary patch literal 1148 zcmbtSOK1~O6g_V;P0TdaO0j7x=t9I@7lPncO|b!6N>ETys0#~j{MAKi6`{Mj(w&Mz zaiiUIQ4ztSOWlhi3JQWmq)Eoi(E#-2 z$8!ae{k*p&>D+6|3nbE4$Ir|Hy#u@j9zGf(W9mkJVl4F`GqCgEXyxKH0;#+6xg#fs zhDE=syX5hION8)+^|ExD0__b?w;R6A*GXuxsXhH45 z?}c{{dJsnKA(Gjj$b0iRr~}h?k(c#MV)F&~fg|{Jjbq zjtqlgN4kZyHi$jP-lFu_H%A0vmpOf(P=VW$xHOT4L3ks$?ZvJkKZvV>5Hywrx0Md9s|9MLwU0?Kns!lel{Jh|CkY>zBM3ot)*3bv1BZ zka5^#F6S7Xm?H1OG|m5#D1y;(=yd^fTsQ=@9ZqM0gcxZJkG(|S!(lEr>pn{at^^4M z0_=IU{s!1kJG6DbLi4PAp;wOLZ&$l4!_ z>r%m2Qjj49xojG_OdL;c)JjNs{Viake-)g53bD&%449USlTC$Gw-}=sr%mZSF641YJU zSCUAA-&^Xivr0vF{BI&c5XYY&JjL4)WNiy zlTp4cq{6Q<_!MCZd=&fX51~PlY=-YqV1Cg>-ZH5#I`U*b=Afp1kZar_kP7%oke>)V zBNB=Uk5q=?=R%Hv2CPhqOvl3f7i5e$K92P;Eo=OJRVom#3pHe=1!=sVoiFGFT*AmbC^f&SJe?18+m`dqo@xw>6LK@4Ed5vFvz; literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/Bookmarks/GotoNextInFolder.png b/data/resources/image/BitmapResources/Bookmarks/GotoNextInFolder.png new file mode 100644 index 0000000000000000000000000000000000000000..5b2cb76253900563407545c9cd2ba99c34e3609d GIT binary patch literal 1148 zcmbtTO-L0{6#nka`0PEOBnV};h;$*eXcIw83oT!usc2bPJvT+PNsLw{dg zPXVaTw6%1Tu931SLGunv43J7*XgfXxRMkphxHDNt&dQ6K_SVV|>H1oQEe4!JImecg~4>pkRTe-jdpAlFzH#Z`k)Z#TREJV%wqO9J+2|@bVbbWI$Kvp4hoQ3B`pPxIpBB zg$@un5CsPj>Cm^y?O=39cAq-R!xFQI{MaE>hrk|zEU=;tkZ{jLRIm|}4qY4b^Y1A3 za2&5iQ4||;QdmHM0s%L`63D5V(5LJK_Kh5T*FxSRa)}AU5`oOjI7w*7nMLTvSvi#) zdem5wldmQb7CrcM`gy~Q3ABg^WciwG4uP(`?S;L@V6Cbpom0tHFni)4@~%Mk{WJ#C z`=GBAgtP@71yF^9kxyON)us?kSS_^BWb= zCJEe*hB_4qm7zkBqM#TFoNM1oB`a7q82o_2bP5QAM$9=^fj8ZVn;3XLZG%86kf6Jn zAOb0ZzP!t@kOP+1IQ7>>;9Dq?RImt5o%e(yFUa`BYxqtnYsGp6q~%32J%+{a0j(Qw ztsERPhvkKj@EjeVXR=Jbg`Z>KmLZNE(c=9lH3iqk=Mk7oFzLv+P_e38NT*ZC>noU> zJriSpBaloTmuz9JmQKN;?n~PyZLFwlZ~v4q3hNyL%s$9>Om{ce8yH SxBI5Xq$|_f(emU#cH{>ezHqbv literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/Bookmarks/GotoPrev.png b/data/resources/image/BitmapResources/Bookmarks/GotoPrev.png new file mode 100644 index 0000000000000000000000000000000000000000..7dc0d1de52a25fd33f8686d1272ec1c301ebe54b GIT binary patch literal 1148 zcmbtSziSjh6#iy2Ui8jDB%qf~AtLF-B9@9Iav`^%QPd^@K`TKl1VxLO<{G*GAWE=3 zRIsuTLKF)Lih@Eq3mYp**uC8D-u{S;@6G%)W2lo9}x+cG{O_XNIbF6~K_w zY+NQg%zJ-@zDIlN2AKnQnsax7+6ZrfC(Ctm4&HMvOb@Of965AKo_ODW1jsR`F?F>* zDu$(-(vAOHVmEzZWm6@6ft?MF<1q8393#B4RMT8(3OrohRQ3^piY2hm0xAO_%ee3n z9$*akZm8CtRYh6B;+qXMdf3V@8$=?M0veOB7PW9~UVyZ+l|~k1o;kA_QBn>TV4tMh zCQc)m0u-cr3UWp$$n4)Cvk31rHY=cmCTkH>$iRP8Ljq<6NyMta(y~jHWV7Hi53R_k zZ7#ww=8(x}5Cff#k6%fYm7BL?w!{M5ilkW4Lirmve)_mFIfi}|W3jb{?Kr@85>THZ zo& zcHoi;M1& literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/Bookmarks/GotoPrevInFile.png b/data/resources/image/BitmapResources/Bookmarks/GotoPrevInFile.png new file mode 100644 index 0000000000000000000000000000000000000000..776f8fb3c99a63219033c66ba8a525b56dd57e19 GIT binary patch literal 1148 zcmZuwO-NKx6#nj;H)GB;AWVyK3`9X{5iJB;3C@&5PWTh4SS>0eD56D_<)WP+;VPnt ziWdDWs)Y$6MNp^_Nr7Ns5Vf#Ho2Y5#&HI_Z_ulQ?`*iSO7tTHB-1olkeCOQvrVjTX zjD{0o0MSfO_Yv|9!nTEIZ`S!Jx%!Je$1Verm@tO>58`xKH(YCP_0&BI}Qq(hVgTQK8!CBOf&Oec&cL; zTo+^TC zNGK3s&jY>b)CNY9>^pQulBl)Q^}wNCg#xdIbrMn{1f-K)wb!3Ko0job0x>`bxG|$4 zX97Qd+than4==^#Op={lSa`o!Bic&fdI~P|MQH}4!1jh{6DbLi1FfMc*h27VDS^%o zjyrR@RIo-0ilm@YGEgbz@c3H$X1t$ZVB#mw<#bqO7bgxxsBdwN;yQ(z9h5i2q-UE~ zO@ROpCYw+!m2rA<33l0pT`^HDTSyNNK+gtX{AJMp1Sn1thc`s|A#Dchh6OEeAgAfb zlmEE9g6lVrBCImh2NZ;Z0n}4G)TiLvhY(Xz<7-~!Vi~$_A+MPdED1D2stqa(K}A6@ zz!0J@Cq((1*FbEi!`1nz78X%gd9pnLtzb}9ud+r&x@k!Q0q~4SL`+1&Q+M7F=O*{C z!uhv+Z(Cee|FryB0yj3PKvWk%2__ZfU5CN_0W}51_zeNKsin+}|N?mhQ>-#O?06h=n|8|&KY z05s-@awo_(3EiU6xWnQX$<$sMIyVi}Hw$HW_^5@PHP`aP12u~cZOvL{&xh6&ptk38 z{o^gItVt~e6!Cw;*5Dn_9^d=9k!pPM>MrsvZS=2SO9BG(Y_<~(wW{2UxrNAC#=`pm zr_WDsN+JoK&fVqfS;ah#W5iJm&`!)_aLy5lwGf&MDV0pflp!q2v8>AU$6kiR88npb^`nQ3VhdsVcAdwG7J*}k$JGNk4m;>W*)jSYfL4F z9v!SuQAOavrx#%8YiAG_O_0GKU^+e!m3!7lXB$O6*FC<_cbn^?_G>IKGNf zl^~=R&dg?TGTRQ%FXOMOu8%}h6r>5P5s|P|6udx%?YL0i6*^eGy2!IVZ7@t5x^9u$5^Pa`BoIIeCNi>d z#4s~gl6&$Y&EMY3%*$_irmIC}{`}>e+^i1NzARroxYgcWc6h#VKeDE{@|Z~v01!6cPv*wk=ZI@@&hBe=SMEg{04Bf BV5|TD literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/Bookmarks/ToggleMark.png b/data/resources/image/BitmapResources/Bookmarks/ToggleMark.png new file mode 100644 index 0000000000000000000000000000000000000000..7a04fb231f23644ed1cc20f981975ffbce5dc5cb GIT binary patch literal 1148 zcmd5*K}$kG5T1R$r>RMX2`@ba{g9wg@*R?hh`d!74-o{_sUqmsUkIsFSO0^Jj$JMP?VS2r`MLJ9yfUZu2ydzNf2j=wA4(IIZh z(@O0OAe|!Cj8`mVbyvUV>(#NU=s=~u0f$R7#_ z253V7>EpLQAm7sQU>xf_re&^81+LrO$XycPSRl=|jPFePF%=hZ{5gnTnn@vUI^8Ib z7iORUl^n-J_RX0SBLa*Ij@9-ASb@(#0!u?-4gz9m1eAu#Y%=}L*kA-$V5ES6Nd&}X zRZQ+2V*}^~nRRMlurtu@ix%eNq#Wg3zY}17ew+pjeHnX*G0xz5+7I z=4g4Oij~P^b@yLHq+TkRwP~`E6C_*!tC;&6R;9q4jpgfp;Dh6TVftP&QG=$NCYz}h z0LUIZT`Y))#%xVvRjk;}3mAS`*p>0Bob+)P@ZHN<;F+L#pcub@nh_K4_fX2eSZnqA S>*aeJrv$(&S4+)}gWDf-fqwr0 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/Chloe Periscope-Orig_2.png b/data/resources/image/BitmapResources/Chloe Periscope-Orig_2.png new file mode 100644 index 0000000000000000000000000000000000000000..6b53f1117488ad39d105eb5c5d0c3d3519abaa53 GIT binary patch literal 62438 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%0ARx_@tBgr)t;XLT3*FcTopVabApc1+_CsO`-|u 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 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Delegate.png b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Delegate.png new file mode 100644 index 0000000000000000000000000000000000000000..05707079d5acfb6e2004e6fb59fe3538fcf7d0a7 GIT binary patch literal 908 zcmV;719SX|P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ<0!c(cRCwBAeEjSU!;Skd7<5#m85kLW08B9aKXv&& z!>`}}7`}i1!Qf`2!*KP^Gl&cjoV#+D!QNb(!9-V)0U&@_7%;*A11HWieERm6;oJA0 z49{M?W;l8NB14d;DL?1u^F(F(1>-S%V-@pGbu&}U!`G5ZW$p+!yzyC9Q|M3&WnJ^as z1Q6rnXK(-Cxc?k%9>{=SzkW0P{`a5Z-`{@>KS6Au7)bKh@1G1HgFxzj|M?9L10!t( zMt}ffdHD1VgNv0mis^rVzWw?02hasT1Mhri_&o0u18*`P!`=Vy8Giiw3pTW6(p-j3 zbK9o^1Q64YUw=?T@c%!CzkeV$Gr#>0)~sNw!0-h~OFZL-yYkmhh(3S-VgWl52%g6EaW?%^RaASDe`-VZ$RuSw4MQtU9`@8Nl@Yu63yx{%;3quBg0Al(5 z7h-^vMks^WKL!Rhpwqv8{mJnC*Ds(Kelxs(`Hn$|O&Ds3BEzZKD;WM|DKPx_`3tNM zAb?nYf}Hez6~mP~|G@(HKrVR0z~JTR$nYEJy^ps)F)&CoF$fC^F)UuN7##Zl{``e| z86bdI{sTjsnLms{+u#qw4`5V@e*@YKbk&D1Ul~|{)-nQhe0uhgVcW*749H3K*Dr_* z00M~R2axgi-ya61uj?7^L0xh49t*>VKmQnXy>uBEw|{3~V~3=-k3T+wwKIMF0Sf{K zfB<3v+5wKPFMr$_#AW{hZT`lf1$50fpi6!L6V*p=76yTBe?e{mYhsC0VfYCQ8&Dbn z0e}Ev0>uKzfWJVm{QU=_LHz$}{o1~LIafB^v9S#u=siS^t70000J% literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Delegate.xcf b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Delegate.xcf new file mode 100644 index 0000000000000000000000000000000000000000..d2dbecddb6465641a596f29ce49f65a58b71ebcd GIT binary patch literal 2877 zcmcIlc~INO71mFWD~FqO+O+wnjcVh@?hH*_I^)_TohGi2OzKQi(lkmtQ*#Jei9iIf zE%``D;!Y-$+A)WW12|kxKq6QUNL=s= ztMjRSjQoSCeN;?gLnN^gVo``VK@v?6kK%AaTN0BLQjtIsmn2F^6h$RTWO0dGAKVfn zj*>}b34$%2CL}=|86kN3=TCdeI?6V0*H#)Dxz12uzu-SBY^XdjJ|apICl+k;%|)PM zJvO0GwbK$qPhs(=&0∨H}Ik+lSR5XXZczISTZ{odAUP@ z^@A2&T^#}1c1tZa6iI85dm?EqwQ@O@m1!Fzz>bSccmQw)9qoAR_!}(J(MuxHCcvYb zOONdP=_WjLI{MYfpAqoNX3%7x~k!pxet5bx;I08|G7vF1ZSp%AcT_~yt+ zZ~g0d<>tU1c2AX5>>iBP-d#+C}0o{1V^POF_5uh@48V$9T zH2d*Ghu@5ReNA9%S4$HMykxaC)tRyomn;Am~* zjhK?bINkq()!M0mh9Rq^r?V{)F#Xi2caJ9B3+!RpANf2EIVFb+O1hs!wnqZk$)HN< ztJoRwTRkKGb09|7S0vXm=r z&B@Kn$I|RUhjTc050pC2-x$sv`4!|iOLKB{V>=)xXV~Q)yATYy2SvhtJAyZR#x}i^ zocyjVKK?CC792`RJrcYLl2bMwJ`ybd5y(<^Yzhuj{21al9!Xa!p8O%iKelJ*<|iJ1 z+%q)ro7CJ#k}`m?sH@<&>b+<4lD!w(+yn%zO zkPi#AGkfLcZhC7_0@aeo9Hm@|Zsx{8!n zd`wp(_4j1AF^}>~#j5=C=QC2%PPd_+9?^N{!tA7VvazoEWvHQ>mCQTszH6Vix&{WT zv@b#hj<%_l6a6k14j4*agi<1Zeqyk9%8gj``7S74Zfh$(J9OPTh4}?}yFk5icXni` zvwL75pX_HLf7#LAUYMab_2s9fpZzry+_^Ps>T0aJ+Eb8zE@eA>IyW|at*xnAqf0+` zmh9Feu`%L5|0Vo)yMFuZ_U)e%%NyX%nBmr~$;m5~8e1dRcsuJFdVtcRoDbe6z?pTO z0KUPU$+rHP6mqi}V5qOB;g}mucDKi_uGDGN#h>Tpo$tmLwsrT?d`E0&N3%W#4Bo9f zZV$z(<8=Dkzd}8ljgc;rsWiJX?27b=&!NXM3xDwukF+lno#OoZV4-S(~FI z#7W3>H`nblU1XcDeh;d&gM@Tp((I(!MywY$CP1sIh#YL!t<#vFuTKCY zIu~YaL#wRorJ#4JRjQKWUXvw1Ev-fhhP!k2(HnhcOHV;sMTHo?x?`Uj9_lxBw5L_n zkUf~2@$s3He|uYzkSG<4%RO87qmTIkUH}Hso6M&-nLgtHQkT6?GoSYzcKJ83clp1s K=;>B&Q2rBBt8;t+ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Enum.png b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Enum.png new file mode 100644 index 0000000000000000000000000000000000000000..3fbb2c14968912953c45298ef1cace34271d9eaf GIT binary patch literal 680 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 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Field.xcf b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Field.xcf new file mode 100644 index 0000000000000000000000000000000000000000..510289c28a312179870054cf39d5d28c2b9db05b GIT binary patch literal 2568 zcmcImdrXs86#v=_1%zd~&CP6?R=^ES*ks9)q5d%qAp1j?IcLPgO$r6-fR=*NB2F02 z%_VN&>@T@Lmv@;sY5hPEg)LOV7^v=x6H2{xZAC`R=*DbMLvo zoOAEFU%VnoCDp{lN#hiWat_;EmykXWMI^${%P8J!9t{{sP=5u*1H}{NRhKTtem>3* z#C~o(x(!w&MaRp75>amqkmLzq6cgvnU}h(^6b2n`NnBm;SdxOEsyg=om$Eyfj4E3qkE{pbHD$k*r8V z@-Yc=Vy#ie#ih#Ao)Va-GI_FG z8uA|M90i)11cj0SC^VULezHr)j+^7A`?~3VZu$#u`irQOFKS*cA-~kzlRkrR;xLyY zkj1&;&Cg=u1R760gu41t5W~H?Nrxk!LEYr!?)y*xw?-VDH-`!sbbwsfq(y|vL-wJ@-A7VGj zmLafliF_$`=;^aqf8Nu^n4rZ{_+-PU>-|_i3=D!VgFisTiGgt*Fs+j>SnwqzR~VCNF@C5CB+=&a z{tP5w9^o{`_*gEKp2j#;jau%WK6)tyV65&Z#)=Xcz@_~RqM{hsdhYl3c3$2BzusT5 za#j1qO{}Qbyvk}dtz!jEmfB0E;&2ArV`4Y2kD!oyGL8b@Qd3nyj>lViD^6eg8erUZ zoH1htI<7y$ATg0aTVG%QpSLYZaIOEt)vIsTDVV9hc}+`ebu=q#Z?V=_SK;oNJ9d64 z+v4W9yVYhU#}nOunQPkf0VcXC8M7Qj$L;4COHi|Xn#r;4mC&T}JAcT#D10Wm-Mw`zx315CtcbhATa2Z{gWD|{@*UchxgVA)M z63n%u7~1;H%nVn?C+erdSp{^~)!($QWyY%$0CsCIGwszXqt*t$i#J5Voaf6$~xli#8`jkQw@$R~&Rl5en%*cz+y&~PEQt*xeDUlIY8 zc>pQ4)`qe?Ri=8_)=;GbwfflQ$|FhX31Op?=GN+8)aru0$Cawj!`SecrKS2TX!CxS zWhZW6Fp9yH zyB{rAi}wH+_%X8kzWKM>WBU>jC@L`ms4T5bWx2=>$HnEuuBPfpk|rU{U^r(eDIsb1b5dH+XX1RBW)q@XwMC4-sE&#Mrr>C13t65_5k8D=UIa literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Indexer.png b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Indexer.png new file mode 100644 index 0000000000000000000000000000000000000000..63cee80b14146ebb1f22f53dfe2004191e112888 GIT binary patch literal 449 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 Hu0mjfDr$=E literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.InternalDelegate.png b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.InternalDelegate.png new file mode 100644 index 0000000000000000000000000000000000000000..9ee36aff7d75f26a023b1e9b8b359927eaba5681 GIT binary patch literal 916 zcmV;F18e+=P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ<3Q0skRCwBAeEjSU!;Skd7<5#m85kLW08B9aKXv&& z!>`}}7`}i1!Qf`2!*KP^Gl&cjoV#+D!QNb(!9-V)0U&@_7%;*A11HWieERm6;oJA0 z49{M?W;l8NB14d;DL?1u^F(F(1>-S%V-@pGbu&}U!`G5ZW$p+!yzyC9Q|M3&WnJ^as z1Q6rnXK(-Cxc?k%9>{=SzkW0P{`a5Z-`{@>KS6Au7)bKh@1G1HgFxzj|M?9L10!t( zMt}ffdHD1VgNv0mis^rVzWw?02hasT1Mhri_&o0u18*`P!`=Vy8Giiw3pTW6(p-j3 zbK9o^1Q64YUw=?T@c%!CzkeV$Gr#>0)~sNw!0-h~OFZL-yYkmhh(3S-VgWl52%g6EaW?%^RaASDe`-VZ$RuSw4MQtU9`@8Nl@Yu63yx{%;3quBg0Al(5 z7h-^vMks^WKL!Rhpwqv8{mJnC*Ds(Kelxs(`Hn$|O&Ds3BEzZKD;WM|DKPx_`3tNM zAb?mzziePQxp^Zz3g5ha2Ml3Ga40icGBU89$zfoSW?~Q)6k=GsU@=(y-=Dv5F9QS+ z3rO+LR|^=7okJP8rDcG+1Q~ujf68!f-&%&rOaC*ly?V>gVBf&7ZR1u3>`*uGVKA!sk*8ESH6_`+d!@~d|fEc$fDENQ= z#8QT@e+?PFefh%h>iuhmcOQR&H3J>N@QGE1K}p{ZZ2!++Kf!4L1kz*t8B(KsrvU^I q~ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.InternalEnum.png b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.InternalEnum.png new file mode 100644 index 0000000000000000000000000000000000000000..f5f901693eeb0663fb0c9c118f5aa95dcd3809cd GIT binary patch literal 821 zcmV-51Iqk~P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;t4TybRCwBA{Qdqc!_$+M42+D74ASPE3_u102mty2 zpPsB>V1#fOK=8w-*I>Cf?_M%!I80>_SN38A2q4DaAI>p611e+yD`kW#25b5+ZkEZw z`0FiL?Dx0NV6$2Nykz*r@SUNt=^R7fqJz@_0*HkXrV(TZ)OMI5Ak84Lk{KKf-+%mL z`0?Wh!?f%l48K2qg{uV!AQp7ZAo~5MHw;4jqG0y#Z=V?2<3EFK{`&C^P&3dKf8Q{` z06+k-fSih~nE~n^kRf;0*E7hexiU;X>ca5tJ2%76pVABszULS?|9)rq_T@8JEkFRV zfc!6Rp2@)Q^BvfaAioNO{rZaGC*ya9rl#`@E%j#@et-DF@Z-Z{2FAY(C;%XUSisgn zHJ8rh0NV5qXwy%iU%xZ_0s0jL=FYjt@buXSh|_@J>*vo5X;rlh)7J(t00a;?5WzNo z|IE-H_Ze*S7bL%e)uUaey3~e5u3#5R4Jz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;Wl2OqRCwBA{Qv(y10?_;fLPE4etvt)z`)4Jz|JYe zaQEPZ|LolFfm}wg+{4Ge8D77B%OGRm!eDF~0u}@aASQGJnEriWUZZR>)Tx4cwTk?d#+%jSsOg%sVVHg0ijfGnY>M26o_r!)LI&BgHk_FslIKh81C-Eyx;WJFdA5I`8Quwi!Q|9f|zFg$twfk8$}fFV0Y zo8jeBHio>tvl+G=dpqsr%U28_OC==4!Ri45hy_d3GTMhEGW>jU_P??2U$Ex65BnIl z9Q^_I!i$$Lfl3gr1_&U=;~VS$!{Qm__cw3ffnx$B1fq{0n8nb#@CQ8PU%UVr@DJz$ zNc;i>5DQ4r&sPf=jGaRnxTR%)x&#@1Jb%h?Zr@sl$xHt;tlsCcNN4CnW)V|e!Z zCs>h!q9V@B1Q0+hAWIIO_{^~F*m;I;Uk)?8djFc?-N#>G%}k7p1al)m0D%({3k%Cs he2S3MJ~{vhFaVY)`}ljQ?KS`a002ovPDHLkV1mbzKI#Af literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.InternalField.png b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.InternalField.png new file mode 100644 index 0000000000000000000000000000000000000000..ca17b0fcaf211a4cf581f5fa47bf44ef20814230 GIT binary patch literal 789 zcmV+w1M2*VP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;i%CR5RCwBA`2YVu1F@K=x$!@`7(f7#q?zH=>Hlnv z^(ck_1Q6r@uWK1jU;o3v%*e=a`86xUgi<(*iGkt!PX>k;FBll^++|?k;$~oY z^9IPi!vGLKObkp6jAnYw42*x67!4)=Ga73CVeDMC9?4-qA{W=2!GYbRD z^Jieq%=`CG0|+1{ptt@r`~fOsWcdFF8orFIK)Sb=k&~ST=;SX93_`*T3qP$tGZ+vP}IyZ$2Y8CkF%bwyh|dK>#3t zz|m+ISIBT~-&%(6&z~~<0Adi^)Fp)B?WbRGgZW)Cb#6-ox z8bK}su^E{d8JHLu83+M@0Ad09mf^^f2@EFAp$zKMvLKH${CV+&;rzaJ49{NwBxnFY z0I`59Ie6kT!?t7R8NPiv%<$^{Yle3pe}Od<;{t#HVg$uJD4_5u!sd4v00=Muq-0RG TX8C{?00000NkvXXu0mjfbd^r* literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.InternalIndexer.png b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.InternalIndexer.png new file mode 100644 index 0000000000000000000000000000000000000000..b082979827bed763a1ffb6783c832b31d23817f0 GIT binary patch literal 619 zcmV-x0+juUP)Szk7A#v2Qu?wDZ7F!r ze_1(fSzPWA0Qo{1{d)>i*2yyfee(?C(KHhuK5=oV zj%3zK&8pRy7GSSx-7!n&`6t{8ycZDVIom|<^^f$O$o-=nCc(~g~gJkoXDx77Z>CBwlBY9WhYq^1y& zUwMVY&TF!gfk{LtChpMO=3q_zCXjU$;!z^u05|U`bY1tA%VpPc1{y%C^Bj?IfVp^d z9^P}nPHLu9F@h{}YORPSXd;yj1mVTqes;GxXsmAl5x#w$WF$O9 zELp6=K;Y@CSsuO|A)kFtBAsL^QzDiuRyBcC^Pek~_yaMy!Btm{W6uBp002ovPDHLk FV1ia25UKzG literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.InternalInterface.png b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.InternalInterface.png new file mode 100644 index 0000000000000000000000000000000000000000..fd818fe2ab2ace82c72cdf610bdfd2989bdba04b GIT binary patch literal 775 zcmV+i1Ni)jP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;eMv+?RCwBA{Qv(y10?_;fS4F41ONfV^6bTXh7Vu9 zGrV~Hfk8@KkYUT76F~NRhDT2xF|3;2!0_w$AE2`T|92d?%)rjh%JA^nO9oq0Es$PD zO=T$tfB<4*V1$^&$OvN~vBBaD|Bs!$%W&fS6^3(HZZj}5vN0Sxa|fgb?00|wVgf4t z55f#!nh}JN4g9}x_XURChfg!ahqy81Cwehho2oLfu`@F)UbBaRg@t7*Kmakl|NNan zNlui36X?9nd(VJe@E>F=$WSxyGzI})P6l3HUIsZSK?Xivo@sKDLJYE!!VLExKLlF@ z5I`&-zkmAlmEq2#*9?h%h{U{(<51m#buMEB}RtzS3O4E=-`TE^wS%*(u0UE~1 zAR{5f@b2SRhBceFGn8b+FqrBoPXh=bkO2(3>T*+I8m2AYk$v~!Q-7(vK+Q_ifUd{}2q4De8|(igLYJn@-f+p+Tu z-@Y7Xc=i4@FsgomH520kfB<3yWoPsdMhCb85Ci}M3;>`C^3?cwzn1_2002ovPDHLk FV1hZgLwf)K literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.InternalMethod.png b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.InternalMethod.png new file mode 100644 index 0000000000000000000000000000000000000000..16fa1738fddfcb7dee3424a40cb85e95eab57657 GIT binary patch literal 776 zcmV+j1NZ!iP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;en~_@RCwBA`2YVu12H&)A>u!begD^eh9^IsfY|^6 zM3iPP2Cx4+nRoo3!ZQVK$kSg>!8AYs5!4*a5d8l%!-@Yl8E*VP#B}I?Jxe{V*LMU&Hqz3 z|1mN${{MgN4GY8NyQ~b1Obm=4GB^E~V~}SMV-R65V9;k^VPIo;4TSfB@HrID{y&=$ zAb=SEepW;O+hKup1o#Zcp7$ufsujXza@hOSd$!sEW;NddHy-m&lwpWfBwyI^&Jbt)0h7l%ECgxhQ=_){AUGv;Xlv_ zK?Wg)M+^@cHZpIV_UF%^Y=8iQ1R{j|j}E(6uVHxd>j}e>|4SG@v3_KD&+v}nh4gc< z=9`~yW`i^V1Q5&V{g?j(Ll7G7j0|tyzGDys@`Zpxppa$wXTkX7=M#ptzt%EZGFtpU z{o)MR=DT0+fOP-_5aWqW4gY_>TEJlJ9Lm5gEd$cU@Zc?zD+Fu!4%7(KZ0Zui@b=R$20{QJfLLC?eGjx%h(SzL9IO%K9T1z5iIIT` z?ls&1Ab?mHf&MQ0t^5<`(|Mztke+z0000z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZp`;XeZ-0}JmL24e{p1`i`XAfE{& z_J8Nb*$fOoIR-{XhBvR?fG7};!PYj2;rQ9-48oFJ3;+Sd0uf>W8v;`di**yj(AkE0c$N&&PEUZAktLvyRNd5TF@ag&jhG3wx zL7M8T0~v}67csQem@wqFo@dC7VPtsw?hC{3=MNcX9FS%B_~R;r9MJs$0mSnAGcSYG z@9#j(^BL@Pzc7?n>}L?St7T|xZDA0`o;fAmG1way?YAgUpaQ-e|dt<|C<|){;SLK{y%o?KU#)`owVJ z`~!x^kDr0nHa6C0pWOSEVcWqT27mx!`TgrBSkT-+nE?izO=ZC$YGk0m;2Yw{@b)tU z(Ep#|akc5hGX@EuS9}~wvH=2!#aaG3!^zE!@MwJV_8r)75dShV9D8lXkdP9=@blL% zApbu+vS0FiWRU#I&j1iWEFeWcUoBuTb`E9WmX-m^3Nrk7{*>X|zO@XKm;Ps9Rrt;D z;d3a%@85smE?|JBNDu}HAaFvmiz@_c_zu(v(`@Pz!tnOfFNRy!Z-ZUJ!~k&>%mqLm z!wa5I3;+Sd^7`$2AWw)vOjI1K5u_Nz1|&U>cv9IQL;A9|QA=x9ymw};5m4Tt5nStTwe<1ymfuYoZf#FpG1B2BJ1_tr`N%2SB z7#JA0db&7hB&YU?DJn`xw0|$nU3C3T3e0*H6ZQ(-2IDG~dfi^}N8JPs%n3$Ls zL6JT_K9L6J_SgSE5XZ!!u%@x%-=9i@zpt&cc-;lms?fmgsmN5R!TUN^y@j4$=Uv}ug5 zgi?Nd{G)kzXKl8mn*QJO2Km?B+aAp^GpQB?hQWcx4DoP|Yae7+2rj#MMYZMO+vV{* zZxmRW5?VxozB~PT`}@XiT!tN;UCpLVF)T^OMutWPj5kkD(@lujRbqFpgaK%w!+j%} zNTbGsEH79~Gb1M)m;AS<;!r`|eXF+g_4Q3Wdzg;27f6B>E;wLS@yPh_w&drM`)V!E ze0cRYyRBTlzR}d!k?FgD#s;veo(Ered_{IJ*fBFO@i2%c9CO}ru5|}6vKc&G{an^L HB{Ts5q~_v5 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Literal.png b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Literal.png new file mode 100644 index 0000000000000000000000000000000000000000..077075c13220b2780ca5064d69d2d1b40554112e GIT binary patch literal 416 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9EWV9eN~w38hu$dc~p z>&U>cv9IQL;A9|QA=x9ymw};5m4Tt5nStTwe<1ymfuYoZf#FpG1B2BJ1_tr`N%2SB z7#JAEJY5_^DsCnH`TyUZS(QPdVTObT3j^a3rsO@fzrX$e`T4n_NX@S=oId-jzw`NM zYib%=SXvq$dcw%Wk;mY%xv!6J#^2xH^9}w!KF)9O_xXAGw*B@0n{FDXok=JtE}qRL za+>WUBU49`J_CyYw-I}qF^5jvhpHL<(J-Z6!Thqu-L|JQhQf8F1%BnAhDg%S*#1X&!mF*-|~ zbGzQc162LUfrUe12ltYtOC`hB$Mq`xe05dZLi$&U>cv9IQL;A9|QA=x9ymw};5m4Tt5nStTwe<1ymfuYoZf#FpG1B2BJ1_tr`N%2SB z7#J8Id%8G=RNPAX@&CU)v!O+k;v@T>+W*&U+tlsnHQZ!ibeWQ-&$j-*^~~}=^A8!b z=AF14?|;z5fkE(!%o%|{|4j~e{x_G*`(uBkGks(pE5FabTaavNImm+ z{+S6!4jevk{J_xzXAk`ApX>OvpUYV%`AxlNn&$?o28N_R|1;124>tdAXk_&7fBjot z?!!-aui@$O;pve#GXFb0c|y8CvOuCi!iDsN#DwGu-j?r;A1p=A{j;AfsL&wszb@+V zfg^_w6#P0>&z5G!*7o}SOo@4W(-JDA%32yHHa^_1+RPd;S*BU%u((1E+m#< zIT%<3PS-C`Qb=J)7WgWEXw8qWorE?{8Y^iV>=wdenTM%Dj@1~xx`wj{n?zqLo<`TDwzQaQ$l x<2&4d;m4xR#>L>kU}zY?!NAm!#Ee1kFqk?j%AV&>KLSh|44$rjF6*2UngH4a`gi~U literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Method.xcf b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Method.xcf new file mode 100644 index 0000000000000000000000000000000000000000..2c480b57598b4b9cde62e6f01b9afe21924a4ffc GIT binary patch literal 2497 zcmcImdrXs86#v>&S`ao}HaC-HTNT`337h<}Ow>Q78OoN-WWEB4hx&Q2#R;B-S?qR=Xf4%7j*1+|*+=y=IvU^YRELLWTN&i&d?>&E^vJIVR(xxahv zx%ZrN&%IxgYKKOyO-Pg{s#263(L66R`6XhJh(0e9`>%R1Qo)$ySBNFVe#EbOWihq$ zNk4?zc}Zk8T(u)ENg1A$u2K-hksXnLXhxFwHcbY1XXI1JVIEDK;3Mh7YpB+ zs>-CzCnPJ`uC?mK#0+KTlMS-j|Asusvr}0-yd*ltaj=I%na^>uFaf33pE!V+#Xle_ zUYV+tM?{d!u|PAD60;;AF;iwTuk4kn;pX_rfj)AOkNkpLB%q}C}qE*EA4+R@#IXRA&yOK0u2-*teM5AE@nZt3t!ugzFrPk`a3 zt&SS9WUy&@O9oq=R*N+?hU;w9S-TJjbFpMLk7zp?Wia0R>C&6hwhkiK2K1>9h z(NjvqtPyiSD!d5XG%}osC79*NH_1!bz--B7IGZ3O!nRlI%ry9u^2yt!kgx+myMNCfZG!kF>6<|koy700&lIatzm{Itb;WrP5Tfh znoj~4vdD1baln)mz&k@j!}og3JFsc^qm?T=8&qH%zO~AFyDkn&TdkJHx>{O&&(2+6 z#&7m9+7C)|jnUg@=F*-(X5a!X9Z|S)T_I zFqxh81JE6V*gJ^+==$`Rqe!=x44vznZP#*eh|Z-m>FDV-pr@ zeHlGZjHlLK#>Sn!cdnEoa=`Tfjyaq?x9iW8xzLY$9VXE3aCTekO3pZ( zq=1juqEG#=ed52V!|Q)jim{FNA1lgAE32y&`;Rqw+^?u8FR!djODjG2)A!7MPyZgd zpPQr7Zh;C>#aQK;igNNlZfhF(F978ffX`R}2zW#qWn~nB4*@$dfSW-sh+c(2dOQL+ jDLo|9$gVxQCuAt&UL=6s7v#V9nvhU{_(vqr`-uDv#0+Q* literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.NameSpace.png b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.NameSpace.png new file mode 100644 index 0000000000000000000000000000000000000000..9660524ad387a1b79ec967616ad0b441358bdfd5 GIT binary patch literal 460 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 X8vZAN5zS3a00000NkvXXu0mjfN*-_N literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.PrivateEvent.png b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.PrivateEvent.png new file mode 100644 index 0000000000000000000000000000000000000000..faec01aff3aa180005a33e6a15b0acf6cf3f9b08 GIT binary patch literal 785 zcmV+s1Md8ZP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;heZZR>)Tx4cwTk?d#+%jSsOg%sVVHg0ijfGnY>M26o_r!)LI&BgHk_FslIKh81C-Ee*XN$@Z>eV4!vYVwh$nIm|&X4Mfey# ze)-Pu8fb{9FfT*NTp5N9+jcXsnSBFl{=<;BcQ(V8V{fOueEEvu#fz740{{XDY{2i| ze;79JJ;M+aU_C7}#%0>ucV8I3|M<>u=jn5XmrL0g=05CW*mCp@*bDy|KrTk49e@A= z8}Q@TABJz=e}M(wy||sdVaG0pkDop=e7nUA*4(=A2O{MEGoTm%5I~HlFF~Bo2!f1| zSoreoC&P=^9~ovXS;Me$T0LCzgZuXxI5;_h`u{UXKobZ+0I_`f@`FJ_l%F9yG76jq zKxWLGH3#UezYIW)kQDgf0mHA~9~oF#c)^;H0YCsTy#WRqNK;?`RImXc`YX@{zkdA& zhQm*YtKpi^X$A&>0Al$J4Ea~@K7%#4c1&RS^z|nsDu4ZD`0)c0E((f@I5QJK0D;p% zcJ0*vKY#uNhrySxUw{Gn6Rdgf%6^n&iwyt-5IiBVu&_+Urht$E009O7NGdW+6?A$N P00000NkvXXu0mjfw7yj! literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.PrivateField.png b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.PrivateField.png new file mode 100644 index 0000000000000000000000000000000000000000..47455f91749fee20a44511e89cab66235cc3728f GIT binary patch literal 831 zcmV-F1Hk-=P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;wMj%lRCwBA`2YVu1F@K=x$!@`7(f7#q?zH=>Hlnv z^(ck_1Q6r@uWK1jU;o3v%*e=a`86xUgi<(*iGkt!PX>k;FBll^++|?k;$~oY z^9IPi!vGLKObkp6jAnYw4F6e77{u6B7;Ka!8CGmLiEswU_#;Od7(ljOzs|tG%)-F( z{25p?^ZxzQ00M{!=&k>!t{eUr7vW?0_~kpp>-S$6M1^@73I#M7IN4c%PX5BcASBGd zaPR<-7GYrf^PPe3%X_fqKY#vY0|XEgGtdRUfB#|Fy!Q-4On~*Y%ovwxZ{K}k`2OQN z!>_L1X$%)HF)%!R&cN^+7zW?JGB7@V%J6aHHn3)p0|5ev3FN{bzy2_M`~Hg|G1@)r z%(bxe`aRpspts|Ab^-Yefa?laz=*ms3;(gW{8N4 zV)*;_FVMw*8GtqcV})fZ$f7UPW-y}I3_3krRb8E*0hEHFAGW-N4*&o0DGW_`Qi=Y7j0mKOMM|SPh|382J z1R4T#Dlpo<0TT^K^WK&H)37-k82|(j<9}%4hxrv95HbKDzyJ%Aoi8;oU+(|_002ov JPDHLkV1gb{cj^ED literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.PrivateIndexer.png b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.PrivateIndexer.png new file mode 100644 index 0000000000000000000000000000000000000000..2c43c46ea1cec1b7243ee06da19bfdec790b54ed GIT binary patch literal 612 zcmV-q0-ODbP)G(KX?eTE*-K%(2Sra+>Fl1SUol7y)3@ph~aN= zf8c`HEGe9>FaYzJINJ9)j7u@!04sq|+6c3-gD>mp4oENJlMXP6&OIMEJbcHeL z3DSue+Cmhi6!A|J7?eU86j~vCH_$0oOB$yujMu#%udffkZwGGwOByyLnV60<_4+O6 zg0;-1)=;^s0%IQb%kHh;Xls8!&%i4MN?Ok}(s^~9uG8~09-02RL{-J%6Aqrm$Ll@+jn!(2bU5CZ}xMmgSnJbr;2v zpjWc`pyZ+s$&EXt*JGB#!jg&%cqN+%Nmd_}j^kDGVPv1ki_LP=W0sZhhPBl-EXF6% zz6^8pP%{~09m#~TsNIr!Gi()kzDaUXhv=gX<&BUxu}Lm^QhM9#%Yq9oQ2@baso=VM yealJ>jD-ftud`gf^AZ2;g&zJ#9ro2_&;A3z7u4J*$FWdP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;gGod|RCwBA{Qv(y10?_;fS4F41ONfV^6bTXh7Vu9 zGrV~Hfk8@KkYUT76F~NRhDT2xF|3;2!0_w$AE2`T|92d?%)rjh%JA^nO9oq0Es$PD zO=T$tfB<4*V1$^&$OvN~vBBaD|Bs!$%W&fS6^3(HZZj}5vN0Sxa|fgb?00|wVgf4t z55f#!nh}JN4g9}x_XURChfg!ahqy81Cwehho2oLfu`@F)UbBaRg@t7*Kmakl|NNan zNlui36X?9nd(VJe@E>F=$WSxyGzI})P6l3HUIsZSK?Xivo@sKDLJYE!!VLExKLlF@ z5I`&-zkmAlm4S(wnL%4sj^XFeUkuU`k_^vZJ_q`lo#DpaXABY|A`Fk8e_;6h^B?5=f+U|SK>nd+8;@mu|M49j zrnY7}|7S1T#;|?wGlt*4e=}6%Br=%lDNO^qA{!up7(fYW&(W*@J7;YC&&^or(hh1Q633V4#6C_4Q8$8vvre0$uRy z*KdaJKYkKS$^Zex@);QNuikwIYi{kB!0_qoPjFQJ`1P0J$B$nG4FCurMo>Ux*G~Qa z^XE@+7<~Eqh2h)xpJ2^z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;s!2paRCwBA`2YVu12H&)A>u!begD^eh9^IsfY|^6 zM3iPP2Cx4+nRoo3!ZQVK$kSg>!8AYs5!4*a5d8l%!-@Yl8E*VP#B}I?Jxe{V*LMU&Hqz3 z|1mN${{MgN4GY8NyQ~b1Obm=4GB^E~V~}SMV-R65V9;k^VPIo;4TSfB@HrID{y&=$ zAb=SEepW;O+hKup1o#Zcp7$ufsujXza@hOSd$!sEW;NddLBEcw5L@e}JuhW8Bb7+y#}XV}QRaoWw#H?u){0Ro5#0caE08(4P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZp`;XeZ-0}JmL24e{p1`i`XAfE{& z_J8Nb*$fOoIR-{XhBvR?fG7};!PYj2;rQ9-48oFJ3;+Sd0uf>W8v;`di**yj(AkE0c$N&&PEUZAktLvyRNd5TF@ag&jhG3wx zL7M8T0~v}67csQem@wqFo@dC7VPtsw?hC{3=MNcX9FS%B_~R;r9MJs$0mSnAGcSYG z@9#j(^BL@Pzc7?n>}L?St7T|xZDA_0zFnk5Z&(B}KfPVfDkL;H`AHg(00I~SFS%ICe zt|-9}?Qg^I^yPbo`l1wu7q34u%v!?85T6pk@Zs}cuq$CMV1TAb5C#Y!rcYmffI~Ap zDhi0B86qO1820cl1P~)I2{2^WPW}J$=TET7U%q|;2Ix<) z=DjQXuK?8?Vn72xuVus7009Ix00dZASf(;y0mzE60e}Dl0K@ZVelq%9U;qFB07*qo IM6N<$f@bNvqW}N^ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.PrivateStruct.png b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.PrivateStruct.png new file mode 100644 index 0000000000000000000000000000000000000000..a8812254f688eee5161dae6624a96cf7e15b0bd8 GIT binary patch literal 642 zcmV-|0)737P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-_(?=TRCwBA{Qv(y10?_;fS4F41ONfVg3M`cZN=%F z>gsAnY~la`!~pUF47aqj{Qv&_`+pEXra|J&%*<1f)xt190I^^*^!V}PaJHeLAzm*4 z1Q3P+92^{AOEz+M6fAVyd$oVs}L|J(Op7=Hfz#qi_zUxp|@ zONL*+eqq@7_U&H=Nl8uypkdSg{P~j&5I{^Y&Eg__3?ILIXLt=XL{ylUp`dXV0}Bfa z3I=KZ@B!68fB*s;@cZ{4hRu7=FidJIWSBpxis9|MFAU#*d}qkc&SrS|^C!d0mkJ+fRlUuRk)(TC#@W!G{kBL$CmV0Al*|K0YCsTtlWC)|C8r$|DQO2=f91U=l@d|?*2b@ z@$Ubv`!4+VO|1M64DJ6w3otM&VF3gX%V%K7zk2r>?26Wo2@IdU{)9y3ufGgGe*6N7 zUjgDnxEufwK;U$cT|4#vPhe;R&0zTQ^$RdSe}XmdUD*$gYkVmYAb{Wr2^h~)u_+*A c06>5N04Hn?EYNUuQUCw|07*qoM6N<$g4{I}E&u=k literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Property.png b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Property.png new file mode 100644 index 0000000000000000000000000000000000000000..091e7ab2c533cd27d382ab66677e9b4e8a69ad30 GIT binary patch literal 900 zcmV-~1AF|5P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;`bk7VRCwBAES>p`;XeZ-0}JmL24e{p1`i`XAfE{& z_J8Nb*$fOoIR-{XhBvR?fG7};!PYj2;rQ9-48oFJ3;+Sd0uf>W8v;`di**yj(AkE0c$N&&PEUZAktLvyRNd5TF@ag&jhG3wx zL7M8T0~v}67csQem@wqFo@dC7VPtsw?hC{3=MNcX9FS%B_~R;r9MJs$0mSnAGcSYG z@9#j(^BL@Pzc7?n>}L?St7T|xZDA0`o;fAmG1way?YAgUpaQ-e|dt<|C<|){;SLK{y%o?KU#)`owVJ z`~!x^kDr0nHa6C0pWOSEVcWqT27mx!`TgrBSkT-+nE?izO=ZC$YGk0m;2Yw{@b)tU z(Ep#|akc5hGX@EuS9}~wvH=2!<>#+IV8Md2V4=%I{*R12#j(D78aJN3?zU*fBs~{*Z=_pHh>ZU a5MTh9Ei3Y=#@Lwv0000nr~ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Property.xcf b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Property.xcf new file mode 100644 index 0000000000000000000000000000000000000000..5ba6ac544b23b9d19ee5caa3332ef3cb1c25beb9 GIT binary patch literal 2785 zcmcIleNaX}jBhtf^u}I;i+j4Rxj!R#7X^inYbrZuv^WqX;O05Goar zU22t9&=gQQB#t9Rw3q4RLb8!;k-b7)fgo}?$T@Q zcTyZDA&ZZU7SdIx#EV3ULdkCnq}l%p%^**w(tg;4&1V?+l(g~?!?-T7qhxd=`V3Lp zf47Yh!Z;y+4KW$oXDTj4DF;ZD#!{Qc(j012aVKiG=Q!AN9qeZv?0LkdwWzq-)SmCi zxix?+#ouPw*Ggh}A3Tlm#MGY{#QKJEF<#_!6H(@Ni&_5YLso->&vF1N_=N{_y( zww3^u&H5TLkV=*M6lC)rI-jd_hdk{zJj{=lN17h_-z|c^@roKD<{kN{{ z!oT0~eRF-=<(*L4uU)UxRRuy(b7Ng~)wzv;F_BRp25q7pcLs*`y|wmI1uZ<<+Fwzk z$wVA&QUX+_lEMuIfU&WFHwFd_#_q=5s4={~VM9kf2UUg^zt-zD;ZWMvs%xmZMBctH zDfyF#T@Ho2t~Y6E;jym!+S;}gh-3PT0F8O1aGMJ7zyZMS!J(mH!>ug5ITWyYbAMYp z=!QDCbal1Lpsu$|f3x*kBH*!{oQzb-Z-uQaJ0p)_k(IOfSWeC-A=|1hbZ3x<-2R|@ z#A#-aIFmqIuPHAM`@!1s|Mz~N9M85NfG%oAT$bAmhgcW;`L|&%Av9+CCoQYJT3L1B zB5La%lg>7L2wMDMbgW@wBUIq6`i73l0I2+N3~^HD4OLmP_|O3F<>Y+0z_d!us;?F+ zlqXSL)H5;Jr`QDQiEnQADf-tz@ua#~Q8gfd;^Mxk>48%opokWRZWeefw&rU0r>AGc zCnW5_bbeB9p44Lzq~|V7mU^Vjhxk0fB9Av^uRy{==`p!%$sZx%rA@wz7rgwkHP!X^ z)I3F!+=a43e~k2gbl_$sac4cNG=}!XexClDdzijsHg4?y0Xp48gNWGINZ#w(GXvQ% z*9X*pk|aqfd-TwJhCTD}>->VYqVgn(lmKVQSvY4gcNdnIT7fc*!4VvJG9LAbBvD#c zhDlFi@bQyzqbOFU`2H-${1Rh|)obcPw?<38KYK4ZBc@k6=DE}>;~g#!hw}#TXQ_UP zCKy;43OtBf4OVNv-97o^O2`U?EOIgSPfv^(&#!_vf`Zd9I}?w5o|V>Bx*FE5eOF3u z-ac;;D;q|X9;2(H9q!{nZ zhEWryny(Sj&-5$6mTuIwl)jJ6TOex#(ur0_x zoAlu45tF%JwG{$`{P$zwF;pIxe|1;&4)KH2(KOiC)85jmsn`ZVLBXkhtRK&x{nOaS zO@Y*(`N)w0Lr2fh1Jj|yIWktJZcKr|JADSkk?;#Q(oynL-xL9`+bC~*DPS>Co7Gke@hjVEf0IkYaTn#l$m_8 z5{&_OQM-QSvyB<_E0fEya}4`>R4cGY44G2+7G2SJLk!VU=_xEP#S5yk61*yc=xC{e z+;i;~t<}y))fv2~K3g)?NPLbfz`=+24TFP21|7-exZIC;AMyUeerySg29D*XXFkxG ic?O*rck<&5K%RUqPLgvdNB5a4bIyMnc+4C*kNFj&2;|8C literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.ProtectedClass.png b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.ProtectedClass.png new file mode 100644 index 0000000000000000000000000000000000000000..6f97213ea95460b01ea6203e852892e6c76137a6 GIT binary patch literal 864 zcmV-m1E2hfP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;)=5M`RCwBA`2YVu12SH=%=kaL7(NUTKq#CwYaIUn z`NQyk?p!sZ4FL!sB+WMefBju;2%Kw%Y z{{QFBft=0uKQ)ydZu8_xlfdlh0##s}-!nY?e}!TB|8A!2|NXoL{{aGsg#ie1a&9vo zU0?J6`$I+sJI!|tA(=C${rU4J8zjfc#RZ}me*XQ=Fh{JB!TOaZ!yevKKoLfUl5dlz z0R#{eNb>0V>i?$BrVQpV`i8MG(=EPkb!{-YzN$s?|;5B z^fYTQz+4CrKui+CVhq3D-)CTcv4tTz*qz}Aixk7B4`81$baZq~{RNC)5Lmo;F+{9U zh2dRc0Rwwf)PE2kAb=P_0d-?*=zk5Viwu9c9T>hoJ;JbR_b-Nwt_RZ&9N3?I`NBnD zEHQxtyPAoa;az410|PLzFaYD5ZQVKsfB=HW@AWOA|Nq=f`9Hft2_x=7e7>pEAe?va z{xh6E|DUO>{6AA({(pb~LU@qjKNyF)u`$djmCIs40wDkX`1FZEbjAz@hDVPWm{zQ0 zU;y$Nr%ss$5I`sfe0ukqp?C2UhK%k<(-_de&x&%!4`04Aux{SW!0_!G1LN#j;8*|% qAe1y-o4}3Xe00oIUXG#$Aiw~q3JE@E7bUR(0000z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ`}}7`}i1!Qf`2!*KP^Gl&cjoV#+D!QNb(!9-V)0U&@_7%;*A11HWieERm6;oJA0 z49{M?W;l8NB14d;DL?1u^F(F(1>-S%V-@pGbu&}U!`G5ZW$p+!yzyC9Q|M3&WnJ^as z1Q6rnXK(-Cxc?k%9>{=SzkW0P{`a5Z-`{@>KS6Au7)bKh@1G1HgFxzj|M?9L10!t( zMt}ffdHD1VgNv0mis^rVzWw?02hasT1Mhri_&o0u18*`P!`=Vy8Giiw3pTW6(p-j3 zbK9o^1Q64YUw=?T@c%!CzkeV$Gr#>0)~sNw!0-h~OFZL-yYkmhh(3S-VgWl52#&6= z0s4!P;nnMR49_?n7=k_A7~b~2VNkSH1babITZ!TRuKNr;_ACr9xPQRHkO3fon128L z3)EcAVCrnjV6OF&!Pnt81KYJqhO)9^pcj5Kynp$Qf$<$9)DT66$Ft9a!{*1&Utj|O z0*FcI!)gXoCsQz|v2zu}^M{WaQo@)S>?95_{04gO@W-%P(HAnBn&)p!fd# zg?kwwfS4qN#Tb6Qzt6z@Vhclbusg#K7Ab~LA0X+g{X{$1Tc4hN1Zzf4s=t0gTmTS2 zOvm1vFg&?>jDh*!7?0<%j-Yh_`{AFMSLk0$xI2CX@ z0EGhx00a;?7XE1r400ImE676jr!9YI800000 LNkvXXu0mjfO1G=v literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.ProtectedEnum.png b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.ProtectedEnum.png new file mode 100644 index 0000000000000000000000000000000000000000..1912ed8837ffe0b54907b5f3fced99209e7cea60 GIT binary patch literal 784 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 S`^M=200004H literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.ProtectedInterface.png b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.ProtectedInterface.png new file mode 100644 index 0000000000000000000000000000000000000000..d8fedab143b1affc9ad5c39111601e445ce81e02 GIT binary patch literal 753 zcmVz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;XGugsRCwBA{Qv(y10?_;fS4F41ONfV^6bTXh7Vu9 zGrV~Hfk8@KkYUT76F~NRhDT2xF|3;2!0_w$AE2`T|92d?%)rjh%JA^nO9oq0Es$PD zO=T$tfB<4*V1$^&$OvN~vBBaD|Bs!$%W&fS6^3(HZZj}5vN0Sxa|fgb?00|wVgf4t z55f#!nh}JN4g9}x_XURChfg!ahqy81Cwehho2oLfu`@F)UbBaRg@t7*Kmakl|NNan zNlui36X?9nd(VJe@E>F=$WSxyGzI})P6l3HUIsZSK?Xivo@sKDLJYE!!VLExKLlF@ z5I`&-zkmAlmEq2#*9?h%h{U{(<51m#I%>> zP6inXA%=G!zcQ@Zyq%#WBZk3LPk9B(Mt3LgQ>GAgSpmA249EY3^U3UvOt=x z{Ijw_VQOop!*KEHO@`S^*D|bFzZs}G7OWZQifn)YVmPw4>i^FV>;M1!xZ!_o6950l zyFLE@Kd<(GPNnjHP$Gk2W@hH8$QULL5I`&v!eR`+-rr~7{B?~XI@q1z2MZ6wrw@;S z_WuQkGT0U%fYImxAb`N8T;CG%|NlAF|9@_#{{Og7^Z#t1?Z~#^!vFyUXI$SB3N#?) z|Lh7SqBVmsKmf5Ixdn_v-PnM%94HX8iOCB90mOuCz^8Yw8G08#VaVuyG>zEI1Q0+d j&Z$k{Cdv6A3=m)dGge)@gSjTB00000NkvXXu0mjfF0Du+ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.ProtectedMethod.png b/data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.ProtectedMethod.png new file mode 100644 index 0000000000000000000000000000000000000000..53f15bd5a2e8a1e54624b4d21d2e9220aa08131f GIT binary patch literal 765 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 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/InternalMarker.xcf b/data/resources/image/BitmapResources/ClassBrowserIcons/InternalMarker.xcf new file mode 100644 index 0000000000000000000000000000000000000000..33823c1806bfd0956cb87292363a949edac367c9 GIT binary patch literal 969 zcmYe#%q>u;NKR8o%gjk-00IsmW&<&RKoE!-8G(c_5OX-af4c^Rfou^VW&vVmAQpqN znSit?P`wI}7DxvgtDBjdn4YSeUX+;v6k-6H!^ojgTvC~ns*ssil3G-pnp~2ZpI5BO zrID7NoS&0lq@V$&bc@oH5)};e48Q;j!w@Q^3DlZ|MJr5R0XGArwW7EnF*!3YUBM7$ z7f`Sgn;=w7w=^%a1nBtWj8u@TEArFQic?GA4g~4O6oQDLY6XP{6fpKPFfe_G@qjce z0zl!;;hL11m#Sa{k_Lq@2!J976!!mt7^D`&2C3zQvVjx>7ZRHriOqw==0#%j1KA+6 zV1OOS0GSH{$Z-u3VPLX`GGJ~6s%7#=6=RAA@&6q^!Fb}zmaW^ipE&sC|NrktBToE3 z^zHl6U#^?~-#Bvg_HXwshrj>-|NE5g)|SfrNOxWRe;YS3Zn`pm!NNtG=G_1F`_Tfo zO~2+oe6-++#r)r!<}cX#%yRzxM}Pl4TcWZcBQ?^)QbqM*eM3WIenCNDgF@-VN#!ca z4HK2h%2g_4^CwvR literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ClassBrowserIcons/PrivateMarker.xcf b/data/resources/image/BitmapResources/ClassBrowserIcons/PrivateMarker.xcf new file mode 100644 index 0000000000000000000000000000000000000000..0787d154a22d590f12f5de9f66b830a4bdef8cd9 GIT binary patch literal 836 zcmYe#%q>u;NKR8o%gjk-00Ism<^(Z-KoE!-8G(c_5OX+9U|;}YAP@m!79eH4Hxqqw9pCsiRcuOzjoI5oK>Ge56blS?Bl zJvl!ozeqs?Oz9S-CnYKv=ox?k7KR~IN)xCx35!;kyaH|pNNYuLL1J=dUb=!I%r2l{ zB{o5*m~LraW(m;o$r-62S6Aexr4^@^z#RzEjVS~XLDdQh4=7;lhOvM&Ebu{L&f%Jr znwP3z2$BYcGYGH&F(};s12IS~hz(K;iZBox1h{}0#^y$1^B}Q#k=Xn|Hpna(UeN=>Ipx-=9ln6h!*NoqG zUD&^4^N;V}E#Xd41{Gv*$1FoyBaZ|`{Cy?deZ;Dft2uU$A>{BcTeZ(~)- T=YI_US^hIJu>J=!%>Dxau;NKR8o%gjk-00MR(<^(Z-KoE!-8G(c_5OX+9U|;}YAP@m!79eH4Hxqqw9pCsiRcuOzjoI5oK>Ge56blS?Bl zJvl!ozeqs?Oz9S-CnYKv=ox?k7KR~IN)xCx35!;kyaH|pNNYuLL1J=dUb=!I%r2l{ zB{o5*m~LraW(m;o$r-62S6Aexr4^@^z#RzEjVS~XLDdQh4=7;lhOvM&Ebu{L&f%Jr znwP3z1d;}YGYGH&F(};s12G4b4N?n=FpxM1Z~-xl&5gw7L1ObFvH5{)kXbMQasy01 zay&!jnarUKm|KBrnY>ZOn4&@a!*AXmIlBJdvo}Y6{`oWe*^!?=YajogbLaD)8@E5s z`EdRJpO3TOy}x<=&+JcN>ci~W*REfGSNrkf&!4|)KQewi{P5Ab^|KD$dbsZ6&0CeX z)_(YywEKMJf%`YN?%!YeYRkEs`zjy5y0ztI#fQf)fz-Z=ip`t198Y}z{@eHO3GW!+ z9Xxlwx+ZJ#rgK#rQd5;TRjuE^@1dqVp)VyYNlW=&h-#{)@}+y%LQ|ApUA%iWBw0gI nAuuS|kLUUGx9{F_KYRA{AH#p<|3E?tL@@tnVt`?$|BMU(#HQ@& literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/DebuggerIcons/Icons.16x16.Debug.Break.png b/data/resources/image/BitmapResources/DebuggerIcons/Icons.16x16.Debug.Break.png new file mode 100644 index 0000000000000000000000000000000000000000..2f5ff8c890a18992ecfd8d5af82fdb2eba46f51d GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i4{|GNDCjEyG`@-k%JtN)R7?zQ>+ zgLD4#{Quw1eyeH5X~$WGCl#d+6ns6V-Ijm9-cZ4EcB6#l4#wAIcM={Xq_=ucd8#P# zaB{Qshv)Lrho`^iiD0w?O7rx*;jv(pvz)-FlprR|p2z&*#72R|9TvfsegV91Y3Flhbqbt2Hq44$rjF6*2UngEANh}!@F literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/DebuggerIcons/Icons.16x16.Debug.Continue.png b/data/resources/image/BitmapResources/DebuggerIcons/Icons.16x16.Debug.Continue.png new file mode 100644 index 0000000000000000000000000000000000000000..c72a5a085a46b587dbcc5d95c7a0e5bf2be2f38d GIT binary patch literal 610 zcmV-o0-gPdP)Av2DykKy65HgZg=N)clNnSp(eS*B89IR<}u&L@6F6d%#6L1*poUd z>+g+C#~)VI`1z80JEu5*&q#Yw`X;RNXVkKnz$c<)*5kQ5Oos@RvKgvl_)CDz~^(7AJNGNNYurSii!gXHvdKJ zg$P}rbvw$|n2Z;&1(zfuKa<3QBo8nUTO)*Sh)uC>+hFe#RPvsRVrjV`SFe*CUf9sB zU?4%yiy;!u#Da|b4wSsaetU6VfbPeff71-Vr!BLQ_BEi4Aaa2S>yW{7l;rD1(O$ny zRDNZs9CW*1$+83!{dvtD1P-*{L{UD&h^jxbgt?n?d4Y8le=#17f_4RGn}I-Sswy9& wq?T?m=boS^R~o!8>6wpEnCP22`tND{1<7saS$K+PtN;K207*qoM6N<$g6ZlF7ytkO literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/DebuggerIcons/Icons.16x16.Debug.Start.png b/data/resources/image/BitmapResources/DebuggerIcons/Icons.16x16.Debug.Start.png new file mode 100644 index 0000000000000000000000000000000000000000..e6b703b834c8faf8ff29cd3a2bf7a4eea514ab57 GIT binary patch literal 736 zcmV<60w4W}P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;R!KxbRCwBA{Qv(y10?_;fS4F41ONfVg3MtwU|h~3 z&lkaZUVQO?E|zJ`%)c&u`_KCQ|E=2$Op=oS|9$($z|6tP@bAlKhJPPFg7p9d5ULB_ zGu+Tl;AHr2`7ZVkxXX zyTwe;nS)rl__^5y`2I2c|IdhS06+kt8UU1j{`?~Y<8L;G@*<7@28B$VKfInS`OEli zGvn8PzU-2coD2-WK>zy(t`8u9SkMjl`}YsSw{JffzQ6g+;Ak%K|3BMvhU-Fa?EhTk z(qp|Vmcz!wzx$h%q}00a;Vrl0;XeER;2;pMmQ|KI=o$?);dH^#T$e*XXS7U=(9 z%wHLp{{LoRW`rjmfB?eq!mmGn8Qy;X&hYWqPlg|CKNz0f{>Je0JR>91HL)AaPx%X& z1sIQifBWGZObb8&VHoh`_b&z(pgTS>eP?`d{tLtJL#zy}SEQBzjhOzA=g;Y%FW>(A z_wL<4m==HlVnGjs4-7vUK0N=$@O(GWr6)xnvAq#UW)NUJ#>n^U+mC187@3)v|1&Tm zViO>MPz_*bV0iQ98^fRN+zc$Yq*gQiXPf$8;NS6|KmY&!_wgPh1EV-b#sLT*R0H@K zbpC7*V_>~0RQaFt|At>I4EO$V-1+nG9?->#OjvUrKmajPni~NEh~nG`5MTiB;^$x- SN>}{=00004@|xRQO-_y7AH!;T+nkel92q@L$?oLQ+CP zKY8M=mX#9jIt?Gf^V)>}FEnIGOAd4{lz32jaJgq}Pkg0>AJa$9m@J7x)zl=$eM@*w z@o#hR;umW;P*X5NMc*bU;Y1s&(hT2jhZIGH`j;D-obAtXdcOSwh>T& zG%f9jSO{or? zXdnOnw)svOwu@O2))O{e*cE*6j0sc2$EAlZ`agKhF81S=r^AWUEA#HmSih1*O6Ihk z>V-*cpNh<8Sah%*I zam|p>VCnf0+Xe%wb%{ z%C;wy)mEU`@RR&Xp!*p-UHx3vIVCg!0CkLHqyPW_ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/DebuggerIcons/Icons.16x16.Debug.StopProcess.png b/data/resources/image/BitmapResources/DebuggerIcons/Icons.16x16.Debug.StopProcess.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc4a7c08c9625d974dd90f0715ca010f0f91327 GIT binary patch literal 699 zcmV;s0!00ZP)|r)d^SF=yz4!atIJESvzaQs(ha+CT_|hSkk=a{$802Xq(N11?>qzCUsi<%`lkS|AaF~@fLN&wHnimVB_ zsmfKY00}uw$VkXYRBhVfzkU+lN*|XaSu9++MMM zTj|Dm;WRs2u2n0UQfjzAYFJQz_>>+UFi-mgLTW=t#hP~Ad)W^3z{PN({Dak`ijui- zx5s71YIhw-t!o3|C&uy@yUhLT>^wUk0s#=r{H}FwvZhv~su3jx7$AX=ASb+mw{Ql= zXyeC=-0_~GOj=d$>-uozY+{y1B4Qu{5jY~Bpco-g2r>i}bK}v|nY0qmM?TG8xTvYQ hYUX*T)#Q(F{{RSRb+n}sQ8NGl002ovPDHLkV1nnSI_&@e literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/Icons.16x16.Shell.png b/data/resources/image/BitmapResources/Icons.16x16.Shell.png new file mode 100644 index 0000000000000000000000000000000000000000..4ea52e6d0b4cbaf6979ef5efb23cca69cefbdff7 GIT binary patch literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJdx@v7EBj?eNg-K&i@ML^Kq1Zo zkH}&M25un`X1sK_?hjCqCEd~2k%3`jKlh(RRvJ-(Y zXc?twSsavH?G=;_R3e}mmGN|9>YSqk5@fRIz1pu~SsGW>AY)a#aI~^dZ%X()C-ryoRu>QLp7c}6FD8i1@rPnleBN?y W&JD&3cWMBwWAJqKb6Mw<&;$U2-gZ|2 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ImageResources.build b/data/resources/image/BitmapResources/ImageResources.build new file mode 100644 index 0000000000..9a4b9e0786 --- /dev/null +++ b/data/resources/image/BitmapResources/ImageResources.build @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/resources/image/BitmapResources/OpenCloseFiles.xcf b/data/resources/image/BitmapResources/OpenCloseFiles.xcf new file mode 100644 index 0000000000000000000000000000000000000000..23aa46da27837ed804def7ea5cd8c248e6df8fa0 GIT binary patch literal 5118 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 IHbAle2Wj0tfB*mh literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/OutputPadIcons/ClearOutputWindow.png b/data/resources/image/BitmapResources/OutputPadIcons/ClearOutputWindow.png new file mode 100644 index 0000000000000000000000000000000000000000..47e7d601a98bc1bc90ab52df833cb837770a5f1d GIT binary patch literal 1148 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#3Xc>QyXB%krd13KEYhAXjv*3~i~=n0e*;wvb-)Poz|zgf{{Q{^m*Lm1-wZ!~ z{$%*}^*h7Y??4QszkK@&roVmv#_;vqcZMH7euCAU*gO-iA7&1m{y($6;eVRL{{J`6 z8^8szFyJQ4U9J_$DC1Fu}c<;m(V9V4GJ?t7H7XX?_C3@`?G3 z%P$yWF%u&67pUl$5yO8lwikF0;{X5jUf@rC!u&tR4FAD~0F}aBFlY6?|KGj?{RZ^+ z_a8qPKx}C)CWff>Wel7jUV=?!RyVl7@ce-SYs36RX2-w{IBiFk_87LqzXAOZviM~db7uR!`|XZC!UCKecD*2+EqL2(R<_ix|6G4S)SGko!p zXW)GMl!1wffnm360Ym>i27@i$${W5fpPKM3+e3k4!lpo&ehm6gX~6zpra)VP`0tDg zxQ!r%-#fDBzt(5?|24~FKZZt_z@OLm9DbGf@Beq}SOQE8nf`TTQ^L2Z$o0r#1H*pl X@Gkt|{C&V;f`P%))z4*}Q$iB}rD_LK literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/OutputPadIcons/OutputPadIcons.xcf b/data/resources/image/BitmapResources/OutputPadIcons/OutputPadIcons.xcf new file mode 100644 index 0000000000000000000000000000000000000000..1dc64e60e6f9cb69464fc0aaad66c4157eda98bc GIT binary patch literal 2871 zcmcImX>3$g6uz$@rKRYA!0$=a2tUASp#-Bym0$p6Nsvv8mQJU`P&!lE(w0S94MKqc z#fX5QV_2G65XwMUr0K{aq6DifcA=C)Te`w9)6Vv`>vvvf5JHX7=uPgs=ljmN-?`hn z@0l&>8Tve9sy@}S#Kcf^p-T23R6)SwS=9b-6fs5>We93t)Oo1GLN>(>Mf~$JE3HSU2-_L!V`D55>lyWKm_-|n+8>qHb?_t%)0BFy+?;LF zPf9jfwXNz05A6a+rAV?VIx1wN(Nx0xfJgY4N9=)**w4Twtv;a|`G_yP>$AXxO2nj) z5gsjaMa+Mki?9&x$33bPOq)G%?5Ghh$QX1VE~-+%$9Mz}Dit|C590#&R=mkdJTAuh zO7;}%c+ z3nDAQGMkT8QuqMmsg+iG6)8mSVI(wEyQ0Q+_JF z?eIH2E_(KTF=U6wjUDd$%Hv$$w+KJO3)tC>pRCSXx;SOQoS9Q5jvs5_8`gZ7ld(7@ zaW3$yV_)KXv8DcQ4>qEu>CUluzE=?gzOD!NJKCBX8;$@=L0^~qerMa=rrY&pz(HTP z$JN=^(scV)-67zB7qGpx`A);l+JnG8kNbW{>)pnN`WrO|fV%;;&UH0aCBSZ%mg-hr zZPoQ+;0O27xv}Bqjq2-H_XD4)C_i=lnB(xbr6t9Cf#YN17450x+Js8?f4ys4(Z+Qj zt;)?zHz)JbefBSa*M_l!D-uo=jk&$;>=f=$Wf9OrQ))c}OcTU};cmU_1jYotm@r^V za|LkF@9V}OJK9>B@00`gbna|#X>PoI8kjoMjPEwxX*dP!#e_RCW5D_oz*ruwbK~uX zo5z7KU;63C^XI;ImVbBh_%YxqF;f)nNfWx+vvOFQYgZ~S|9p{Cnuhwin%_hCB3A`f zkRzn7pctq%a$r@FB|&nFIP5hVfuk>pg6Ind0@Wbk7i702Qh>h-1o;KYt6|@D5bz6< zAT|XM;J-!@G88C0;PYLf02zAMpy&7dyuT6ABli$va`kn!HC5NIUH!EZeq)SL(VmzT zdz$059r$k_dOEvweNp|3mvRin^!73m|6g3UVeQ^tM$!+J$YUWRJYKwvkryB5BC82U z@P16dMyQyQz!j!of!zw1=|+-$UT+|v;Fb}UE_auL4~HcAyShQNs$#$|dV`Fqv;{oy zz=!iJDo_dfJG`=};)+v6pS&}*1{buHFnU5YeC>|;%n=ti!Qsgt?O^QEYq7EOCO9cU z^;E<7YD!QtCT=YykTXZerNpggEI27XzDW7dkR~mQkKaKF3SU~>kzGp(&aaU36Dlcz zj_E2Xf!)CDxI68xBx;?wj10QNl%P^i5lFC^F^iVqZN^?^X^eUCy;>?KvdQ91#_}jZ z8k<}{;{qjc%$EzC21?-KE(0Yv%*l5x`T2{Ju z2RK`5;ycqw^WeVS+qSIBU!J)*`8_buJg{fy*1`h(XuUss8fiL8_v|bxEXV~hhq`#b zv46IqASZ3%+-W_U7tU3jIJAHF*22}xtY*@5o;*^z@5}8)>pxya3^Wl?Y~Q|R-RfMM wnKXZ>IDV-3tL>ZD<`V(U@}s3+f4*tWiVU-+8N&y&C_a?+=fku%ijQG`0D|vYE&u=k literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/OutputPadIcons/ToggleWordWrap.png b/data/resources/image/BitmapResources/OutputPadIcons/ToggleWordWrap.png new file mode 100644 index 0000000000000000000000000000000000000000..7f630347d910b890fb3a4c5475fc3903e5eb1a6f GIT binary patch literal 1148 zcmdT?J!q3r6g{5=znWSISW43t+}s2Sgn+mhQ%o#Y(JE0Kba0h|aqAEZ!IrACh`0(4 zXV^B=`|dmM+;iXiRxi(=9}7=~0gPqR zsVfpA^pV5zJzlqWBpg{x-?$Hq9;17B{$f&!elBxy*8g~PDjW`7I_;kTLerVl*@eld z7YXfk1@V98@%Y;7n(cHA+T8#h@ph-5TeSDxTI+&gRBXq^LnN?tYsCR$JzWFJt+jrI zSQ_y(#t@U}$Tn_WOTZY5z@Xp}z^}SN z{dW_s#vZzjpV)7HN9E-LqT@cH`24MffO5rD0TU8Dy*n-)oC?=@W~e~a?AF?tnebJa zX8jc&?377ix2WBl}d=m<9e`IEMogh z6Q6clsP6m`HEiY-3iR8V_oAI2PeF=-Dl>=w)%;ny5&)hrnmnJXvr$Z@#{&uT* znRY85DvcUsr(0*5@z!pKUE&f0W)V!ZbGz|i62r@s#`jsnTic601XW6%sF z8y!ac+cHXj`r?PnI~G}|Ku%rhy9VR^JG2{h=g${yaHh6?FP2i4K{zp z!TyYSj7NF#D&30Fvn3CCz^GxqPct zgSdJW>}>B>^$Jv7i9VU6w3bDjCZ&<}5YYMX!a=-x>Adu^BA>sfWcWyg_p3Wzz9yoz z*Th2aqHp15imADrT?b*X&F;%?5g%4FKVpqm=pm3IcEJZM-mB6E!Z3UNhux6OEai4z zu&?0b+BXJhL?Ypb;g8aXQNs#v^@&1dYm2`XOh0(!CH;Tf$=i+A{ToZqrMx{p*<3z< GYxWN->MyeZ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/PadIcons/ClassBrowser.png b/data/resources/image/BitmapResources/PadIcons/ClassBrowser.png new file mode 100644 index 0000000000000000000000000000000000000000..82285fcc3d46eb3c1a6f8baa21a36bdc2e6c99d8 GIT binary patch literal 1148 zcmb7CTS!z<6kYfFn1@YHN|BZdVOf-4<%dNd$yg4V4l;!Olw}`TAB{L5ksm%jRK_49 zM+1!&7>wCMNH`+fm~J zVs}_A$L!lv1as_slp@xTo}Pnj{mK7#vE1!?IL)M}f-GGrY_=hULVMU~;2ESSLu5rp zL{ex?mSVW&u@OnLA}8P}vvhV86%8RuqU?4r(!)921x8LmjZnAR*`MXA)V{u>EF1<~ zS_1R=z$Pcbyk4-%N)D z!Ms_d@5@~yP?&%lHAr)MKF?3f<}qFOzL=@i!+Wh=hoia(R{Er?6VH%tp8u%T4$e!MTI#! ztzHX2XUsL6CozofKsC9>ttyvE2)dD5dK1{gHrH_QgN8iR+%gtqYrco*gHFWv_Km&- z_-Lacvm`Q#3*&79M^biN{oM}~yWIu5&4o)v<_ta$jVg`~V`3WRs72RR? zG*R*kXloLwyg?vs*ONJsB}t?Oal=F)B1$8XEl?qe)Iju8?%2W>0jWY@m_YK2$s`du z_z9t2CwR{~4%wWr@*cDln}So{ymfC7(CS3YD$#0w0!&Y0|IsV=dm0f*0c3fY!`0czq(MYpYQE|&beG?__Z}Q@O706b0onW6Fn7|ms9*-18P)X xn6Kv?&L*41QtTu&tHHrQ!r_sU6n938u;%hjFY;HI>Dg>9e4ZtQ%E*PVM+lraIyAn7OV4B zG&W}tP-#Io!SlCu_MxdI14*+=W+kzB*kpp*CUAtnrkls%)<0+nw&7QKAG}P7)trUA zHGu??D!wV6hY5rbkitVWVj#C!!DcRi66vsVy}A$*We?b0euwq!CwiyQ&~qvzkbwYd z6*zW)jZGJsltgzMv(tB=BDxx6jYvH*-?5S{Vj+J--%!|rFA%s6ws%bUGJTpb=^Uwk_~`Cx-5HfK;pu2%ppqfmMfg;lL>t z@pjHd-b^EH#As*rCHh3LQ?Tf2OtdHSfL|hD1%X$F?~oF>YTH=Zs9>$oj@K(&sLeix zX-2{wxSqlmwcmyr{F?hfUyMiBrr^?#>QoI>Jd-T2l#AeV)_EV4)~`=bzg*O4dRU(4 zV{ti89h)eZ`e0Lb(XOCasvuu-VV7MZ@KN>n4=p@h-zu-{f!RKKGV}cST+bMvM~BCU JUYxml=PwsD=Y0SG literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/PadIcons/FindResults.png b/data/resources/image/BitmapResources/PadIcons/FindResults.png new file mode 100644 index 0000000000000000000000000000000000000000..bd03b2724ec3789fa0cee267b6421a27eee7a47d GIT binary patch literal 1148 zcmbtT&rcIk5dL<%?UuG%TZ%wSiM0tFj6^T$RZWTXATdNuNIYmf;mJh*0lg5EgC=_O zU_2QQ-aQz-cp!Qps0oc)Y!OSLKfuEF*X}-NULizJ7$=#Xd9yR$`(|c$=EC?n!x!@b zFw$eG39=zpuZNz8YT_E1uA5_%w}5V`%53tLPC@;4`uwQ=DG)mlPfXo-^d8U#(y22S z`=d%otF|fQ|3u;P`!Ci+tL>oKw$UPOwsw7irqwyiIOVXFxvh>>89=ZKK?*oRk!L_+ z%h+y&b6Gf_g{{U;)SJbXOQ+yC0=5IRErFWZgju)b+3ixHd)yM!b`-kA!9pgFJJT~A z00yC2*rYAX!P4>uzOU9$YFMzK!cPFPppJn)176*;liT4T8SDZOFjm*MkuB6Pl#C!A z=t5yzL95Y3Zl#R&$|jP7VJNB#f^Q^|GmrpGpN8=9TN%M<2*Pim=4jBoE`)l0=s6rg zzG`Bt-X;b@>K_1%$PAWCCe&~MMe=n6h;;*f0T6v1jz(-~6Atz2IFvxL*8(%3n5w8S zn+^ocEJFOkv<&|GD)e5Xx$~w3Z;Bm~y%uB;i1+wWDgJ`53vf{}-{2>;HX88Itr`Wn z1^aIX+`n2cVldRe+s`GqsnUBW2)C{xU)(|=S4DrwfXD5Y>*kfS$QJlR(Ka*CzC44H zv2Zkb8P!4+bD33YiP{M0Nc08~4%1L5z%$tC0GgP8sJ~k)pgI2>iwgxTc~j{2MG&NU z1pG8OO16cKVzrE)<6L&;q^UO^bhPuw6FQ?>zkQ% ze%puBO`HhKgE(k)*jBSYX@_|=*W})MEvo;6f;0^`t(p`GW?YN^yql% J<=Lxue*=gHSgZg5 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/PadIcons/Output.png b/data/resources/image/BitmapResources/PadIcons/Output.png new file mode 100644 index 0000000000000000000000000000000000000000..63020020fbb358cc0268a47928d274a5ad60706c GIT binary patch literal 1148 zcmdT?J4*vW5T27@RE&y^PZTT!ADxJS6rv{RA&Eg^A*N9L1A>+oY9mp>%0FRYpTa^x z5Ui9CNMm6m2x4KCyX>y>%^KsSQLu7gZXP%L&9^g~OQ+@|Exj#76mb{g%WONKO^y5= zd^a0xnzt5Kw~0DMos*$_n3LfhH<<_*T6^0&hX;=Ow}?W0ZhR)w-Q#qG-h8h3n>aXr zeEwoQUsKsv5=3Jp?ucr>E(W zvMW=hwIQYHQ#Hp7Sj{QqHLJr-G(D7_X#X&00RX~vl)o-8J)bigE; zTuYMzT^3;g2LN-iaqeJQ*v_WL;ERp@Z*YL62Ed8So1YnEGmG4ef$JFnaXLCC)Px1! zxi*73Rtn6RQayvK+v2Zgkj*T~)`9@MzS!jG=LRfAC7m#RFhEy_Ew+QWjsd26bN4fY zOwttqfCLy|Ceeuzs(kB;Cc&+6ECa;Dlk>GL+?SpM^c24+JQ&S@N-Q1`t^rkI0}OU{ a_blYU`xakM&$`-T10e1uQt^w~^@9&-pr*0_ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/PadIcons/PadIcons.xcf b/data/resources/image/BitmapResources/PadIcons/PadIcons.xcf new file mode 100644 index 0000000000000000000000000000000000000000..91a5f6575ebdc828cb57cbd99fb8454769eda822 GIT binary patch literal 9544 zcmcIq2|!dw((aj21Qa!z)93~@8r>K*@yMFZ?H@KuJhCS08ckF#Q9u#o5)~8>bOaO; zi~=fG5CjoKQ3MeWM3nm&M(*K~fsui^kN&IP%mn#Yca!}$5Bt6Ps=Mob)!o&vyGJ{F z#~tP#R<`E0_6{}#uCe-r@=K6dEVzw_Wc;P5Cj}G8FGCszDH75vkfuX2vfJe7xCsP; zHC~=Od;S9Wn>+XY`5!D?xM<;rAAX2=uR_9_SO#jcmcsM5)f{UFRNu3A++=6-p50D+ zYp94;SjID4Ts<9Z%Xk^YP-Yso#r!`$9p^NHg7VYJ9{p3 zJx6$7pEVPzZhlTxL%#Wo1+41fvSX8#y_22!`-XRc((`#rz3#nTPWG-q-fD{tvi8_+ zYwKd;`YS=K{m&|$W@uGx5B|AZkzuIi$WHS|t6T-$DTt<+vCn+Rjy^OtTqL<-8 zO!YGAffG|69%R%rGQJP(;57yk+TuXM_l$sK$TN&NF6i_Z+rZtx8_Ke4^qG1cy94oL zqVRC|X_dtyFe%$}E+s4Pe))7VoJjV>{E~kCc1dl^czBV-J1+G~eoFTWqRgGPyU_r6`i}^DrjwKdoH!JSwzHMvKZXU0`SYLlTdc=}(h|(W7wRQ@h4#>x#-LRJSC%t0n7_{qVwepiczoxU>)7vMO z$k49vX`gsNCRd_ep$KG&Org}Er5;gVzXWnr41x*+Qn^B@)}q~~P)v?8*d35CWsvW1 zYD`8@BVs~_>yr^+W6=K%8wz{lUyJ}IhM(8-Sl7_=*xUbU&!Zje{pa=kKFriz!*1vW z17GO*VP!*g!xqp30hTrX-Wn;_UF`{h5m^<|I9(V&f6v&&1%s;bK9QQwWLkMWRL;Km<<@2auI_N)!g z6(F(LV|jcv2*ZfNc*^WK?~DOSX6jI;&@>)(Z==}q4zSUDnNB&htKY+v3|n0*x=|z))jC0dZ)l>e-yoTP)KihG5t7NF zyuN6pN|UHt?-$<5zmc8v^NFwvlD@(Q1xvw_OJ$O>_#|=tEfHl=iB>JE4gDy- z?QT7w5{+EkaoW>6ru_B*)hGvg+w#3X;Y8$=K7L$VdguDZz-0?aXjsSrH@mfe`)JPe zw>U(*I*uKubw*l8GOu61c5(^O+MnF|w72_CSY%l6p+G{;3wyg;Yi`}Ro_z*TLT7i` z)y(wN^9d(|xq-2*{44kP{5oDu#iNwSD1PDPlB$aGhxcxr^O_&|=}h{`12|cRutT()k&|b5 zWJLJB&w*3j(fIQT(FZ;KeZ4*02?>cyh(5B@#l?BM3!uYM(Z>%R@ZIO_#qyGSx*rS+ z4Gh@N+MnsO+jZM|zXO4X4ts62-Mn_$mmjQ{xo=;<0VnJA-&*{2*4xW|+`TVw*T&UL zKb<#y;=Gw0FW)s&-kdPu%}JBqnlYQW+W*7ilX){IzcK!$F~G{?9rin#(JbJi^@Nbn za9;&+IMtqTW4ozm!MECksyFH$b+>QRkyI|y}*|E+P3ww^c6w_t|uGA-2$_~FL{D(ss16@+WV~?Kdod4t z;&U<`dP4g#`acfJYd?W$U262&pK}QGYsR3Y4ofvaxdwJ`+Nl<8A2M zV~EiR4n4;4qRolhc2N2{7Kfg2_DOPfV0=Kl6?|}ZvwOyeZ6Sj`gy?;^1wKU3?jjGy zhZEp~`*!ppFrw7Mp7DWu!08zuh?c^FmQ6>JVblbAa~M%W7=T@EIPhdsEuo|F2F`>N z8V+9{)GEWFOgQ!X^Ch#gKWrEhj;Uk3A znF|-t|6=(z9}E4_vHGIr+h+_z<~G_}FB|wmtd0&HsvCU*;Jw z60t<=2Iu)z+MKf=UPa`?4>j1no#@ew-De9S}dQP3!67 z$F9xiB_Hf>EH6#xX;d9|51*@!^>ntk{wbhMG0>DBxg;@G0%b)pd5u*?8T&q3uz-QL zcjx3>3iT(A5q}lG-wT#;vr-wp*`n5;P3wz^rxk6#5pt*d-UDsz|{i9v+%JR6= z$J2nUOs$j+^z}YDdzE#S&6VC#$tB|6C;7*lh!Rm+aS47CPn!e_OAFgNi z_lbJC6C34E+iMdomn>mmVN9E#;kv`_ic$u4UGa&H+~!_$To2ppvhzw-M%ISwa@#vv zo9Z8}h_HDE))l!%DYHTj`dkJ-SXzZfrBW)mQ(05lUeauhMh&RUC!LiJesGshThZCr zp;XArypm7u-T3*sn)|GQ6j*WgoVQp4=Nm{c0`(=Oo zGD$_1a(TN8zob{#)gj2~r3$g+fwh$t10P;iXcY}dHWlPCuqFR&VeZkd4_fJAV@-a+ z1Itl1X{E-2MyJ85I=Y9-7#h2@@mtcp_Tn4^S=cT@(x^d_OE{G|3!=mhd z%>YUoN(P1xFiH@inY8_|l#s(dUrGd2z!E5_0Q6XrffC9CC?$kPc`P0v=^)b3%TP}F zR6uwYXz6k?%;}2Z)Cdy1SOJ+ZE2^lNh*@F{5#!2SFAJf(Qbnnd2w6f25rSwy8p6j+ zxtI#Oz=D=vrFX&zj3Q@zf&+T34B0Y&Pzk40y_aA^!a$s@(b1tu!<1uDHI`u-2q$qC zY@K0Y1$p=c1#^SAMia~*_-inzGa+H1;l)Fdu7z>t2M!Qb*dw?W$F=$khS&#K=8qm? zFFJf-_Wwu#wmhFRk3qgL#9sbxsP1KJ#L&rBKIAm9BJi&|Ixadj<9;F`Et{RIc{{T6 zgYKT?HglbMj^T+BTnUfg#_e&Y&b#x(Ty6!oh|)zXEHac`-1ZARke5wQ6ldlHoGwFo zQcn+j8d8d}%%rxqWJ)jI26^N7=H~Mt=TRldJYFiL8CR9!MK-TjRzjJ~3_=#UOeX~7 ztI#bVL(^;Sl;a?Uynx=XRGS8=)(HlwmUC+<-N<#z&~$Oz(uE+O zbW2rmgVtJgqU<7-dPWqiYXkX|i&*UGpSr3UfIJRTicBpK5!&xX}{PO%4hf>)wzq2Y6)jgZpoe!_-7#6*w~yhNVE}%dgy?P0mOzZ zy})L)YzQqZ|L>pbMqO|=GLeJ34NNbHocD1s{*jS`I}}60NgA)0A)(B?92JDT=B0Zw zT=hGo*Mf)YUW-PYMnp1&M&4OWo+$gNRw^wEeIlxE6cpB19_RP82x>$Pg(0`A9<^#q z?p^iH%)Z&v*mxzzF)6kr=VI~2-RqK$g+)Y!xGi@i`w#52UbAK^SlnRi*FW0=7T4MAbKmgyZ^`$|7>kR&Kh;@$^UFW$E&g?k z-r}sc^cLsM(py}-N@vmBj#z$TKI*lPt;qnHmqDpu??^JQ3FcRoGRrIjzYIzToNZMw zq_hH9n``@E%b`*oRj6@kojxH~1KG-^d1OKgj=ECjb7NKM0(Qsm zIl{*Bc;R^Xzhhx0lf&HJ2++$0qEPmYpNHz+IFEP&VOfqO3diHV?whB9S($%ONRXdz zfF*qA5-bVv4+#$Gs`B%lM#$Nlnb}dtj&Pq;UkUQtP8<`{FQ>*FE&PW*|*=3Op83GRP-MeHKlsExvV5)TEKx^v0|X}l85WAm0)~e_b#`*?xxIq zPY*}fi4Az=?v~)0)Z5nDcFT5GPe%wX`3D*9Mt%3EK@Q|a&H-GQxu4lb?%>g&7&pdazF|57a z+`swGa?uGdV5Voia*>DUUJr)#9)|TUuR+#sLs?ruTiYJ?+_8Qtw)Gz00AFvTietV`x_jobAHgUH2tfl zny^^LlfPE4U2ctd-7Gj+Vvk;^)@Y6a9$5e0SQw*>0yZs5&DQq;!=i^}Jax4OG%C$k zuMG$8D$eM4*Fpu=s<%y9NS-tL?T;-!o@&NH@*Lx_KMiu#+} zPM?erL4%1is7jr2W`DJJ7e9L;DpFOltmeMX`iqCFGZ{sStUu}a@gTq8r1CUIk<>5h z?r3SOtFCx-o>3%-y4wNQls_tpXB4sB9jy&~#COjyiZdOpkY53~;1r{Xf_ymgEV_Fu z_XMN(8SDYRcPsbWF`WYKWB#?QBa9+4J2UNk{F&1yjvWa^g;u%HWZ@KWP{I$RC&|!XURrw`Gk*3QBT$0KtQkeQY zzz>ocMH1G>{Nlnyo#Iz~Czeqp-Ydwvo|Tc7oERH}3aw(P$x?K%o>Q+5@N$9&IM~Rm zEZrG*>X60F8##^WPc3|sea@Zs_(s;(XpM?Wt@_~ch`pP?-7czU6y<8w-c44UHaLX$ z@)<>mN-o0#il@E8T1N2zvA9pvD|}MTC<hzhO5+QfPa91gQ#r;EGa zQLxzhZHWWrr{MTD1OR?oM-F~kG3)olDVF~|A69%FUeAkDw4=Yw8})*LCQMr9{X=z= z@u-S?K_poh&&Nic2t9OQ53JXIEBZUu%)6GEniLxq8FmC~{zk;qEPr_aHVnG-3%_8^ z--xiL34Mha(^vIRX2)gl5!+_e*UbNfu-m!I$r{~zUSD82{lXIl!{AR)SpL7&7r2Gg zUsJZ}1p`m$iz)kt>ZXJs9s{R&w+{R7^>E&5y3~%VX@4J___Pa}8!iG?K!m}x(jjPW ze4Gjx&fG-8Coruv)z_r}mWum&yF1%kn;Q7MWWaDh*UeOZ%&YkYFdV1hs~R8I)l?+_ ze%cF_;eZS#p^A9G`MEjSS(%s8E}Z`*Ar|n0Q42K8eJo`hg1PflcQ9c``6*8yW?^tfHn(v%HY0uBqoV}K1;07LUIm0O#e>azep zd~pBX?Sh+mIoGacWddF@YKexqqeJz&mV>sz`J||j;%k~39`l&_1#lsSWdKXfR`n~C z@;WQTS~wnLsrr-(g`CGInDauGQmT;4Ye50|EOnnsi3Maepul{VO2S}i6(}H|rD7=s zaws6H#1d*eaRelnO3Sf;TFFvYf<2i`Dk(#S&fKpUoNIUtzXDcOR+N@NzSSrz4RZ&l Q2y;SjhTG8ppF literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/PadIcons/ProjectBrowser.png b/data/resources/image/BitmapResources/PadIcons/ProjectBrowser.png new file mode 100644 index 0000000000000000000000000000000000000000..e46fd7b49c20c7cb312e9587fa8e7c71ce5aa3b7 GIT binary patch literal 1148 zcmbtSO-NKx6#gbh$NXVtG)j#!lo0H1k+n(Ea{QS>jc6lfm=G??D4VE7SOy}J1d>o- zEy9GdXyHPM3T(o%T{S|PNowh6Xg~A&<~`@$&b@DDg4zgO-g)QV!*{;>opVq7fvWP< zq^u+WsrCxnLGl)1i3#-2_VQ!oR-Ue?ISZsoGj!xUHc`;zuveCvMpLrP*8D zZjfg{a?4mWBCui!yja2;#U@AXg`y}3DIwH0G$YJF#y}q#*Uw=+7G?&zgyG%TG+Nr) zVZ48*gO{x859(CNbyDLLj3N#l>4-G$mtOa4SY!Q#jw+iPj5^U}2$xBuNE9 z1^)3NEX;m}*SiR&`7o7!6!|-IVM$1afTfV-=44}gd6_JSijC2Kn@aJBs(mgN_5*^wi{1}USVQUh1(a8ImLueU*_Q& zcH%+z3E9X<1^OTfg12Mt$nXdfhFu%;(ARwrYjX3T_yhRha-k^Y3F?m&VPNnS_=b}r z?GJ(D;$<25=l9wf3pq`3D16?FeYP45KD$nFecWS!e?-lK#e= bb2P=0FZDF-f0+6vO#qC;l4XfB literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/PadIcons/TaskList.png b/data/resources/image/BitmapResources/PadIcons/TaskList.png new file mode 100644 index 0000000000000000000000000000000000000000..f930a7cc65318fb2559f25efc592577fd40633cd GIT binary patch literal 1148 zcmcIiX-HI26#m{aGdhmrpeo%c*bsGl7;_q=!RIp6)xa&kk-+En)x zH-OaOy26cQeU>IU>6|XHax%&L)@?cfq}$4!p7GE{PS?TU`he@LXG*evQguP#3?NPo z78aCdW^q0-qHz@RS81p{!J<(a(TI$#d(ZtdP8`jyZ|r0VRRfp~$B!GxU6KtEaSZfF zaHyh)%?=!aZs;&ghTWS3V}Le5ZNqyOTsfNp7&tbJ2Y0-vX*ALEg+uA`FdR-NLiv6~ zV{v@`7QwR6b{6h_Ds*>$G;IJ))9qy4F!7}NEEX)90H0SuJoh`KfuC5M>%y&zN3k+g zfgxFf(;=X|e2b&0sadrFOw%L)Qk`K?8A5GM7hv*`l@Y%?Wf~@CW@AR%J$S3H!{t~7 zP19UmT^}_Yz%UGGx=BtQ1to`}Q=J+Cs>2!vnak71gQ#DGhh&a#Yh<%LX?vIFRJjpp$@%875JK-166-xG0;AI_{7BG;v&vs z5RVT-l46)1{(_FA$#zdw14VFe9r}VJsA+4sn8ki3dYs|Jk63>Q{Z_A)XH0Utr!?=ZASmQR=n!y zKw4QPl2d#TT`6FkK#TMz*48(R_K)aEI_K1YE)n)iGZ4R7CX%r?> zb2*xp&D_eh#V*16`r1c}6Q|DWZu~4e1(hb!BRIgz0{Rr0k`<~Q_P9qoVbxIiygVg$;QX>OP~b79%hsx8G#B4 zBQPTS2fpk<3W7a_AVumBv@zC01d8*TbGm!G_jb;?+l`+4;5*;9-~GPd`JL|^Hq_qM zVz-sq0NDMlO&uf()C=;+>fX}2N!W9@^;$1b#GD(hc%M(e{67DM=KN@3+1?_T?_y01 zu$23o&RjZB$_bVYnN<9rakTyM+f_}HRb*rZ67h_b%Qa+v>%SRJYG`D&k{&ITK%=f{ z#DTS?5QPlW_TPkEoWeSPg<*%aX)L3i<+P6xlorHMSL49!>@2G4svt=c1VMn+YK6-s zA|Cgkv84)%szTnrjo`aEbR0j1{=p%ba$AK$A^3bg)YsQzVPOG0&%@zxAQFkd?RH}( zJcXB&qeP_&4-!zQ+?;|OiP>z%*w}MaS63pLOhObzP|WM~!s&Fv#Bs1#m}qFKPGBeq z1Ok|tn83)$BgA4cM59qcRE?gV9*mEVBODH6cXtP`UcW)Z`Rh=#3Je0iP{6~1VVvw9 zM7;be=HwQnQg)=}0(5rXVj`W+VjQWggZNlk5b1 zc`=DvYT)hq^+iM=njJ5|Ptl47e>(8=F<;NfD>H8 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/PadIcons/UnitTest.png b/data/resources/image/BitmapResources/PadIcons/UnitTest.png new file mode 100644 index 0000000000000000000000000000000000000000..522b9d60bbe3d3faee74e2150e4aa0d3c74be620 GIT binary patch literal 1148 zcmdT?J5Ll*6h5QN?CgZc@(8fIWI>4u|G>fuvqZK4j1dzP3TUlNptMjML$osT0|=do z6m&-IDX0t>GJSJfNa%ntA-o-mmwqI8e*rw)iVWMq2=oB z^kq`>FcK0>Z8Xnlbf`eLss$Pw32FPsv0N}Ti0-wGO;fE@$s7Ji^km=Q8pCdu)9g7&(e|zCd|>V!F0|cmCxCvcWKW literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ProjectBrowserIcons/CodeBehind.png b/data/resources/image/BitmapResources/ProjectBrowserIcons/CodeBehind.png new file mode 100644 index 0000000000000000000000000000000000000000..2b820fb35ce635bfe157773320f1ce3291239622 GIT binary patch literal 1148 zcmb7CO-NKx6#m{c&D7+87~<$agKZp;AqX@EB2#B*CRC!@v=M`-m_d$*!gw_Qh4+-`NI^q1hTew#R zh&S_3Fg2DFS&n0X2nZWDQ2=-p$-8u1e|x+{C7UmPNE-t16WzRA XXWTrK8QHV=HO9Max-a#xYvAf%d>{}o?)^43&TR0--l5WL} z12)0>CtkgH@@-Vd+RgQojC~)CkM0G*VR7*kW+s#R%!dq4{=mBr6|UXd_%Dfgx$`)T zvU=~~od@G2 zf58#xsm2;sC)o7%U{r>FMsiwW?SLRw7M27yuPXOM8ill%R$8ww+(8fi9C5vwc0u_qCZ+V%I?HVFftb zv)u;=8@5^XPJvUzzZ2_kN}HgThxe|}Z44efJ=98f^BeCs`W7YYj*b*|G}pv$w&Jj5 zh$oY)IDTgMk3}4yuC6zqst2*c!uhyaitWWd0EANl34xcjmVS4W4sY}0}w2A`ISFazyuD-#N-5lKH< zScGH+1VtBq@f$qS2d@}*ceI;`*N%`h1Df)i`7~OZB`jVvnLxydnFkRB;DL{jd1O80 zXP5DDF^!S2+!a$H9^&#!C3UH>r_lpSt3=#OfGe|e@hm><8 zYXykG^wJizrxx&b;-jTAlrlzNgZkg+9rr+1eVBY?cw~F}yB{AqJMtaq CUsm4$ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ProjectBrowserIcons/GhostFile.png b/data/resources/image/BitmapResources/ProjectBrowserIcons/GhostFile.png new file mode 100644 index 0000000000000000000000000000000000000000..75d5f6f6aa3970852c494a471745fb36e4562f98 GIT binary patch literal 1148 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#3Xi0)mFVw2H8TbV7HLlx#}ElgMgf-hzkw>K3^pCQ@&C<-Z~u|$*YCgnU%B)A z|Cet*{l9+u!GF9~f;8g-b5tV+0rS=!CPqIv z98jDN<2-xyo+txwx?tMUT|^lGicXlNDD;yTZ;3Jhrwb-8+D?=KgWLrm=Yjl4h(-xK YaydJXvA>Y)c>qq=p00i_>zopr035g=X#fBK literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ProjectBrowserIcons/GhostFolder.Closed.png b/data/resources/image/BitmapResources/ProjectBrowserIcons/GhostFolder.Closed.png new file mode 100644 index 0000000000000000000000000000000000000000..fa10b699bfa8abbe7ec28e09f7d21182285eb83b GIT binary patch literal 1148 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#3XiZLyWzo@eZdS2EYhAXjv*3~i~=n0e*;wv0-(5NN&o*R4{!ZPrh)EKB+6|d zP4C{k_>T@&E$sbIlp!FScWzwx|Iz)MaC-T?&i`*;J^v4)AKtzGfBuxF|95X)h0_bB zHvhkV`3%Sc28I<2y3s8sir-bA2QlE`{ToDSKv(qe?oF@(Oow)_1G|J&VoG-dM9Y1k zAISlyj~#@#VDFZdq*@ME-_=|V(FY1$a=?*;dm({1wX2F8{r@fX)gcDlzJ7@;19t7$ z1~!0MNs^~QSVWj%c7GLvpokzopr0GF@h0ssI2 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ProjectBrowserIcons/GhostFolder.Open.png b/data/resources/image/BitmapResources/ProjectBrowserIcons/GhostFolder.Open.png new file mode 100644 index 0000000000000000000000000000000000000000..5a4351964ff85419a9bccbeaa559e509179c8c55 GIT binary patch literal 1148 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#3XiZLySixyHxmN`i?pYUV~B(#qX5hM-#`_E04T0m(*OU-!(0E6X`s6liE{-c9c3w!?)WeCV-Y~byy=l_?_>-_)l?)Crkr!@V)d+REgzJB=($Y2Cmv7j59 zew<=m^?4`;uvpsrB1{9a)-IjEU}5XcaN_V*I4vk7&+zKSZ3ZiQKL$}z5eATJ4((dY zU}5jYz_55$8;Wg5_H9GqABOu_mU3&FO7ErDs=w_^iLo*-?hua1a`+t)As zzj5gpK}|3PYnLtffBX75gaQ36rT=eTJ^R1CGU5M~3n%{PC;9z9ed6H%AP>v`2lwsz zZ>p#If9JL>|K%h_{%_v6@xO#HA3`&sfTD}M*}PlVRYMPnfGqQL^>bP0l+XkKuwU@~ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ProjectBrowserIcons/MissingFile.png b/data/resources/image/BitmapResources/ProjectBrowserIcons/MissingFile.png new file mode 100644 index 0000000000000000000000000000000000000000..df09c1b03e32ec9963463567b2f95866f0b9b7ee GIT binary patch literal 1148 zcmah{O-NKx6#kyR(QzCnn@L7TVr;MDHrGy1jLXxB5I66Pdy!USB-sc+|Dm=XV&iy&(JKuNiZEtGa zpJ#Dd0Oa}V>zc{u^I^`Szk7ilBbRf&zU2at>)=B|XICL@W?%Fj@@9`(i|hs2#UWEE zAQ$`UYL6BcN%?X(NfGH5`qaw4kDO%byZ>KFe;$P=I#_byAxusMPrKK`T7DC%l7yVbn)G@M|Wd}lUzjWI0*Td@=0#)8;XWJgoWFcP!C*oUtu z+;~7p&3ik;p6CM2nLDSS8!~uAgFg(Uowf3(jd(l%BzkD;i7_Enw5RXuAr|B`|WWwbNiynw(Y7(fYf{g)?5&!iX z&MhQz;SCU5#JQ^(IDOfppHIzUr#FuGJ(bWXgtOobRFxLXCPzc#m>E}qNEEP1FeM!D z*sC%9gJeXgoMRp?`_wWEs!kyErA#(E+tB;u0VHXS*xXT;K&Bi(U!P46A~owAxlpJm zzeUc3zLd%CirW;jVt4%gta4A42xOcxRTH{7b($D^Muu!m49|o0N3%j#RHXym>wrf5 zUjY0-G-|mrZyeXmwKD-CrQJdreFL@QQ9q@uZvMvs{1bpb(bd!Si1ERi{KXn&jIVs& L#=2+w+OGcwzI<1- literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ProjectBrowserIcons/MissingProject.png b/data/resources/image/BitmapResources/ProjectBrowserIcons/MissingProject.png new file mode 100644 index 0000000000000000000000000000000000000000..61eb5c08005dd52f9af6e69048737928bcad3ca2 GIT binary patch literal 1148 zcmbtSKWJKE5WiPGVqX#=P(c$*vWSaP5F9!PnxHfe4I#wArL?P4r5$wbQpB}W2tq*D zEZKAxM;+p(qu?ME&ES7u-tX%7@%%FgJ-Bz@-F^4F-`)Fi*H@qH`zQNEWRG7)Z%lgx zeYupm($4uk#NVO=eMq7?MVEc znm7JWv{I>LOs7+t&1S4POW$hO<1#1E-{bKpfcbo`fVQ1wBiMSqPQow@YPDM2RiYv} znM@R@>@M@tN3GB_jgrYE!9mBxVzHC9+il9_a^^z!qHB-IFT@Owg`5P=a`bh}-I)n8c$ zLT+UQ09310#X!!Eix4ZozsM3`I2@7?f=37h0*XPW)8Tu)UT@=3$uXEgKA$IS9Xn_= z8Z;OTxWMUjGC(GiVT(t%E+P_%aMT1a0N`*qNY{1sv{6tlmp3byNX$T@rcx<++}Q^I UJdNM~4t+#HJa!d*y!iU-6&)DMBLDyZ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ProjectBrowserIcons/MissingSolution.png b/data/resources/image/BitmapResources/ProjectBrowserIcons/MissingSolution.png new file mode 100644 index 0000000000000000000000000000000000000000..45f08278d02f2ea1555652f839f7bc916a40a7a7 GIT binary patch literal 636 zcmaKqKS*0)6vcn<_1Q#CBx(m^5Jl`N(m>8UM-asi2GmH1p@0!j`XAAy3V6P-aD4!l(%HrVVr4Fs@R6QY^VHC|8<`5P{3BcV_}!dRmEMt zNy`lVbg(R7nr>HnR%pXRJ*#}7B#AyT+|{SoE-FO*lZ-aeCeWH2P@^H!baKpr)E}rx z&GM5n@cUasFT*9IsAeG2sA;9*BltH4%t0F@_5Sjd0Sa2NN|W9tip$ zh$0tFP@-}$k%Pu?Gr@yIJk*$m1d!6j(xvUT+u7Z5W{L!eoPEi>dGF2ly?JlmJnZgl z_ml)n0C>V3E$7+p<;zvX^q~~(V_Wg{j!QQIx1TQwBTuVX(0MC-uGKkL8t^sk>lo;~ z4aob$EvGM31thP$Mi^qdtbFUC^Rrjz_UP`OG&~;L1Yd2M07;F(QE6aebT57dULl*O z&~%E`lm(61Id*4`P!OX)lX>n?$ctnW(BdypQ5S%tBnp>9fw$ZTHv{WzxywxCxov=v zEqs~%A<7a7=I4_bXc~i=EyBq2Vtk*qaAP2jnd$TRNFEDdbj4)k&0=Ah8|{xzeWrvE zx-@fwlI&et-w&~`F|zV1@kY-!XU zQ84kOAIrKfs@SS5BPCoL?>(ECg1@$r1*UN@w1iMil-U%=nsuxzGYB}HTe-r{bJ z_3;VF8#UWxz9BM$0wuy`qo#o}3688E)xKuL7g-xB z1Nqkx^u;!*{PtDV5aSdHT$R0e`|=qiX^#Lk)Ma6pUt@BztUzMjl>6Pn=4}v@!mub3 zswQIc`)E7*?>~Ypi!V_i?a+#0K#duKXl^9<3)!8;5Rpg(i4ElPvK@KW=}wUedyG?E pgFEBGPbh^lx#O!SjP0Mm{~8?1RLqsD`8HlexV5w8&6(Z@e*h$1EusJb literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ProjectBrowserIcons/PropertyFolder.Closed.png b/data/resources/image/BitmapResources/ProjectBrowserIcons/PropertyFolder.Closed.png new file mode 100644 index 0000000000000000000000000000000000000000..1deadf6427700bd4e3d244c40207d1d3eb150602 GIT binary patch literal 1148 zcmd5*O=}Zj5Pml1!`9YrDQHcV5)rjGK}7HaHBGTwY4Ph)gJ63Sda$BLPrdcvNd*-> z1T8)3NhlstFCt!qh>9R$@sgl1-3^WGS2pX+#ND>(56~Chcix$Oo|$LnWoOTho$hQ; zwgc$YhBN2Ms=PPH>Fi(eC&;u-50Bpfw)F5;@bFPD1rs;5(V@i0j-Kw=rla}W=YVLR zmN|8?cZZ@zb(awTcqvprm0!$%Yt=EB9^6f_rPlZcpUA$h>%M84viV*rm3)p9IJJS$ z5>WmE*M%+1TIa8If^TfIm$FKfFC*H>S_~Y=5udH&HV5t4HcZRMgI5VmYYyh-=L8cC zn0*)CBb)Yc>+&89Osuy4dNvL&V!A#S3Q2(%OT~bOFu~INfK;y6>nPk$!t*@PTwvKv z^5eHVp?0fS(GA$7X8Gr`B#8t)rN%#FCiex6Mgs?~7IARuhmaY?+{guseJhbZ7) zzdqe7nO*An-M#H$^=o%ssQnRKAML=40$_Y6`Nx4ur6M`P7Fcq__eDDDrhH`bp=0~y z&g5V@j*IfIvbgdJtbnC^)ITqi27hGoB`n9phfi;?P3?lRbr<5XHu`yDf-ww3Y^Z<- zQ>)d&z8CKtmdPug4Xc@#hWuMdd{nE|)daaGIe99cEceFpxIzF5S^wqb**^Q^!ih6e OEKVC5%REnCnfU`u{t!O^ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ProjectBrowserIcons/PropertyFolder.Open.png b/data/resources/image/BitmapResources/ProjectBrowserIcons/PropertyFolder.Open.png new file mode 100644 index 0000000000000000000000000000000000000000..1dec2af1cb0b276f8eef64fbaabf76b3181e2ccb GIT binary patch literal 1148 zcmd5)O=}uK7=BmBZn{Y@vLIZ!%0@sJRL1bVQvM^6o;r=BFY{)N)Jp4yur zp7IAGNWp`!5kwHh@9)p)JTHt1<_9zb&(7{U@AEM;`{VrV!@l*}BBK4+N%TU^2f)q? z^?WmsU)1#S>g3}!(XI^`^z+xDDw^M7r;hn|&kp$fZ+CCM6NykP`YwL>$~X|6h3fdv z!%+T5`F!5p&fz%Dv8vr~*PnbVvMiU&veW4>TCJ9BHk&e+%SqLI^n|cg5K>AC1Oi-M zuh#^uRx1jHLX^#B-Q{vgkAbyBB7x*Q1PXv*7)*vhzu(`8=teyki$(qVAh1|0$m8*_ zK&e#X1)T)qNT7{O)1-7dEp=Lf7c>YVs8*|SV>ldU!N*qEsun}P>$)_ZPKmdG1YWO~ zy4@~WmPPaVoS_9k(6!lYM)i7~1yZS$u@UI?dIXnXFi6AUkhyS#ILIKv5hxT26p2K* zM`-nSyG?$-pBo{hiJCl_Oqh&qs%xfrJkB@afy;P2W;NTkNjIW~B)Ab^Fc?sy(V%Lz zx^V}Iw}1wp&qtX|hK2Az3VqUgh8dD3lgWqw0E?AMg`?vjN23ut!x6wYfMhra{4dXI W++BXk{rPH#kt*h#MSs8leDe?gv2`i{ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ProjectBrowserIcons/ReferenceFolder.Closed.png b/data/resources/image/BitmapResources/ProjectBrowserIcons/ReferenceFolder.Closed.png new file mode 100644 index 0000000000000000000000000000000000000000..1a016792f1b5c07c4be9e9483bf5092a76d61dbb GIT binary patch literal 1148 zcmd5(ziU%b7(LHE8yhV|3R>$RaZp^uK?etmjR`hGi;4~f!3gT2NWeJi;8ev~K`kga zs=>h_WDp#*h=YoiK#2`%@Tt7l{CK}#lIK0QCTRKx=m+0D_kMim-0z-y{mAs;;pkWt zz;Jppc}!r8xo%Lb+nV8N0YllznM=U>5vGDW_eMoAl1opeA|E!4Y+Sn|TbS7ds9V#? ziQ}VNl$g34h>m|8inu>sEEYfY&yh-{wu{yXwW4qnP>-S4A9S@e{z_x7s&}%rfH!cNArIPIBqOzIs?PnA3N?&nsUmOpg zzQl!7Qy3Un5wsm2-*pSO9z4eQ?#&Q>Ng?uj0t<^(yqJH3w;vZVG`I$S;K8?AFzPl; z%f%PXz~`z4Z)Z$SOAmSi9DmQQG2Fgi#@*SAxH`m%-R^9!ie8)%poY}vzct{9A0zDYoqo)SaA0WB)FO=T()ZPT~ z5A;+)0v?2oAc81u?saH0(&pi z^X*W6QPckQ$)_8lmo{L~kDnn`G{4199rNy$9q_#$nV~;KA{>u>NQ7P+hoZYw9shY4 z%KxZPD7d>h9LIU5YWKVKC*O)JE0v1ucDsyryDeL-mdxk#QZ*kvA?y@{l#&900GBtL z4FT)*n!@2Q<#IW9wOY|*U@e(UA~_F%0$>;hlOZq|47MV=QO~7PNxwb_ESF32cswjn zE|+;hCxJK;Xd}}!DU-=aomSul4MGU2*X!IEi9}fNu@$ze#nA7%F3n~$;w>P7*XyNT zuSb?;(PFV+XaNv(Z9bnlip3&Dqfzb= zTD{Zhkl*j;MhI!5CQqkRCS#lGnkkV;@J)E&GMP+R&9-gQji@0BZUh((htzB~saC6P z-9h3lpuy+!Q8t@pAv};mpR}G~hNP)f>ft}YVzpZ3=s3vnc+Adl1n>M@^(A-royx-sZKF|Ap&pF@YGfgM8 zX{Iy)T6=@-9GP{ZE9GR&4aP5#Np-WKwF6M=MW@j9%s>tmx9yHP#i+)(qoi{B&Kny* zXWMPZTMR}@NBen_@qb1=>h{LBQh0pHlS~Z-HWCLDj$YR_ z4uQZ{8bGO)LQRsx#MS9BM8tIz1T0`^crpP<5V+k*v>z&PJ~k1U_e+qYk71onR+{-8 zBjCTy3bEw%X|v9a=2|OgI>AN2>6=<{&A9RT!)p|2!pJYKL5rg<5nou&LUY?SY@jxQ zHa4yq7Xr)#E?>Wb&KnJ2CRp64O+o(qfre?hu9Sp+1zJ~WtJJHy95!HpI@V=1X`&S~Q6F6UP z5ec@p$-Yh;(6@t?Rp6jf26TVIueN)LfQP6nmr;xY+LM~V7<1y-5i9cKIWSrBu{QJ* z^Na^eq+ag6{ZJc@V%61`T0}+0E<_kVu-Jp*Dm_9uWtdY*KpBh}n+w4?)Q$X|dr}if zNpo^q0ah*tv*bn)t2otOiV9B%y{}$^0|RehB{hM9;vo?@@N5V|Gy*CjfS((OZ^{jh z?9+8x$YoN{Jo&#XPq+W0WUIvoOW^|4Qt}@7aDpVRRDzbP5S2ur*Xc3vV-e&_rnC-g zHf_3kq2^Zk;UZ+JrQih_rk!q#jP+xgsOdA+LYfi|^m~Fr&$q$Z2VEaWG)h`pQC*UU jAmhWp@GQc44rCTs9q*oVOtWVoDDv3rnrv@RwB7#$=yMZ7 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ProjectBrowserIcons/SolutionFolder.Closed.png b/data/resources/image/BitmapResources/ProjectBrowserIcons/SolutionFolder.Closed.png new file mode 100644 index 0000000000000000000000000000000000000000..287043697523ad8611dcac9bf7e540826a263995 GIT binary patch literal 636 zcmb_XyGjF55IwsrB(4SmX+#l;`U6(h$_BGVf`}l3g}sfSm6h1#7eo*wb-IB19o7*$ z3FP6*ntfl->?3}F-oxCv%sDf2Zs(xAUolrq02RAw9WqxX$_DR#urp*@xM-eS0*f^X z4R`m;ES9e9R-^Q~w62>qcWd(;&{u71_o%$4RrN_s#UGD`dUsIFINiWo@t)_ddRIf@ zLk-lULVZr;4~@nA#7Ll0h%+fqajh8%T7?1;Vj?60`0&spV~AQpOR0z=KP5e6*7WS7 zzjTmyJNSmfMmY$NKE`p?u)*5wDLGt^WzxR@Nz2}t|H3)U_gLA)ozxSQ<{k)rJ=1&g~?jHm& z9GMH9lYWF4aLIE*6PKj(T$#IY6&Tt}D7cgG%b@#OBpP<-yb})JQSI_l1W?B!p_%jk zfHI<%4MnExXxjTF;qnhbQ3lY=t-y2WECdV~KXf>DWXlA1U=&~8E(3}SPTxL=?gsKN zZb9`0@J}7+TdM-HCe*_a`X+?g2Fwpq+Jq|4gQ--i(BDZc7Mql@PmH(o5AofrV0=uj z&~pr^XRx-hf<5c6p-8d_27~Z;JeG!OnrJi{$Y!&M$K#fWt}P4EtwA`C1BR^ZoB~>p zWhZs0BxEufi)QUQrb5ZWsnALR8IJv_H1dYK@{b z^#HFP6_C&8vAB3&ao9wP{Ee*ZI*4|g0xi^PHET!oGzTltNaoyjRSN%3qyXRSjHp(t z7EdLC$y}Cw=i4UG+tt|t$@G;gQcg Q!V4@C3D1YpCoeAi1hw(aO#lD@ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ProjectBrowserIcons/SolutionFolder.Open.png b/data/resources/image/BitmapResources/ProjectBrowserIcons/SolutionFolder.Open.png new file mode 100644 index 0000000000000000000000000000000000000000..1b84065dafefdddc0ed01f4cbf1902d691f66c4d GIT binary patch literal 636 zcmb7BJxD@P7(MUxz@HQ>mryK>#&8L;#zM(ABw;Q=LsN55P+Q~>G_{6=LpV3}vlm2L zOARd+VMUe{m8HJ-yq)_@ms-4s?|$FC-#O>IaJOcXQ(kw#4Zy1>Vku^y45!BZupTWj zxt0=h%RskZhJx&FA1@s%`gGiJ=^0Snp0(jf4p4)7Y$ELpDL(bpBBPU~{3R<0=L@at z`9a*Y>UPeH3-L@miAS*~5NtC z2;WecrG3@LDI&l*A8BwvkUJPAwKY;}xWyf^>i`L5wnC`b#?rbhyRrwm-R$`2mR5 BmyZAd literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ProjectBrowserIcons/Toolbar.Refresh.png b/data/resources/image/BitmapResources/ProjectBrowserIcons/Toolbar.Refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..16957297e17f2c3946bd5df7cdc16cb1c9520cdb GIT binary patch literal 1148 zcmbtT&u>go6#m|LbY`mBvZ=A?hFVA${sc{{GfIi6#H_RnYz6Ho5u*vw4P99Xv7j}v zKw@FxPiRC05t*2U6&6Gr9W(Ej@4NTSBazs+$$9tQ^W!_`eD}QhL*t`e*<2PtS0O)q zn0t>Ty@B8U)o6-a=2X6P2I$-(ad7K)AC(#sHAHs|EvU|KY%`Q9r=_8$s2pHJ0*#`Rnad@W4 zf#()MJr?Q*0*!6b@x1)TUsuP{{{ zLdaVfItW7TF!zA>Fbb*Dos#H*ceOg^<`<9>g+gi@jibP*Q+3n#Gr#QuAgKI_YnB0E zdr1ZbHQgG%c+c?R$4%oj`@n+GjefR5owZzjBBm3nvi@9GL;232)X7>;uZs^exKvz= z{pc_DxeR~;P4AIog3py6qt_{LhzNFf&@f&pHV`n2#I|SgV-9QuD!;VbQKQ!M5sn`uuuKbelknkZ{m0 zYi2QHg7v8^?Mlv*`<@sARi#L8SCDXE*d+&7k2Y|=O4eCTY3v39PGfGs%U0{luVpBVj1NB=nwvJ5fk)SixK4m9YK47mX;O}$C4<2Hk-xJ(*d;& zt>ocWY}=7wEC+(e)r*efNXxca(!IC+kg%k1G%2iEseGxXgYxtEm{j0ZN@X$`Wgvv` z#q(fW7W*J9NRRfyAZxPk>h(M5zR`(Kqa%{jP|v7H-pWG?xkNPf;T;at)DYMta1PQn zakpy#(^FGSG&(VfP!HaY{2;LE1CiMRdd}sGRS6ecHrjp$o=%psA+p{3I}lYjR0D%m zU%5HhvVAx_iO#-pbhnovQQ;C$m0|!yq*ka0mgUa{M;299cX8ol6*}%uV&cmj5oko9 zK`au4GRQ3wJb69C@XEw${5EXdd+>@%b8)fnJKppZ`lW~*-(dpv3#tsm$g{Jpv5c*e zcX0mrPGsxj_%%C&o4qe6bwQ$Da&z!p2h-nv{+&Pqh6olkKdo!&_e(Da zb9;wq(h}y literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ProjectBrowserIcons/WebReference.png b/data/resources/image/BitmapResources/ProjectBrowserIcons/WebReference.png new file mode 100644 index 0000000000000000000000000000000000000000..e32ddd031dbe2a3433b121ce6a4864fed4b1c12b GIT binary patch literal 1148 zcmb7@ZERCj7{`D2_R{sXDeNWSwvKhYNqBKE*dme$0vog#E6#mcfCwRC_yCMB{Ne`} zj2|Y(#CVkA0fXe+kgAM5b@iQlww?gBVzni|^P573+N9g8hzW8`w7T@yzMxjk5(Ubb$3QiBVqFAlW zWFeV!jQzfY{29JX->?%~(c37Y--xXb=ESyq)0yj?)PAi?bc8>}Rc@oyu^NjUBNi^> z#tl1}i8|gW@$*Ui7t`)uiJt(uo9Z zfkD!WZY zjZov=W4LfD>q6_1uTb=iU{=XKQa$~Qz6=AdE(Ry9R0Q5Mx;(|V7d~UCI7rA5rMRFR z|G5q+-Sm$Oa+xVl6yTWKLf$n-iRpkk$v?QUFmHSR(T*5kq{S~PC4AL13C$Fj0%wPL2a@GZN+qOm}sYm$!_lu}; z8Q16nkgG^5tI4Ev)-I9R<@4ab(=5*a@VPYIg=gga`0I7i(|wVd@e0ukM{?A!>9`t|b>9f#&d%Y(R7+Pm?ymh|X JpEvG0`UKS(S9bsa literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ProjectBrowserIcons/WebReferenceFolder.Closed.png b/data/resources/image/BitmapResources/ProjectBrowserIcons/WebReferenceFolder.Closed.png new file mode 100644 index 0000000000000000000000000000000000000000..05dc58f54e4cf00d134832f9d56e1ef96ec7877d GIT binary patch literal 1148 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 CM=KHl literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ProjectBrowserIcons/work/PropertyFolder.xcf b/data/resources/image/BitmapResources/ProjectBrowserIcons/work/PropertyFolder.xcf new file mode 100644 index 0000000000000000000000000000000000000000..b738586c51f0a24f7543ff00453e1b43405f712d GIT binary patch literal 2143 zcmeHIUuauZ7(e$eO|#kBs#8W@%+QApY1co9;EP=$p!lE*%om-|W;fR~ZBmnzWl^cJ zf>26vI8vXAbR^NzW^}Z*Ynzx5mN>SATq-wUT`Eq!%i?Wm1Ev>Quiuy4J2MvXX+HVE zFX#JnzH@&0&Uembt%E}bkJ)0dSO*va(yRdWCjb-$KTiR4J)aSR067fM0Ca$76dmV1 z4fCIev6+QsTdjk=EYr$5t!KbRAWrF8T<&uNjKOMmGfo#{c3T~G*Rew_7S`+-a5xPu z<)PKd_VpUt+uF-gL+MaL#~`(@MyeV&{Ii0o9@kK>*=lDE9qL}-JXg!9_*#eURyUA0 zzsDeJkHcbdG4A^WG5cXx#q(e))xXyr zls=y0Q=?~7U`xgAy8>AK-u{Gl4#J{d&-4AKyr;mF{wN2Hpc@nHoKzGAA!qc`-n=nt z@)vg?^GNfNw&O1vqdorO-5gKxf2PujM3jn_y8IW%y{xIHOWOtPBET+EW*0$r5$zHc zx))ed*lleIn^VHXl5D!TW1>v)jrH`@R2u9GyKLGQ^d&tZ2#Y3DHtQP;j)7TWm$i*$ zgSI3Sl8Rfx?VK%02YCx?k>o^Ifwob|L`mvf1_Yjbt)L#Y&w4--L%bd7@L> z`LCq|a=(dKx=d;(LuKN8IwgqJrOQisEL|ogW->gVFGz*IOUD&T5?3zWmXOPF5-t78 z#gx)bPD}>kH@R4)bg*oKO3<^Lg!r%{@i9^R`0zu0{9Ffw zYj!aDA9V+-9SvL6;jKVX`9iGj*@{c`)g7-)(5xOLd#fAU+hXA=+>G6o-$A?c{nC}t zOyCk+7wMb4SjhjtX}Enf^9#Qe^3iByb$MYvG!yh+y7JSVRQT2=y;;m{WY_1vzPxce zoXm0*cP*8StxSJRX8D_Iw>U0+J-)Uu`~EEXDzkE(&)m57?egW|_&bF76DvQazKdO* zpP9bkm?UI+IXp^@?w$W+4!t+w_fjlsl5Xn&E$X5|4pTv?%#y^ z%1zLc2AM9SP2MMRBmOkV6lnyg5vA|2_wcoCc(wd>WSztIGuU#E`h~|mYQ6C47Y4$* b7jO~?azw!W(7l2V5XGl^1C0^*2i5osE*A$m literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ProjectBrowserIcons/work/ReferenceFolder.xcf b/data/resources/image/BitmapResources/ProjectBrowserIcons/work/ReferenceFolder.xcf new file mode 100644 index 0000000000000000000000000000000000000000..0b4cc14693552855bdd165bb8deb9a45594fa3d6 GIT binary patch literal 2155 zcmeHIOH30{6n(8NR0YNVN>if?jDgUN#JJEHji?(xi7wCul<7DLZLuv0sMs1CjS2CC zKVo8}HGq&xZEXcwKu|#qV5p)P0Y$3_)(R?Bni$4=r!xd&U15Bs%WJ)TdR{Na!rzs&diXfB&To@ zB~kFDB``EI%21&$|8ast^Yl3xN=8G=6~bIV=0_uWE-6>T7(l#o7lo?xv?`UJGK>qv z(ce=M=G&pT9(;&S!cx+N#2ynEXr}|F0dP%ct_6vd>Si5npyX>aDGj$xVyIxm0B|Q* zfQ-*^)MP$~hD@1|8Nz96bJo4G%rm*bW=*VTZQh(5K<2_uZRH59ZiH&(r)`zqQD`XS2nWap`^F zRnNn;l`EGmD?3-PrSx5Y@56g74K7>R`BQt>SYNkZEw`L2Dm0r4_U0`wIddeR*}iVM zLaO)$femh(ZZZtZ{+qTeoi5 z@TUc~-tsyu5rG43K_|}$ z=!KeeX@n9u>551PiFY!%xqE0R7^sEke(=17Y@qX+v#PS}BD`q0dN3FmeBzV%#_)E~ z^)fKn*x2B$aXG3g%S$gh`v%(Ud!LD)eSF&8^}tbK@AlW(^TuIw4TtOCB#}&Zx)$H4<0ar zv3J6hA4-Z(9Nw3s+_rI5YKj7g1UQ2KMgNVJo<4pOVk0LZhQzUA4$15oVdL=<$BIZi zK&bG(L+_zijR-g&vW-YU@SH3iZ;bE;6Y&+m CCJgid literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ProjectBrowserIcons/work/SolutionFolder.xcf b/data/resources/image/BitmapResources/ProjectBrowserIcons/work/SolutionFolder.xcf new file mode 100644 index 0000000000000000000000000000000000000000..5fd49ef8dfdf5c2aeb2abd632a66a4fe389907a9 GIT binary patch literal 1650 zcmcJPUr1AN6vxm0re^eS^$=7y^uY)%p&;<7Kq#t5si#2a-R**Hu}#nj?T-qEWv-g# z-&#vU#3cG-k=Z{}%9^Fu5;w(c>Lz=sh=RJebGCbH&Gl9X&VJ{7&+pIK@AKO@{@@{| z$Y^3rd;tq+OJrB!xD;JQ!E*G3?PmbU(G2KX^fl-!<(THJ!1<{-F5z(7bpBv2$EI^u zJ|88(x+)>fW-l&a8QyGXtv1$Z=PhR2`lK`yXS5VptV~*XNVjr%xy+`FO<{`@WXh%W zxHK=$Ql-xPJ)osUwnMo_-pnzX%2_BD#}j2Oz0l0tv3cVGmbxyom`pa-{;NS+Jzt6_ ze=eo_kWFci=6Oj~6Ex#$PI}yIRJ#%w` z85i#R@k#(AztB{7zUEXV9`@~$KQJ>rCTInb(m><;nd$cSw$>}n^-f21Rb{=;|FqRN zp`Q3O?j3#G-ryXaymog~Pzk+nJpB(_4uC`GZSf5YL!Rf4@7>^?P(A4Gc{e;b(EH$4 z$LU=fsOolmU%%>m*wxv3j^hC;FW+>i9JAFY%SwvvyYZeYjvuz<@7m-dNuER)AgC3G4b=Wf`ajUdQ55 zI{`W)9s%VAU|Hv&NoY!+SktvcBt_HRrknwB92tmSNiTf?nS)o-;d69pT%Ufk0D^H8 iPW-|FF+3m!2*eP97$gwG1Y)2-3>ApNvKC75P5%Uk6WPN6 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ProjectBrowserIcons/work/WebReferenceFolder.xcf b/data/resources/image/BitmapResources/ProjectBrowserIcons/work/WebReferenceFolder.xcf new file mode 100644 index 0000000000000000000000000000000000000000..4be79d6014519bd1edb52fc00e11d17cb78a8fde GIT binary patch literal 3861 zcmeHJdrVVj6hD0mSTi@-mMoZ6-7?(7sc{jbFsG5t$Ba&@8&MR>ZE4gNOL3qEoJtK0 z#8y@vC3_=c@ya|99DH2(V9F6=6FH_vh82<*g z1GPA8jBZ(qmWk0Cb!lh<^ozoxGfg>58Kq8dVvL!L+N3k+Glxe+YqV;^QiD+$?Qdd? z+SC-~sF9=m6hauyyM|-e)DT?-zw)02>YAOIk)qb=waU>#E;QzZGV->VEWOTz#jDd9 zsyf@C(PT2FM+H*v$4#82Z&#WRoriwP2CMco`cA50E2xna1fKU{?gl0|Mk1P^Pg2>W2d5AQIMI>DT-p z@eE!T>cv>`qP{kdy;)kLlVtWrKjgJ~TNrQ@*{d3=_vGFU} zka@OTyVkIQ&$HQc@796BvozWf%fX+|AGTCDNU>@vx7jUbODQSiM-;8IRIS!#qk?(r z3)Xz8XR1)aJf~Ksr*00NXJhTwjE#IAbH&*cr6>GDW1a+KO?&BFE>Ba^!b_gHW4Jt? z+Ii_Ui^g(!?)+|ki#cHA@^q|PSn0$(=e$bn>D#w`o zX%ha-AB#2mj3o;a6G>i}tX3~hoHdi=Bvs-kv!_jt_s7hi{o#~Jaei67U{1osiSJKF zdvBIbl`t-D%B=ranmj0k`%$qfRcsW^Rg|jO;V52C^AM$Sw6bh#J<1Pai(6R<+YcV9 z9IP~;^*coDLoO<6c|9v)ef7n-7_?e+K+pm5(qjh^8gbaik0FW0os^cQ;>gU2Z)4OA6QL=9p$m0L*Jw8q(%ZoABAuO zB-D11Q4)?Ks6Ha0UfeDb_=58jZ;N=7G#}U{c04HUH#$3Sd#bT`Y4yFz?c2)BwrsK4 z%saXz-TB`3o1Ui2=S~~9cXxJn-M-m!{mOY~ZMm_mo6}qu>T3^K(rn#b-dinh)as5p zid5E4Z`%#GtFfW(=%HQfrY_pk-_HGhUAYYyfZjb7Wurue?5ad+~pkHW%yFF(Yr#prU@&GkNod;tuafV zMzHv=k9^7z3d6#42HgrL1tAG_B8C-BoJp`Lyre6^=Rp+v+^n4K0UpV2R)!n7T2g)Y wZ!`nJc@3<41ZW6CGz38!f-nt1poSn+LlCSX2-gq*?AM>yZG5)#org&O3#zM`jQ{`u literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/ResAsm.exe b/data/resources/image/BitmapResources/ResAsm.exe new file mode 100644 index 0000000000000000000000000000000000000000..71f8a419d47dad82b6d64650247e61c20995145c GIT binary patch literal 10752 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

J~A?eBUTQcpBwq&dZ^91C6VR;ZrWU3ailmxUYA zK5pd-G+3N6&W@Z!TiUXj#>x{gg{2~>o(N=0k#oj?*Cq|wR8&NW2w}95NIkhyAu}W1 zLJ2fz1U7np87&t}xq^`%Gpt-DpSw%;tE8@MCp+DfDsQ|2m(Mhy<{AMwh1!obrC1VEU>og%FqawW<5(-p@vl!nL*u|f( zLoH5EAy~okOneu+Z3Es>!FJE_;?TwrTmzMxMgQc+p*eT07y$$r7xMv#9%p-)}EbJ?v zX?4tJt<|gLF}9L)SRrtKW_*^Yh3~q`HBvv>Qpi6aL^8mqFRh`u2R-+-iQ# z1t*4%uaIt^y88U;(S^F5E!F~y#;}S}r0M}0pu_Oi5d7B<>#*HE#JXzfi*fcn9a>Di za(_ANb|Pj@bPm8S_PF?L?or+*)k(P2F*+vb_=6B9HP@9Hywm9r#x<%ac(2qBPAdx| z4&;=wFo#2wqr1@KL^P3Pp8-AzSuDkLH-d#!=UQtZshzDczb&}xa_!*_>;#J|Qc2`< z{V)WtPIKOxTydF)lb>r@27MZs-%O(zTeuOpE-%~&I)Yfe<#g)6=D^=GV$l^-P`)JC5t-5CSZ&IeW6%`CJG+8U zUrKY#r<3B>c@RJi=&GWs7>xx$3 zM1J5g2=K+4nwrAT?m7M&+K-~!p;r}_vcTC`01D%G2Z-Wx_k|!Th87xPkgmjPU8!Q{OE;aK3Cq8;0gOgUK6a1 zvCWX}W6NVrY;{u;+lgx(tApUVCvZOnEY`%L;&T^3ZfmY>Lmu=f2Y%fS4vMTZNlo5)26ipc9e<3gK!~ zXv3t%uW`0+xvz`*NxbRlcm>qWlX^y<%HV}LgV#yI-z4MStBLM?BC+tT8=~;<@h+C= zT;J$It2_8&_;gn_<#?}Y^`AB5ONxB7F^u$7J})enZyCA_HPe)G>mAvn5=$Cx_N3X*;Ivoe>$8&KEb!!AisNacBSbP+F{fu3&$Vl{bdjj1+HOyT~9n~9HacGu%)DW6;BxG zS^wXvEO!jGji2@WHnvpKv%V zy@h8H@0Ea0NKRcfVKrA;9d+4xU!6cJCnl^zt>~EnwTK790ko`>FCF(md~a1Mw)crf zwj)<{7GU0wa)MyKF8pO-Uf#lU5|8sK$2l!^&^G!6dYb`nqE6y?6WSWg=V&-5xgzY% zS6S`Y;XOwTI_s__DQg`wk_gwqRi(jKEql#p>ZS}-Y&6aM7)ueD6=hI zoY^wRlUK6I@&7^0HxZq(oNgEUzfb(NkY};iKFnwPL + + + + + + + + + + + + diff --git a/data/resources/image/BitmapResources/SubversionIcons/StatusImages.bmp b/data/resources/image/BitmapResources/SubversionIcons/StatusImages.bmp new file mode 100644 index 0000000000000000000000000000000000000000..35bfa567134902647d99d8fd2e034fff28d1896d GIT binary patch literal 1014 zcmd6lJx;_h5QWW86A4QkVdaV@m!Rh^RMa_w+bMjKG-*LGTDi02x7rJ^C2e@)giTlp zYU~})WISJHUbK%-pEsti7oHEaXWBjO%G~lard#ec*1X!hI%D1#b)8{E<7O}n1HERZ z`ZLp{5$#<=+GOzC+S~0-7J+ju5|cT=ZSOWQA;(v)Y!2j73!;BA@rTo?a$>Vh zI|V$qa<4#X$)%O6QhL*fgu`*=GGD!NksPO1$9{CEQu@BPBK8M&edaj)hMRG6ltK<7 zX3I4e7_8s>GLCi}BOO+!4M8c?C!+dlg8G`q7H;o7;()>-W8Au0=g=d24u1Uj=7LmC xvR6DJ77AQlEvtW@8Xe|m_CrQ7cL)gTR$#&By314M#8|%@=*ox-cZvMd=P!S|sfz#r literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/SubversionIcons/Svn.ApplyPatch.png b/data/resources/image/BitmapResources/SubversionIcons/Svn.ApplyPatch.png new file mode 100644 index 0000000000000000000000000000000000000000..1b79231f97ce133dabc573a3f60e0a447f09e8d0 GIT binary patch literal 1166 zcmbW0Ur19?9LK-MKbuZBw=&ahCX_`eB)TGBjoDn9iuvM;R76npAlREEWF!T>R7gcH z(L+8c5;1xRgrGkx+w395$^vb7HcK|$f44hN=bW``)2BL@bI#>=&*%I5{m$=qZ+5oZ zv>KxZfY#n(?P9y0&jJ-&t3vb)+f-*;ZB|hJJenN6%PfU`Ej|5!?lqreq*iBQM)hU; z$!7ITk-12hKlRDf0pywN)~4?A3Zl;oBnhRIo%;WgvlV^u#zQBbySAwg-f`3OH$21SxGnh_C2*g4^Ig5A#SZCfj z91ck6updEvHSlT%iuYm-MO>!Xp-wYGprge?7UtbT#4AaN2PGV;Z^Z0EE|&ZRdyT;3 z@plLW!Xkp=#56_*ESo8Cvg^cQ;(F@#!C{iFBAlad}@nz|yJ~!^3@?$r_3PFPovF0aKp~p;!Bb=lop4#0V3k zuM^2RZkERb2ap=jEHmi-3&-8lyw&^qzdZ3ZbYi;w=G45Mlq zW4DfyJZ_{$^A#eZBv2b*YZ^TkUXvp2U} JCyt#S`VIZ=VDA6` literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/SubversionIcons/Svn.Checkout.png b/data/resources/image/BitmapResources/SubversionIcons/Svn.Checkout.png new file mode 100644 index 0000000000000000000000000000000000000000..8856bd906af8f8b0a303b4cdfa8042d5ae177c19 GIT binary patch literal 1166 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DinK$vl=HlH+5kiEpy*OmPWw+uJ0v7Y~3Q3eJUX-^l&5D7^}0haf_8UO$P4^%}y zU?N{DL?^`tu;6onW-TLz|E@RxXGGS6GYmkQx#SrbKo|tRJ%q5|9AaQVHUw?}NCQj) z#ExzDfanC0i)(j)*)Vyy1dxH@1(0UfW)-lS7Yuh8cGuoPu@PA_h>c=^@f^ngB6biZ z+js9^KzA;>W)L4G7C`%*~LA!AWJ-5{an^LB{Ts5MU8Ad literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/SubversionIcons/Svn.Commit.png b/data/resources/image/BitmapResources/SubversionIcons/Svn.Commit.png new file mode 100644 index 0000000000000000000000000000000000000000..97efae337c263d4d59735f9c6a89ed1fb92f0cb1 GIT binary patch literal 1166 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DinK$vl=HlH+5kiEpy*OmPWw+uJ0wZfE8bp{3&X-^l&5D7^}0haf_8UO$P4^%}y zU?N{DL?^`tuwZk6W-TLLe_e0>&j{0p)c}|R<2j7~x#S^Azdb~yVFuvz0>~90&4#Wj zV6`xVU>adGRu_OYyEa2Kp5J{3rWPxWVE{;TY_kVg@%G(27~UL0=)>j;6a!$+25EW0 za0jdz79JomkUWS+1{h%gvt@Vf9R_60AWi6eutA`d2*VmR4F7F*G5iP7Ffl?jh6`ZP zh3rgxY?LqnDFk`pYziWw;L{A2Lw6!6&Ijoo_}s`R+n>IvzFrpO9Zy$3mvv4FO#oMO Bto;B0 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/SubversionIcons/Svn.CreatePatch.png b/data/resources/image/BitmapResources/SubversionIcons/Svn.CreatePatch.png new file mode 100644 index 0000000000000000000000000000000000000000..661bf669682c1afe80b6968406703337f1bb1d00 GIT binary patch literal 1166 zcmbW0Ur19?9LK+R-mc9xn;GeJLkNj5Fmf|AiZJG%DM?g<5{89DP=t|LJ@g_$^paqI z=%Jz)iy(RmD#(ZE&x1OVSW=dVyR$!9y7^~!_uk!|&N=4IA=4&>E8(T8- zX)wLrzqc|yXmi=@MYV-z-veU4-&b)k*C{x}8C@WR(5(L-mcP-u&_&WZaCwF5_JQL> z9IsyyPZ40S)$PEfCk@L*b_Gt7q2d`>oK^_K)hQxo2}`gB197O_Sk{wSe92SL=a~l4 z3|KS*Rfz*rDoD|DfhBQ)}bVzgL6QsTK>fI&<|3@$*g=oNSg?nyg~ z(|#oA*#<~B25B^ow(@3p(>H;<`2jtu@EqmbXK21T+q7;W;G33$X8Y zqZ?20QTz(B(FSz9L*gg3Pe8EoGPjtZl)P zd7Q^1ROv3nL=D+#cBqjUoDmxuj53_F^q_z16v`eRHe1QNz~GRF+D)h&WcHo(?Yk4} z@L}u|4#>qECTr3l%p2T6>1ZzAw)O}j+kMWNfrQ0QFnAUUz9E93AfsJgJb4KgVo3;b z1A(~_E@VC=k9>+~u2uZvSnW|^0VP9OP)8ydES%&gFTn^YP*3;&c}QG}ehTGQqPrx- zsLbX;D_(i7^Q7|o%_Oik3`;Zt@}0iZ-!SLczj66oA8H~y2TssXYJA7dCL&$+u85l@ aEV=mC_1T!e>rP21$T)vxz3=g!md;#h$fh6x2D{|?gfx$E_nt95jzNmu{CQk zT>|z3NW=B!|BN7$LG0LOM8GYs-2t}nYzokJSD4)h8f*ZJ3)1Wgb><6(I}E#lHljNl zrWQuS4KSX=_#fnC5ZJzZ2g92~3=A8A@lOcAqY>m!Lsu1s^SkeWHN(6_$N;ztKng*c zu>(Yyz~paDnZlr!^PdrJz_*7C3?Nq^1CRnxYGh!Tf-DSXgXBOAa5{iR8?q{pfy8(N l9tI!{$QWc8$Y5kcv9XO#WJZ4U<#-R0^K|udS?83{1OT)bi0uFX literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/SubversionIcons/Svn.Import.png b/data/resources/image/BitmapResources/SubversionIcons/Svn.Import.png new file mode 100644 index 0000000000000000000000000000000000000000..2ec889251d260be78df7787f2cb1588f41bba91a GIT binary patch literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DinK$vl=HlH+5kiEpy*OmPWw+uIr;*qy=Wf&M3Sv*}FLnJOQ4KmC-5$XlBLE=NAjr?&+=-bj>q7vDJX1;aYYK+g-^w-yL)v*0m<;@4I(j%H%`J z6q}AI?yoQHF!8op{%cn->j@z)hCQ_$vvZ?=|I@m!$HuzBHPmUzn}Yfb^FNGtbrXMh z7f%-JuN2UHXtA+RKdAZet1m11Tp!OdV|WwrV8f=mGtAjBuK!gJ{G1jddd_G4?^3xM ztzgM*g38`{_A}iq7FsaKpDl1YxmDo8JvoL3m0iIfYB?tzS$tge?#urSbqsInwq3N^ S$l(qQA_h-aKbLh*2~7Y)Z1jS5cVNNLQWAuAQa$g9)Kb}=pu4OB7|t@=+i`knu3msKH?d84Wuimkaz$d zfCoS*%s2LDkGwXK(W1`N^~0od-M4x!u{(^o6Wv^6qWlkl$bL z{<y2pY}z$^>%iAxb%Kt8GK^;|e7Kh8 zDH&rA41fcDRhCXnGrq-!0&4V`o){~shV5#3eFRMulIgG;f$P4&;)$yYs!F;7li`n6}w>LQ7hD+DD|BGu@)%^0KdKd&hV4_!!$k#9vH_&UTZK(0$a3a zg0CPamS3i}>K4?GNM5RW!ASkwIOr<6@fE0``e5ibm#G^3-*2ENk%N!qFkZNcw5wV` zz){D`Nm;C_N-~4>Sc}*`pCydVRmo#1DN)%_DJNuoC;v*L*^xAZf1q-A3>))9P4+U_ zP^{PL2JG{M0~{|4ia{ZFHmuqZJb^`j`Zuu9_3DI&E%Rk9HbShcUX%ByjpQOggEx=by$>$4dgA<8*2Tqmv`+54E=(MoDJU)$C2Bp^*(L3gc`Vu kL$3MpmX$V=!L_val)sOnzf7={=44%pAlIP&M*LJ=8|V%0AUdL_7K8;bBKWf*$}t^APq1H z5IeTn1ELd1F0S1HX2ay+5bP0l+XkK?0;=o literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/CSharp/SmallFile.png b/data/resources/image/BitmapResources/backendicons/CSharp/SmallFile.png new file mode 100644 index 0000000000000000000000000000000000000000..cfb4a49c69c08f808582ddab67a5903d25c8a940 GIT binary patch literal 1148 zcmbtTziU%b6#gQ?*t8F76G~f$C@P{ZD(ED(X%kF}4bq6!L9poH(4lCdgCgSA$w7sp zPAzI3(n1EisW><|)WwS6U(ixXW6ew2ckjENb6#HvzF-FrIrrq=bH4AMANNgN%$>KQ zJy8HwHj^4A+s?XYH?4^cGfJjqJahF9&>CY6;n|BWI*d$YhtiR+ZQZd*TgCd60mA#T zspO@u?ofNUlRSL{ zt_xCw1Ft*qW8^1XW3ce{16dcgZP!V5`9R-lO}7&;@p3OTfmjZ|iBT3tz`QRM7cn(m z5N8ttms0hBhvulAB+J8VbOu~VCuPqIlbjj6X_^pdGy*yJ_Vs5<=5CJK(DhNSN)?EfDFeG9gQvGo`1oKG*~0`Q=UU`u?g#xSgI3yiklim6@fiZ&0y`ehED~gA inVl=3DFHvxo#9@@lLv{T0}}@=-euFd)O`Q-hkpQ9TQu+h literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/CSharp/SmallProject.png b/data/resources/image/BitmapResources/backendicons/CSharp/SmallProject.png new file mode 100644 index 0000000000000000000000000000000000000000..1f8df49f2fd89b17984883d64e634830b05daea4 GIT binary patch literal 1148 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 Vww-QqHP|N#BDO|_T@8_)_zxspY_R|U literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/CSharp/file/FullFile.png b/data/resources/image/BitmapResources/backendicons/CSharp/file/FullFile.png new file mode 100644 index 0000000000000000000000000000000000000000..f0b3d7681317d3eaccccc6a3c15519f3fee6e45a GIT binary patch literal 1474 zcmWlZc~DbV6vpq%@(3hAFr5+*%@Y)`PzX>FToNG2q5}eDG*m4wphVCrf=nS|UPwq3 zMZt|tW?1Udsv{_lqJt(OCTma~-xq?7VEt_ak#Nlz_09-j*Xi7XW=SYu9 ziUUBh1OS-=fEk?7e*nni0`M;iz=|pWoOd5jy&DApH6%7NJURbGnivYMuLx6ZbV<+FFazS)^Ae($TQ z4idl3qlAHg26~}InHAc#e`hID7pRztE~`sJGlnxzN?Jxd5B7B6!NChfa6DuSJMe7b zU<58W6#cTQXfWi|qSdP{e4Y)UFj;=K<#*e2mD)+ZH*6Dd(t>ly5nnjpDI!KWizRQc zbTr>Py;rlfLOJLJpyHQM!mOr2!CY59vh{mg#SFL8tnAjgjoVix?^27=R+I9W$oaH` zZd2T=MG!NLovH75y&FF=D%A3vPW$)j_lTVo^=->^l^h1+bipZY7UN5*IDh|pCb_PZ zsw-<6E6Oz32n)sPrO(1YuD_Go!aFuW%}wFxU*;7m{Oh2L??nNUs6iC-<{<&8KPSRxS(uA7CpWOr)ZK4X94Il^ z4;*o9enw`72^ScrhEh>C!MrWg76ewAG}EQ~dk{7IxTo)LpB9Dpfmph6FSL#owkIzr zqjkDxu$SRKmDbN7vUmciF-uzcuRoA86peakE-SKf_cnAugnmewQX1MlMDXGBH`r3M ze5nv@>lQgaJ{Aeyomyud%v?{nFfLm;B?P;zNREyrK z{2At}8yGF?Z!cj}*VV+iSe?8NK_r^kFF|NGK2Ca`H-O&hYMxz67F_2$Dyq*SYvp9+ zyj6DSs1}RV7CRCkMRiYGCcHwRH%BG(G7=r#E|b?n_l@di5-lrqm5+N5?%_ryQVX*G z#G}NLeH^8tXQmHi-FkG(u*u}7n+%F}so0X=Z=C4o%M-chwI>aHXpYbgHnOahxjyw} z8w0tNm*e0$DW;@*{yw=v)rXyNpTV*AM8FIS`A8~nsEinDgqOQUIhhW)QoELT@Q4le zBIAVVca)h^G{NmEf8_to#i2Zy#NI5eR|GOU+?8* z=b0SQ2}O_TX8dKai~GbSmlap%WAtD@~FPkE(47vMF-_HM8DpRu-SXN4-^G? zB(dhx0S##z1znKVuZsE*$At2QB{=8DXuVGf@qmluFKv~c!UAp((^gh7G^=ds77+%9 zO`El&-8lZ$Ud7Q|Hw+D7GM;Q?1TVg@j3ld0VP6cHV-4|&Dm#{d9jzhgN1*cm0b(d`s{jB1 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/CSharp/file/NewClass.png b/data/resources/image/BitmapResources/backendicons/CSharp/file/NewClass.png new file mode 100644 index 0000000000000000000000000000000000000000..0ac892a8b2d6c07016f78f7f4725afaca843a548 GIT binary patch literal 1792 zcmW-ic~n!!9>*sn+yrvL2viaj2|^VMViwBc0|G$>7Z#PL)Oz3sgh*{A$`b(tH!Qh; zpnzJ5$^lW!v&AKfZJ`x%At16UM_Q%$goqHeB8#X%mit2g_|5m6ncw_oerLX)GeuDm zp;nd-mH+^&EnypXnv}g5G{`ijW@gTs#6lAGRVn~<+r=P(3zbaMBt;w?9t^k2Wn*x3`d{&Sf)J2- zF~=teG;mxXF{)4)MvZ#2dX&&v*c0;xC-VEa{NIMr?2rM%*pByg_D;?ICBpOrQJWz% zz?L!l9VH*;hly`i5m9Z~`UDY@IM>Pcjw{h5&)QzP!k$41z5HvV?o&#`Lj7bq^U(hq zJ0xPQ2X>w>esPo%1h_SHsX_jY--E1gOW4)Cy!p`5>Ubn+Gzp=^Cq)E8tE~ee@0B7b zf@A?%2UVj+^J<7YpFhz*Mf}T7LXuhqp&8bI>qn(jCgngN$p2_=ifdZZ#BoOrRVs3o#pK z#_iex{a}l-vX7+lq`Iz$Q+WkNn%*T4MvZw(qOq@A&*>)DKazx9rc)Obnn1Gp%i)Xg z-iv>*V0a~8s%x&&{7t1pY1!OD7gIe4$2UnmlIe(K zY;D6SjZRw%*X>T^b0lWn6r`^>>$f7&OhGC9%P)`dAB|3@+c^${A~t>>3uq)!7}%>@ z)dKvS;8YfU93}7d^pMJ&14bRaHooINqjBPqgsdK=D1qnih`*@*@aZ_VX4CIXrm6{< z>y}CIVHJ9NgUKe!4fN=zD>g_OJzZfBGf6@;`+hXt?==WQY8JOutf7-i_*Gt z6w@6CF#V;Ut}Ir;_N8ByJc5c7ebF#C?gisv4-JV3nKixHa1&wXAJy9-dzN=8|9 z5{H{Ca?47&kBIlQ;_GVR(qqe#k~l-sa{|u(W=`d3WBZhWh=dHWK3GcS9g3r=uNX)0 z(?rjWw@VWRk3N&y`~;VG4zWD;h2Slg?gWc@9-sB`wt(Ibl3;<+h;ZJ$kDqhDWaep4 z+e8Win(btE@p^f){J%3QV#hXrh3~Z@aGTBx+g0|xgDFQW- z62}@}m}6|uHzo5aNMO~^ugSiz`mc;=tI?p3aabSBRet_>dpL{NSCxPSrj=+WOP%1y zP4`&OdEK%x#k8-<#GDmVT5aTkleEJ@mwyFUYeS9JZrEloX31jdOjfkp4%AQhp`(d7?uGle{#uYZ2(x%o3*|B%6 zP&-*_-;x9M2CWZby@Et?`X-V`Fa{|CNH8@K=f literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/CSharp/file/WebFile.png b/data/resources/image/BitmapResources/backendicons/CSharp/file/WebFile.png new file mode 100644 index 0000000000000000000000000000000000000000..d1c43174f34b3d8975d17d6ff37e0151cce61f7e GIT binary patch literal 1634 zcmXX{dr(tn9{p}^xFLE8aib7yFo|NJ70V+I6GieMGz0}j%UFu8+yI6FAH=e*fkl!K zk|3ywTcsdQfo<#RY`cxxtyrm~1d1Svol>Dl4FQ!_tD=NQ;BxO?cJ`0ocV@nsGr#jY z=X)Ga-`k)wqrJTirz`65WYLlKXPm=?1 z`Bd5bj*k`@xvHIM0FLpL4TB1#lqIv?SUDcEG%wW>Dz=tQZE5CK?%N6}3(doR~eP_Zuq_*Jw z=}LqK1P1Ppq1q{*n=D*SrgxO%xoT|RY_}jT`-G>!%W3*l@LEse=H0~nOi|0+)t5T% zp5TyOe9W#lvF1_s51_T&k7R~7NimeptCveFzub~#pdt5(g=hRb7q0$!-+5W z%T0-o`C+9G^|_cXBDdF>S8EtaC47~_bQ++<4{{Z z)-rECtqyKrxpt=w3n8|Q%bI1Rr8+({{_!5Ws)gS%A$YRhrEYQ&?TPTpCHiLXcu^bo z6KP4GlX&81ayD2|o1{2Kd$BTSal*?ZON@Gz5V}Htw4a^%cH1e>EsqJUy+4h039aZsCBp|K}0#Si-8kUHS*F+Xx(?IheHQPT#UeW zg|ehRT49}6T5dGn&Y zyN8BMzQeW(?iSvgqSm%DtNd)^$DW>N9Q2?qgL~zh7nZPg(*HIYE8tDcyv+WB1^fkH z+@-CEv$FV=;fZ!(&sJf9bHuvb_3KA(a39?n45|DjlzWqWnlszwwX0`NcB5%EStHj+ zqjt7;FaXWp1?fpy_51txSJ`q662#AUN2RJ7)(Kq`dx<#L!{mQ*cezJ%TL@*fhjfcj zlGvLop8bQnc{$PEgU}Y+pT91Ho{srlv2W0N*qx9(4ZCfDwuqVi&ED4ICV${_fYb8`_ld9c+35Qnlb`o53ac99H>CE zUv7$tu1d|t@EfO%ua1b}vG8!@uPi0P)G!@pvU!JLPx%Oq@=+APOE{sLa)?jnyOFOa zR=}>wC={KU4dFIE--qd@XjN$;c@nc|Hllm=7G>u5Nlu7j{R}k?-5u^(wPRW_CUQSG zFYimQF+T2IgS{2r;Vg}+H9qUqBZsl*6zywKN7w~nzoMAk96{+GUMozW{QTZEw9D2M zbbZ}98h2;-bM@@2)N12c6vI`7H8}T7g(&uXxVg~SVZg>T7wRP=}M&eoe2A2iP)ksNqlNTX?2jZxH#iFYVZYvc+I1bA3Ke)|y0Ato6Zg z{7-yKpfoc?{0kv!C2#*A=*7=^;@5Nx>ZSD|b%SJk0UIN_{4SIjPG%OoTi#kgy*Z8n zi&M#r6d(Kxoh<~mqwk#YLX!*94bvpaqZdPz;_a2P)^R-9(Wj3kU`>3GrASY>j#V$k zb2P9ejALRuV%9}InT18VU|lqkOCc);YBCW&;5Kb9woytL}i=>HD_$&A#5h&|@M z&fP_Z1eyScQ{mJTBP|RwJ;o6F8*Rr2_@bof)VY}kXzjAXe^oh;P4jEx?S=7q?$uV> z21a7mfG!ad7$$1r-%3{2+m?B6vE=WWz6zsJmxR?ax%V9Qyt7vp2C~YZ1>b$afd8jy zDm=(y`?x3?2j2vc1Oa=Y&o<3(znHZK)YY3WSHpC+1^zI{%VkcDUu052e0nss2(U3w Zzy5gX{fM9QsQ&<@yt^&w--%eoe*t7B!8`x} literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/CSharp/project/ControlLibrary.png b/data/resources/image/BitmapResources/backendicons/CSharp/project/ControlLibrary.png new file mode 100644 index 0000000000000000000000000000000000000000..5a3cdfaa6c4c86def86e2996e9139b012617ba4e GIT binary patch literal 4236 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 K=Cwch!+!yRc3BDl literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/CSharp/project/DOSProject.png b/data/resources/image/BitmapResources/backendicons/CSharp/project/DOSProject.png new file mode 100644 index 0000000000000000000000000000000000000000..4305ea8b81f32a820f5da23afcb3a3045338d930 GIT binary patch literal 4236 zcmeHKO=w(I6h4z_6Rj31Hnk*Di_@0GY~4gOGgDG*5Q~T);zC`x3ewQ@2hxRBX-y2G zn-UP0W}AgOLuNX&&_!K{Nt7fK#X>>Tg&U!yotfwNopaB9Z>FWYRs`?lzI*Sv=YHRJ z&be=r%)D~q#ofF5c8SRDvE!q!Vm!$HP&b~FQ&WFqczELY8qzM28J<&rgwKcJBQV_-l z061rFsNL4Iw_32pecI_C&IOG9%YBm1=Px&#&2jQ}@!>5eiR2QI96v#$kJ#c5Hn{Ad7`Zoo7uVF?#Fd2_`46!H!d~g zeD`^|c=DoL{r;-V&CSWGT#gcA36u=#bR>{=1Kn6(S3wTkQjrvAel8Y=>|7`jG1v^- z{3COiqyiL7WMySVR#$%t0t_&M1Y!~~S{$*cofuiz{%Bjy&7O_ooUnAJq`toPF%+VKyj=&9Y}B*WX?LR_goe>d$qy zWdx*$0jJJKjvQ_W_Bu0Sy-YY0vS4RYXo@RN7S&J#dGXJp3QIj~mI??vT2EY52D7p8 ziwf~t(rD3PgpZaXln!apJ;E?zlGpat6qV$a=?c!YzX9A#1;kB@ju)+f)I)~?KXu@M z{C@44f|v+PJ7i$r$VW~+uY^~6Yf4_+D(Sj1Q-N4qXkE2G;`aa}9vB#qwY4?%C>$zS zO+#eu^<@Dv*}(jTQzKH{Th+5AB~GL=Q&3sb@x;=1wQZZ z@5ek{>-PoMC9KSnfDodRMB5Ux5n89~WruUm-L zeK_je$a$u8qbyfu>xy4KQ#SG^Y)$gTON)R5W=D$x?8^na3Y<+ZLh&+az0>qtSv{(X0 z#}~yM>C8C=gwQI zt?%Fa5{78_0_y>2wlw=XBZ~2aY|xidoP@j9+Dt11;EC$Bq^S&^>;+03-?uCGkHxVx$&g3Ql6K$c2ZlIO^Q@Y*fea zNCn*S7T94EqR<8gz*LNr5tsoWJ2s2H$`g1grn5x>^YinadkQYMY;xXxnG9 zF9C7yE(>wd1kyIrZbE-hN)|43QxIHOOw~pEzVGv#b7$uJ@|tuPL~xRMGjnI=o^#Kg znY_%sdHS`zef@oAws-Q>_*-ZPSbKNj^UUn*pJ;Y}a_XHkW=}oMTC=adJ^*9=)5+H- z>UZ}%YeNJ5_S|P?`(B(JKl%3a`)dRHez}ho|8A)f{==pBiag6Le}t+wLtBI~`pJ&@ zcC4_oU){%XS{r?E9eibBJ=Xm2?N7obb`L*TdiJkd8=wUo8fu|UxojE68400n!vXuO zZP|THd!ECV=4t2purK&H@MFJqcXwaPvg~8xcJU*YniWxeb|dksbdN?u{NBU3eXb?P+D%P5}*oh zLyIUA36ep29MIQ91#aBCVbiy#MXG|W?zSlq5WyH3Wfu{SgG~`fHG)bZVtVGjl|NPl zLh#n%i}E2uhkZ)@_g>*Ih(pUWvwG$YCH;X`6zKyZ<7KZkpm|M z0F(|Qqb3=E>FSY$l*nx9{<582J1fU?N9Ux@*zPfnc|)3OOsybBzgnerQg98+{FH^o`l-->Vuo*Iu#ngXgtB0>?HfkWMorBp{4{IE63svhZTPT37SQu51)RdWLBb*Pt^RUIU zKqUy?I^2@~k!MD1xMw)!oMb$RPWa0A0fEwK_+#Q=*vJzvWn2k&~`Osy1c<-UekZ@-y6=0N{|#>ekV*o(YXMkQQ=&2!Dk;eYGj%~Gc zjyabU@IS2p(%T<^83i5k8*N2u9avsP%~jM$>2q5Zoc)-Js=Xu-nKSRozdKPh8Z+-D zu_QJ2`FY`7AOo^nl_wHdUtiy9&yL%qz~bWKjstB6kiM+*pM~uf?Swu4W3m&z|M&Ud aQsCz=?(`1iAALjClM|=M7hiq<^M3#gH|75T literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/CSharp/project/Form.png b/data/resources/image/BitmapResources/backendicons/CSharp/project/Form.png new file mode 100644 index 0000000000000000000000000000000000000000..2bffbc871741cc87db43d22748dea5e0747d1d3b GIT binary patch literal 4236 zcmeHKQD|I66up~GyUDiO6v{%n6e)>S)0D*4V*J>|q)o5^8-w^`rD_B}q9{UAF#VL` znp&YhB`AJMf26S%k#0poLWq(;OVjOs^uth%m^5lgB59lKd(V6ByqWj*?Pl?(6~Woe zo0&Uz?zwa4+<7m9-CfVcqKPOG#X66)zsT)w)QZjg>^ph#FK#N|JMwZL(Uu*kA^Pm| zY8FQNJCAlmGFx}i!F@ZvefLYE?e(4QZ7)3$5AEJQv&b6%ZV3VY&Gc)IZP{e6bCuTO z)^W$&H*%iO>B@5S{p&C`y4nWx*p}t$v(EKPw*(j1<#?c!$Fr1UP=^f?S4S4vBC~jG z!69yQYyf@KoXFJ}a@%H^nTH(u?mE{-^>l*5;qW=jvfc)686LWX$f1x!6vEH-QMWvW zKc2({J1QfQ$V7LRT%M}lQ@I4q*MxjFjnhgk|$DB^v6^&*{_{e&ix6Tu~3 z8v19(#>OZXi_y~35>-`I(aOq-nQm-+QowuO=rJ;X=dDlQq1xJ7I^1xW&fhxETPFce z?f+0X;MYaJXas6%YD6y{kLR@&m0RSTMOfl7@#_TP*E`ZHT0?C^RDZYL#|dw7fde32 z_0FBbc96|59%n2WVAJzmM`?ck4j+x;11=nJAibCt%NjU!;3FEi`abPraEs^p2J(>I zUY-M*@h}Dwsk7GvQ-l+;;Z8v6F&`uoxSw9ULMJ9qh}prX1|{6hmCZ87CR!(3X|!pq zzyU7{n4mDIoe*$MKw&%PlvBF3-~^`|HV5$22L}b9CE7wQ(PkQ59hGtGg8oPPX=?^=YoZIcFHo5sqSLb<%ea46A3a^x z#5PK#p_ghFO-)X1m<4+t-Lqj97}o!MMu0&+@Zostt2B3GPMnts-@}Ulb|<@bs8kl* zzqjgJ?sWmK$p>JRV~-s(GT6ou2TM^0se4gnmIYCF_MGc!L)9~l5y z?`SWj_NQpz+5pu>`NcMG)6~?I;4S>VAUZ`(z`F+&0g+DbRVxH!9teQqgFYrrRK*E3 zmpYK5WF#qom{(V`O_v)k)7tEsa0omK7Lx_)PFK6Z9gZCL(oB(2#_lockjh=afXRxa z>=FPBFXyctMk`Jg2|@l509fxFt>n7v6e7d(F!ba2ctI8b81I6!o6geochj_Kz0AA| z*6!V>+PcSOJ@ov=IH1xEU=C$(-rO(?5{blyS>QJu?Bo4XBmf=?^+g2hBYzJl3B+-%`+xo`kZfoKlCXgM->S5+1?J<~*)8yPtw{eI9JP%Xbhn7qM) z;|mtg0h}*`$+@$lCZ&=oJ{W$8p5lh+i9YK+%)c+0oTLeCYKL{syIby#W9K literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/CSharp/project/FullProject.png b/data/resources/image/BitmapResources/backendicons/CSharp/project/FullProject.png new file mode 100644 index 0000000000000000000000000000000000000000..ba0e8fd7037754eb8b1f1b8aa9b79524810ebd86 GIT binary patch literal 4236 zcmc&%O>9*~6h5!7;T32Th{2TN0^A^&6e$fzDYY~ZXrgG0EQky30)o&cjV;ihxRJtZ z3G7-Lw851TU36hI0TLdxDIuxQ1|=pMD2qZgZdx8fuA(VYpb_V(0V0lE36<$pSQhLO~65ldm!lV~>Q; zW}$$6)~w3Sm~!8TES#sD>+L?Pqxi=XiO1tTp64APZXO@5#3YbdAQI!B<>*>W@gI|% z08t&OL?>d98yWYT5^x%WKm|@}Cv6jYAp6HE<0@DXpn|^S!JUGB3^fi5Liekiol9Y1 z*7fZgH=i-qn|*eTKxd>Vf%g-2QnjrrBA(d|V2bb4#ZW?5!qwA#$OBJ9#}Ig2gSFZs zOl!`U%Fx?Gl1L|ndU|_%<)-w60HFs$Nls@PoCE*>CCFIq`vJTKFjkTZK*SKmT7Xk- ziZMW=mZN`04&=;fY^fwvs$dQTEeL2OxULIi^>?c!ok)WWNTISY7cM=xgtazjB0x_i zK-Y3plmNY8WN2Y!NP=V#9s_9BI1gO8dqrACT9i}-Tf1|HK!FHG%jk9`!m*X9#m*bn zOV(m)=Dv&fFDeMZlWUKu4i!Wm`Atnt!O+l%5wPn zVO5zdOUkBsn<6p`z zi3_Uv(6vJrxKmnTeI>v>%;N@{Mz%dA5O^8+_Rwk!YdH=H|v-uqjbzy6AAjqnqy}eyqx=;V%2}Dzs z(bChW`()p~ebU|CZF2*2Ohgz*@Z;rOa_HJ&sajB_p1J&RK=oA*zabrKI#i~D$itih z&k!(jf-~s|j0){~8i;~YQ&S`L_4SaOgyd0U!W}O^F4cuwbj{_5mt_FpZKG{ECiwci z4bV5oF${b|K$FS=YirIrO{AMyDk>_JL}O#4A;&pfOj`=8CG{YsYg$KIr4`^u*Bmu_ zN-C@&#t0SKhsl8;qeBG&OLOeFm{y`C8O8)<>Cyrv!G3ddvvhWLYGM++<$4Rna_lu6 zIsCmI->74ETIjXhVng5v5ZqXM_3E$;3|x^^Y7hXP-tF96T)ZkI!Em&+;DP~3f+yD| zRe!~@3fY*yQA0=p$NE8i^BS(%% zvN0)@iAojGV$B_Zo+~{kQ+KCyKXv35a|(Rx0cA<1PynmBfj6HfBgS8x>6Y7Lzsuvt zk7Z6BW~{T^ej~33|W~V4P=K&f72Q_9r;NNW%j#v?k(Yr z66omYkQFOdm}^*%4nR$+(dSPEx0(jsFP%{HGj{S%o;(@jPbIwF_TL>(KjXH4Z<%_) pvfocn{MTj14>o$@c?mpk2-4qt^zoZJ59klo+HE_x_Sby)>EH9bfuH~Y literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/CSharp/project/Library.png b/data/resources/image/BitmapResources/backendicons/CSharp/project/Library.png new file mode 100644 index 0000000000000000000000000000000000000000..0aa2bd18a87eaf0c6e23a87c05bd42132f913fab GIT binary patch literal 4236 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 U&3bUSlr3m$-LSTE&5w8f2glFfYXATM literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/CSharp/project/ServiceProject.png b/data/resources/image/BitmapResources/backendicons/CSharp/project/ServiceProject.png new file mode 100644 index 0000000000000000000000000000000000000000..42b39005f0560a031f2cc8633577c7f1c53d4e7b GIT binary patch literal 4236 zcmc&%O=w(I6h1Qvoi?^mkU~iXyVMFz|FoJ;#;GLOpjHt#;zC`xDBTFPon)$6l*vqz zeF=!GEW}k7qR<4!HlalbZDTdK5Q&?jXu;A{BXs7y=l7laGjD!63?0GS-nsXlbME=R z^Yh+hrr$XE@{Yd#J`ve5dSduZta~}PZo%i7eEu&i+de$;_8F1K9_LKRr=RVHF!j;s zYa^+(?N7+FPk#MLrYf@YnbG0nZ#}guv3KV$cVY4Wjs)R9Sa>%IgHXZ>rmg|j$eywH za_FmWLe72s9?#y^`Jf$q1=b!mx4!&Iaf#i_502hlKS~v#5gZC;q?baK1vm#JgtZC> z+;dh{ZqAg4A!J@pIqmH|>tpx#{nFFZb1?{l)5J~k!;OSQl88hS{AW436)OIRk_r&j zlS)*PfZWJ<-;9WA93mAssa4v=XQ2AW(x)1J`a}ld+p)N-Bn}+lQ7wfe6OPn06(?vz2MYE*myWHe!0_ zz4E=Xf)KoPu&6#%5c_CJfM86a0XH@Fds}DfJt>mYX)?fw;X!gYatc*CRFY#`j>USS z#-OPLbQ*v?Um{vprdgxK**yUSvzbt$w8dQfb5T8?yM9h`*K<-jG^OV>z|}_$*YD~w zU?MWWJ_7*qjmW4;24MQ=k%VR-p$q0Ahak?i)Y`n~e^6@B*dt9d;W{JG>&4Ne8Ik6yVT zQFb{i(wrS{cIVU`-xCUKL0xJ1Vmc1+^8Ii0&iKu7T_*=7<@~MlGT1*Tm0v4L);qPE zS_v98v2!k$^XX^Ak$uZ)hL9D$9SJ^mV@z)q4-{qcz@$9i`+}a`(?ar%qgH~C%_9^y zNEQq~6aeh)Bp@PYXYXFZ)t>n%p?%5!P|C3$fBfhQbutJ{uBz%K=j*fpMAO(UAub$V;MK4RM^ zBnq=_nke}?cFpP1jx|1*sm9S^ z4>Vq@ou`T=t+7Uq5aU^>S(#ny9+)VoHVn;MD}JdsVff`+FfS&Jj%^ixL`~B*Hyi!7 zCJ;w_gngw_k$*NfAK|9C(oqw(^S-{mF7xyA?M&M0x+bt@#&TPfHp;FE!1uEImD2|2 zp(;-xnJhLL6|BTHT$90nAn5ur?3RQ6VB?R)ZX9(}f^VmO{^5&PPwyfA=*Y?8`Ip|i F@GpdX^^E`k literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/CSharp/project/UserControl.png b/data/resources/image/BitmapResources/backendicons/CSharp/project/UserControl.png new file mode 100644 index 0000000000000000000000000000000000000000..a8c1683c1e3515549c5bd315db6eab104b09eb16 GIT binary patch literal 1313 zcmV++1>X9JP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ=mq|oHRCwBA{Qv(y!$1On0Ac|V2M->kn=3YK*uc== z-_Ho+0|a1$3T^-dVi1p;M^|WE$9devA#|fctg5%KTvhva(R))k6s zJxeG}PKX5>NxruaJ?pvP+V0lT-VPn($jp86M*uN_?O2+X|KDE>D*yrr90CHI99S*?hh+IbP)PiPgu?pO zYZ!k0#WakKnVBK$M=rwz)(H%(znK^qIUpf@^};0vLn9-wepXgi6g>a|1a`pZ&!15Q z4;?zhz{|_a@bTkE27Z2i6nSHyK_JT$lM=B8TGq^521O-Bc$9+p9=_fT)<>)u4q6;! z`1$iEih6(mV!>vJl9Cdb78Mmmp*c9Y!688^@W1KLaLD`+!|79}7}(iSqZ=TASTNJv ze+Ee@DF#r=`v;9@P_X}l#W650{R09R-n@Pdj{kqqga{G`@j>9}lcx+fZd_+DKWG8w z_c8Y}oH~7q!O+l<;mXykDE0va5EHuP;Bw(Vy5;}i7?k+_|Njd~6aOI&g5iJAbdmKn z3vBrjt0Q1O$XSMlMqsniLjWLvSkN8t51#0tmV(6)z6YgbP!{|L&1!Im0mY5>7=g{1 z#4!mhcKXz5h`B(v^I0c`T?V@_q6Z*=;12lz58->TFaJRt1I|AG{~;U(#Jjiez{mv! zzY7?qaZCp1g6r3=Gw3L3LUO?$28PoAr9jJfGn_qp2EzdW0R(rzzyFB5ed5GPoVh?< zT@7n4NCd(I2M#bW++<+z@bm!Z0{)r&V7ZOz8^M+v7#J|zx^)XhA3y-HpalOv1~A5# z3x56ljx)7`v))Zest3^@(?7x;0kRwvg6L@gAb=1d@DCdFKrARAh*YvcN;ObQ{|&Sp zBQ@%dX0ic2ny&M1tASOfz zAQBWL0YXzh(1QQq@*deSh$0t~AR(3?G(QNBPD4Wju&+VjFF5`D2WM^c5C8}uumeEx zjhvz(dHyflF@L}op_cXkkwXWl<{+q`IddA3ouMJRO=lYD0*|xwE0ssMo$OV7@ z!{eNVg%w)9!%{dTO?>(K6|Ba@%!J|6rHhc_7o{{r6ye}Bz<^nCp@#rK03l_=e<-aP zumhl$!x9@PH-KA2e^DDL|B)<*WM%A@V+#R*077yA)S~~;ln$+2AVo2v#q$rPp7;l^ zKj1!xRcJ&4fB=F!;QICJG;fgpgI3qb03d+C4%oVND>!aI!9#5t7VpSxWB?FAjIiJW zwN&ZZAAq%r0Ro6|pgSf20mQ^GzyKhC2HXJv0W{za00^J~cK|>D4Y&gU0%*V;01#jR X4-@LDe)6()00000NkvXXu0mjfc8n;3 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/CSharp/project/WebProject.png b/data/resources/image/BitmapResources/backendicons/CSharp/project/WebProject.png new file mode 100644 index 0000000000000000000000000000000000000000..4d0ff7641465460771a9baa10d6846f40191fd8c GIT binary patch literal 4236 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 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/Empty32x32Project.xcf b/data/resources/image/BitmapResources/backendicons/Empty32x32Project.xcf new file mode 100644 index 0000000000000000000000000000000000000000..ba995c1217b2d0758702c1200b1df8315f3fa46c GIT binary patch literal 18538 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 Mel&&%A)P}0A0%ajE&u=k literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/EmptyProject.xcf b/data/resources/image/BitmapResources/backendicons/EmptyProject.xcf new file mode 100644 index 0000000000000000000000000000000000000000..1bf141190df97b633247f7391784042f642adc66 GIT binary patch literal 7322 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 X3eX7QM@sG(;;0^_0Ke&fw$Afkcn_N3 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/JScript/SmallFile.png b/data/resources/image/BitmapResources/backendicons/JScript/SmallFile.png new file mode 100644 index 0000000000000000000000000000000000000000..7a8223bbedde3d553bb7117283e4ca7f70e47759 GIT binary patch literal 1148 zcmah|Ye-XJ7=Cu~cAR%t(-IBMOlO9H;dN6t+%zv`l=UOJkrDprA{dlK{ShmO2x-(n z(i$$bAN@$9@<;no{WB3n5rnR&gwE+Ux1DqPzO$W!iQo(0-hJ=h=Xsy!J!job4K*=L zDgz+KY%&}nIi8-#aPpb%;?Iy2b=h>{8W5dCj|@+(8d8jCH`f~@CR8bj+hdy)vvNSW z!)&NLs!5T>D;NEwV?*plZCYasuWhaE-SEq%SJ{8nEY#!~EF;y8t>~-*dR|zOsn&vJ zS@`{a1V~bQbCx3luy^2ZF z;D=9zud{KmJnzETj02`3Gnq~l5RzRP=}@T{6lilXJ~0VF0nfROzP~>U21j2yRLKc= z_jwxD2hGrxUcv3QM}iH(3b8}2=*x7HlHd*|@g2V~KksJQ`}Sqn?N;awXVH6IhneY7 zVFz>%)CNoJP%<%;;um?gT=9EFt#`b-gY0w-Y@Kzm58F_lcNi>@f9~NNeBKrKJd5bN zQ7FP75g=S9ANw*m>2|62YKv1a@YaSh0;ZFxe@ojolF6Y@CHOD|5{ZDDVEt}5a-Z1V z^A#nfq>)G^;9Is;EV%>lxV>2Oy5RRL;aSIK3PPe-HXwMU1U#8`^B4mnfDpzIE6GAF zKo=1TNr70P&2)1As2hu`5RQ{5aIaI)b9KMizHSFnDM)a5dQYMo2jj-CF*Krq!tvGP|+5(r7N|Bl38IdkpqnXsZwJBxvcSzL8+md8^tw8WN^9ojX+6egK_Umn{B z=o4+$4cp=qbW!@B3T6DC=+4|6WU`_`Rs&E}23ZM^l2tV*6LEg7(B3aBKc{@k;W0fJ zkd_(~ELH)+A)k~dkS`OcLKjs79CYH0$H;GOdksBf4Bb5=0#%_3KkrN`%M+FmdB^^~ zhxqoh8F7gVFkQ+Mc~lC0wA7Bm{7g^-(M8jA&@_esSBhzLi~B7NI5QN2y!|)e$OP&i zHDIQcgp*|#pf{P4QUC1YUzuFKI2p|^nsDmwJ1ooC0oxoGR9__Cer?Cfxk;i%&)4kq zPB6s{<{t-B$Dqk>Sc^t*%CR5CSLfesp)cFczByzsxxILIi;38y1_KwF~L}5CjE?=_Hz{u0}ih z3YH-zDG|Snk$Bz%T)X`M&r>?6CIk|%)Vx6eFEL-y@Ey+DH*ns1g^Ne7U}3BoEu9ZB zV|Fy^Ti&DmTs|yo4x_aAl4v^R27EZSnxo;BBgOx_1_xj;gkjXrP*&qcO-(th);*}S zTi~p!`~$$eKg5Rr_noJs@Qk_;Q2fY9jUcWxJpSNCZ_jb0&5Or%$7WR3RU;*C1=TzW zk|>^F0DMGFR(d2na)g-7!GVv0tdUQT;rgs%i8%q6uV2EV1Ph(hfRKnM*v>BnXPwV_ zQ^z3D;i2d_-be%rM47RT^Io tNCQvOdaojwBX(04af8Xw-UEjw-G8=UQVx%z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ==}AOERCwBA{Qv(y12R~9?f-v1=09-$zkdu2fByUe zvw#2l2^atQ{T~DKUxd2fe||&M|Nh0m&dJU2^x9#D{M1lJ1_A&efEdvoaP|4$|7s%t zP{e-xV_{%r_{s45*Dt7}Ao73z{DoWo`}c3S`m^tN7;fFU$8cxoEQXmgXX14PKmakJ z3w-^BYB|V#Y>XhEGBYr<;@JTSR0Wru^ zJle(#yvC^v>FMeJ@i_n>fS7PefGh@i6imY~1A_e@S?(VcgF@vWBzoR|V_uy$snc&%szbT@Df&&`|gbr9XfB#qj*e zdj|G5FBk;gJY;zEnTvr#B^0Y800M{wR|x!rIs&AF*BD~Cp?5NamZBnD&GV(t86=}6 z8O~09goqj-_B9n{P&)CK;U_mI!?&;e3_p077~cF~V0eJV9)JMC>VUuh{sQBe8Ehb* z3998B9GqY^Q-UN=vMM|zpdqJj#te7V%h${dFZW{43;+RyH4T8W8^{n`makoF2&Si= zhlGM@E+i^Iney*{L{z{q2(YnXPi_DKgb@P2e*OSj#LK{@k3HBymV+z>S)OeOaRdX@ z;{X3qL*g$q8o}~^|6+9jKmcKN7OLfvU@?&I(Jco77!A)2|4~EX?|=LyAwU3OIKVzc z7|n7Hu;o*0BvC8}B|elyiyZ9#A>{##jSm0>5K0ssBkA zmV?;HX#r%>pMOYc;U6MR-~#{w#DZ)&0zfQBk8_yiKs^jomj1`c1+ZX;70Lhq6OICa z00KwBj}OZjjxSvX7SO7>#xN%enC+sTQb zTJX5V=JT48=Qwi#N;dpQTs8y9&0gidst< z{Ho-@7Fv0;G1&O9p%hB^06+jS0TUU#kOoD?rWrR;LI7qtvd>|b!vM_j)2qOgkGPA>**vR>u6wBu!SxzVs0t66-1OET~f}x0H%aK}0ghBuy zfH0!q-)~etD5Vo^dG#ZBBNo=G1}ASkjsOTCtZ6{jO%7b>fGkJO=lCq2Ta5_z|46NB za0uY(8vz6m&P0gKauC2~`SOaVkoFhW&L0EAtzS619}EBigyDeKpI9(TIB@+4tS4aU z0aVh#EHANM%W(Ga2||5P24-eqtl|IxgyDdk7(K?zhtvMg0@e>OOR)iv<$gSV47V;W zWS|591Q15=7+Vt!rKb#x3JF6AP$k94Km`C0U;rt?4)?wR!u$XL002ovPDHLkV1gpy BR4o7i literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/JScript/file/Form.png b/data/resources/image/BitmapResources/backendicons/JScript/file/Form.png new file mode 100644 index 0000000000000000000000000000000000000000..56fa248e5285e92189de0bfb76f3c2fad8e825e5 GIT binary patch literal 1404 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 FV1k0oW>NqE literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/JScript/file/NewClass.png b/data/resources/image/BitmapResources/backendicons/JScript/file/NewClass.png new file mode 100644 index 0000000000000000000000000000000000000000..3019ddececcf41a7b06ac682556e11f4d130ce8d GIT binary patch literal 1560 zcmW+$ZB&zG7=HFW;Dx44-C(*GH-&7t4-%LnY{;i60(wqbnA-r!FkCZoA@L421}GST zt(hD_%_L13kf9xl;RK<9XmJwk#7DUZl^8=5*vH#TKknx`=Q-DPp8LMe_1qPyDT%(` z0p0)r-{hpYbPVC8qLQ)mXhFeq47`*{`;G$O(HSw;gHf5R;gLV4@3066C2sbX6Jn zbC#j>;WB{J{f

    %Fen zSgbnPrrjmn)RqlV+=igbdEL;lLF>ali2qVC0Aa&!^3}8i_Rum6P5X1HUtc~~rYkwL zk-I^1#xae=?J*0ere^uBJd7B$_;lhGQ+#1$$?7a|PkOa&SWin72w+~e+kI|4`N2kV z_YuC?Z;?_p*MXpld>{ex{FP^;TWmElVfDrPp%fg$x21gMZm!YDmT2gUBW9PIni7c(}~GUSDnMyIsP%#vP%C2)Wo;0e?Xj}BC%-#H{M->)WgHI2(n36>hkSkYuHmUMmc3p=#U2^LH8@u5q(Q>Ac%Ln?GRk1G5_+ulR>{>5S>1J z>R@%H^AcZ(`&5j`j{J?f z@Pqg=ZqLj>N`#MQku^n@YX2%_M7UMzfJZGne_~uV- zeInvT%u#cihUJYEdE(MEbt|hwDf`H+tjFpPt<36xkpIKbFQfG#@zlk=j2{TwkkLX#X;?`nN%ZTv9=UHG&Ic=m4K_ zBIyR}R%u)a5eo~4=y505wCS6h4R1L9l{aGl^O?y7PTu(3DALqMtVzU-{q1%5>3Yh> z4Ospro zgD5&f#?5n_?;6RMD5=Sm*7iFEp_XAwFm+DKG@dDKK0#RGsT9u{e0GX6#^+j*gaTXL zY8NAKe@2hQ3!AiZMEL#sfbF}Oj1|lE%Nw?z_^j9)z-BOpkh-QC_*vK%2g&g%ao1yI GCI10feV)z$ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/JScript/file/WebFile.png b/data/resources/image/BitmapResources/backendicons/JScript/file/WebFile.png new file mode 100644 index 0000000000000000000000000000000000000000..b93fa927bcb4417eaf4820daa73a863e3146ad48 GIT binary patch literal 1459 zcmWkue>l^59RF;FjjvgL4#O~|8a5IuPY5-g7-YBdNvZiEYEFpm7G9yy}&^O*F6u41IM4FgHzk_}NG+xe9hh5p&5yuQa2tbA- z0DJ)et1yBy0Ho3Y_{0WaS2+OY=gVTc_5q;1H7LOEQ2H201H(RAZbvicVBVf7AMSb^ z4}y5>8gw%cR^!a!)iqnK#Tem}30{u>5WL>i{<5cExil6l(hRZo>7W6bPke37{cm*w zK4TBFI&(B}vFrp@k5WD2T3<_E;K7>wsCD(q`A1)yzoZkB-adZLP5ej|U3X7>mx}QP zbcue}TK*Y^Jo{WRxysF*)|~7{L($!>JhdDM?kNj&+65(DI*)bd>M?0tWe`n@qRS(^ z$GV}`?q8spnHhMVfoLe_2Jxvn7fpg?G_AZf+sJ=yO$2)twv>!68rYkF?bZmK3hxMZQlvlmOAE+xY=2jpmt&QgPne%6C`rV@4 z6oAIcP;hn8j8B<_yi=Zx&vnx2oqh_vaUSS6y8AfZ$nq6SrC;a6Q+FvfJ()Voo~}g9 zxOaT|()Ay5{T)s2IskN`_7SW`unYaOV1&qdEJVl`xom5EGV^(7B54xg@u;n zWe?K?)~@+$lUqEu$XXgSkWYF!aa_Y@r}MjP_~6+mejB`weqU~Jj$DPiqacwg*&Y#j z6jswVZ%Vb@?WArfZK!vo4{}}M3_yrk4+DOam7EYQZa97xd+YYi0%6{17s@u@>kD6a z0f*XYSZQNyXc97L_jUH8p)@edE6+NfArCKAyb%%h^L>Yh-xikg2YC`4k#vU#b5emX zh)p%C*wdsaW7A7(Upecdh)>ns@uFLS&dTU{^R2P(w2fG!4d(0Ku0k7dwE?z1mV;l9TvqLdAgJxl(^$ z_RPa<==)>eSZMBiXg51{v6()ql6DxAB?LslX12Y+e6YHHbjSP62e9qb{mYELWFnt2 zZh4CCMDfFUww}0LAAlwJ2Ft}V(&DnxN>q6&K#|*@T~ zQy5{L%*NK8Q+l%O>H$B#^)xyxGN%=fID>RG>Ps(l>%ObWKCy2{Dj(msp`7^ZOSRrlEFouJ?ZO(Gf+pac`$0 zkAmAi8%iZQk{;z?hK;35VA~8^eC=pMf>)*rBiZAm<=#v?d|_kGH>B9+y+U>xPDIV> zme-8}d9sgM1sNNUrH?-z*%BXsuV3niHPGERIo8enOFBi0)ZCKO&pK3EVG L7!vU7UUuI9)edft literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/JScript/project/ASPProject.png b/data/resources/image/BitmapResources/backendicons/JScript/project/ASPProject.png new file mode 100644 index 0000000000000000000000000000000000000000..a53fe0fa77665c19f8d4b913ad7e836880342613 GIT binary patch literal 1999 zcmV;=2Qc`FP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ@MM*?KRCwBA{Qv(y!$1On08EVC34kyVgTLDPgWx{S zDNf-I1t)M8@j+T`)t>gj1acwdVnl{%yS+Ivp?Je!F6vMc69qcaYYoc5-9TLPck;n~ z_m7;(hU~T#><2j2G1~<@_R>-!j{sDTISPO<6hxmn-W@%<# z0k~KhMuX06_aH9O=<3U7^1K&P)UKv@Z1d<6A&>j`!a8*mf?#Kb)EyyRICmh@b3|cF z(~tELfaf{L0T6_N0Jva~1poh_en}5Nfnq7fLr`~3o~)rU)M;M2j!u!H81 zD;vCy`@oDHtSc9sXHk5hibJ?2c$8gRarh3A8~%7eM1O%-0D(i`+fNRLIWu=MurUb& z4fzL`WMqa|{QvK7%*bOxQpd;+Q3v$x<&)MZ$_y>eGW_}b3#^`nk%Qq6(2@WCA@l+S z5ZD1GLZ=u?7P?_iCBQ`b513AYBv9jjpkw}l4fqRm=>LBp_Fsm7fB!T51=6B+q6{1Y zQ4EIO$qYuCT43#K*BUY$tUm-+_ZO&l&YZ(*Yj*{k@$=_T6ng*yhy{DJ|3|VIfJv8`%7K0KJ2#eT?AXzR6)(i4Iy5%4M zqe1BfJp=#(hzY~zprRScm;YdvLoq1+MQnx9Eaw1QKD9;?#d67LNes`ShX6nTF=6vP z%(rm*|6fR)1AQ)RgRopt0%AEV*#BSqk77BuEVdHf*5wR0!H@|Mwi!Swm9bAfTL1$4lFf<6a{*OVY7#D9=nfSecs z0tg)RXV0Gf|MlzF|G*OQ|HqFX|G$6#?tkmdmHz_*g8%bzu>EJyWB_9h%P260@j+n9 zx&Lq=5hVfV!`L8f*|HamL1KA%dC2-100IbJ6tlcu%)tJF5Y8@Xo;3@NG%zkhtg*?I+8{{F)+1_@1ehM&(vDY6_E zZ6E*;KrC#WZ-Ep$!{4uv?7_^0s33p*fi%e;Tzbp!S{~SRzrQgs{{6=A z=?4$Pzi+P@garOFe23W1@b2+zhLaOtFtB`k$`JPXKRC~mYWa$^6%6+F_FxA91Q5%2 zJ_`nENfriWGfhb4z`_E=d|=-Sv3+4+;Nt}P`4=#0vN8Pl@s&YRii1JXQkdb=7D1ru z%V0gAluoSWVIpBD1rb01F+#g${~2DjfdxQO^6KVu1}%4e24-My=-=;83^(@QWZ)9w zW>B^fVqpJqi{Zq#5C+SnHn8tOmLunLe3mauSq86&U?BhyK;RU2Y0Y#7mQPz5I0Xe6 z&P+VS@af|(1|vTs23B4chVO4!7;bNU%fRyg9xz(ufo=QO40rE8g!>%bauC25=jZ?+ zfZ$2~bT2S5@-Q;IHZ5hyn$pR5f4$FtNi|M}7Z1KOMDBmgSe4QBpJ7e~1N+zi3?Ch& zF-kaa{RpfvVd()>(h;&81ONgE76qVC_dj=-#GPv;fIJKL)!ACxP5@d5g-Rh h7)lVd90ULY3;+c6p&mJ?qF4X`2KY%t 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 AyZ`_I literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/JScript/project/EmptyProject.png b/data/resources/image/BitmapResources/backendicons/JScript/project/EmptyProject.png new file mode 100644 index 0000000000000000000000000000000000000000..f231cd117c0c3eab88e8ef8c7d947b653145a135 GIT binary patch literal 1544 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 IM6N<$f>-R3_W%F@ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/JScript/project/FullProject.png b/data/resources/image/BitmapResources/backendicons/JScript/project/FullProject.png new file mode 100644 index 0000000000000000000000000000000000000000..7e338c3dfe21c9e49a41652f9bc87bacf57618ef GIT binary patch literal 1699 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 E57bc7;{X5v literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/JScript/project/ServiceProject.png b/data/resources/image/BitmapResources/backendicons/JScript/project/ServiceProject.png new file mode 100644 index 0000000000000000000000000000000000000000..d9267b6c779084285e9678d9f9d0d3ca6782ac98 GIT binary patch literal 1476 zcmWkuc~Db#5dOX7kpv7$K!kw7Jgz7f8=n0LXFx z08;=kg%daoK!z&-BPamgWdK<0JQUjz0DysakiT%_uIG{&9Or8UBn(I(lf#?$PUD9M zR*`jFUPB*ODW{LhBQ5nL8=5Qm&AP-y3gr%$PRG62Z2hm;2;~YsgFVuMr4)B^!ZM46 zWQ{78PUo|CTQWx1bT<4_Y+x7aC;*E(IaCq5xQfY>x&6EmN%Mc8S>ec|hfD_1gw>yI zqi%f3CWpK*UVitY(OcUyj$8i>95`OOuf*EDVChjksa9(IFzSa>yIh>oi)6_%pVS?G z?{wz5@=>=tq366`O@)A^TGRk#;OLpk?4=pV^q@dJqtC(J&@vKcv<2QXR zieSTx1IJrySC_2{H9NoL%(B8go49XAlVN#ECV-6j(lyu{5ZEki441=ugR{L8&QXN|tU9-gFny2p5;FwE8mU#dppO4Ec zwPcvp3-LsC>|pbjxOEO{|7m7fc(%QUkM!fQtXU@e8qU_^Er*JT&!lQT9bI988FWf?7L~sf)u$a18hucKynP#SVWfi!>u`;b> z3036^#r%}^BZy&Bn!JjUn0JQD1~epnt*R zhA1?Im!ecS&m7=PJnExH(}Tr`ljOUcgl79l7wyE5QUUf+PFsw#2n9TPg`zmoK31=Y zVsunaS~M;QxLQt5nd-3$GSfNKIJo%~EFuA@J@@{E>+9RYxZEahEV zDh`AwYdXEUqyf$W`HmrY&HEgASu@c#vhboxE{nXADjRlp-E#iDm8N_NdZQ$3|KmYo zT)*Rx2MkEGkC=Q#_F3|`e-Ly zb+P4g=!Va8o#7?s+%OsHlVPf=O)l54>2F+ziukLX1j{aIX@9pf6(W8|LXt%Nx6_WZ znz06}Fv^9raIN%R5}7z=@b6C=a>e@x)a^PNOMuAr)Ht+3(r1nisW2ULR7yWV$Lq?! zF*}i)+jOsRjxqwJ_iNt832cMk@-Mt4N)-D6ium)?hohJ4ZjD1QYZC_q54T4z;+f`G zTM*K;*UgkbsI(hQ7x`A)b6wEEA@o%B%xxJwfK_IX=@`gajTN0W_E;zyUdeNEJ6#lg zJNrW*`kP@0v+@wb`Fgwofc!J9lA0N3xt|~rK_oVwbA?oYReZ@$uwY)-p!RECZWS!l c2?3%8rmt146GD7{<>B2&f2HuA#C4Wh)jMUdEL&1(gCbQ?p&%O2Kd}WzE#eF1b_u%bnCLb;Z8@*gxL$%$)hXbLM%@drp36$UZ9z zdkX-7l~52Ejwsz!cr3D}q^B<-VxA<3OaZ`hqp2WJR!%`SF>$;DJOG+i8EauBrjFx+ z@B;v(Zv#NC1Yi|LbOwMkYyf7(0PMOBz@}5h(cOEIR-G`A7m+p+V}xNpEf*yRF_1Nm zw7KTS4lmiTx_^B9IsR`nMy#|*1XzD^fy1*4yAHN}#T;20DiF&Bqp0H0!*G6vpzfMo zg(QCcSFx2-ppsYI^!d&7+*}l`WUP8>bnJpvCWbr=!TRCTBBDRcO9U~6+4LtyG{@{& z?h#ZiT-6VM$$E))Szo5j3h=bAfeA;IQ$;Q??t#&->(TI;6Y39rgOKY6rSp#2y&U#0s6A zu~<y$H$5-&H)JaLY)~Hlfr~sX$Dlrx}O`rk-p&cWr01B+a>hcy+Xw^uNCC&t0M9b;2vEDnZ{d;)ZFiPErY-^$Z`? zW~gMGJS)`xwtvtA%T0WbuAnFGsi$UgX5uh-dK%uiwnp1L#bVtd1P2FC+*!q4$A6Ih zfj&p*S-iAkXVuTZS0|Y;4*n*#mvWenJQc2fjYQ_+acXt#MlEl@S(nS+;Q^jme>!O zL>-fzvmjYy)2+8H(DVdk$gB3op|89Ue&*O9$LfioG!5oyNIRrG%~aE5=ZBl_2i5fh z5e1+w|C94t);`yIUcPn23+tBu2^mh_dpgup&FaSDBTZCbn2nqYS)NU1;gDB^2HA@3 UM3Qrj6!`*ykRK9w*I%6VAG=~M5C8xG literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/JScript/project/WebProject.png b/data/resources/image/BitmapResources/backendicons/JScript/project/WebProject.png new file mode 100644 index 0000000000000000000000000000000000000000..e20da70e676d287b4e5a795540d310153e4dd46f GIT binary patch literal 2012 zcmWkvc~p}58ven@CVnE73OE>;=8_v|rD%$%<(jF}X;GTAhhUBPCQfSXGsjoJCGtxd-)uL<260spk;@l6$h zd;L>oJQYJae4@P}K;au>^@~fRXT|<+7{g<7)z0)(U+?o08O90kqP%%^ISR8^)uN=s z1%kh__?b(yW{e0Uwf09^#(m`GO}4{fvq(FKfH1qhmgAdJ&bjzp^V3a^PIxsH*=!({ zaS?Hy7Q&GAD5sDM)F_*_^i3;OVRM#>SgE6i%Y22Tkrynf*AS`^ftnHTd8ka4#`MT> zzN4}yck$o+w};;Xd25KWwN32?@5(INK9MoX)uNL@X+ zLbqL7N9MJhmdTdob{=J#UC$TSlLQAF8B{=E<`G23d0O=Xb3&H7z{ueAOOQS$g8$S? zAnABKOZ3;hp&{x^&#iNB^(wjX<0t~tX8gX9aXW*6`*7dRA*VV}&y&mCvB_t467n&Q zY)D7h+y4efU^?Z>Wghc~>C=5f_!KxQg6W>&R+`o7nB=9Mej}HGL%8#lDY8j{6Rea~ z2^`amvSd+*^0M&Wm?lfz#<1He#&nHc_Hd%BC z*PB%sn)rzLJ-5oh>}EnWv^Rh$8TuB`yW<9t@K}+!KAEK5@R_3(#zqunDxRJ_@K~5+ zJ2TCAhyo~#C91~JaW`@hAFyr$n(cTLlH@+h*S8H2FBq6>g(+YkG0*~F$mUU#NG5oN zAWQN|LIt_jKmg73zvDl60^R6(|vjO{2KL(E-+JkCv*vRxcs|DLUWWpk=` zN7R|jyV$xYY#;`p33POOdwZTvS+Z^0%;Yen@p!!hPW%huvtBMkyREy?Ps`=B<1i_h z>ixMv_+}mnB|ZQ2GutJ{V;ezfttLAyy)~Kmez#4W*d~ta5De7SFME|IXg>rk+{ruh zt(&H}{v161j6y4kzMHQ9)No4eDzbf+5x4o7J`Y-n;maMq&;=a$^q@Z_X48{EGkPtv z8yZ-^6PQiV>ecSl*UwWs@?^#SGECEKeb;tX(~jrPxP80+Z567LPl!?XP99H86KE^T zTK?CRLaN2jE*H#JfAmtx!}oL4pHLX`!*{+DMn++tbojT)wN0vCFClzL8N?nr-^r>d zc*kbl=*t|c6>evFp3w0Ve(YpTgaoYKIUjy|RPT;Y#$Bb46n>}UncA83V!Bc5$If#axk~n*8YM7#=iVbYl2LJ%z7B0>435Keq|MHts7K%q*P!+d*^CoT6&Q z2&md64Jo9%oI@u6r-l|1BckUHqBOJ1Ca5H(HGgIePvCG5%Cz{5`3L|+xZ#fQ&6v-21wZ!7a1OQlXdT zRJQ;|W%N$e(Nm}8EC{{cAHLdZi-(v6k2fAo$dI#sl z3wBL|AIi+K?=#9q>2)inTp`5T2Um}z!n-By-@{HY_h!DgHamxSaG@o;wG}y|1qu>K0H&|z(zG3|I8G;^`2f}Ml zBGftC2ekfy0d<-5PJY~i#FBi4Zd$X7C4cTO`TO-bKj+?QtgEfI zDp?8utE;AJJIyH~7Fy_<8{h|NN;pxo_Y{zrD#C=8Ry#e6KkeG)j2}+Qv}F_?JI)6H zbGECha;H7hlw$To>5KmxCOw_^+>cY;ZcSkkz{G)71yFPH(B+PRF@|U~3XNvJ&xeMi zJB+*qIsi|4_k`?;v{Zq@9AM}LSVk_Y%hsW$yck~<>swV zV+y=|BM3IX1j;G_e-r~BRZ`~Uf+NObGOP1puK_WvTcy|;iP$x)9aS3Q!~I1mZa)>`~hT{zGvL@5=evyeC)x4K~8>ol8n z!H2gacr`eL$tf5TeF3PZsHh=K{nV0oc7EK`Ki((m^7vZRBK$JQq4) tP7}q8Yi+%h^7kQ55dN-vTXlCefAVh)Qp8nSG7E!>wo-S?g_N*fdP?!N$jAqas3?kljDF}L zq8@@miAaN@tVo0iMM6tW%9MzfR`X}qUH9kSz4tWd?wUnC1Ra<&XXc#w=9@WlZfDK* zB!k%iAjw%}uO*$rB|%U73LmQ{mDpId=MZ2_=OW<7&1`bUH#w^v@k1taqTZlCINAh= zxlVie?(7^PMVyuC#s4kgY@3@&vI;4pK#nj-vO+>SqC$@O`MpebSkwHT-qRcI6TtvW zVOlge0uTS6O7@g5jWr_&%%p{T&(}Wn!$XPD1 zA~tlUP>88J3GAezm2 z=PE=ndpb(mMsFX&@^6r+^RViwxi9!n~~2Lc4y)GJ%$z~ zfU%&0(qnhgk_L=@3LqnwdcXtJP?S!!t%&M})*yvy=bgWQycGdo7+sc4aFk_YKED)o z>G}BX(xLU?^B6!d3J|2u-+4KWfM)`V97g%t48*|;Jp`CG?uDr`6M|@jf7}g2f?p&1 z8v{NZwHs0ql#;dopK!ZSkYj_+?!f>xZ)6~VZT9t8Wwl^v*u4nAg43G8|GT5d^OM1v zLL=t9E^6#@`r~=bPI~d|=@&fe@WHl)YNZurz)M&Hgd~Q_l4JxVqc)jt*EqWS+i~^u zVPa$~0 zz0FN5L`}4$O~D@@p-dc*2A)>mlUsjAE&#-|rW*Dg_|^QUbHmVy^Mj7dkNIP#qsIQA HqVD7mds~=R literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/Java/file/EmptyFile.png b/data/resources/image/BitmapResources/backendicons/Java/file/EmptyFile.png new file mode 100644 index 0000000000000000000000000000000000000000..709e86a9dec5d189ec87701f9d52c282b7f69052 GIT binary patch literal 1764 zcmWkvdr(t%7XBrH%j*IGEhGviEYgVJa8sx}f`$NsR^DqhBHLVofKxm2vP-0NlMouP zywbIXKv6)fXzc?mK3FJ$Tu_lvSfmxLNP>#Bs}KY=A>rN)f1LBpoH^&rH{UmB&dHRd zcxT5AjsO7XJ-cJmtjJsod&ruLN=lZk;E=!jU=aXL>(+t<8k=a=qD?L@kq1C$ZK*l+ z)Y?SW?zBVzO8fwj$N(@AR(uY?rw9Olp#Vgv0PxKFw_qp^04RM=EN`FafzUz_T#CJA zs$-FB?hc0GxD^<_m&ZmTKiBj#eKA9TZyE!eO--U0G;W=Z}a9+&Ogl1!t4|Q1Lwb;r;Nc%sFj?$eTos zNate%*{p>)Lc|V)JpYOF7*350W^H;R>b0QT8QR6J&cltIoppx zam<{#Ct2vME(?9^mZMv*Ky|uPC`u73+C^P8bWzRU=@WPF5|4|lyrtd-K~f`6j~#-p zJqd%L?H-W)C5KKs8+jN_Igo1{8yzxmI8}PaI8C7*2%!>og?P;U7C_2MxoDBaj+ygd z*fqPFuF_sHM39-1eiwABe{M+0t1qRdC$%_s-llvg$)4enm z4S&yKdGn2aVT?f&cw-Q4$s)b;0wI`U>%q7<2d5MNYc6JP#^9-Lu$dNfB~|5;})WZlRP^+XdAU$2Pg zw7&BHh3;gF7Kf3h6B>U$|@?TAJ3ZW8ldqZ!wI{;n;B$o8F9 z4uQqQfm2gG;DLb;;6vAUq6!80&{eo) zV6~34&5=g+ASyf(jMj_jj4WA}wSN0_i%bGoGPU~s@v<4Xpg>LMA0z-f0BcVUgx9_M z5WOK<3?G*g^uTTJ6hPruVievdU4adCZ_b6unF`nLhJ|VK==lBalhUdxPu0W%Qfjw9 z*2}92E-QN#CBwtW}T440dBfNY;o)bJS+J% z(NPYqdBBeWlec4&M+v-bh?BnGQs?1L(5OCTYuezkm41Ch*2vi-tp>(0uiVSpPjfMj zXkCs8+uHy6iGy4CKu-{X%0k00!)T?CRsEEdOTxNMO&dq}U&$(X#&o>!KLF literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/Java/file/Form.png b/data/resources/image/BitmapResources/backendicons/Java/file/Form.png new file mode 100644 index 0000000000000000000000000000000000000000..a9b86f1552863be3ee6c8c3602e06ed9375f1885 GIT binary patch literal 1820 zcmX9w3z{6Q6j&ni(~nCNc|<1}VJI z%}{f!F&nL^u-bMVJAr<9D~vT=M=cf1?4CH4qJHo#p8ezZKIi=2-|sok^Spn&r#bP_ zOBTB?1^_IH*%6gsL)t<)5^QH)e*PC5IOXivn+E`K`9k49?Q;d1L@kFbJ=7pI2z2xGlUSC3a%_wEViRI}cam^^kpko&NYs~uj zFR|FXMJ}#BUuAszPXwB6xLOR^g9yMV^e|;VDaU>-^-QPVeUJt>=Ux;?#uGA|Lh#7U z9Y|flBq!~;%`-peAf^&7iPxnT!gG@~>YOJ+%(^7>%LkUHbpO#$j2DAp@{|c(g5-`jf4Gest9JA`i}Zl?L1KGB#up zw$m~u##7-jLn{1oX@+5i0yY@V!!Vww_*HPfgd!;U2jy9BFZMFerdzzq#Eq|vG$Q*6 z55}1U!Uk7@^dpNx{&`~>%-O>?>$}@bESB6z{SR58ZV4e_4!PE?gI549l~a#OqV)6G z5ag0xOi}9Yn!@d9B8@Zbw~il@|K}O;?D!%Afqzs=-E|SY*B$0W7tD8Qa^^STk>T~lQ1ieK9B5kfi zRW6aIuxkP&QxDcbCCiKuE0mjVw$2hI((6n_Sf7p6ZX@a#kFNg${moajy1l#0^wFP< zxOnOG=z>;(?uPQIt}-mabDaR;>1JyBN6-`6=Z_Z2&UdOr<>X z&k05!PL~?{|5XNY)d#@D!QF&Sn^vp5Psf~ww1tvA)?l=43?>0bnhM|7mn8n_XGf%` zc0JjOp3N|uKlvfmEH3%Qa2@%iHI2vNz-df@LeioUm9-#SWk%gW!i|NvDmKox3bV2{ z5WfF@ofIjeGR$U~XlFR3q6XqVLemBF(^RBxClBiH=Rqh6X%yjFPLIbElWCYL$O0Yg zeXXcmn*qb^Z-I@iDepC9YudF{Nb^xPg&8(T{_#^mXAWjvPH=Vgp=G4X&fJ9^op_b9J;MZ&M7m#>?qR+Uh~c9Y;gTk{1_iP=YAN9eh}aj=4P-1IBnt1 zEs2RMic`KL89@K%Y>duXX(N;3PoBh_e|z0Tw&upb+V_{(q#<2!x$)0?Y}tL2OQk_| z&1r|brkV)s9Qlr#n}ZlLAq?L-CWPvpXUo#UWbJ>f!8y`iIGc<1b!qNCS7XYHdTt2u z>^+~(Z90JmAVn}&iI!c?ENyy_P5EywE&`-54SIbIJomo$NoEtU`}fLQoi~U%w)bvz zx4W|4=XP?=B=Ja|ZO~X;I1{@}Ib~V2Ebv`vBNRPpX{mRxuJ+bokSwI7#P|OOtU>oA zRReDtR_)&s6`!-Vfg0#*zysVVqX=V1rsz%&jig3A{;{*cV`xp`Y`KwrXgW>wuEW7* z2*F`jEOIqQKSBKFJ4I!RDhPOf$UM}dT>4mpv)yNhnW)i6Q literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/Java/file/FullFile.png b/data/resources/image/BitmapResources/backendicons/Java/file/FullFile.png new file mode 100644 index 0000000000000000000000000000000000000000..65042178461d2d887f1fbdc97b96e95991cf833e GIT binary patch literal 1837 zcmW-ic~n!^7RC<=T&4>Kf^Z{KTr@?HApr_#uptmID3eH^RDI?W!{D$Q1bjqAk{FC2 zgCIh|2`W#alVTs@Aabo;> z8>$MMi0{@AP33NB%wO6>=&#w;a&A17*&am3=B~h9 zb)iVgmdirz?}?bEOh6Id?vkPlGxc3rccp~ECgkH=wwrQW-aFRlvo$5DQ~h-kR})Hj zEV||GNU!GUjY53p;_C2vP8wQ4$v`DUxg5tbpvTKsBL;78rp~cih^D_3p(J5?@HbF2 zJ$-6&Cpxa)iB8z1s~sv(wYmyL$-;^zNoyHRQnr~k{NMpGkz=e|?y3>QpXTD&HmGef z6oP^sA?2TJ8gf2NgeGpu&<+mtYS`=&-2FaM(bXM9A zX{EH<{$Dg}NpzXY7WMYZ2s-%wxO{%n41zN9l`*Zqa6E3~%XrbJrpOHb@d{TNc)r9)dLB{ww__jZ>C8L|5;b2n%O zN%^(-T-O*pl(UxB`e`tuLbPzJrAASb%BlBJ%(i*KW%fAC4iThj4fECt<)u(;VJoXe z+`UOfSJ>OrS%S@*po>%$Wx|;1Q*}LVzKn`FH#obamL@VFJTNw$Pd6wI|L$!Ok9kTG70gw>st0C1aiI6n zKrKG*F9;0m7%f>B2uvv@?d@Ra?jN2Iff;VB?On6Q-6aW1yr1d@&E(}FxqC>oh|%Rp zP?{FGkI^Bm8_$_~aaADLfF`7l_KTzEmKmNXQ6N$8UZ)}Py zFjArS+~CPmZ@yBGRC%|GR5@ab!L@b%8aqF4MHQC|XQprOh0 z26J^Jh0#ZNT&;{GO@?Kzxuuz#5&UEeEa)xdhYwTaN6%YeLyi83L06fs)xPt_&anl^ z=<|z6fk7lpOhiSsFQnz&s_=?#EYjlSAC(FnrzSJJM{AtitFh#DFP^}M87yee9u`zk0HJ(Wp~UB#^~nxCyMoiS>l;=<7W5i+ z-gy=;dW6++Xs$|LRaKTceeW1NH^WIqQ&UO8U}f_vYo!`xD1YAO&gAoDKbW(W!$I6r zrsf-pG^=FQ=7gOY^~)tVC*1UC=B_n&=ycU>^^Dl2RUHz!eN+tn<1r_^|BmK0)fy|b z3_<*Ms`nnKu&>nKAu2;q~>BPuOggVp6p9x zsNgU1eeGqS=TDh5lY3Xj{x53-7b*64=*yhkBCMl8NVIMDHAmu+RvhRC@JVC$uf{brB9%!j6 zDgGnT1rE8@c78>GWPzDT>z;MT?X49zhM6Yb`9!3=UzEBOSJYlW{?0;7JJD|!Z+#iS zY^XWjl5G2P5!yW{bBu#|4m@B|h|8q+4Q4)emq()t99pYEqs;C!k_C*tY_pZQP~IN- znxZF;Fu8Yffb%tcP?cqTO!2#nmMqmCR8P#lw^6!t zq)eS&Z~ltRk2fSVZ}kARbw{rrC!11~4#Y0| literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/Java/file/NewClass.png b/data/resources/image/BitmapResources/backendicons/Java/file/NewClass.png new file mode 100644 index 0000000000000000000000000000000000000000..1458d17a26ea9957fbdeaa428424bc4c8abcf4c9 GIT binary patch literal 2218 zcmW-jdsGwG7RDzD43CT<1%(Mh69lghxMh;4fS^ePK?@@FQLtDt21tBx0fk;ckymWQ z1|(KNL~MLsaYmc+0M%nENI-2JY)?8!1giu9aOpt7 z4E;ps2zwf9j5yXR= zuP>lr6Bi-P(NH)kQ6(~WCt#)uAzjp_DMJ4mRcf-^iwJyL$fx(=U&@kq{>kon9wy&3 z)NwS=mqh2sp^5Kbw3wdh_Zmje2J)4>bW}l?pn1fB5(6dypUen^@%i%+t7nx66~9hH z$s+NhOfZ@y9(t9E4)mv@gI|dIrz_C@{zE8A5h>2)HC8b4D%LXoc=(VQ%(3@f;%gGd z*9r_+GT8Jg6a*J}g0hit2K-Az8k&$OF?Zf;F@=ZA4a_cBq0ud%6HYtu$mb^jQfflI zRT|YfnFT>^>E(=?j?1RSWLB}3hR&ZSS+MKFPbHRDjvy%6DPyiq;TGgu4;pyXa7^=P z9a#N37OsJDj@3GT%rM%?qwiyd4Fz{>Plzd)Y|~~>E}>vAgUg}cpXI{6TL)+^#Q-_H z|MssJiI2=Th<58=&wIVY(T&P^Gf}g)xuBU!0(-d8jfW?4_6XJ!&t@wMJ>SY!qC8rIk%fE%O@{KfUWBRy=c*zM;rt8p16chj0ziQc0Z~qj~*qJ{P>GA_TY3dtP)!8sWV5` z%dT$AL^duV>I}xtK1d`ghi<$)4uN1Pl#;RxQZD5p4Sm|%Cd)_OVSTH4a3N+J`Unk8 z+<;ZneNfbflY{oT*@?HmYV*Q#a;~s9Z;NI7EVY*D?!-83{G+Yanr8m+IvDG|M!;Wv z@1Ck|@=WbFO3)hiAYFRdn~GI3RZvDl95nMt=O(%b=o!_lC2!G5zj6!hKf^{)_hk>3tC9v z7?TW;^dH_laFbP6pN7cfIta&~@TrAdeTz+urrRj`20NKcNL)>})G*Luq4; z)7Y^NExFNWdUM8mAE+pFHe6`4wW-%<`$@-lhsmzgJ!RlrgafY{6Pe>#t^m1gHh1mt zD7LSsW8zPn_|5wsy|$%=8uxZ5e3KG5i$;qF1%iCE7pFERRSAT`>F}C;@NX>x+G^>C z2r8Fb^Pi>dN<-9ev@9p$8hn$mw4pu57E{IAY6Fin#Y%qcm?O3PVQ;2h{qEBsF|<_$ z3GwZi{3$^kq|S8AR^M{<1*89^uFcADhlZ|DVA?qqDH%`XI|i+uJJp}d5k0S7oHU=9 zWM0)v_Y?SMYKkA5!{G$QD#Wc_U1+QFCCzPi0l+Fw>T)bBBxnuB>;3t8cmMAO@ru_k zK|)I3GBvQBgQc^pc9wHB;h3xaoSLllya&o|8@uQ-g1MAqrMaZfeG#EN*&g`CMY|2k z9EHxs1yzP%z~$?tvsm$WWA(`vjtSq>qS!IK088ZY&{YmW0Vx_W8j)9KaO>L6T4Me# z03huRcf~iI&m{c!`#%_k^>E=H+ijM5iw6a3PlU=R$GKKwylRuG(yci_?`XH1#93Pq zvCU(AuGwN_Dr`qiawDOPwgqd~%F3@8;hIX{RP*GZ6P6pCCA-$aLBqrmQ$~WEtQL#M z0I+#@^(W8bGkF0qw#iC{t1xs1EUx9S&%A$*A>G|_gReZ|%zp#A<~lmF8vKB*X?Wy; zoSGli8T+R%N1RIZOVxMTx%mO4(++;obG_`-!lRt^@+LziIr~1zrPRm%_#sX|3R*f-s~A*lZBtVd)8 zL13pGe0u92==o6s2Ra|7nVm+2T6e?U?_b3Tl3fs2m~ld-qy57?4A{X}Q^f*@*q6iu zcfWE%Nm}@|sVd6O^)YE@Z>&eq^%_Q*1HV1Xc56c~`=5#_ly^ksku1b&wnz=5qdY#7 zzvDyEvd7*eZAVb~dLLFX;-m05eP=~IFJ=`$=a&=2!+T#f04yz_y1{w3y>5-w{;vR5 ME{~5=EkjHH2AhlP&Hw-a literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/Java/file/WebFile.png b/data/resources/image/BitmapResources/backendicons/Java/file/WebFile.png new file mode 100644 index 0000000000000000000000000000000000000000..541b25c3276b3c07aefa0ed16be6fce4b2a07a20 GIT binary patch literal 2066 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 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/Java/project/Form.png b/data/resources/image/BitmapResources/backendicons/Java/project/Form.png new file mode 100644 index 0000000000000000000000000000000000000000..8f932f471cddb91df78feda551d243be4b411715 GIT binary patch literal 1897 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 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/Java/project/Library.png b/data/resources/image/BitmapResources/backendicons/Java/project/Library.png new file mode 100644 index 0000000000000000000000000000000000000000..46f33bb3b7f1189e7eb2b175af4522006ecc3dc9 GIT binary patch literal 3083 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 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/Java/project/ServiceProject.png b/data/resources/image/BitmapResources/backendicons/Java/project/ServiceProject.png new file mode 100644 index 0000000000000000000000000000000000000000..b09bc131a07bd3eddb6ec2a4de2c079857abcea4 GIT binary patch literal 1860 zcmW+%dsLEX8h^P6CWyFB@=+RKIa+H8c+18W2pYB2(YEpEP9>scnH5bX=9nL%B4(vo zYg*=Ia?2^lEW4P^8AvoNO>?F;D_6ntI!@v(Z}5Ff^T+f4&Uw!J+BToCf8=1`IlGWTh5X3tv5icxU$qf1SihZ>s6Xd`D9!I5uZe86s zcG;_XMKN`hq!(5vRV}4~A{W)J+OCecA@Av0VrA0Mfs4fLZzkkLZsp&xW+K$+Uh?(>wA#m;-LwM1tVR ze!>Rk#5)Foa6cBMM>j%-aR!RA`L$x)`Pjg1S)*_*zdvJ9r!kU7&cak3cU4cTv8S(G zfd00epd9XkppMgYs85YsXKK|n9l&X0U0n$&R)hOt#Duv?v}V>{eAvi*0x#iap_fxI z5B4%i;uFM@#GGK$-h_E%n${zsBD2GuTKE%>td>{J<&XMl=TIJmw1;@Pr>C}Sik*nZ zJYNL8lX2MrC)zZXb)CkF%lQUbisRN}7(8{OP1EZPvpV^`J;C=&K_v^N7IjebQPg~f z-W?h|2EAd8At=6~>*?V{v9C8+%q}(P1_sIShviUXd^3b#o+I!FrnaJGhw@fG!eM)H zxZrcv(Cl!|1&?Fe@*m|C6EXBUzsSHSoJ2iUh|Wk$=;2Y9Jhf^yN=LAxY8d7Ig0^W3 z`;ihucZ(G{MDh*2r{@(!v03o)R$k}+Qrc7`*uMKrToUT46uR|eosF3ord$(gtT^MG zJIKUm^Mm9bxbLj*LUt@i~=y{k)+4Rq5mZ3N9IJ?P%JJ zz!<{)ga3q999FSw-==37kpC@_Jv@@h0E17F12-y>IgDnL`nQ5F-)_v5qdx z+ceJ%b{S8m5QLw)VtD-Tzmti#b|#h>i?0YiE@cp+a6ZbHuD77_zO)YgP;E=SG!mcn z@F54s2bov()5BfSMR%>Nehm;ks`#8OepX`%$EqSk@nVD<| zU{zL^2btUWd3N@55wY0y2+4K|hSAN=lXeE{$}}IJC~=irvvg*Jq~yWX^uS*qJ(CW1 z(g-ryT4e>V6#C)|h(0!UcJC3Xk&~Kg&9UfDQg&4pUtOGHIA#5T8-^ zjq{t65e^<)tJLN)IP>!=`Cvjq1~+|S>Z0M#cQEdKW93c_Nwxi zo@<^h5>+wuz>|`=61IV$ZO!k>q?o$I`+sT!RKAob-?sLyIOu~J6*JJBuQ6?ru;C#P zB<|hH2}o~yE}iH*tnBOz)3}t=N_-~R>BK0JlT#U4p_tN-G~C^>=f!K9mGULa(vc)# zpM)9BPVJVO=-VyGFdUFzt5A@-bVbxCEEXhLIdxjx>A77pUd4 zNY%e6VH$mzVn;E5-3639K3>xrXyKRYfMpU*=7JR#p;-PSyk?20j=yGa;b7$=uJ;q4 zgpmW6w-~f=V9C?F4K;7U`}gSJDo1U@1iWt_vxuH%Z4rEuGM`&xW(v;k6qs|Oy6Umx zyv9XkHugr$2+Km+nrx8t7?*_8oYKQ>zaqrC+N%GI@dz^k%2im)RElzap3gcU z)*rV-I}c|pdbhl;w;}z6Xo}U{Lco-lxF1x=WXD1+@v)hM2^cJ$tJJ| z9{j9tw6gNtWScKb@a0-o>Xft83QIY6lfjg`rvR#x;#-doKn^x12(S5eB&&+``!JS$ uN%_)Y8Ngci`ozb@m2S;rT@YdTattVXyg={Z5xp!I4}@$97u9VREB+7EmqL61 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/Java/project/UserControl.png b/data/resources/image/BitmapResources/backendicons/Java/project/UserControl.png new file mode 100644 index 0000000000000000000000000000000000000000..96ee893593baef8f702cf65ff9b0a299ca413f56 GIT binary patch literal 1686 zcmWkvYgAKL7Cw0pB3zRwPPms>g37~+ngkdSW=Mcou@sGzDk?UYAW#=wLlhCD&?H>m z%DXBQEZDNFOc_LMu_&6GT&QV9!5J9Qf)FZdbqxlTN=V3^@MG`q?6bbT);`}pd+l=B z?wzZh+?)Uat9QjnilOB$Jw`&eNmNipq5 zUG-{r@>)wcfun6hxN@0GBmUzDK_U^P6?Ma~xIlrL%@;JgKEAM~jmuZVk*v^M6Mr-* z*%Q&5?YFhL4RMOJqe!m?!84QCG3# zbfk$?U5>^Vx53yVIn#!$i|9*5W2;h7l(v*<+07{NV+1JHk9G6upF(?5a|5$|u(m!oV#F2; zmF~Wsil!~$E4q$Bd#OLWFv}_`z8Ust9-peg9lZX&^ouM$zrpxUI|)6=3PXPQb11#$ z$kLszbJ*!*aZ3O;*Ru(#Tx*2FL*%K8HnTHUaw(K10awvWy(Cl@9}l&D`Ht;2)QXah zmA`9o=?fkQH$7X(P+CdMS6Z`p+SLj@AG&~==0%EJ<%|$o|(ttm)d?Xju)HxLwc!18SMW#BpV>i8nE?QbHf(lO$Q(R!(vpbsoL}))MdF z(bLAk#+}f^%zTAux;{DdO;M@NGU3UX_)1d3$#G!BArTB`XXDX`h|KO!`WAn-3jnhg z9rv7&#p)EyNz&2G-T3a^wto`%b|VifFQ*b`kR~KPJ_%_HPJ%Cm{VE#2WvMmZq=pbf z8L#1g6j+!&8Pok4P+ndX1Ss?zoK!Iv!Dx} zc@^kP&#QxoJ30H2*>SUeYIf^@>5ZQYR!H3teR$$Q0E-pDV6(mLO)m_enp8=jL>!ym zct5GNv$G`7^~1*FwMIkjbLjEoc&L;uR+#42P@4QUym4t*u!;H#EY-$;`v@5s8N$|H z2(Jn2Uum(wj;yAfnVTt;Lu{-RKi*lk!3kx?& zK7HwU(8QbdZ%C=}Smb%1Z`?FsGI@s(w?5Y*Vc{V{<*_;HwP&6sukng946Bcn$-J7e zfGr;*Zx?oGytB(FD+8yT9q%RG+}vW?m$t3{T=z)j&DDKG%1gwmHNBLMXQccm8oA*V zy}4DxN$9(B=z3N1%aQihU;W*m9<$5rI$${9R7I{YrR(Qic2-SyI=4=DXd7X8J0851 zxWW@7Uj~orK0A4Gq=L;?%euV>yYHUAGBxP1wyrMs6*UPYXw~>oi+FE8h02^&YlroW zryu3_PTgzTzb-g&I2!QPoEdzQG|>%uy;GcH*E*Z)AUVIVIkB?5ag{(UFZ#|!dbG@6 zuXAvxr41B&Q30h$iECA59S*T&vb)LcyoB+>LsHdV_f2GNK_$bk2q?VZLoZ4HOC(wSOPlto`h!bOiKab-10*7^eVA d&=dt*tKJ~v@;4V{6A$6@Q45a literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/Java/project/WebProject.png b/data/resources/image/BitmapResources/backendicons/Java/project/WebProject.png new file mode 100644 index 0000000000000000000000000000000000000000..64e9de6c2795acc4d02ff622ff5769cf81f4ebef GIT binary patch literal 2407 zcmX9=YgAL$65b>s32-2x2sx2Qf)vq;=7kE1Km;Y=3#jFSkLDN=iZ4=8L5w6JaEL{O zB2`3$P_f#U3QDV>)&v5AfUSQUwtr?vzl1tH|zaPN=V-&(WQ%-ZwKw`carsLkQ_ zw)1TP0QM1ruow$6=Zs9WoT(WZ?=4^>7R09lVCOVvR-m*Dwm1n%{7rlSuAi37M4y?9 z*e!_J1VDy205SytA216J18{^5zz71ssuBQbDMiAT^#G7xMuhRVrvE82VOTK!m&O8n zSFEmLwN`^vb!x=3E_m(lJ`lv^LTc^}7!E!mLOy)BD3AE;qGOc{6XgAM2v4Pg?$&Et zDA^t_!s4$v?Cr8Xp=>@M6t+OQv%0fm*MOg~nxxu0uvIY5Wxn>&CK35x zCKH!2N1ro@#G68l9#;?R-!U+Z9a4?p&j^DyD2AogA+Iv0TQvr|q0>@oE7wEUV$k)L z^ReHYiRfS_40oKO!@X+!C#Dw7?R|Ky(A%4M)Ve=eYBpK@NFp<9&o$ID?@MR!6Y!I9 zX|R-M675bvL`gXUQ)0rD*+|ogsOE`5mR9<2Fr=1MPUa1-)J|f-u(>^gw@8xSt~u*Q zI?U<{f1bu=2OewFsIEOWR9wi@ryX^PJZwdv`rF>_$(&X1|I3lMVj*AUiBXF>sCgJR zn@{iFC>VjCd5)MdLS5&Blq6(@ADGTQuWxhlWcZjf6sWtwP1 zMZSA(Ka-Fh5-#(_Zzul@6EG}y72yc@M^x^WGyL|a=Ntdvm+I{) zG;L;3Jn`m%PvQ9~N_O?15{2IUat8AC-46jP!ciIUA;q?1a+Cc{6H7OVnfaksVWFWo zmj%r0G*%|NEI2KTzxk_+`o?dTK%|--NhOA}7y19pWD;ZX%h4y^HE?-vMn~U3b#tva znxJTC;NU}m{8FEBurux*=@=t{-Ry{&y?nC*23R+=GKa5=r#lKuM_R-K9bV|$l|h{J zu?Ot3V@=w=*?$}q2RAW8m3MH8?;wUEC&%E&s8|`#`dqRbkeM#;y3LFSqPRt-Rx#8( zu8wMz{njcZIyqURblwVHRaHG#u&WU7OC`U62Bj^LxZJN^q_lp z9*PGa(}-zli_wbU^YFZRFnwg?bmEs{11CM5%(3*}4(+Twdue){;imZL6^2Rmo>r+; zW$*0?FZ{~MG~$5+i&1SZgEKXyl=UYhWO5}R#?R^helCU1Ej!7H+n&cU7Qugf0shz@vVWJsQ-k@4Me*mUptiVsq3%-|+$k#c?@NXs?6VZG3f}-{m z+mHK)0ME6348NhqQmV};Yg^!@uV!=dQ+z4|Y~8YH(o6sL6f7 zF%ollf}YMXGH~Jns7_Gq1MplFQ7T@Bxd(+F|^?rW#@dNs#&$ zNxuH!ECX6ESql+yw$P3jSI1^CMv=nowc5>Po3a_Y;kH#Od+zatr-c{8w^PQXMAVKE z#Jfvd^-#lX2Kyb?h^CevDcRLyzaEWWT}E&6ErZ=40$d{B+jx2^k8Cg4ELYCvK6S<% zFE2b)M_EGvIPwm9@)vRJjynz6dg9Dsq788&acK}9-T5|%)0X zx~B8UHgVgg?3QpUyGh118E2g4QYeQfE~H_UzX_e%bZ{`B;tz z{#@~D?Sbo`LIo{ zJ7pS7pF`IoZH)CGAVN)!T15xRt5=Tf()k-OuMkmfpSt zF36TaN*&PJ#d;89Kg6jDmNcH_u**o>4&FBu1Q+XjuJ9mJ!6;8Dl{O;%mo-tP?rZYr zzx1~h68#@q(vv``5j%nm_D{MlRIQW3<*5SP<#Mh;$k|Pu?rbp-+m5#)O$MW@kK)vK z#9B`BWAfW)QMPlkq6YZm6#Bsp#1#YQpe<^5Bzn&6r&-{j8YP1SH znC0`?>Kp%C1h?z`cPAG6E948Rd_FcS?7wL6)b*%)GZAFEHn(xTkr65kT~(WFJ^VDr z&cc#c#t&)L}5f!teuTN#?aFjS7$N(P1yE?}HcEA*E`4oYOb(_Pk Itwpl_3r7<=IsgCw literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/VBNet/SmallFile.png b/data/resources/image/BitmapResources/backendicons/VBNet/SmallFile.png new file mode 100644 index 0000000000000000000000000000000000000000..ae032a36697ed73bedf1abb218f021373f63ac9e GIT binary patch literal 1148 zcma)5T}V_>5dLniZo8{yTiB{;LI_boB|bz7Vyv_qDY_XHy;x9&5SS@OL55T$Qbc8$ znb;3YP%4<(gJ5pCQ4ktbFTwiIOIg;coBMbFnseNHF^yH z(_U0zOA}HIevx)8uo6_`9#q^V|4$S2eLGNray&*dRr1Nd0B-RuWJ!c9%Me8o60Nf{ zGiW%rSMSpU4pfQH=s+eWDEmp?3w%2jg+hE3RYmXM2(1c&!JrPZj5lhZE@WjMUk~I^ zVIy$E(FvKlC0QjFDsN_6yZfG@xviVa)EN}yA;V@tXy57aA1h4}SgeW2w&g%207Vrz z5NqxqdX5K=x>?AL1GwE#4ROHhH^AK2wP?KVgQ5^^=8QfEQ3(u?Ny^ZOhc`1I;qn!z zwKag(OLs~a`{E_ACfyD1q#gb_aGwcEq&tkRT3ZZEz{seFGckBy;bT=5Hsu$9v;u7p z_hYxqg>7^y$>tJd&Vj? zHxzOf8iPnU05LR;I}M8%EC%SyyM?AH7Y5D_Bmdx@dEH79&15y7iNuByvn3418V7N8 z>Jp5kF009e^YKAwx1cd-t=+2i&(A>5C=ezhXv1yP;{?5EAL`4CVzaOi6D!Rio4-u0 zX951hrN K_MV-UO}_!3p;##Z literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/VBNet/SmallProject.png b/data/resources/image/BitmapResources/backendicons/VBNet/SmallProject.png new file mode 100644 index 0000000000000000000000000000000000000000..69a09f63c3dc1026e4b72dad444d628a3cfb9cb8 GIT binary patch literal 1148 zcmb7DYe-Z<6#i~*u8$NSRJI0g4<8UIN>CX+v|VyZB{YNzEQuh<(#%pL2r43x2%;Y) zMp#mTR{pT0mz5A@VrFZFY1%`>rCr_B+}*o-?{sFaRuKJYxaXXiGjqN<^PO`mH)U@K z2{Hr$2(e_Ca>#~p3GgQ!GtLUg1Qus(IRFGla*!;GM3mp#+L9L*LOaKPprQdSs z7-Q(^9idzKjS4*cW)fMRvV&jgrn9I8A9Q}GCH)tM>I&dalMHKX z0|KH`c&G-z+zvc=zfL%&)sb?b?icCpA> z9ZzqBAW|XrIVUF^8Q4?g#y2}dOhN(*@=F9q{2U(|fJ*~#5%YB|4oo_2P`nK|7iwYE?F}eAVC(H!gGQ;}BP)y3fqBDnw`UQZ~ zJ}g?Bw|hj_MLw?Xx~v0$zw4(>gCQdminFvl^5 zN>rf?2hj~HblGbXv{U7!%uOW5Mc6T+_fh+DK>8_Yv^QVW&d_`#GFbrh!e5X2D}n>D sBDJ%yXnOijdmByCC`Q_q`Uwj1d+ws ziB_p1Efp&+)LPK7CK6DJxPxMc79vYgS>i|`knmm~_Q$#3%(>^D``z!Hd&(oiL+DGE zF9871w}wihaO5o-jf$^1`T5g0Sja--asaTjT{HqXUCYLu>D}IKBZOmk+>ODFB;J0l+%&O=3qd02G_8lE9d}KaNEY))|43fnF0zB~oTm*UFyHM+9<QS@b~FQhslH@Y)?1bo_-Uy6E*Yf)CH*^E}}7ksG7 zGQmAKEG;gNOJImvxuAn5)-)0G581_RfEYQXEL+A&5jV0^%d;zywfofdP0YgZAq`(J zp8Py1?^3y+Dje!KxHv%$P%Fu@q%2oCEg+ z9#EsnjPf*bB$jvAD=&1RL|J=_BN5Ux1rNIo*zJ z8qmaY7judS?^jR3>z_L_hHH{;@GBeq3)qqB9sCHsJaPKZn-57fZt618PV9w8= zW0lr`%utfDGo02f6|aGMy@WLmPhLX57CiE5rN}Dk#)YA37eCku@4}{X*&nZG;X8%J z?AHr9h3AcS@pg&^N?s2`Ma1dHF~j2xmTnpPHs2g#l*Q5i6BiP7^HWZ1WsYc>d-V^} zbm!8^K};ech=BfzCF;_Uw(nvs;o`wmQEn&V4Gm=+$LVB3X7L9%(&XShn)8oM7TGrI z9UK7Nim?@br&Za2C%{1^fK+oc(iozGtHxd^2 zVaSZlQTkuZS0prwxWp{2Cx5|$CM4-YcoXhkwr}NN0}lYONGJ?Z2#$Oz88%cdSQ~5DEVe)AS3gZ%&`9ET_cM zF{#mHvVH>9sIclCm${vj;JH<_CtF28I10{W!nkhClepLvB6$Q-#gtD1yt;2eK3-%J Z_@`67YyQ(4U*LljY~2zrxe_ET{trrINnrp0 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/VBNet/file/Form.png b/data/resources/image/BitmapResources/backendicons/VBNet/file/Form.png new file mode 100644 index 0000000000000000000000000000000000000000..a969fb4766ba0a8ce0349dd548f1ef894b0e6319 GIT binary patch literal 1490 zcmW+$e>9V89DlZVww2k&%HCyaH={aeYg{I78t3STa=bYy`&*$@fKF{ZQas&K*&DL&M z3ji?NEAtM*k+)h@GCn4zq|D*4MkPCx2!JVTwFuz%QW&2k9rfJr3BZGksmpyz4o|-Ie6(+v- zYq$ugJiF5w_jLh|lsZPN8`a<$Pwg|m%z?96KJY+tHb-p2hs6dyJb=Js+cutzB8QI# zYv$(WFasAbrGB-1sbyB?rj63$GBHJa88K{Ox{8EUpNAR!nWZROW;CLgMpj(OnjFz{ znqTyxWNQLbT5AnjdAoJ@h$&|+gMXwj6QOt(vsh{!_(IRK%u=0mP#AUwNIRc z9^nSlNszxY;^#o}EtZ;-o{%U?U2gB5$;!zcF%$Og(kmHK5SgSOQmZ*A7NwEX5@~&& zaYd+-nH#-35KC?nB+FK^G^O<%ZwXbG+SNIeAXw~Yrfuj-pz$ey8yC6l8|>3A$?l(~LwxxDd| zqtG;+WLY;2!*8EvRaf{Qk;>`&ZK}DTqh9E{vXUbq;mjx6YfT<;$MUc1y~dZ%QqeDv zaw)qm-+|JxsK#u(-U<3bItVH__+*iF@>g>go<%h%tI)EXxl9&aPhuk-i;^<6iV?~J&!ai^y0hb2KV&x_hQ z`TKmy!8u0Xhg|Q`69xFvDGF~qer$4qVOB1tw-pHE^Yco+h;b3sPGBqUiMJq=VffX;bOY3GDEo8pWryBt!UmE^B+V1u*GFdGTsWxeU_&GJnqpe(He1?N z^d#SYRe#|%b6~6a`t>GJOr*CgOf_u^RgUYUd!rR6`it8b_ia=J1U%!IOkd#(N3D*X z%To#mW{ahA;v*vi;>S(Z%~P&{0xQv*xS_H>#hu`5B4fU4& z3H+yqeVg&lKO*kax8h^AHvXM)BZN^nJp_%M=8*_hIWl=&Q&S!%KGJpz zi}iER#~3KhLqlc3X1NCJm}4F^Xsvi18DkPS_*sx8Z2mVd4NmjHiB*8g{Ma2x?6Lm- eq@)J`Qvs5S)>Jth)^YLw7wq-%_pb6%Wd0AJz;9>( literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/VBNet/file/FullFile.png b/data/resources/image/BitmapResources/backendicons/VBNet/file/FullFile.png new file mode 100644 index 0000000000000000000000000000000000000000..d951d8c65b7b47abd15b54046ec8c45641eba6f6 GIT binary patch literal 1541 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 l>dWXRvImaI6bP~1U^^Dkn~*?) zS`1Vvqo6<$t%}A6$|#yhpn@-a6|i+QplJ~S30Nf%?)K6j=X^8g%+B|n@9b`I;)+;z zwl5n1;J!RACYeNRI#@1b&dtkvLxO8g+}d0K+-6M&1sts8l0|x^0Z?fGa6l4Y0`Pq}00VLWKC1x0duy4jZ5aTJ`sFc_ly@)2YmuH8fN#z|tR_NPze`=O($sLgzRwqx;lTo*!9c7@e{Sb9UTDBJIq3ULGz* zCSLVr^`J#KDa zBN8UZ{z(wVaWOC}!$8H5R&&Us=p!$$YfK}8ZFCl@BAR_ zzMN&aRk zrZV&80o!)hWYo-gyPv+zDv~Et%MhsA3vtOCQISckBOo&!D#n?J+5|B^D5pL2^m&o{ z!iRgJrhE+8*JCS+9DY%ojhLBL-@}5yx1j;H{?FbN;xfbriO9rea5j@TPsRrIvnI7t?9G zc*~qc`LQp|Qs8jo)>HWiprdYYv*5mr2)bsxzeFwdaGQY0Fx zzB_rPdIZe1)cAaTlWt-Ziu4KQ#o7t4fmecR+aWch^UgX1xs=Vnee%=;MOOCbO!q1r z5#dD4Sx-zQ4bS&zeD9B6pq1+dp~UXCil#)**@A;B_^Io*wkEFG;k!kc$C}n6d}dj> zP+*_ZDZ&!7oQzC~l$D{lRV%%g9ZIv@*oPonpGAZ>?_h37sJaO{Kj{aUs=`_hmy8o4 zW#8na=V3SbT)%Rf+~sLOs)v#lqBY?sAH9OLH8T?%V+Y8ZX(Sl>xfnWoh@v%2a-a~0_ zZtl@=ISfefmDH4BC<0ztvLLNvJI^jE>|4u8HsiU@>^Vg+i zeXB)j|4-8B9iLAu)z@&Y8nqMNNlOB{D~zdL`(MLAfeg`};ieUw*tmTU3sa#s^D|iC zibl1;Sfk_`guG9x%;$Yi5#xJC7M-)TA;HKYb;ByzGLcar27HADk8AMBGDa_x=4gxIrALq)=HM6n&XTX* z7SRo%kfN2TP#5ym4Xa*tpLuvnGdhzyj*YmoM6}*mOiS8KT_}Im)nIkH-VAtDFR=#F z>H^0O_PXD5ntOpnyP1Ke!^V5!?qGIF_+)Dj4p48ya zFdk;Ri-m$V6SL)|SdRdzzO=k*Wd_Kl-~K0@^mbb=m`B2w2#xF^fF0XA_N!sR9rAYv N%a^W*IUOx8_z#JWuk`=` literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/VBNet/project/Form.png b/data/resources/image/BitmapResources/backendicons/VBNet/project/Form.png new file mode 100644 index 0000000000000000000000000000000000000000..b99e9c9608cf7e6a9652d82676b806ab73951f9b GIT binary patch literal 1621 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 D8;~BS literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/VBNet/project/Library.png b/data/resources/image/BitmapResources/backendicons/VBNet/project/Library.png new file mode 100644 index 0000000000000000000000000000000000000000..82ff52614e1c3b7a71444127ff76711ffbdb0972 GIT binary patch literal 2749 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 ZkXT*4Di%Lt_*w$Mj%|Vdzx#1A{tw&41~dQw literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/VBNet/project/ServiceProject.png b/data/resources/image/BitmapResources/backendicons/VBNet/project/ServiceProject.png new file mode 100644 index 0000000000000000000000000000000000000000..b889179070e83dbd76040721ee4d3063fb912d1b GIT binary patch literal 1577 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 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/cpp/SmallFile.png b/data/resources/image/BitmapResources/backendicons/cpp/SmallFile.png new file mode 100644 index 0000000000000000000000000000000000000000..db029658a0199805f763cefb28e6dcd064bf6d03 GIT binary patch literal 1148 zcmbtSO>0v@6g^L)wW)#9N^R;QZbZe6bRo2gttG)EXc6m21r@a}TohVV=t6PfuDEa^ zLeZ{L5kX?5Emjn4k*Z5K76s`KaFxW^m)JKS-aGG2FeZrLz+t?Ypi=#=Yi0+ zRQ%A1_Ndbw%6YWn|AzA?eCF*JErfui@J#j~rG)2s5R|_c3K+XGP{CCSOEkT(tc$}R zapc1wl+sX|113+uSfs4rx^9JJodwz~r7)$C3X;H*&_YtCU@(vD%sj>?vP271Dah=3 zWSTs|Bf24q-LLi&&@n{Zn|r;0sV7-3&8Sjve)+5uy0gnn^evt=St!R>z)FNhqPGX< z1_w;=f+_-Tuz9@m=fo2K;%jmVE9rOsQHX?((tDuC%<(5wse(c(i5)LVHZ5LBzejAg zi@-1{6saLwjG-1+OCY4bIB`I|SD@sU@v~fnSIXnz*k2XUD-0B9$~RAi{d21b z9c2r+$8W@r8U<_;J3aNrMQ#-)3Z%gOO~L)Edo8}!1D;`m(+3;P&PEM8ubSw;h4Oae xi)E;KiMDw!GauZ6?bOfwBI^?DOJDvc0;X+Szw^@5$+;1(Q;Gigv%U+re*tXDKHvZV literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/cpp/SmallProject.png b/data/resources/image/BitmapResources/backendicons/cpp/SmallProject.png new file mode 100644 index 0000000000000000000000000000000000000000..730b78d2e9e77fcfe3db6c0374915e72d6b33ef0 GIT binary patch literal 1148 zcmbtTO-NKx6#ia3H8sT_BptzQp#_y$2q{sijp-~jn_AQ^YZVj;x{zp95Jgmrf*@=W z1hq&L3M#T(1Z7A>|CE>!Nh3IBD$dM%Z{F=Y_q~yz7C~n?@7#OtIo~<=yJya{w>9Tv z1+oC-gj#}O+C0&v>HMykQyny!oh|#ifb2q116O*B>CEU3wKiqET^7hpFFX+Fx(k@4 zp3Fav>dJb3>3uT0jg zDd!FOBY=ol;(F@2$N{CP>J5}V3ze9Ma^~P#vj}!hncvRo#hXPM`^rIxL1f>JD z9vV+HfQm;k_^Ey|P!`8~fEORWAn$Sw)>V|@Nw6QA?uYTU^_lL#Z^{F3<5N1hb;~M! zMTC)5~o7Q6pW$eW|1;AI0sHMsCc8B(*+Qawr5|L{qdeBdCxg-p7(by>V$YP z)p4yO0D!tZHaZDYwmrxW*qC2jJdX(_FZQ#10G!p71v~%vwq6=EW%nW8EktnA4bLDj*6#S^*&V_=M5f8q}nC$W`wC&A>di z=5u+7dedy`+jUg z;{0tq%d;1mOYiDiOeC7yU=s^LXq^fm0O;9;b*d_+a5dpvUx)EVQy*>S3u|7_-iPC2X|CN4mLZr;?+J&l}H4b}v8Fj@A%uV5f zHZ-dKobcujk2Ke$lEHS6yv|Y)X5NhRz^;;#Pzo(~rb~y)O^>DVMHEt%bBw|?S!RJ! zMO5_zVkB@81orsaqP_+^Q0E}{$GOcU+7xPp-t+ojt^U(M1_sO^A!~k-wSGUhpYGj9 zG|0$>nMR5TCjce{mB#jy<8mMa_76kX*o6^4-wQ4ndW2-L*gip;{$jsI7a5=rtor292f_>Q)!yB(p-`=pQX548+ zG*;w=xeWV2M%VUu&C#yZ49Jor1&@~OS%&k{oZI+Y%L*+hlG&OSQM^#uV1{WFY6)P= zI+dWKM%{cKTE&%%(!&iG%7^$4(W+@XOulQnI(I(I;O;n5&hWOsIwirz>n1c!>bOY} z*A*)5bV3q;U%Z|K@Z>=pl$PSoYTwdn7hT`eg6g9J)@yQ^_uJH{>i=%#g&Ypu`@}X& zh5H2L&e^0XYb6R^o}J%*=hl};G9!yQP+Td^3|Wd>Z-*+2cyp2RE>pu)5e3FvYx=-O zs=b{etGe7Y^V}2Rm)aytD=W17q-w3DCE@27zzKHBSVOY2eKz!pOE=$3bi-`VKzOp- cDFBc;V1{!&qC_->eVG7k7sW?k-6kpf7YDj&P5=M^ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/cpp/file/Form.png b/data/resources/image/BitmapResources/backendicons/cpp/file/Form.png new file mode 100644 index 0000000000000000000000000000000000000000..033aa40844ef1baaf321eeb63edb65a9d5f99767 GIT binary patch literal 1498 zcmXYxc~H|w6vsCQIUs}x3W--z0kKsfA%a02NDw(i5i3PS2#4T71&auSX!0YOG>AeF zK>}zLRA^CwDUQK$NFZt`P^P0*@E9R-RZyWtg_vXe%S``x`(}3bz4^Y+es_ywc7!?F zFSQ2%I7Wnr#G;vH3lafca|#MRp^2OwzBdN|2NzplKusMT-Na`Iq6Gl7l@^+IRoE(0 z!(*cXDDVV8ECIj>(fkg8Ts8nxLI5^Z1K^f*A?Z;l0Cq7EA%gGoU#6HL48r-wpZWly zsC-(R>3?7sq4Y?UEJ$<)F>0Vi+H5jfn7Fy&pls_*kf!UCW>`ZX3g}>5N!;A8P%Z84 z;iE!m4)?{fksw(!1=9HgZ%55~VMDiec9iLcTdUhC8`iLTp~Xb>P|~f|Wa)mZX=6X$ zU-sL~5aSGaE$4b;BUA>N6$n|be4%F0 zk!oc{8B#1ML(Yd)BfI%Uh-7CG;wTqf>uvb4UwgF9{v)P{esS$^^{02 ztFL)%B5mPIrOH5ba?#Z?DHNwxDc}R-!snIpGKOF=?oww{-@TF+ZB^@B8<%v*-q*Z& z-tBKzs1TcaaAcR8nCM56yq0DLth?P*%h5eb>P%11?{GVn4oIx3o<75!9<0~LGbWK< zgd3V?^+kKV@~vwNq?Ed@^urK3PUOliPgilwUrla0wtsrMnm3)bnh;8r-|&6hM#;<^ zs#u2dy@*Q+-oXxU4d*}6y@1+>c{FEF{=&QdQ?fp47~O+0rfqvn?VrP@n<+1!w*TYm zPi!$~ER;OzVgVYzdH`$Zxj0x2%dhi0-ZE=8^`he?OM%3Hqi$yHOxNL}%Chsw577!k z-wP+s@UMIo{QmYc8KmQCp^*Lc7f+4+%?B)V6A#xFez5u>bvTVLk39 zW{)@FM&fB%6jgC(Bxd}e;^UKT@t>IGG-wU$UGk^Y$ef}T0+yJ)eAYC%lQ8e@O&PZ4 zbVu>>7qeGU^x?*sFG(A|G7%n@#Bxn=hSvfC14N3q^GWprDzEeWrv$MBYRWjG_`8OT zJRfeMd7&IpshF95B=f?*i{5h;p2ZQxAzm9|ytQ@!OUfY0&z>#fkP6clDC@|OlRY;} zqr}EyY`RA#=V!D9S4s>%m+)H>Z{$T@eRx-yu}(LhA)*~NFgJ81N4U_4qXTvTBjw^p zo~?23da@DhOSo;Pnnzv2riHnP)@K@(L|0j}evD lpjMzm*jRfY9>W)7KpJn299NaviT=YNV%v_8JHf)D{{ZN1j9dT! literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/cpp/file/FullFile.png b/data/resources/image/BitmapResources/backendicons/cpp/file/FullFile.png new file mode 100644 index 0000000000000000000000000000000000000000..9f85a9696e44da68654df1e7f2f45e2d8f3f8ace GIT binary patch literal 1541 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 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/cpp/file/WebFile.png b/data/resources/image/BitmapResources/backendicons/cpp/file/WebFile.png new file mode 100644 index 0000000000000000000000000000000000000000..dea47b3c4346d1c2d77f7cc46de528ac8d8874b7 GIT binary patch literal 1731 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 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/cpp/project/ControlLibrary.png b/data/resources/image/BitmapResources/backendicons/cpp/project/ControlLibrary.png new file mode 100644 index 0000000000000000000000000000000000000000..342633de6ea781fd2c5aaaf110aa50c11344c946 GIT binary patch literal 2293 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 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/cpp/project/Form.png b/data/resources/image/BitmapResources/backendicons/cpp/project/Form.png new file mode 100644 index 0000000000000000000000000000000000000000..68fa018c3d7902cbe3aab301d529a466457e15ce GIT binary patch literal 1628 zcmV-i2BZ0jP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ>(n&-?RCwBA{Qv(y12w^F{k32NnHU)M1YZnxC8Qo8 zfLK7pq*b5(|77{i!19L)Ecl1z9|QXzR))Vo2m;JN_>-BLfr0S{1H*p~28O>Mpt^zV zKR+Ne6v#9DV*t6}o1&l#%v>%uApaKw!w*JYh68)gG3=dU!3a|i5P-*VNr4asg6Ipx zhS8NP1&=uA@qBXzztPZkj1gv2A1JD-95`8MyMa2pT|r{P*Y2;6q`VVSa9xJNR^`&! zAeXDXXU($55u)QaHC*W=#(>C&V8WJqy!WH3exLj;099nL0x%51(9}{2{r@lBE^BLa z&h4^;5Jd7M$p^-G?H^z+Ke)|})my~bQe%g)%>cK&TS|B*HXRz8jB!FrBq@%?3sp+O zAqvw2QqNxnw*Ue=;M-3QhB-5LGO#fTGJOC44=%~b46*3{-`|*#$AqMgksYEA=vzHT zMsOs&d;gW;$f+9)6E1!Mh6f|VOk`3&<%Sk0VdLa zz(@s>z~KE4bj&|+F#iQQbc@ASpy*$q{6DZIptuLB06K_?LGI&MhVs+5fw3kDHb&{w zFNXGCKNxn1ZezHHWIR9sfgSLljU9*O5CcIOz{7sw~(vR(UoC-cW9a zpYwmB=m7{IMv$uy9z6Kp&dv@lc<9g}23}rXhL0aVGVt^Bqd3se(2!xx>NO0BNr@Pa z-fOfU9CDEK0CY4XB*+)AQsFt_n$#YNeRpr6%|FHIXHp&`tLv7 z#TqotAcrC&10$Rbf=r+?5~Pk1q7EQ{SkNs8VM$3zXnaHB976wvi~0HcGQ4{Ais3I% z?C&3l9LQlDdh86JE`A34lo=T3>bYiiLW8W zxjYjCXD$cBxpik5`VRDMf|Y~-0R(rz|9=qQGyMOLl;!?|Q#&}-!yJYOgXA@rsY5~p zN~Rzw2;0R(rzzyDB+kb?a`6hj;WF%+a`@6KJ2T)=>t3t-}`znK^qIT#tl z8Dzlm&IC%BKy!coM9l>N0mOn5{GdVuh);E({zY=cUzq$q zXikBM{r`tlcR-79@jO?9jx z01!ZM2mFNwF~}EJuU*5L3&h05Ny-Jt^$WHT00^}pp=017|00a<{ z1E3cDM^0pa;R)<7TF!vc|No=47yje692)=#Ah-jrU%$>kYXE7oqXK{c0y|*q)~(>U z0R<1WX;{1?vylNn05QUX3)ER)pd)})#{dDuNbSBMsQ@5=m>32a00hv0I{+Yn2HXJv a0R{k`l3)M8&E^{b0000c literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/cpp/project/FullProject.png b/data/resources/image/BitmapResources/backendicons/cpp/project/FullProject.png new file mode 100644 index 0000000000000000000000000000000000000000..5ee4433a57b69a015675c96f62b016c847476536 GIT binary patch literal 1895 zcmW+%c~sL^8hzPA5=q!YN=Oh8tcYO|k>X^5Vqm03iV>nhgcKNc5W$6_l7!$7P{c^F zqOt@E6`{ul+6ri92qY*LPy`%tT!|&jIZZp>6mAoD^nK7(bw&)Hp7zne(g+wmCszk1Ov6m5JDXsJhG27_ub{oa=8hI z(n+ncPzOVGOFqqJGXw2=0+y0NyWwiBirBZuH;4&4p>*Vk1PFEFf!}mxQYZdvGDUXx zaHO1q&6^_Xp@$dOVa^9nnoee6J01=kE4E4bn&I8p=n@>Cc3U2DdoMSs>+zeP&(~?} zVlwtZUBZdMC(KJt|4Qv|xocB9zG>s0*B*CdJq6;f?{hRCe`w6DURn=!O4LXescT?3 zhOi88c)iZwJ0dzGamPFce4Lth<({@{pTL-)<20!E@FH;L_}nGXimTvU-n%8jAZAVi-2(My6A)m=yKFElGF@y{IE=!)|zD#(k*Bi zSasra#F{~=mX9gb8kWgN`q&vP7!z{jY`0J~m8e=`t36e1xJD3CSj2rZz6+WeYLz#y zu?mWKJ+uM(kjSPUD@;#rgCwCGAg3Fv&(RAeC@8M;1bd(qhRurgC@za}(9@k7R_YoU zE~9B{nMkStrn;3#IE1}afM=>v=-|z2k@Zbv+K5zj9+vaQ7=iYj5&-3^i&)BKCtDs9 zhj^r6!>-fzK?y=^`Zwv2bQg@I>wC0ax;|~4_IK^VRflexY{jE@lMmviVe&CQ{bNBj zyofv8$1Y4R&LPRH5zX=vutv+~G>26cbp9I`e`8OR-smyrJQ67UHVFGdkPcP9lh%%) zD4b&EE=Fj!v7@q*9`h@_6}@SAQhb(cA|J&EcPqNhym^?KzVIAb;Nr0by!YefRoGyi zYo0Lp&0#IGt}>9ccJ12v4c^{88LxV5G@iorbl-9_F*=`h){WW))jPiuNF?I?U${!E z*oeGgKi)6`O$jD6HZ_??g|ETq?mL+x3Uyzzw%p(3$0@}W!4G^yG*7rR*IOr4x2 z93*wz;I**a)d%+p#Yx%oGoHHE)Y0mO%*JQnOce&tbS(GOD#hS5+E*-*ppWr$M6_UH zEd;#JnEea?Q|Pb3pSlNTTrRmdDa1wIx?cTb<=CF8B6+|i#mi^6ej%O0Ed+H&@hp>Y zZ=xM-m1uk<(V#IhN@r5g7dlzr{BCdGYg00JSJl3a?&7JMH93hw!vY*U*3}{` zysoNwI7~siGG`7Or{XIrDyW&6nFdFWkHV9mc0^`tOvE$Fu;p5%O@&%&4)4bRgg#$1 z#T|1Z~X2@Mw#JY9s)b0c#u``}hfi?4b@eN@w7}Hc~^1LHwFachv4l$S5ih=4>5whREnD)f}p`c|7CD-nr*mvQc)gkoMlO0*h9BJCa{*~OcvYQv&37NTe&`pa2+h=AH{`6yAix* zSL7B`g0mJ@w=ofzE#3sqm%es(cIDXr?N!gU9van7Ap2}oti?t0^_%(7YW=>3n$xaG zfXH`5O6AxCou_0KpBY|{GwNu$OLOicHU`QZ`JZ0e{oCT!FEC<4-BF)j7^Z*_gPr;% z=*39Qyr|IddX!a)vhCNvO}e3LJx@Nehwm!AWp$q0WS{Q-o@n;Vcqb!}nC1s0eX)Q< zz^q}W$m6uYR9WWXrFn!V=4R89v@f1*C0oMKg_pmZJY@UGyla<}&O4>^It)v(F$*+{ z$_x1Svt`OLS6UruU{Hw=vQ;9`LM`K1A>s~~kN^_zjuze+Ap}lu(p7$OytDnKu7GTC z(f0NdB^|hH`%}bT_1ADaPP4O(vVG5Q9W@v*-G2V7&K{Qp`F~n1_p90D2bh|gH%1C* zE##g%1GgpFBYhJz*_cA|g`tb6mHi_UiKzAt4sJzw+WF!EM-mFrTVtU7lkL#H1-`Ly15mG z)_&VotHFvbnc*dJi7q~D#Y`po(i)dCGUomCJl`MZ{GR7L&-p#SbI$LNlO4Q$tC7J< z0{{Sww)y*pEFZwz6%b=g)zc&>C3{AfV2Dn;EUM}JixItV1sL9J%+AB6lH_! zS`IDM^S}}^`7ncw)*09xE5kCN z*8b-q21_XYmCND7#~y#I6_b2t>>d#x@;_2}F6_qM^8@?ahC^Z`HN8MX)BXVd8h5Le zS96bg2iSd=*KW8wpw-6U85q(RiEjX~o0Knh7{eP}Pq1W6eO3mFnz%gbglZ1#0#PX!8p{3V5Q$>dlMJB5MbHy+Dr53QJptkAM$_7#o9o504bZ09%*d%I_ z#%vo5mZFQqqdn}bnA}s4&=^xA$^#q}Y)*|&xum6;xVJj|R-4-HHD$;x^rSmsBsdwC z&I+y%fh0~YZ4cFxua=jUS%v(GZpE#CKF-VGPMaLp^Jo{h>%13Ga`Kl~Sjo3`Uce`& z_u0}F1WM&F)xXB4cFtM|M7R7al|&VI$2WGlh}B^^V~U=DqpgL(@Z>9j$furYL+Zm_^~qWfuh zI`W}`b-Vp{3jHgtc0X^~i4C9%D%)M%c5!Q0uUx)&BdA-Fy#4V4_wt(Upv4~oa+Tc! z^4;5e5v6)+J>1@@<7Y+T#FhLa+ZeX1F zDPT%wo%LFnU317~nb+cql4!n?(-UpeqD&m`OF8|53LC9zaCPK+FvHWe1*&yOIw8V> zN$7h{hIe;|GBPwXIV!5mr7`23o6l(A>CYvKgLcH}ZT;FhaoF0F&jw++q&XM)aXo%}mCG{;Md>aRD3b zzCQ(7j=qdiM&S!TOpUNouFf)2R_$ZnID2SIbs)6EW#sG?eUzkc8SahsYIiR%zqAEi z>R5>dFt{{;PN#>@>TGwBs&&W-_|_oG%Hl7wQo0jewMz%vDqaI_N)d!K&?6~B zqbQHmZ;`+k%$dsW#cl1~&|eFN3WQF?0jlyYai1Q5BQ-g~iEqtGF^pZu;`wP)4oIYx z1w3_jwPN*WqS&2IMF!_zLm77lSs7*n37VM+Tcpl%k<#3ZaZntIq;1w2){{d|aJmiN z##2vyvERh-XFk%AC(jbdn=#$+Sa*?+_a)5h zMO3+#Jb?c{Z_=yU0@cTbK!`5&jMB^$N>uZMQ;>ADIi7ELC=1K%cry-Z1)CW+rX5|I z;&r{egU*i?F~7DbrpMW`^ItNfyaNrzzZRHZ*J*Ozrzd?Co8_qalpQrH>V-^39>kJB zi)&PurfA;M{CSnU5y!v{QAT7R7)?uG@>L!AMNo#|3@hW!U>x6;-bd4n8Oo{?;)c@S zed`kxWYly(82+8g@T-@e!*WrarY{icNpgo?PxVqF^v|(mr@x8OoEpP}^bbMsdi1la zzbljJxj0|Qjo@Ud+P^%2qI0Q~h=6I9Hr_m1InGCdi?4R6%|ok9^#QD&H5T@}3*B}K zQCK+3^j#JTxc|w@;g+4x7hM)hRI^8ZBqVOrhu6H!g}l+9DI-{)Kx{ESa^^7erEacB z)qOt_>Y40<2CY3~dH6!3q@*NXt}!hr?T6(hC`m*2j(;z{S?UNHuChd?8cLx(($e_g zSV3>f+(Qb%J)Sp`plzou`d;I5-r&J&ibTSQJRA~?PBYcF0u2_OK~o!s+I;Jw$Le-38u%r<|!J++7$J8jsdy7$CnD$tgo) zzf%4gIoYM?>G3=tY_{xWL*!>?qYW3Ep%cw7qj*skQ69&OvsLdt9wd~{pP(e4xtI_f z`e!`<%bXSRF!eWb@n%C;bxsXSmYT{K+T_5L{iJ63PrX27Cp#Qqse+GoIrb`Sm$F-i z+b8F*y!bGbwG9L?ZEcGAO5OYW;}Cr+o6-5`5tA_s?yq}V4N39GDQ7b9p@^q|d?wX^ zc~Bk_djVI7X}ui+g-Zp@Ed5kwr#i*83G-=DcN$1D87BMkHRQ}@2BVanR#GtJt4HEE z<-9u*%b%ZG2O{Zdu&E-zzW!;kXi02<RXy+IdOi3g!E^xXC=P1dV}{!fwut>fHp!%k4(2R@LUPyxrKK+&f-#R!M4^Jkhf`zSl;40Nz) zlafKIn0B>bH;%4zIvnwMuIvD*_r^$ZwOh^(_S(+QRS~JV7nPA0_lPphzd!%!a9a;E zv2YJ&PI`3nHs`yOzwRII8gy%Y`2KroPy8>VR*l^JZE4Tz6P@KPi@{)LwgJzhnny+x zU2Jguy^#F;gTFoNQZc0S{#VGCOP;aiA;Js8Uytp!+)m8W7>7Z3&+fRAHQ_$qP1Qx> zIRAHQ23&W>nYk{v2#MFzow@=3gQ>gQY1jtA=b;9^b7&ca^pGo7s&N`lPBzpIs@rO6 zeOhVLyQ5=c3;lZz!K3%B9V@BKka8SGUfsWSZ!FdrH$hd{A;KqdP!o;k7C8{#HL~o` zySTuc3X{yK&NOAC9~=@E@}N`X!K#5I-E_KcQD_LzT_AUYNNuI)`NL#v{#Lir80Z`x z`{dSo?B8@Dt5{o*bpgwcLV(g|w&iOd%_9au56QU{@36-*HE*q;QfW=ZON!=$LU zsg;9g#X}aiCL3|t!vYkJfk2GdVAw@FkIx-f=ng}r_yIf29jO7B+EB?mV)I-s=8$n? zJwoU^;~u^@iBzz!08=DGypP3dGWQRe+DunXZ;q`P@J5$3dhz&r$_%6z^DV!}x4^gL zq9LI+tGbkm(r`v)4G1&|5u@aLP2VMQ>glwTmRbJ?UgKd&UxbtXh%dleUMO0}2@Ir~ zlgy4PneAa|yWDI0uIv$>{9WRTY1-}fM2 zRuppGVrsnBS6FZ_6}v?E@|Zk;i-10#S;#iOhPBMebnQ>~Y5gkEeABhjz65+6TcIBi zgzXS@`FT6`b%9{FX?CgIXJAGpeTJdc8-gfjrr67E^dy<>Eq%Z0CSbBcE23Y$Sd$mx zi1)ahlbaWzzIe5)d4V+C&2xnkWyo*)ykhA6Wr@`R0B{x1!=~;cI z7Kea@8FU?^P@850IH{3i@lz(CFl8f6ZeO5(SlkyUc* dr8oq|fsnEKj|~a&laAL8HpOg{o)*h1{s%iVr~Ci_ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/cpp/project/UserControl.png b/data/resources/image/BitmapResources/backendicons/cpp/project/UserControl.png new file mode 100644 index 0000000000000000000000000000000000000000..e5e37a21a971ad094b2cd9c159671abb20c8c399 GIT binary patch literal 1385 zcmV-v1(y1WP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ=-$_J4RCwBA{Qv(y12w^F{k32NnHU)M1YZnxC8Qo8 zfLK7p!Gi~>=8FFe{}@1qv8b`SU^92ah7An;{r!wEK0p9E$LI(^7zUwu*N?h{U8Vat zk2C5Jfk@-GU*QsXq#lrjIp+`2$o#;vNUHoy7inoiOwf}gZaofd=zGU8hHv40mXFR> zX=_(RoJ+p~2<(9WZ0xwa14REpZUADCg&@cL133lE2Rq~+jQ$IC*k1-FMkcV@|3C-* z{r4a0NRa-&7*+rT5ZD0%K-Xfk{2$oz{}7*oLgF7J6xOd^!|>}breSQ%%nXc-Y+!xw z-o0ZucK8T`^kfBKcrY@s>aa5K6mc=Iva+J+0SF+l13rKLj3RjG&>;q1US5WeA3rki z^Yf#~8ygvcEl*5JWLT-U8fe*HaHxPR`43G4jKC0Jc*MxS)C&w*Hi*7&m%lN5?)t>= zQ{*R#T>t^Zf-U5gl$5}1wDFuZyFnnBP=5Rx`P{{9Ch89rY4 z2zCl94+{gAG8e1jb<1ytTkBA0P-A< zIyZyybR&k{Mti|>OtL^nWw9_^*nFO$udicKxPSjXxaj@&_b*%xs1#IQpa@|D#ZH|%g@_JDNWu2=Cu%ML2q2^oK%{g? z4uGb9pauV77Qh{YT=XKzA?XL_lz)&k0E%}eunRED0e}DkI{*~l$XN}R=V69{4gdca z#p3_Sq4OWv;n3^~4N)d|B7|V{5C8}ucu|b%04V;891{N^K@Li!M~>pG3t-}`zkybB zFfvFpD8REL2%v`mKmeg+LzrckFJHl#3nU~ZapnT7ARbY_FklG*fB=F!;4d_YK|aNo z3*NkWMNxwVJp=#(2$2i^{)fjS3kxf>c!j0#zhM5CuV2AxOw3FeE?v3^Ed^2I9hMHj zX@CKpmXeS`>e|TXAmSgx&R0seB5RwC+ z7X62&^uJJ_|Al0!zi2rFk=>w0Hq7U+3XMnr5I}GTT)%#ufz|-zKy&~QKwt-K-MSSV zH=y95HVun+WHvGY2p~pSaDiH?40Hsrx&R=67^&ScAr$}w5EH`y1AqV;a0dVc(11Gt rAbf!<>A;`Hm00000NkvXXu0mjf&+$Vn literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/cpp/project/WebProject.png b/data/resources/image/BitmapResources/backendicons/cpp/project/WebProject.png new file mode 100644 index 0000000000000000000000000000000000000000..e826aef927c4f7b5f8a7e9d26f7101db47836e8d GIT binary patch literal 2129 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 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/miscFiles/Icons.16x16.MiscFiles.png b/data/resources/image/BitmapResources/backendicons/miscFiles/Icons.16x16.MiscFiles.png new file mode 100644 index 0000000000000000000000000000000000000000..ef779d409f6be824c8aa9055f09eb55a10766c58 GIT binary patch literal 414 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9EWV9eN~w38hu$dc~p z>&U>cv9IQL;A9|QA=x9ymw};5m4Tt5nStTwe<1ymfuYoZf#FpG1B2BJ1_tr`N%2SB z7#J8uJY5_^DsCnH`TyVExw`syJ)2U)h7AVJQBhLLn||u&y|Lw`fpbK} zjsKym!w&K?awzOz6cU={vg4rvbAWM|A_L=*BMwRoS#1{+@|jr#xHqX7=x|7FsQjGP zcDSA2xTLhS@h4DC)4Bz#yk31_1}18-F;NUY=in@aFl;>mPn$a$r~}apB4pmSam88W@}mAN>CQeu?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx-l>?T6(%ThE&{2`t$$4J+mruNe5P7%*n{POraNA|g51Cgf%1hK4t>7{?sQGz-@0oX(fx(=86)Z=XJ~J|L9Bp9d zw{tKpH2PEVTQ<-5$hGwmdl>{A3YbM$rH$vqe?EDf;|2zb lM`j)iheB7evO@zSLrX*wN1AAA4=}(PJYD@<);T3K0RU+3nNt7& literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/miscFiles/Icons.16x16.SolutionIcon.png b/data/resources/image/BitmapResources/backendicons/miscFiles/Icons.16x16.SolutionIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e3db9ab477d0fe6917a31c8f560cd7e449c0ba GIT binary patch literal 834 zcmV-I1HJr-P)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGma{vGma{-JZxd#9M0;@?xK~y+Tm6G2}lTjGQ&k8Le zy9(WCu_m&}i|{7>3xw_he=NI5!JEV@LA!8zF)34ilJm2R$N1}WDFj#u+raba1olU0+@gEXW zbXG#ZACpA!F;O_rkb^53av@$!E``sLlq5&4URD*^g13u&%ReRLo#}NV3gFEFFcb#v zeFLgK1F{dm`A_ZN~N+;0`euCyacP& z!XUX^jtL`?h%oYAuNPZeTd1t86ahw~5%cr&OglF>L!AU@NkJqMp@I{kZUGVs2`)Xn zFh2n>P@#B<+3aD#gpfTS@pv53XcX(~>%80TX5~~=REQ1?1_PzKs5k?c%K@j;iG>A6 z0o2;shPAad_greQ?FH$9I0gr`Y)$Br#bTiyvh&l^ z)4bVi#>U15R4V!$^A1*4zGHWn!^DIUdi@k8C!e9ErG@VE&}tvBOA~^20Gpee3|w7Z zEdp#d8~pws$Yc&NK5m4;&<~So3XP48>|keSJET%6%FD|klgZe>@CHgsN<=_yZ4Isa z^rzg{*ToK=7HmVUR->ciJ{lVCpsDFDnwy(YU#~`QZx8C~Zv7MR8+#B6R^Jx11^@s6 M07*qoM6N<$g6h0!?EnA( literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/miscFiles/Icons.16x16.TextFileIcon.png b/data/resources/image/BitmapResources/backendicons/miscFiles/Icons.16x16.TextFileIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..a2145faf1ff31aeed99ff5e548029b727c7421b5 GIT binary patch literal 425 zcmV;a0apHrP)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGf5C8xR5CN?ty>$Qp0TM|>K~y+T#Z#eD#V`=ea}Njd zeF74RMLvndA|oqfBa4fSt&EI}jf{*eGPughBYSN+!xWfd5WSh5OViuEYq~j+(Bh}~ zD9_a1&E;L(UGByC_9D(VZ>Nm|frenOl*5&be4s%;E^GD5SxZS)zfjJZrfH(a*~l># zQYtba5S*c2NeVubGsuAjhGC#_9QOhsLPX0a?!bATInQgR8eP}%6uSu^;8SAqhDwA8 z1X}zm5YqB}{}xb6)w5U-LO6JWHpOvgaNGnqeR$wcKKNp!l^kQ_UkM8vV;J9Bxs*a7 zCbG3qX-%?T9sthM^||kRves6+M?&q+%GiL%opapHd(XwG+8g@-I)lvCUT^UyyiuxB T4DrXj00000NkvXXu0mjfJ<-Mgq!2_Nyjv*HQcY_WJwkYuQs0L0>t?++y=>671m&+=iZF

      !1QdFfD1SK0 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 j0niOT0FM;7UI>4m@<8{zd zn8?SrR2U3`ZkbM9FfganL0S1I1T9;bAR-_NNHgt&p%nY*+pB+^`%BI__uSw4os(NF zONiUd+R6d|Y>t=4BvUAG8k0_)g~i3I6u2s-DTM&Ic{&XO-?i{4CoO01!My-nt1Y!B zedD~5DNQ~IK=F0})D-}%lN2ria0&&$k_JF%BLLj|uND2V0KgmZF?$cICNl_}R8}1I>!B;2KD~T~#EZqeN z)V#m^l`qz3$UGq_>nkHN)6-7ahH(3M;Kd7q6^tab#~k*x{2Q-2tt#H94{r`Ca~5}2 zHi>iQPSGNPsNJn}Lz^cteerRPpe;y@b`}JokVxzs48O$@7p{oV&u~%4GE=N%Nl_&p zk9I&J)1k1*0p#|;C1h!7iCmUY92%AJ>Yen{UI&aQT)x3idCvE$h??hbE1t$O(^NY$ zM+{kd?YIYkG!Gyd@|&0CB8ln*l7+wnh@~pu@I!(9ec1Rgum-s`QN)|hn`67G!JkS) zL~h2bx~v@|KkW#wOdcR^}%8Qx|XFJzsS4kgil^u&D13JQZt?ZalgLRbChjyt`QA^#U*3a+qic55J7+vK6| zJx`N(rOlDDUAm!5%_3vJqB}cVb(33?4V-x(C-{v7&3p%KNd1w|y_l~SP)=H=v2_Z# zFr!z;&3wequLTd$rmz#UqK z0&E}>q=(F|CCao$$ZR#;xAMOf#C>j3Y?G8yhNdqE5zi*)-k>PyY!#`ZKB9zWX)52?v}=n`eOD=BV3Ma$f6F98Kp_l}CoFn*68wViTWDY!Mce+w1OS6Ny=S zXiNdZAjtJi(t`8X*Lb6ox{kx_t3K)7CnC?hO&3N{>Y#qOH5h&wQ`N#D+xuT&Be&g8 z9wBoyK}tYrag0q2COyn>TOf0n>#ooh@ib1P++Vr)$L`)%L<~28-1V!9kXwA@btmI( za$flH?p_?8*hARu?xT$Q7NSk|Yb-#;ZkgT;Cz~gIPeofS<|I!_zF2GHG!PiTpy_dF Uy7{Gy`ZPfNzJ!=xqSDI$2P3-koB#j- literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/miscFiles/Icons.32x32.EmptyProjectIcon.png b/data/resources/image/BitmapResources/backendicons/miscFiles/Icons.32x32.EmptyProjectIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..275c2aa4ca594e676bdfe92be8f50b87ee5ecc7f GIT binary patch literal 1018 zcmVqdw*N%HPqJ5PUH6Y&r_MQ5<%a)xH2~lI@TdFbf#t9OU|5Q7SP=vOEiHZ9 zLbC&JApS_-UT$F6rM+I`wQg9^FAvm{J*L3MQ_cTpc_9S1! z5PMjNWwT-M?i9f1pZvnt-+g)BB{nh`AsL5|L|9lt3KS-k7?3pW5{iKcBLxxS;o*CJ zI|kr&cOf_!V}mU$BMTvHO+h3=G20cw3PK)1rt{;q1o-%7b2hjzwo|5d`e8W*ADPIE zSoz!|Lor^D!k8phqkm=qw%hHQ_=b}8n0X20DqEL~BTG`wlRWuc7Jc8J0yvf3Rp4}3 zJ^`aluSCfB$OGkw1l$r`*IftTF(97kch1rxBL8R|B-3mZF+M-PpS^OG0gpjB$#TlZ z7IqXSGN804Ns2V3Vmx}s*BNl3TN3~qIZ6;KlA(@hcFxk144FA=s+zM^03?kI^_BTz z{Bj0%<#0BeA|>GZeq!t*0C_^G8hK_RQiiz%<3jCcL*~yl1C}p)z%~*{R6vf5cVs$+ z$9vhNF)!8JJ4zK@se;^KQihZ9;z;NDwJ6sVQ?n^e%1W{-?cyo}^Q@-^6GhvY(Oh-7 zm;+U=l&Y7cfpVb=?(Xi+Q=BEJ-K~k{s5+c9H=Q+^85xlbc$R_fc6;90wZ2hLxinmg z(PGRvRJ5MD=qSUuE_xuX3$+^pad+Lj;%GK&~8PV|4|3hG_X9C z-udv?7%08GHdz#d#ZhHU<#zOcArG{_xe9=%r>B4YCFJ5TdVGAO?|Ztg`^WdJd;R(3 o%?O}v+x!3Wl`OxQd{`gWU&2{7-g@i0mH+?%07*qoM6N<$fKaP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZRf-#f{`#c+~=L5u+LE?7Ju;qLmNN!B7JGU|XQs-j0`}qvRpFb=N0(T7< z8iLHB79t!1vYZeA2q2PkLDPwThGzcca0bRtP7LfEj0_UY5-67c|M!ESnE(MqQX23#VPs%>@|c0) zIWYY1@iQIK99C;ALBpTZe@lw>h{j+`*D0e}EvA|;$8`0-4Nf#WX+ z!|%U;7|d0lG4xg1qgYPJ=P&>eKrEzK4m0#%qZwLOlgAzB1RMeoKrF;sjtnsJIgU90 z|MxRN{{aLL3n@OwWjQvVgDhucB;2|K2p}d(eGammk%g*237L}qJ54W-(a8r|4pzw00a@0?L}_>LPgM0Ro5xZ)*SlgF)3S0(S|A zE6zba2j>!?+`r#=9RLtOc zatQ;y06+j?IAHBzCWg0f-_p$i00D&IfbZYGGdz6wkZukD2rvM<64dH0omprA0000< KMNUMnLSTZCtH3Y- literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/miscFiles/Icons.32x32.ResourceFileIcon.png b/data/resources/image/BitmapResources/backendicons/miscFiles/Icons.32x32.ResourceFileIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..e1643e27ba96dade497b5ac2a0631436d90effda GIT binary patch literal 1361 zcmW+$X;4#F6uwzZB0L~UM#7?rqO~(Z6Nr?hNJ2miRWzVjtyO{;B1OUtE#{V4!g+b;zUTq>tyMWQ4yED(TOg)&q4xg|u5 zAR-Ka^bG*Wa{!n}u{;LA2{r)ZA^`kK0B}euj(QM+LDiwbfqT;W51UbxOYq!xY667= zM!8Z;8w^3P#f(?LsA;(aI={#u%tYnh9fUK3`cTUQWlv|fVYWXSG4}~WNO-`M(|cD- zKh6)L@#|3G{Y-OAv`B31G?=uknybtYFlx>_U@^@lH7+Qo(&)!t{-u^m-nb#99Lewr zA`f_6v6e07#rt+-B%Wbbd2-l_WKTBEgX8Q?aHVomK6tQ?8$9Z#DIBSlfGstIvg>gk z9lQPeA41I!uR~*FW9YOmwnK?DRPIJPN!y`f6S5Z>`zIN+9R6#@`g9!}BTD-`=CSg~ zg*@#FfXf}g386c*@fwt!&-5K-?SRHlCn>Kbo3;>CFIi`xrsqGFVaDM?(|a%Sks8x1w;>R8}6 zDdrh>(rV{elD+pTQl#}>qz%3$Az|x}1L2Q3;u}Sbtk(2JtD}Y#M8Y$Fd?Y~{YPzA7 z=7VWZm0i@Mgkys0c4+vrh&=CdD41Y#thDiT^kn5bADevfb{VFt zbQCX?zb5SVbNl0tM`CP;R2%#%wPtF#!s}k%KT)qdhZ)uHjoX#WFky$}gL?gl{GwFf zPVUs6>z7`%Q)t&9UlAvn_;5hwxfy>NMg_kz-E`CE?KasSlu#OagJ~LJiUEgd)4nDZ zRR+#E?0w8Xc-gIgYom;(C>PQIk=k=t&)CDMt0QNXvAQUu86}mlpjU2(-GtE0#L?q{=zqU(;M*3>GI4lUY~z>kx;uUv9MS^ilW zfz#ZautHU<%AE=De`U$J*bQMK9F3ez(ju-^t?z){0%NM>Q;7v3&%- z+M8d{i3m@iSKJTqm!1&=&XwU3*5y96i3|H#d3&%@p*ug{2A?>E2pQ!M60%_neB$Edb70TiD@?Q5S=Kx}Mu-S8*+<@7Bf{6*h*JZ8MNj=j!+NC!TgeqLjC(*XAU OfzYixgKzRh+5ZEp?`tLi literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/miscFiles/Icons.32x32.TextFileIcon.png b/data/resources/image/BitmapResources/backendicons/miscFiles/Icons.32x32.TextFileIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a8e989889e508e7b48f4817c038d6f0a7355998 GIT binary patch literal 1249 zcmW+$eN>WH9KP@(ijwkm5>4hS+D6S1q*`v-i{J-TnpA7rRw86BPbc4D?JzT56wz#^ ztd?18Nyj>;*;Y0?eK#@GEZuBnt67OOtm!JzK9mIBz4piNKIeDOea`dT=l;&E%FIZc z5f~l_0GOeWC$Az9o~{5Yu@)51iB{nJfN$E)doT(|9Qtq2( zXymKX0VtjgfWZiW8z*oWfbBv6MpOWNTn|8K;oh8%RD$}MA~|V|u3zoJaRiFb+VLF6 zmOepHUn@qZV?GbL1;eLkp}5-{3BAlIzhuYsvOe6`Vg2LA@2*$;Kx>2u%IMB#`_HJ*qIoQorG>unD0uZ)En1NRClD6d6-IfN4}Zfu_g0 zvCedl2}tD+NSXBWoRJf_uo6yq61Rdrva8T~Ogohb*&fAJ(=XrO#vLel985C+byDc0 zf5wWR(QgZ8>Q$403tZhHs&(M~(q6Y7qtF*#K77G^TtX5Kw zvn6TTqWF@jo4qb$WtC&btvw;l_aTNPi|3lK=cppY(Xqyq8`v>jWfd-47An_{Z0bSB z4xBz1w&6v`kuX3GI0;$*-eY2K*=*YzLPrc|#@V})76_b}*WK%S*^8iS4BeD3w|S`4 z2|I!~l)ql$v1Y^8&Wgl~BnqPf(tAB^*0#28P@USmvY^p#ubt=wa3 z@~a%Nw`TDGVM;c5y>^t2*DqEYBNF^A#2Jrz5=cPq;=$1dM3q}#_@HiIq~G#G>0v&m zU^j^zkU!txmy>+~q>^QGEEeU<(1dbdl+(vTN$*$_D>F?tQk=uwVn@hHHHT-K?@*Q! zO0ko>)#iaCcb#c%hpDS8a7x6qJP$NI_et+a^v&R}a?^K%Dy4Bvj8Rr5;Sf2$*vpv5 zRVZF}T{L9|5Iu17`c@NKLX55J11Y@W z>>iKc-?`CWFo-wUl-J%9yj5*0nKcw;SanWwl865zFK_2`5R>aL;7BV_WXNUgtIW3{ z^Y+U=jUnY#5W2rboDH{qVveI>v%uv~SVG!S0$JFvY zwSBsj8dk~dY0h@*j}x~kJK}rj$z;pWdA;MAUidDs4VXH2Qs<`HLR1f2qoarb1q@@!g+^d>m$N(UqeeM}+nz#M{@f`t0N=EW2sjBRM DfA0zS literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/miscFiles/Icons.32x32.XMLFileIcon.png b/data/resources/image/BitmapResources/backendicons/miscFiles/Icons.32x32.XMLFileIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..dc585031496cfdd99d7ba4d9b4c965b5063ab5da GIT binary patch literal 1641 zcmV-v2A27WP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ>-$_J4RCwBiiopqhKnw&ocY=s7i?amZR%R9Ua2;F? z2QkSi3gXXs4Z{dYeAx;)b#{BC3{?aDfKeeP@7J!L{rTJjK}V7d(}sQ+QOk~XnFT+b z0*Dda0au^@{jVnS4@2RPe=I-?zX2`#%kb|XME>WmUvT+fKYzm6XW#KK+`4m*;m*!k z3^QlW#Onxv0AfNH`1>k4`qxQn9Q>9Iszbon250$o8`y=*>Vv02BdGlXJEMdg^^(wn-0TUP23>? z5I`6X`1j{GPG2Ki{_{6>%R%7tw_gm;pS)*afAfMt;LSsZN1wSEI8;KhIszboSTGy_ zOk@lUtOR`xvJ~bBWXnOo+fBMh_pWK`b-@fuQ{NQ0?c=LmS;Q^Kq00xck52L8WqvG!0b$1?g9uPths=djSU`@ zAj_AX3J3ds`RTOH6tE#j?|cTQ34aqt2Bs&E85o`e!~Y&X1LL#3 z3=FSc0I?~9%%^Y$A0=6^-lrcK7=rZYGn{;o2zCrU01!Y}9RRECK;X`6NJxM{fv+Wl zuKa%nmM4#ZrJN80>%CY8t{49q#Q*4UfLMMkTH1|!;fcD3><$sfNK6Qn5#ZxNKQximRQR{03d)c9KgcL z%JBWi4~E~2+&DGO$aRC3kPPrRM-FOYEQSGq0K$lZpWnY@Ezz)*YS`kJ6w5&XAb?m1 zR>!|F8!X&xOz?&aE}#GS^Pi|XA0U8Oh_x7IIR`5fMyrWbUn2v60K!onBfx=6?-XmDlrj|)um{QJqEsKSre0RRDn z>3~0f;0X*^A2B%S31Mj`a$)r~aE_09xwT zRTX9U`w!FC%uEbmagdKe)h)WuLA@zr06+lY^~(SMj94uP%Y6st0#ND);_p9!-8N=c zu%#gS4>*ai0uwSM%DD05Qh)%$>VP}%rHLv!LB0lCzyJ*9zfj|l(E2B4W-q6hf009O78T_UGACJ~i00000NkvXXu0mjf^k&+| literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/backendicons/miscFiles/XmlFileIcon.png b/data/resources/image/BitmapResources/backendicons/miscFiles/XmlFileIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..e20d033741ae0fcbbee4458c09a978b2ba62cc7d GIT binary patch literal 1015 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJdx@v7EBhr532t?fUt3q50Sa*z zctjR6FmMZjFyp1Wb$@_@Ea{HEjtmSN`?>!lvNA9*GX(gAxB|r)7+M$@<}fh)XJ~0L zOrB$y{NHd6gW;V2hUfkp{{P?7(z5j2_hZM7egFRbKg0h~Fd72GDFng~pOXjX0D+Pq zzhE?fF+5O?l?2MgdAc};RNPwHds?hPfy3pX$659d|Kp{zX06@5`9a0`28Bvz7l%!H zS@&4A!_PW@5YCwK;E>mo-)|OKsQLgW{wQL0y2JHbcGu@lP)780^>bP0l+XkKl)OX& literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/build.bat b/data/resources/image/BitmapResources/build.bat new file mode 100644 index 0000000000..901e825301 --- /dev/null +++ b/data/resources/image/BitmapResources/build.bat @@ -0,0 +1,4 @@ +@echo off +..\..\SharpDevelop\src\Tools\nant\bin\nant + +pause \ No newline at end of file diff --git a/data/resources/languages/.xvpics/russia.png b/data/resources/languages/.xvpics/russia.png new file mode 100644 index 0000000000..8455061d91 --- /dev/null +++ b/data/resources/languages/.xvpics/russia.png @@ -0,0 +1,5 @@ +P7 332 +#IMGINFO:45x30 Indexed (199 bytes) +#END_OF_COMMENTS +45 30 255 +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÄàÄÅÄÄÄÄÅÄäÄÄÁÄÄÄÄÅä¤äÄÅÄÀÄÄÅäÄÄÄÅÄÄÄÀåÄÄÄÄÅÄÄàÄÅÄÄÄÄÅÄäÄÄÁÄÄÄÄÅä¤äÄÅÄÀÄÄÅäÄÄÄÅÄÄÄÀåÄÄÄÄÅÄÄàÄÅÄÄÄÄÅÄäÄÄÁÄÄÄÄÅä¤äÄÅÄÀÄÄÅäÄÄÄÅÄÄÄÀåÄÄÄÄÅÄÄàÄÅÄÄÄÄÅÄäÄÄÁÄÄÄÄÅä¤äÄÅÄÀÄÄÅäÄÄÄÅÄÄÄÀåÄÄÄÄÅÄÄàÄÅÄÄÄÄÅÄäÄÄÁÄÄÄÄÅä¤äÄÅÄÀÄÄÅäÄÄÄÅÄÄÄÀåÄÄÄÄÅÄÄàÄÅÄÄÄÄÅÄäÄÄÁÄÄÄÄÅä¤äÄÅÄÀÄÄÅäÄÄÄÅÄÄÄÀåÄÄÄÄÅÄÄàÄÅÄÄÄÄÅÄäÄÄÁÄÄÄÄÅä¤äÄÅÄÀÄÄÅäÄÄÄÅÄÄÄÀåÄÄÄÄÅÄÄàÄÅÄÄÄÄÅÄäÄÄÁÄÄÄÄÅä¤äÄÅÄÀÄÄÅäÄÄÄÅÄÄÄÀåÄÄÄÄÅÄÄàÄÅÄÄÄÄÅÄäÄÄÁÄÄÄÄÅä¤äÄÅÄÀÄÄÅäÄÄÄÅÄÄÄÀåÄÄÄÄÅÄÄàÄÅÄÄÄÄÅÄäÄÄÁÄÄÄÄÅä¤äÄÅÄÀÄÄÅäÄÄÄÅÄÄÄÀåÄÄÄÄÅÄ \ No newline at end of file diff --git a/data/resources/languages/.xvpics/south_korea.png b/data/resources/languages/.xvpics/south_korea.png new file mode 100644 index 0000000000000000000000000000000000000000..8b108b9110865d1c725d473ea6857bfa0600df1b GIT binary patch literal 1606 zcmd6ny-or_5XZN14dY8(0urGx;Y*0Ef?ffbXis9G)J6+@16zFtpMe^ay<~j_X)KmR zo?@NZy*p2C2$oDpIA(tHpP6O$uG&GPQHNsKzX%7t;c2roZPbJCemt2@#=%jo);#Y{p-L*xD?`v@gcUYim-@6~ zhLOCXia=Wr2*gn*Z{pPz$OW8yKEc6>yjp6dBA-eDlKN{@G?`bKNU0B%WQ2&*aDR=4 z@;--aOo@zg3?9%r?fuTXQd)T!bLJG_X&awqR$luVSanyz+G9iNE9xFU`YU#C{F27E zqrT@=qttRE7za`wKvwpR-pT{2MtY7olnV!DJ1?K#-;l2E0hHlCdTCLFH%AQg#iv}0wOQj^H297Tfhl3>t^w4;ktRD-vp1-V&!&1(6vjvz9&ap zx1349ySxl87I#zKmNOHSG96`QTsIj<`sh1Kf5s0bEAE(XC`vb*F)F|s|N5~OJKbIT E0SbH;7XSbN literal 0 HcmV?d00001 diff --git a/data/resources/languages/.xvpics/sweden.png b/data/resources/languages/.xvpics/sweden.png new file mode 100644 index 0000000000..aa351d1168 --- /dev/null +++ b/data/resources/languages/.xvpics/sweden.png @@ -0,0 +1,5 @@ +P7 332 +#IMGINFO:48x30 Indexed (201 bytes) +#END_OF_COMMENTS +48 30 255 +üøøøøøüøøøøøüøøøøøüøøøøøüøøøøøüøøøøøüøøøøøüøøøøøüøøøøøüøøøøøüøøøøøüøøøøøøüøøøøøøøøüøøøøøøøøüôüøøøøøøøüøøøøøøøøüøøøøøøøøüøüøøøøøøøøüøøøøøøøøüôüøøøøøøøüøøøøøøøøüøøøøøøøøüøüøøøøøøøøüøøøøøøøøüôüøøøøøøøüøøøøøøøøüøøøøøøøøüøüøøøøøøøøüøøøøøøøøüôüøøøøøøøüøøøøøøøøüøøøøøøøøüøüøøøøøøøøüøøøøøøøøüôüøøøøøøøüøøøøøøøøüøøøøøøøøüøüøøøøøøøøüøøøøøøøøüôüøøøøøøøüøøøøøøøøüøøøøøøøøüüøøøøøüøøøøøüøøøøøüøøøøøüøøøøøüøøøøøüøøøøøüøøøøøüøøøøøüøøøøøüøøøøøüøøøøø \ No newline at end of file diff --git a/data/resources/languages/Arabic.png b/data/resources/languages/Arabic.png new file mode 100644 index 0000000000000000000000000000000000000000..e5395ce1418360fd2cec65d7ab8cc387150b1637 GIT binary patch literal 612 zcmdUt&1=+P5XL90(rI*Yur0jSOXER!1z`go3`kw$F6~AwW!X!Ehe*(a3nHv&As&is zrDFVmMnRiHFTDtnz4!qVs1z%Rte+J1@LmH#eHDaUl=$|~@L`_c@XT$PxiLL8QPxLw z04O&mYfaUw%41kkym$QeQvhvl`eduF;{PHBz+&JCJOmzr8G(ghDTQF$wu9(!!wJCY zf{W-9x*hNdecx}lF(3?l3<*OQBL|}<#!M9@3=>6*5*rhnQbwsksYUB1^*L=Y6pRFC zf*Zo(!ZL+p3CGSDWs0toxy{UXv$mfFZE27UI@>z9&!HbhK9e^D}Th`!Vtd@m=ON~?YfzSGO9rrw_yckxa zD~;N**6g=eA5DF(LbVU4PgF``-~7TST~vR6zrX+T(w)P9$Jx2Xq41WrYxt+Fwboia zCvyj-b?-HyXR{YZ~Q|CmuJr}FK9D6?^5Na gw#dc|m3EiDq!)g8e>Oeu>ipKPH0o2e$F_IvAA16$WB>pF literal 0 HcmV?d00001 diff --git a/data/resources/languages/LanguageDefinition.xml b/data/resources/languages/LanguageDefinition.xml new file mode 100644 index 0000000000..6e353f8e49 --- /dev/null +++ b/data/resources/languages/LanguageDefinition.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/resources/languages/Serbia.png b/data/resources/languages/Serbia.png new file mode 100644 index 0000000000000000000000000000000000000000..9c60dbe24baa34b19fd893de461bc7cc5596a524 GIT binary patch literal 705 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 RRpbBw002ovPDHLkV1h|kZ1Dg9 literal 0 HcmV?d00001 diff --git a/data/resources/languages/brazil.png b/data/resources/languages/brazil.png new file mode 100644 index 0000000000000000000000000000000000000000..5c732ac1813a5e7d0f57444d04e0bb0f6b20901e GIT binary patch literal 360 zcmeAS@N?(olHy`uVBq!ia0vp^+CVJF!VDzckNkQIq}WS5eO=iva)@zhNO>_%)r1c1j3A$?$-SQ3bLd-`Z_W&Z0zU$lgJ9>8wB`-xN2vFT2A5cn!>Pb2gCn+ z3@SYgno(;REa&u3bNT-LH-qLJ2F$gC)WPX4GQ15O}7srr_TgeF` zN0?kBPl$>c9?^R9sLA)nQC7u10X{~~-HW)pckGxtefbWHMO@swE2c0zc5|=V(Cuw0 z;n3U8wR?xf;g(o|Lk_QNmYq7o#5LVv4J&sy!_^(r!{<(k;1gntTo4ga=>1ogJdz2Tm zPei1t)ldZOYIrD+uVDNPHb6Mw<&;$T! Ca(i|F literal 0 HcmV?d00001 diff --git a/data/resources/languages/bulgaria.png b/data/resources/languages/bulgaria.png new file mode 100644 index 0000000000000000000000000000000000000000..faf8055f593015ce9f1d1f07fe564b56ef3137f3 GIT binary patch literal 1081 zcmeAS@N?(olHy`uVBq!ia0vp^xB|mLR^7*Fo8r1gTx#L!zm2O$;nHdIQHIKdrv~(o}$42|3LFb!Dt8!pAg`6 z*rovV&0F!Nl(%h7#Uaugf+V)8JIdut}-yX%*twDQ1Uf(V3@c}N}<6cm{-7I z$x1d3g-apKECQLU7@0brife)>lg%K4I4!MHMZgMg5@i9%P&S6%C`P~H73c1O0^ifs K&t;ucLK6Vm^ISUs literal 0 HcmV?d00001 diff --git a/data/resources/languages/chinalg.png b/data/resources/languages/chinalg.png new file mode 100644 index 0000000000000000000000000000000000000000..bd462570e00676a9f40afba4ca42ab502176a847 GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^xy& z4=9xG>EaktF(>(fI;%mzqA0&UjjNXet{Sw zykR}pc{TJHwVo+QZCxU>aD#Ipr~RS%Kei+uTe?Q#gTe~DWM4fmcwK< literal 0 HcmV?d00001 diff --git a/data/resources/languages/czech.png b/data/resources/languages/czech.png new file mode 100644 index 0000000000000000000000000000000000000000..b3caede3261e42ded799d0a7ef4b01a217a73622 GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^xDi5f4GIj-ff9-e5wivF962N?)A%=c2eaYN zr`dHK+h1{QlyEoXdtR_l`oI3J$3WKAADbll(qzu9{#a>P{p`hzIkzT% q?^AcpvzC7gu3l7@wY)60hOuaGP4N~#wh2J{7(8A5T-G@yGywpw3tMLZ literal 0 HcmV?d00001 diff --git a/data/resources/languages/denmark.png b/data/resources/languages/denmark.png new file mode 100644 index 0000000000000000000000000000000000000000..ebea24cd2cf87295d9ca2b0d6627b3e94e9f1924 GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^>Oic(!VDynJ8Jd;DT4r?5LX}#2g%9F*CaUZDGEG~ z3VNO#^t?LzeRc8smg@ICE#KEJ{l0hW|NsAMpDW!2YG6$Ac6VXuV3qX%aySb-B8wRq zxP?HN@zUM8KR`kD5>H=O_Dft6ToPtHoIjj_LOPxQK$!8;-MT+OL6&q!Uq=Rpjs4tz5?O(K(Ey(i*R-^>|NsBLd-v{)F~k3v zGykWhoiR549`+EVz}C~nF{I*Fa)JWCK@zjinS=vPp_2+juCLIu*>z(BQ-|K0q8x|V wGfSEi*K~_&H?%31om8A?=2qIv68nUK;aLo~_#?a2RG>i&p00i_>zopr09rmnDgXcg literal 0 HcmV?d00001 diff --git a/data/resources/languages/finnish.png b/data/resources/languages/finnish.png new file mode 100644 index 0000000000000000000000000000000000000000..a49f6ba2e6111278a3d144fa589dbd3b5f052e8d GIT binary patch literal 1563 zcmeAS@N?(olHy`uVBq!ia0vp^IzTMV!3-n~ROhMzsV4zGA+G;{;OB>bw-^6A-}>)l z>A$_<|F*mT-DvT5wdUWYl7HuO{r>Rr_mfM%?;ZYqY00kx<-b-~{+uKIa~k*ehmXIX z-}-H1=C_&J-+FmJU%LAF%(2hAW_(%{{i#d#Qw!gRBgfzG+wp$KiuY@}-cRv;*P-{W zhX2jhov#;nzbY1dv26A8DYehDgq}>F`#4?saiZ{pj{XNt4G+o^9~1=L&vLpSA$q5> z@lJa1ZGW*FS;aTp#IHoBUhy=);;eDSR^rm7OBa2^FF0CUFqJxM=Xu6R>x_={Nqy^+ z$}&e4bdO5O9Tb#rXlM|!Dqt|JEe^@L1@tdxfk$L90|U1(2s1Lwnj--eWH0gbb!ET8 zEyt^nBv4A;)5S5Q;#P8k2n(~KDu+QKBXfOQ;K#s^2X*>nKQJ?7Dx{tgTT^cVRLbD# L>gTe~DWM4fJXJ0j literal 0 HcmV?d00001 diff --git a/data/resources/languages/germany.png b/data/resources/languages/germany.png new file mode 100644 index 0000000000000000000000000000000000000000..f249ef0d734c10b0f9f4e7881be91dec4c690a33 GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^MnEjb!VDzm)CZggQtTz3zOL*SImEa$%+4Q~;R_Vv zEbxddW?Nn{1`g#vs+T$7WN{~zOc?j>+fQDCWr z08rRdSoA57((rU~45_%4oWOgOQKD@&Pd7K;fde@`%skeTYN|2~je!E}5@kjfj0~&3 WcQgE)Zuc0dhr!d;&t;ucLK6TdYcH_? literal 0 HcmV?d00001 diff --git a/data/resources/languages/hungary.png b/data/resources/languages/hungary.png new file mode 100644 index 0000000000000000000000000000000000000000..a19f11c127668aeabe57a9789af5f3659fafa6d8 GIT binary patch literal 523 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9!3HEluKbn(QY`6?zK#qG8~bX02Tle_CVK?= zGB8xBGB7kWGcf%852Rl(Fq8r{zDi(Vu$s=mAf7*c<;*J#42;t}T^vIy<|O%ed;dOf z(8B1zu(6?|joF?3mTXER8+$fe14EKjhI;@P15?I{Y6gXdwms}vm$@?4GdDBfJ}uM>=U}16t7ybf|wE$k4S9Plvx9E zON|f{vcd%mpE33@u_-hhF#TxX_TPTtBn5uMLn8m$19}{~KH4w3$h1UKQu4vfzxF$P z4;(si#w~igv4KH?Wf#~a3Z(w=WhHq3dY(Ad}wbj1O=1g5Gt@`6Y0g-sYF7JjK$ zvAuC5;ekDK&=#eQ7c(csxfQf1XT&h1$vZF{oFw3QeDSKo%jEV;-pKOGS$0sS_x#5b zpBNZTt{54zq4);LV@OPe0^11&GqV@mbu?q(FktBa7`NDPt;l;|Y%+Md`njxgN@xNA DK|Yg$^G@l1yQ|NoycX3!OT z8U++r_H=O!skoJ#pde|mh)K=lKo6IjX-}5KRfAQDA%`Daa8P1kxW>eFa)nwmdKI;Vst0DI{yz5oCK literal 0 HcmV?d00001 diff --git a/data/resources/languages/japan.png b/data/resources/languages/japan.png new file mode 100644 index 0000000000000000000000000000000000000000..fe0112ca930473b6775678d875acf1863aac74a1 GIT binary patch literal 1294 zcmZuxeN@s{7`}WIgfl5J8h(UXrfH?qT=@}LQn{m+oot$`ej7sB>q@kAz2f0N17N~lMguZ){WIMEq(R%l&Cj*F zt=`UShwQzjm0Is;r}d2sWhu3?C8+WmtyxY}7X;x#Lys=U6Y0ZzqglII|F}ij`p*8l z8f9U(n(RV}@Pw|j`~|}o7fNwiN^zq$pF4-_h!SS`ySHM<%$_lwx!G-Za#(&!gG4Nr z$xi<)lggxp1lCQhP>5pWIsWb)*r?5V;`8{CPF2HnS7WfnB);)siN%`zRD6lc9$@zy z*?7qciljb1o_VM`Xv^L2EhBH!nuR+Ws}8HhfG+Yc6|YSDHaekm(&{8o2%jg>n6h@K z{gL{7KwrGzY1G>N^CG5?m59x^5*eilPB>1b5D2`+!v`I3Vw`tmxGaO~e+ZBPo;=}g zvkvOj4=&=vk$dN_Uf!1mh4#co4-pE~Vbz%|hU=b@H*R#TPYGDj+{b5_ z4bJpGNty(J6@f($aZu~DHIXwzC^+94a-8KejUc6I6j~Q@Dp6H9c}Bx^-`(%M5ca@g z1H0C8arF7UvoPn~f<8Z#!XMtNb4MXm>J}Z#I-dSM)CsLlL-$FJ2WlmUZ-mgSxD*_` zMLnN8$+xfQ`w3Od)6D_LM(#CGPn_uC%?2Jcp|TaR*%eW5047#W$cIz*7dZK_JWAK$ zFb#f<>{(Z}ALXf^qszgh?qSS+r<5Kq93Apv0@(n@FDHEdoOF$^m#YIp1#4@8tn~B; zpzWX3Y3eSh99&yM)#*$lqkZ9aeku|u|FF3?Vkm4CeY3A0!a+E_-HXy9QLxt-B(OX= zeu#0ikPU?}-Cg!_?698!|3RaRo&PwJd>|C~7}!LR^G$BlS1Im;x5F{0!YfHL%4<@O z{U%~9Lp8Bzq=$=`6({ zv4}P0oRD!CK;NZQ;@8&{ksbtmG@0d%yzDvY*shrun;o$O*tr+RpmRi6>-JNb%yCCti4~A z-v455w(7^!)?&jQ&r=$qUC&r_V(~ZtFU3baegY7pSMc((|~t_hfJ2 zYs7`Z0}L#lyeb+HborBJLK$qy9W$FYBMoKAUz8;8l9ara;Hn7#Tl^&BR|Fghtd!Hp z-E9ZMrhkO|BQ&~5(t_@0c6^7j|4&*`8{8OrP$ZSkqKi@%XraS8;etzb?G(>MAH9P} ZM!>9dd3Umc0?Gh7;#i5Xm)0Q#{{ky9R^9*r literal 0 HcmV?d00001 diff --git a/data/resources/languages/lithuania.png b/data/resources/languages/lithuania.png new file mode 100644 index 0000000000000000000000000000000000000000..58640151af5b72c7e2fa76ed392db74354296b57 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9!VDyr{d%Skq;vy(LR^6~8j$E=keI_@IE5iO zIeDoQ$KJgR_Y?)5O9=eG#_%!iTsu%TXMsm#F#`j)FbFd;%$g$s6l5>)^mS#w!XeIS zAX5|E=nE8*^K@|xskoI~(avnp6Vu5jlkmg)&QV5*a}O8}$1yS3{`X{8Va$6AvftCy K&t;ucLK6VDBP`+o literal 0 HcmV?d00001 diff --git a/data/resources/languages/mexico.png b/data/resources/languages/mexico.png new file mode 100644 index 0000000000000000000000000000000000000000..c636ef290ff796d5ede3fa4c1273344515121d98 GIT binary patch literal 429 zcmV;e0aE^nP)|Mi0gB@pw~eu7^mTCCSa9RUph8CMH6jE6 zd`AIjXleu+$9#1FAwwY`r7B8YN>wVnh2d>L**+rzj8W$aUrJXbFx?kXC`MV^AT!ng zoVI7?QP(zvf}^YN-O6#dY ztJakeBFjEUDIFFpC#j%%B)W~o1Cd#Wn%O^ZVt@(a@l-h?BNh3L0Z}w zV}{P+MV3HWT~8OskcwMxPw(VqVBlajy!SV}O>`Zz=DXZB(?tbpBAXNiTlXtY;O*0x b!+C+>V~2n)Tb$j0phgByS3j3^P6$`fq6gqa~NieugiYg=)kVg^rFKbLh* G2~7Zh-Yqo% literal 0 HcmV?d00001 diff --git a/data/resources/languages/portugal.png b/data/resources/languages/portugal.png new file mode 100644 index 0000000000000000000000000000000000000000..56fc3b72c9f80366dbefa6234277777de10faecb GIT binary patch literal 398 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9!3-pmxw!R!6nlxMuPggS4lyn*88uI1NuUsC zfk$L90|U1Z2s2)~TlWVj$dc~p>&U>cv7h@-A}f&Z9pDq~)oqSfP$$+P&(Iip%g455>f9GGhBFS%|bae8$9moCl zmzaBYKiYCCJ@kuP{R86$#S1kJtv9t@j2S;%vAAJ5fptNUc5Zp-_YU3zaup1_gj1L! zVxkUL@G4dwGF0%(ly$P_`Nnoq@qvnIN#r9T&xi5lS=SlMpzTGcZZT5Gf-o4qw-f;0bR-I@MAD0^0dT7cEG kUuUZ7pNjwWe6S>Mr@EkNn7_bHppO_lUHx3vIVCg!0Q&=(O8@`> literal 0 HcmV?d00001 diff --git a/data/resources/languages/romania.png b/data/resources/languages/romania.png new file mode 100644 index 0000000000000000000000000000000000000000..ea039dadce9f12be48fffb243653349cf7a74ed3 GIT binary patch literal 1089 zcmeAS@N?(olHy`uVBq!ia0vp^8bB<~!3-oV&)LQRDb50q$YKTtZeb8+WSBKa0w~Cm z?&#~tz_78e=6B#^AYUQbBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~g zN8K10m>B|mLR^7*P=Mha2E(OZ$=S)t$=4(V?kNh~^Ah-ejN$)1hX2nQ{{IJ>Hws2W zVEBYU!~{P{pl?=tx;TbZ+)7GGbzqwFf1*WC{e-0qOdXw!>OcAqF>@%W*%WCoC^Q6! z8a)c*5OApQakSbVb*&@xz)RAG%#3FDpkA*{F(OsZom)(L2 z4IO354h#=HMOFY!>G;M2(j*DeWDL@j4zvoVCN$G|7#{o+wLkgnAtNXfJYD@<);T3K F0RXSGXHEbB literal 0 HcmV?d00001 diff --git a/data/resources/languages/russia.png b/data/resources/languages/russia.png new file mode 100644 index 0000000000000000000000000000000000000000..fa10e867f808f10d742ae5c7ba5277028921f297 GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9!2~34Z_DupQfx`y?k)`fL2$v|<&%LToCO|{ z#S9F5he4R}c>anMpkSJ(i(^Q|oVPbN3N{$}sCE5Vy)YIr>Q< kwv;s5{u literal 0 HcmV?d00001 diff --git a/data/resources/languages/slovenia.png b/data/resources/languages/slovenia.png new file mode 100644 index 0000000000000000000000000000000000000000..e4f49143c4fc5558f6e5147c138cd46ac86d1074 GIT binary patch literal 1104 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9!3-pmxw!R!6k~CayA#8@b22Z19F}xPUq=Rp zjs4tz5?MhilRbib85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R_G24;o; zpAgsoKyc>F|1&fH&zyM%%A9$|m|^CbGeCivGmU2&8>h`YlQuIg4UE%_XQmkg;TfQ) zaax)&Sf0Un=DTX?_wfUrhf@?ip z978Pp-%fE9Zc-3v-5wO(<)Tva!~Wb`rTL~arS<5d&WNwThBfDm}%br v_{Hm&`3&E!ChofSl7GsX*V4hO{=ADnv%^I<%Hhj@P~dyI`njxgN@xNAF<_%& literal 0 HcmV?d00001 diff --git a/data/resources/languages/south_korea.png b/data/resources/languages/south_korea.png new file mode 100644 index 0000000000000000000000000000000000000000..35650cdda1824c94ce0820c2a1f7ca1fa498260d GIT binary patch literal 1176 zcmXBTZEV*>9KiA0lj}C8ok7#!LpYHow-DIHnAjHvZ2o`Qzk`KzBf63qVnu@WxyB6} z2xu2vY~q`0c+vSlJQ9?$;Zndr@nNxv2^Ixy$dXlp#*++FNPuR@sK3Q;K6lq%(-*y@ zV;lR{wYM&9MF_RmdMX;M-7uC34KN$6ZL1KfU)Z>Qpj!T4QIthq=6T6^$+I#8X_=-a z^Geq)%5w2Jl%_?R6bXon7(_(`!XgAg5dc;&Rv21=QC^gJQRF$u^MK_H__+_f+;el+ z$sId)tlS1>juFob&H?AP#ch*Yz~Cm(xdAk;1C?t);i|%A!m-G)z$GE$MFwd~rUE%r z0L^4TG74};fRte%W)jLol=33Y@)Xjw6iX=iG?WdTHJKuCaTfC-B- z7G?}0G9#2>;)j_Zq&{T1zHa%d;VYU?WG_fPh$tSB-5_&W>bju|5ycgW!&1iwi31VU zA&MhW+fQsSu_2<`Sh4)n@)FC9Er@8Q8=H{km_#>;X1KB8#0ErwZb+)`#JU~n5HWN~ z)9gsIA`POZMh%S^suihbsH(0C$+k*Om6(bdDiF04xWO{@i2V_0RFI+)lPV@YKabtOp>RVFG-q@G9@zh1<) zD2jr@1lbp;CkO(P10*vf`-n0`VfGMVi1>(j2>S?o@FNJy=^e1tJ=eRgg5GO-um^5h zUh5gO5Nf+;anzli-E|8#o8PQ$s5YM!9ug$$Sn2TJ8O(;?7b1-KM8^9zFNS)Wk9G`u-a? z$A`zyuYPzq82n*j$2gj72zy_gt8e`3?pdw7dBq#Sx|5A7Us`_OgQ{nypmeVccm`uKKJ{r7`&m4j=JTa5#^ zF3fz{(X^#{hjQZ6n=NAp`qSAzc71zj>desBhc0j0`sm&x7e?oAbe!*hAUyZc3iGjV zcCPJv;cD-d@7C0-E9WP-9o*4#^40miy5aq8XO=en+c>}NaX3FztM*k6D_h?A56kQ? AX#fBK literal 0 HcmV?d00001 diff --git a/data/resources/languages/spain.png b/data/resources/languages/spain.png new file mode 100644 index 0000000000000000000000000000000000000000..91c39eebc3ca58a0a6eecc14ad1f5eab8c602fee GIT binary patch literal 399 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9!3-pmxw!R!6nlxMuPggS4lyn*zN;Uc0)axD z1s;*b3=G^tAk28_ZrvZCAWOQVuOkD)#(wTUiL5|=PJmB{Yg$^`T?U3T#ti@eGn_eN zJoAk4ng0wkXBwZG$#5o(;S7+GW;_!pdj=?*_8%yCX68(w`k85G&M+7=0Huu27#pXh z8K)T=&zuPsPD@+Gz_1&LcJEG0n>jO$0cgPg|3F!WInlRo0_|Pq>EaktaqI16Z=pj9 z0VyET;F+rFtu?TYx)uiw8&&1O(tp!I4- e{jY`v8~9h63nk>|Z8{8eF@vY8pUXO@geCwDNu5jp literal 0 HcmV?d00001 diff --git a/data/resources/languages/sweden.png b/data/resources/languages/sweden.png new file mode 100644 index 0000000000000000000000000000000000000000..d06400080c92fbc3400ef5a0a91bed066230fbff GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^20$#w!VDy5bTxbeQn~>?A+A80A^RLd_C1E;V~W*V zHCvVjO=(F6f;rVw)&|X4>$P;N)84&?&(8_`zsDdulf?|Eo-xVW-G!lpRn`N@;Vkfo zEM{Qf76M_$OLy!300r4gJbhi+FL4NQC>jY%Uh4u1DS5g$hE&W+HfUqmUH)E9TA8^m okdvpg+~U9iFP?K7q^1ZlJV?~_&@pRq0jg&3boFyt=akR{0MX|;+5i9m literal 0 HcmV?d00001 diff --git a/data/resources/languages/uk.png b/data/resources/languages/uk.png new file mode 100644 index 0000000000000000000000000000000000000000..33fec65c72b41729287059532cf8dd6e2a607bf8 GIT binary patch literal 477 zcmV<30V4j1P)+*d#RAC+W-Io zGf6~2RCwCGld(zzK@f%~a74m28JnD?97rmQxSplC-IgbSX6W4mfVUPu-|#SxdxxdcB}!nWCHwd0DCVC-WVzn@hj$&~SkXgpFJ% zedMV1U?V4d5n9*Off2rpJ-2OOyx%$;BFvzI-#$G{6wt}1H;dnoR}+s#^!k4QEdO)! T1UHc600000NkvXXu0mjfD-gu3 literal 0 HcmV?d00001 diff --git a/data/resources/languages/usa.png b/data/resources/languages/usa.png new file mode 100644 index 0000000000000000000000000000000000000000..f24c9d68b7c335da74f16811cc42b442af82c0b6 GIT binary patch literal 433 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 D`|{&o literal 0 HcmV?d00001 diff --git a/data/resources/layouts/Default.xml b/data/resources/layouts/Default.xml new file mode 100644 index 0000000000000000000000000000000000000000..041b0c2a6e15bb2fb59646d82dd063e9ca4ecc92 GIT binary patch literal 11464 zcmeHNZBrXJ5Z=$7>3=x#xiMhgLdR_e0#2AAg$YhN?KclLiHpI^87J+ZZ~Hu23!QYj zGiH2#VKR*ISz4`DyU(t6Px|lQhP;-)ZE1ym8NbcoIUV>^DG_U1X`B8q5hOD9OCB__q{!*^xT-q4ZHFJ>1Ek^agV}#k- z;Gy#+rnL{c8pa-=_g=n$I+dUC`**bWKtVYYIYsY4e!^25Tq%2MIDWyHq50LtH&??o zbqq(!6iT=TS=T^+ARnbAXYw9TEjf`l_&&woALx54$MPFKA57mdR+UH-G^c2zq(>N+ zfZ_}z6L2^~%Lynr*7DEJ9n(tFtnh-d3@y*qDweoTB9GE!>GS<+^8|Da*p=wJAM+wo*fKJ0iuXD= zx)HHa39Nf$@UNb64sPl-LvX&phgh^eLM&YX$8EIUnb|s^uK_O~LDL(rhzJc^d|7p! z^ofDI!#Hv&*Ww90Kq*P9{@gVFLeC&SQZ(T`1A{xR-|t_4v?kOJPt%0c&JpCI%_-3x zG;$7|4dgGh5D($+L(}_h?B}$5XN-nr)e^ClU{z1SOR<*T0>3?I=MD7MhBk)48>1|> zu-vH8cvh7@F2-JR2(6^@3BS7XZOJvVT`5A&;8lzSErXNm714?A300wlQT7IU>A`#G zm+$ePKGa5j(p?b^G5e}6u4oh{a#BQ;f6NZN?2&e_QjIjnXjzpw`>IlHyaO`&@F0Ib zUhbV|zfz4H!&8{Kq^J>kh$YLu4{wfZyz&@(0XuUiy+k&9fL)}6il_^_GwZm-Qw@2C zqhQ|f#=Xk9D2<;-FqlgF}-8KA0VwU*+$2ITuK%aMyVWZl#o*?PxSHjM|X zPIj$!AFH`? zUaAM5m+n&Yu!7cMR^N+2?yU5$nO{t2%dCI@J(jP3Yn5rdfLeHp7tAVt6kDM@2CI$M zA0n~8hFJX2`q1jg*W7$!E~_zLPOhRHZL!FqRo!fmt6G_!m&O4<3Tb9IJuk(y&&%dj z({s}mh1@i1#<zew$+}4O^!kF{eE%``i_n4shO(? z=7SAl%2rszjE^?PXM@)`8|Hai2UR#vgTgaCO6hxce56~K<|`Ioel)VJS=9ZBGvCyl z$fc+$DM=S+>a1HY+@1)-0hY4meHeJFw6O>rwlKRF+HD#%|>rH7!ltQhp^-Y^%7JPqtNA zE%!KE=_;t{McAqcRVtN_D)so7q)Po9Fr~X^Ii^A{DMnR3`l!Aw|LP)udS}d5?%qT! z0%RlG;=G?x-|8sq`~D8#YF?ivjHh|uZe(sgWXHPLqPqYs&HEu8>?|75_i>|!H;?N0 zuA8SVyg%Q_JZUDvdr91p=s_Jk@g|hJ7t(^akI+NfV)Rf3KO)WxJ-Yho(c?$kD)AGy zy|1mwR@S(cxAG3|KhertxB<15v8}ez-m|kZW$@*mmz6cvJ%20fI`dZE$K5tsbO+zN z6po)V|8WRk2LJ#7 literal 0 HcmV?d00001 diff --git a/data/resources/layouts/LayoutConfig.xml b/data/resources/layouts/LayoutConfig.xml new file mode 100644 index 0000000000..7c0a8e6d98 --- /dev/null +++ b/data/resources/layouts/LayoutConfig.xml @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/data/resources/layouts/Plain.xml b/data/resources/layouts/Plain.xml new file mode 100644 index 0000000000000000000000000000000000000000..bfc780b62e3fb2e62d5db7f2643dfc28f0fab93e GIT binary patch literal 11174 zcmdT~?^7a25be*Y%KxzXIj16^k|MeC$9ZQJMx&gm+pSbs4-pOzHyE6CQL90kk(Wikn&h!N1 zBJ{Yx$OsZH&~kRl$u0g_%Z=l~D^u07=trdwH z`DajH;~kk z=Ls7aUsi7=_2K1P=@=Gl!73y0iZPeku9F=abC$37^@R0D#+QnKxJIAlYkmQLp$9h& z?)Opz-8JSfUw1~q2k74g>ltUy@t@ppA&tOhmA^HBIx}AG zUe9sehM#b4D+UKvmCap2>pniZQ)*&|q+Y?DfbIy^8R<%so#paol=&_N5i&_;V+`?ynMS5}M2rR09Mj$iKndX(4=*9{7+Yt2>& zXdAyiU~3M3Wq|7%t37`k|JG>7+5;;Mw$_uZmT;D#UAwDCvNq!CK)HU+Bdv-ts~O{; zt6ADuU(YM(bT_Sv=&mSfZ7XMfHASlot}JC@NY;D=^-0@P99_L)d}B@Y>5Cv{t8?o` zi&l2EvR3x1T(ORt;kXu7y+anxj+U;V*=6ZCcV4=;$SzCQFISefg=FQ;BGqIO7R9yM z_40_jnLK!;yP}Ydv-3!Knq5|iN4jUpE-S<%yGO__O=F_VN}F$Im!?tCm-brk)B1%k zE!}74!tn z9-jUQ^R?%Oyz8#IdfqfJI}!hsb$;gQYv}qfF||FC82G(HePX>eGqZg{INjr=e^M>7TjPE=9{l=I^)t-R4d)VBhp+~SvBSQ#`ks(%-d5Xu(fKgl)HSRO0T$9&`T))87m^|(E65-)?z6q z`JPBRdpHM|QYa)gT^Y8(-yz zau}^R%Pd}uaM#<{tw~7_w;KBBZKrst-!IICnBlr|`6%-}u8Q&CU93grCHrzXhgb#5 a%JI;O{=N7zxe~_Mt_Mjr*$CG|?ED{}Y-AY# literal 0 HcmV?d00001 diff --git a/data/resources/startpage/Layout/blue/balken_links.gif b/data/resources/startpage/Layout/blue/balken_links.gif new file mode 100644 index 0000000000000000000000000000000000000000..d2e5072539ace1bd0320af9ab457066f4c921e8b GIT binary patch literal 5853 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 literal 0 HcmV?d00001 diff --git a/data/resources/startpage/Layout/blue/balken_mitte.gif b/data/resources/startpage/Layout/blue/balken_mitte.gif new file mode 100644 index 0000000000000000000000000000000000000000..c1095747c3ace6b800541a6fd20f8591ec4a4a0d GIT binary patch literal 218 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 L!`LGPga80L^;EP1 literal 0 HcmV?d00001 diff --git a/data/resources/startpage/Layout/brown/balken_links.gif b/data/resources/startpage/Layout/brown/balken_links.gif new file mode 100644 index 0000000000000000000000000000000000000000..840351728b499a60e61a6e944044445614c01971 GIT binary patch literal 6841 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 UyYTCGthP8P9EPL z?&-bD_bwm3fBp2mtHV^$Y S45waRQeiddZFJyZum%9 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 Z-TfCg(539g5ygGr`v?%*4Zr9YCv8UTZw1$qDg literal 0 HcmV?d00001 diff --git a/data/resources/startpage/Layout/common/milestone_col_head.gif b/data/resources/startpage/Layout/common/milestone_col_head.gif new file mode 100644 index 0000000000000000000000000000000000000000..28c6bffe4eba17ac6e0dba463cf0c2dde184bab0 GIT binary patch literal 6222 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 G?f(PXdn88y literal 0 HcmV?d00001 diff --git a/data/resources/startpage/Layout/common/pixel_weiss.gif b/data/resources/startpage/Layout/common/pixel_weiss.gif new file mode 100644 index 0000000000000000000000000000000000000000..2799b45c6591f1db05c8c00bd1fd0c5c01f57614 GIT binary patch literal 43 scmZ?wbhEHbWMp7uXkcLY|NlP&1B2pE79h#MpaUX6G7L;iE{qJ;0LYaF_y7O^ literal 0 HcmV?d00001 diff --git a/data/resources/startpage/Layout/default.css b/data/resources/startpage/Layout/default.css new file mode 100644 index 0000000000..b2031aa8d3 --- /dev/null +++ b/data/resources/startpage/Layout/default.css @@ -0,0 +1,136 @@ +.copy { + font-size:12px; + font-family:Arial,Helvetica,sans-serif; + color:Black; +} +.balken { + background-color:#DCDDDE; +} +.navi { + font-size:12px; + font-family:Arial,Helvetica,sans-serif; + color:Black; + font-style:normal; + font-weight:bold; +} +.naviActiv { + font-size:12px; + font-family:Arial,Helvetica,sans-serif; + color:#DB4E2E; + font-weight:bold; +} +.text { + background-color:White; + font-family:Arial,Helvetica,sans-serif; + font-size:10px; + color:Black; +} +.head { + font-family:Arial,Helvetica,sans-serif; + font-size:14; + color:White; + font-weight:bold; +} +.naviListDevelop { + font-size:12px; + font-family:Arial,Helvetica,sans-serif; + color:#808285; + font-style:normal; + font-weight:bold; +} +.naviListDevelopActiv { + font-size:12px; + font-family:Arial,Helvetica,sans-serif; + color:#808285; + font-style:normal; + font-weight:bold; +} +.naviListSupport { + font-size:12px; + font-family:Arial,Helvetica,sans-serif; + color:#bb141a; + font-style:normal; + font-weight:bold; +} +.naviListSupportActiv { + font-size:12px; + font-family:Arial,Helvetica,sans-serif; + color:#43b4d5; + font-style:normal; + font-weight:bold; +} +.milestoneText { + font-family:Arial,Helvetica,sans-serif; + font-size:14; + color:White; + font-weight:bold; +} +.headlineDevelop { + font-size:14px; + font-family: Arial, Helvetica, sans-serif; + color:#a58229; + font-weight:bold; + font-style:normal; +} +.headlineSupport { + font-size:14px; + font-family:Arial,Helvetica,sans-serif; + color:#808285; + font-weight:bold; + font-style:normal; +} +.copyBig { + font-size:12px; + font-family:Arial,Helvetica,sans-serif; + color:Black; + font-weight:bold; +} +.copyUnderlineBig { + font-size:12px; + font-family:Arial,Helvetica,sans-serif; + color:Black; + text-decoration:underline; + font-weight:bold; +} + + +/* TEST */ +div.tablediv + { + width: 100%; /* Forces tables to have correct right margins and top spacing */ + margin-top: -.4em; + } +ol div.tablediv, ul div.tablediv, ol div.HxLinkTable, ul div.HxLinkTable + { + margin-top: 0em; /* Forces tables to have correct right margins and top spacing */ + } +table.dtTABLE + { + width: 100%; /* Forces tables to have correct right margin */ + margin-top: .6em; + margin-bottom: .3em; + border-width: 1px 1px 0px 0px; + border-style: solid; + border-color: #999999; + background-color: #999999; + font-size: 100%; /* Text in Table is same size as text outside table */ + } +table.dtTABLE th, table.dtTABLE td + { + border-style: solid; /* Creates the cell border and color */ + border-width: 0px 0px 1px 1px; + border-style: solid; + border-color: #999999; + padding: 4px 6px; + text-align: left; + } +table.dtTABLE th + { + background: #DDDDDD; /* Creates the shaded table header row */ + vertical-align: bottom; + } +table.dtTABLE td + { + background: #ffffff; + vertical-align: top; + } diff --git a/data/resources/startpage/Layout/green/balken_links.gif b/data/resources/startpage/Layout/green/balken_links.gif new file mode 100644 index 0000000000000000000000000000000000000000..f59bffc4ceec854e102c135142b3f26c4835abd2 GIT binary patch literal 7792 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 X>KT>_3dxRh-IaEF_Tqmc1nK=hc^1-l literal 0 HcmV?d00001 diff --git a/data/resources/startpage/Layout/green/balken_mitte.gif b/data/resources/startpage/Layout/green/balken_mitte.gif new file mode 100644 index 0000000000000000000000000000000000000000..3ed431d4e523ef495b2e65ee8a6041750ad26323 GIT binary patch literal 97 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 b1zd%4Y{hXcuw(~Ifdf9h1r|fW0l?rtm#PdS literal 0 HcmV?d00001 diff --git a/data/resources/startpage/Layout/orange/balken_mitte.gif b/data/resources/startpage/Layout/orange/balken_mitte.gif new file mode 100644 index 0000000000000000000000000000000000000000..002489f6b69fd1d4ad0ff2851c036b7abce2d9ac GIT binary patch literal 352 zcmZ?wbhEHbWM%MRxXQrr{mg){-n!?vjOi#6Sa}_>%=}st$+*`H6w8*5N>ghKyAI zi6udrQcZRXA3oqTs$#nK%pgmrYscvg7As{t`6lZ=Gps7&THK)CWKb_NTi4aeCZ$J| z*G*i?O_s+^fZ46UjoV$!Po67Cfiu)OJkl*eIc{$9Lhsc0Ir5?Yvx?+=l>+9lv20>n Yv~}^MnBe7M5i?Wg&SyGw$dSPs0M)X3_vlndN=vDL#ORc6R7Qt@fOI)P5CLhCQb(saq!D#= zs(_e3mGA%EoXhul&eeN!t{54psk=-A4FL-Pz}AG%+kXFrg@rGZ`k$wa&sJ`KT?$zk zxi{aTxie;WI`8vsE%|un+VQmMw+|UBy++m+1}8MT(*^&7+33@^BvBFJ@9RbL)R@z^ z?u&glI@;TgX%5FTRtF>68&fe`gC@@&T7-p$d|i%sKj>CekT>1w^nrT)a6W!#fOz=E z@8pf`{+QWxo9TzXOBXL{ZN9qv?c@F9rMS~M )1XRG9|i$Nze`;%Fxvz6%M*A}O5 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 Gn*RsNVP6RV literal 0 HcmV?d00001 diff --git a/data/resources/startpage/Layout/red/balken_links.gif b/data/resources/startpage/Layout/red/balken_links.gif new file mode 100644 index 0000000000000000000000000000000000000000..07764683d32670381deb6398c8de488e91028cf1 GIT binary patch literal 5418 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 OZ@Il+6XpT{t^WWA*OV^+ literal 0 HcmV?d00001 diff --git a/data/resources/startpage/Layout/red/balken_mitte.gif b/data/resources/startpage/Layout/red/balken_mitte.gif new file mode 100644 index 0000000000000000000000000000000000000000..ccea8c197a060e6d5340a4816a44fd05168e1c2f GIT binary patch literal 201 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 ya + + + diff --git a/data/templates/file/CPPNet/CPP.Header.xft b/data/templates/file/CPPNet/CPP.Header.xft new file mode 100644 index 0000000000..ec93f55ebc --- /dev/null +++ b/data/templates/file/CPPNet/CPP.Header.xft @@ -0,0 +1,22 @@ + + + + diff --git a/data/templates/file/CPPNet/CPP.Wizards.NewClass.xft b/data/templates/file/CPPNet/CPP.Wizards.NewClass.xft new file mode 100644 index 0000000000..d5f98d3c4b --- /dev/null +++ b/data/templates/file/CPPNet/CPP.Wizards.NewClass.xft @@ -0,0 +1,19 @@ + + diff --git a/data/templates/file/CSharp/CSharp.Empty.xft b/data/templates/file/CSharp/CSharp.Empty.xft new file mode 100644 index 0000000000..f962224a40 --- /dev/null +++ b/data/templates/file/CSharp/CSharp.Empty.xft @@ -0,0 +1,31 @@ + + + + diff --git a/data/templates/file/CSharp/CSharp.EmptyClass.xft b/data/templates/file/CSharp/CSharp.EmptyClass.xft new file mode 100644 index 0000000000..71770745f9 --- /dev/null +++ b/data/templates/file/CSharp/CSharp.EmptyClass.xft @@ -0,0 +1,45 @@ + + + diff --git a/data/templates/file/CSharp/CSharp.Forms.Form.xft b/data/templates/file/CSharp/CSharp.Forms.Form.xft new file mode 100644 index 0000000000..3b10d34a7f --- /dev/null +++ b/data/templates/file/CSharp/CSharp.Forms.Form.xft @@ -0,0 +1,72 @@ + + diff --git a/data/templates/file/CSharp/CSharp.Forms.UserControl.xft b/data/templates/file/CSharp/CSharp.Forms.UserControl.xft new file mode 100644 index 0000000000..4113c0a133 --- /dev/null +++ b/data/templates/file/CSharp/CSharp.Forms.UserControl.xft @@ -0,0 +1,72 @@ + + + diff --git a/data/templates/file/CSharp/CSharp.Patterns.Singleton.xft b/data/templates/file/CSharp/CSharp.Patterns.Singleton.xft new file mode 100644 index 0000000000..5d3ec719a6 --- /dev/null +++ b/data/templates/file/CSharp/CSharp.Patterns.Singleton.xft @@ -0,0 +1,54 @@ + + + + diff --git a/data/templates/file/CSharp/CSharp.UnitTest.xft b/data/templates/file/CSharp/CSharp.UnitTest.xft new file mode 100644 index 0000000000..038fa6df79 --- /dev/null +++ b/data/templates/file/CSharp/CSharp.UnitTest.xft @@ -0,0 +1,86 @@ + + + diff --git a/data/templates/file/CSharp/CSharp.Wizards.TypedCollection.xft b/data/templates/file/CSharp/CSharp.Wizards.TypedCollection.xft new file mode 100644 index 0000000000..bbc1931a80 --- /dev/null +++ b/data/templates/file/CSharp/CSharp.Wizards.TypedCollection.xft @@ -0,0 +1,296 @@ + + diff --git a/data/templates/file/CSharp/CSharp.Wizards.TypedHashtable.xft b/data/templates/file/CSharp/CSharp.Wizards.TypedHashtable.xft new file mode 100644 index 0000000000..c589d4dc41 --- /dev/null +++ b/data/templates/file/CSharp/CSharp.Wizards.TypedHashtable.xft @@ -0,0 +1,350 @@ + + diff --git a/data/templates/file/Misc/EmptyHTMLFile.xft b/data/templates/file/Misc/EmptyHTMLFile.xft new file mode 100644 index 0000000000..9564f3d28f --- /dev/null +++ b/data/templates/file/Misc/EmptyHTMLFile.xft @@ -0,0 +1,27 @@ + + diff --git a/data/templates/file/Misc/EmptyResourceFile.xft b/data/templates/file/Misc/EmptyResourceFile.xft new file mode 100644 index 0000000000..c50cce23f0 --- /dev/null +++ b/data/templates/file/Misc/EmptyResourceFile.xft @@ -0,0 +1,20 @@ + + + + diff --git a/data/templates/file/Misc/EmptyTextFile.xft b/data/templates/file/Misc/EmptyTextFile.xft new file mode 100644 index 0000000000..93f981b839 --- /dev/null +++ b/data/templates/file/Misc/EmptyTextFile.xft @@ -0,0 +1,18 @@ + + diff --git a/data/templates/file/Misc/EmptyXMLFile.xft b/data/templates/file/Misc/EmptyXMLFile.xft new file mode 100644 index 0000000000..499305acbf --- /dev/null +++ b/data/templates/file/Misc/EmptyXMLFile.xft @@ -0,0 +1,22 @@ + + diff --git a/data/templates/file/Misc/EmptyXmlForm.xft b/data/templates/file/Misc/EmptyXmlForm.xft new file mode 100644 index 0000000000..565b7fe86f --- /dev/null +++ b/data/templates/file/Misc/EmptyXmlForm.xft @@ -0,0 +1,25 @@ + + diff --git a/data/templates/file/Misc/EmptyXmlUserControl.xft b/data/templates/file/Misc/EmptyXmlUserControl.xft new file mode 100644 index 0000000000..3b132cc207 --- /dev/null +++ b/data/templates/file/Misc/EmptyXmlUserControl.xft @@ -0,0 +1,22 @@ + + diff --git a/data/templates/file/SharpDevelop/AddInOptions.xft b/data/templates/file/SharpDevelop/AddInOptions.xft new file mode 100644 index 0000000000..979a1fcb19 --- /dev/null +++ b/data/templates/file/SharpDevelop/AddInOptions.xft @@ -0,0 +1,68 @@ + + diff --git a/data/templates/file/SharpDevelop/ExampleMenuCommand.xft b/data/templates/file/SharpDevelop/ExampleMenuCommand.xft new file mode 100644 index 0000000000..77cd899918 --- /dev/null +++ b/data/templates/file/SharpDevelop/ExampleMenuCommand.xft @@ -0,0 +1,60 @@ + + diff --git a/data/templates/file/SharpDevelop/ExampleOptionPanel.xft b/data/templates/file/SharpDevelop/ExampleOptionPanel.xft new file mode 100644 index 0000000000..576c48c6a7 --- /dev/null +++ b/data/templates/file/SharpDevelop/ExampleOptionPanel.xft @@ -0,0 +1,60 @@ + + diff --git a/data/templates/file/SharpDevelop/ExamplePad.xft b/data/templates/file/SharpDevelop/ExamplePad.xft new file mode 100644 index 0000000000..5343436e9d --- /dev/null +++ b/data/templates/file/SharpDevelop/ExamplePad.xft @@ -0,0 +1,83 @@ + + diff --git a/data/templates/file/SharpDevelop/ExampleView.xft b/data/templates/file/SharpDevelop/ExampleView.xft new file mode 100644 index 0000000000..7debc002ad --- /dev/null +++ b/data/templates/file/SharpDevelop/ExampleView.xft @@ -0,0 +1,92 @@ + + diff --git a/data/templates/file/SharpDevelop/SimpleCommand.xft b/data/templates/file/SharpDevelop/SimpleCommand.xft new file mode 100644 index 0000000000..77317143c6 --- /dev/null +++ b/data/templates/file/SharpDevelop/SimpleCommand.xft @@ -0,0 +1,41 @@ + + diff --git a/data/templates/file/VBNet/VBNet.Empty.xft b/data/templates/file/VBNet/VBNet.Empty.xft new file mode 100644 index 0000000000..ae3c08159d --- /dev/null +++ b/data/templates/file/VBNet/VBNet.Empty.xft @@ -0,0 +1,31 @@ + + + + diff --git a/data/templates/file/VBNet/VBNet.EmptyClass.xft b/data/templates/file/VBNet/VBNet.EmptyClass.xft new file mode 100644 index 0000000000..d65467d05a --- /dev/null +++ b/data/templates/file/VBNet/VBNet.EmptyClass.xft @@ -0,0 +1,41 @@ + + + diff --git a/data/templates/file/VBNet/VBNet.Forms.Form.xft b/data/templates/file/VBNet/VBNet.Forms.Form.xft new file mode 100644 index 0000000000..6d9129d366 --- /dev/null +++ b/data/templates/file/VBNet/VBNet.Forms.Form.xft @@ -0,0 +1,67 @@ + + diff --git a/data/templates/file/VBNet/VBNet.Forms.UserControl.xft b/data/templates/file/VBNet/VBNet.Forms.UserControl.xft new file mode 100644 index 0000000000..c553534f3c --- /dev/null +++ b/data/templates/file/VBNet/VBNet.Forms.UserControl.xft @@ -0,0 +1,63 @@ + + + diff --git a/data/templates/file/VBNet/VBNet.Patterns.Singleton.xft b/data/templates/file/VBNet/VBNet.Patterns.Singleton.xft new file mode 100644 index 0000000000..c78388a358 --- /dev/null +++ b/data/templates/file/VBNet/VBNet.Patterns.Singleton.xft @@ -0,0 +1,50 @@ + + + + diff --git a/data/templates/file/VBNet/VBNet.UnitTest.xft b/data/templates/file/VBNet/VBNet.UnitTest.xft new file mode 100644 index 0000000000..8ad02fba58 --- /dev/null +++ b/data/templates/file/VBNet/VBNet.UnitTest.xft @@ -0,0 +1,71 @@ + + + diff --git a/data/templates/file/VBNet/VBNet.Wizards.TypedCollection.xft b/data/templates/file/VBNet/VBNet.Wizards.TypedCollection.xft new file mode 100644 index 0000000000..dfec0601f1 --- /dev/null +++ b/data/templates/file/VBNet/VBNet.Wizards.TypedCollection.xft @@ -0,0 +1,304 @@ + + diff --git a/data/templates/file/VBNet/VBNet.Wizards.TypedHashtable.xft b/data/templates/file/VBNet/VBNet.Wizards.TypedHashtable.xft new file mode 100644 index 0000000000..589576ccc3 --- /dev/null +++ b/data/templates/file/VBNet/VBNet.Wizards.TypedHashtable.xft @@ -0,0 +1,327 @@ + + diff --git a/data/templates/project/CPPNet/ConsoleProject.xpt b/data/templates/project/CPPNet/ConsoleProject.xpt new file mode 100644 index 0000000000..f5a257de73 --- /dev/null +++ b/data/templates/project/CPPNet/ConsoleProject.xpt @@ -0,0 +1,84 @@ + + diff --git a/data/templates/project/CPPNet/EmptyProject.xpt b/data/templates/project/CPPNet/EmptyProject.xpt new file mode 100644 index 0000000000..ed7a5f87cb --- /dev/null +++ b/data/templates/project/CPPNet/EmptyProject.xpt @@ -0,0 +1,18 @@ + + diff --git a/data/templates/project/CPPNet/FormsProject.xpt b/data/templates/project/CPPNet/FormsProject.xpt new file mode 100644 index 0000000000..2ee96da968 --- /dev/null +++ b/data/templates/project/CPPNet/FormsProject.xpt @@ -0,0 +1,107 @@ + + diff --git a/data/templates/project/CSharp/ConsoleProject.xpt b/data/templates/project/CSharp/ConsoleProject.xpt new file mode 100644 index 0000000000..91a58b2d24 --- /dev/null +++ b/data/templates/project/CSharp/ConsoleProject.xpt @@ -0,0 +1,78 @@ + + diff --git a/data/templates/project/CSharp/ControlLibrary.xpt b/data/templates/project/CSharp/ControlLibrary.xpt new file mode 100644 index 0000000000..288bb5bc33 --- /dev/null +++ b/data/templates/project/CSharp/ControlLibrary.xpt @@ -0,0 +1,116 @@ + + diff --git a/data/templates/project/CSharp/Direct3DProject.xpt b/data/templates/project/CSharp/Direct3DProject.xpt new file mode 100644 index 0000000000..98292f95a6 --- /dev/null +++ b/data/templates/project/CSharp/Direct3DProject.xpt @@ -0,0 +1,204 @@ + + diff --git a/data/templates/project/CSharp/EmptyProject.xpt b/data/templates/project/CSharp/EmptyProject.xpt new file mode 100644 index 0000000000..5621a73e02 --- /dev/null +++ b/data/templates/project/CSharp/EmptyProject.xpt @@ -0,0 +1,18 @@ + + diff --git a/data/templates/project/CSharp/FormsProject.xpt b/data/templates/project/CSharp/FormsProject.xpt new file mode 100644 index 0000000000..dd5b01a6e7 --- /dev/null +++ b/data/templates/project/CSharp/FormsProject.xpt @@ -0,0 +1,124 @@ + + diff --git a/data/templates/project/CSharp/Library.xpt b/data/templates/project/CSharp/Library.xpt new file mode 100644 index 0000000000..9df3a1b04a --- /dev/null +++ b/data/templates/project/CSharp/Library.xpt @@ -0,0 +1,79 @@ + + diff --git a/data/templates/project/CSharp/Service.xpt b/data/templates/project/CSharp/Service.xpt new file mode 100644 index 0000000000..a3ad873948 --- /dev/null +++ b/data/templates/project/CSharp/Service.xpt @@ -0,0 +1,149 @@ + + diff --git a/data/templates/project/ComplexExample.xpt.test b/data/templates/project/ComplexExample.xpt.test new file mode 100644 index 0000000000..b91ce0bb02 --- /dev/null +++ b/data/templates/project/ComplexExample.xpt.test @@ -0,0 +1,117 @@ + + diff --git a/data/templates/project/ILAsm/ConsoleProject.xpt b/data/templates/project/ILAsm/ConsoleProject.xpt new file mode 100644 index 0000000000..69eee05dde --- /dev/null +++ b/data/templates/project/ILAsm/ConsoleProject.xpt @@ -0,0 +1,50 @@ + + diff --git a/data/templates/project/Misc/BlankCombine.xpt b/data/templates/project/Misc/BlankCombine.xpt new file mode 100644 index 0000000000..d01ff4d933 --- /dev/null +++ b/data/templates/project/Misc/BlankCombine.xpt @@ -0,0 +1,18 @@ + + diff --git a/data/templates/project/Setup/WixProject.xpt b/data/templates/project/Setup/WixProject.xpt new file mode 100644 index 0000000000..f2fd3cb333 --- /dev/null +++ b/data/templates/project/Setup/WixProject.xpt @@ -0,0 +1,451 @@ + + diff --git a/data/templates/project/VBNet/ConsoleProject.xpt b/data/templates/project/VBNet/ConsoleProject.xpt new file mode 100644 index 0000000000..540448d438 --- /dev/null +++ b/data/templates/project/VBNet/ConsoleProject.xpt @@ -0,0 +1,43 @@ + + diff --git a/data/templates/project/VBNet/ControlLibrary.xpt b/data/templates/project/VBNet/ControlLibrary.xpt new file mode 100644 index 0000000000..e2b4c7a741 --- /dev/null +++ b/data/templates/project/VBNet/ControlLibrary.xpt @@ -0,0 +1,100 @@ + + + diff --git a/data/templates/project/VBNet/Direct3DProject.xpt b/data/templates/project/VBNet/Direct3DProject.xpt new file mode 100644 index 0000000000..037f987e4a --- /dev/null +++ b/data/templates/project/VBNet/Direct3DProject.xpt @@ -0,0 +1,188 @@ + + diff --git a/data/templates/project/VBNet/EmptyProject.xpt b/data/templates/project/VBNet/EmptyProject.xpt new file mode 100644 index 0000000000..52f0e78826 --- /dev/null +++ b/data/templates/project/VBNet/EmptyProject.xpt @@ -0,0 +1,21 @@ + + diff --git a/data/templates/project/VBNet/FormsProject.xpt b/data/templates/project/VBNet/FormsProject.xpt new file mode 100644 index 0000000000..64239a4b99 --- /dev/null +++ b/data/templates/project/VBNet/FormsProject.xpt @@ -0,0 +1,112 @@ + + diff --git a/data/templates/project/VBNet/Library.xpt b/data/templates/project/VBNet/Library.xpt new file mode 100644 index 0000000000..b7f10233bb --- /dev/null +++ b/data/templates/project/VBNet/Library.xpt @@ -0,0 +1,72 @@ + + + diff --git a/data/templates/project/VBNet/Service.xpt b/data/templates/project/VBNet/Service.xpt new file mode 100644 index 0000000000..9ee4c42dd5 --- /dev/null +++ b/data/templates/project/VBNet/Service.xpt @@ -0,0 +1,134 @@ + + + diff --git a/doc/BuiltWithSharpDevelop.png b/doc/BuiltWithSharpDevelop.png new file mode 100644 index 0000000000000000000000000000000000000000..66b43d77461ef368bd800df63fd3801985b42cf5 GIT binary patch literal 452 zcmeAS@N?(olHy`uVBq!ia0vp^5kRcK!3-o9TKTU6QY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%u?6^qxL&z%0>~6Q66eOi!06)X z;uunKD=A@#AOnX2n;Y9K2Db)=MKccqrHq>ynK-fxl$ZS!P)re8ZX(9o!@$^bJ0a&+ zp+~Z@ghImuHe(~DH4MfRdyY&?2& z2{2=49n5(3L6S$n!Jt`ELNH6hkmpzu!zz|#AeEbWm;@Y5KxSv888|RpJOkGSc1)gu z@*ys_rfGr;nV>2Zr{{5~*{oJDGTOwT6m6ii+T9SS*&v3;h_#p1Si+U-oO{P239w}k z6&u&g7QCC__K25_L!oDZL%CSigay~NcYwHi^p5Fdc9a`BFeFO!sD6?t;C#?+19Y)X vbAo>r(A(g^=tzr{LUviwf>2{Ig#!#7l}s@&c$ahmgO$P4)z4*}Q$iB}a#4+G literal 0 HcmV?d00001 diff --git a/doc/ChangeLog.xml b/doc/ChangeLog.xml new file mode 100644 index 0000000000..02be6db869 --- /dev/null +++ b/doc/ChangeLog.xml @@ -0,0 +1,13 @@ +Added 'test' build target. This target runs all unit tests for #Develop. Worked on assembly analyser unit tests.Updated to nant 0.85 nightly build. (mostly because of the ilasm task).Fixed bug in text editor option panel.Shift+Esc hides all pads. Status & Toolbar can be turned off.Added TreeListView library.Changed NANT buildfile: C# binding now refrences NRefactory.added missing fileAdded debugger from david. Removed ICSharpCode.Debugger.C# Binding now uses NRefactory. NRefactory still needes support for regions for the folding.Spaces & Tabs should now draw correctly with a background marker set.PropertyService.DataDirectory can now be set in the startup application.Made parts of the docu from C# external.Added PropertyObjects to StringParserService. +Added PropertyLink to PropertyService. +Fixed bug in DefaultFileService.OpenFile: Assert failed for urls. +Properties are now also saved using TypeConverterPropertySystem now uses TypeConverter +Startup application can now override the default name for the property file. +Corsavy now uses the filename 'CorsavyProperties.xml'All core exceptions now are subclasses of CoreException +Fixed core xml documentation (<code> is only for multiline codeblocks)1.Check whether to load referenced assemblies. +This change shouldn't affect #D at all. The property +is set to true. The reason of change is ETM. +2.Set Position of the ProgressBar to the end of the panelFixed linker invoking bug +Fixed bug in project converter: converted project has same project type as source project +Fixed bug SharpRefactory (NRefactory is not affected). +These are the same bugfixes as in Fidalgo rev. 1713Replaced some String.Concat calls with '+' (they're compiled to the same IL).Ported NRefactory to .NET 1.1Renamed IDialogPanelDescriptor.DialogPanelDescriptors to ChildDialogPanelDescriptors.Added forms designer bugfix from forum user AaKaa.Debugger implements the dispose pattern and as far as I see I clean up everything. But the SymbolReader is still locking the .pdb file.Debugger Position is now visible again.Added namespace lookup bugfix from #D Forum user LelliFixed some debugger issues.'language' of the method (CallStack) is now working.Removed more uneccessary stuff.Removed dll.Moved CallStackPad to #Dev main. (It's easier for now to have most debugger pads in the editor but in the long run it's better to have pads that can be 'shared'.)Worked on CallStack.Worked on the debugger (local variables).Breakpoints, Show Postion and Stepping (but not very good) is now working :)Debugger position is shown again (Debugger.Break()). Break from Breakpoint aren't shown because I'm seeming not to get the Breakpoint event ???added files.Fixed buildfile. breakpoints in the debugger are now working (don't except to see the 'current' position).Debugger: It's now possible to retrieve the currrent position in source code from a threa :) (it's highlighted too - breakpoints still not work but Debugger.Break() calls do the job too).Worked on the debugger (currently I've the problem that I don't get a valid IUnmanagedSymReader object)Fixed stupid DefaultParserService 'optimization'.fixed bug in buildfile. set version to 2.0.0made trunk treeInitial import. \ No newline at end of file diff --git a/doc/RENAMED.txt b/doc/RENAMED.txt new file mode 100644 index 0000000000..25c53ee7ab --- /dev/null +++ b/doc/RENAMED.txt @@ -0,0 +1,10 @@ +Copyright 2002-2004 by + + AlphaSierraPapa, Christoph Wille + Vordernberger Strasse 27/8 + A-8700 Leoben + Austria + + email: office@alphasierrapapa.com + court of jurisdiction: Landesgericht Leoben + diff --git a/doc/SharpDevelopTODO.txt b/doc/SharpDevelopTODO.txt new file mode 100644 index 0000000000..c387e62176 --- /dev/null +++ b/doc/SharpDevelopTODO.txt @@ -0,0 +1,29 @@ +++ ROADMAPS ++ + +http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.SharpDevelop1xRoadmap +http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.SharpDevelop2xRoadmap + + + +++ HELPING ++ + +http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.HowCanIHelp +http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.FeaturesYouCouldHelpUsWith + + + +++ WISH LIST ++ + +http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.SharpDevelopWishList + + + +++ DISCUSSION FORUM ++ + +http://www.icsharpcode.net/opensource/sd/forum/ + +please also see: + +http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.FrequentlyAskedQuestions1x +http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.BugList1x + diff --git a/doc/copyright.txt b/doc/copyright.txt new file mode 100644 index 0000000000..25c53ee7ab --- /dev/null +++ b/doc/copyright.txt @@ -0,0 +1,10 @@ +Copyright 2002-2004 by + + AlphaSierraPapa, Christoph Wille + Vordernberger Strasse 27/8 + A-8700 Leoben + Austria + + email: office@alphasierrapapa.com + court of jurisdiction: Landesgericht Leoben + diff --git a/doc/license.txt b/doc/license.txt new file mode 100644 index 0000000000..3f5442da36 --- /dev/null +++ b/doc/license.txt @@ -0,0 +1,299 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + EXCEPTION + + 13. In addition, as a special exception, AlphaSierraPapa gives permission to +link the code of this program with the Microsoft .NET library (or with +modified versions of Microsoft .NET library that use the same license as the +Microsoft .NET library), and distribute linked combinations including the +two. As a second exception, AlphaSierraPapa gives permission to link the code +of this program with the DockPanel Suite (or with modified versions of +DockPanel Suite that use the same license as the DockPanel Suite), and +distribute linked combinations including the two. You must obey the GNU +General Public License in all respects for all of the code used other than +the Microsoft .NET library and the DockPanel Suite. +If you modify this file, you may extend this exception to your version of the +file, but you are not obliged to do so. If you do not wish to do so, delete +this exception statement from your version. + + + + END OF TERMS AND CONDITIONS + diff --git a/doc/readme.rtf b/doc/readme.rtf new file mode 100644 index 0000000000..090325ed55 --- /dev/null +++ b/doc/readme.rtf @@ -0,0 +1,4654 @@ +{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} +{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;} +{\f36\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Albany{\*\falt Arial};}{\f37\fnil\fcharset2\fprq0{\*\panose 00000000000000000000}StarSymbol;}{\f38\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Bitstream Vera Sans;} +{\f39\froman\fcharset238\fprq2 Times New Roman CE;}{\f40\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f42\froman\fcharset161\fprq2 Times New Roman Greek;}{\f43\froman\fcharset162\fprq2 Times New Roman Tur;} +{\f44\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f45\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f46\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f47\froman\fcharset163\fprq2 Times New Roman (Vietnamese);} +{\f49\fswiss\fcharset238\fprq2 Arial CE;}{\f50\fswiss\fcharset204\fprq2 Arial Cyr;}{\f52\fswiss\fcharset161\fprq2 Arial Greek;}{\f53\fswiss\fcharset162\fprq2 Arial Tur;}{\f54\fswiss\fcharset177\fprq2 Arial (Hebrew);} +{\f55\fswiss\fcharset178\fprq2 Arial (Arabic);}{\f56\fswiss\fcharset186\fprq2 Arial Baltic;}{\f57\fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f59\fmodern\fcharset238\fprq1 Courier New CE;}{\f60\fmodern\fcharset204\fprq1 Courier New Cyr;} +{\f62\fmodern\fcharset161\fprq1 Courier New Greek;}{\f63\fmodern\fcharset162\fprq1 Courier New Tur;}{\f64\fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f65\fmodern\fcharset178\fprq1 Courier New (Arabic);} +{\f66\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f67\fmodern\fcharset163\fprq1 Courier New (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0; +\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{ +\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\s1\ql \li0\ri0\sb240\sa60\keepn\nowidctlpar\aspalpha\faauto\outlinelevel0\rin0\lin0\itap0 +\b\fs32\cf1\lang1033\langfe255\loch\f1\hich\af0\dbch\af0\cgrid\langnp1033\langfenp255 \sbasedon15 \snext15 heading 1;}{\s2\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 +\b\i\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \styrsid16001860 heading 2;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\* +\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv +\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{\s15\ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 +\fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 \snext15 Default;}{\s16\ql \li0\ri0\sa120\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 \sbasedon15 \snext16 Text body;}{ +\s17\qj \fi1\li360\ri0\nowidctlpar\aspalpha\faauto\rin0\lin360\itap0 \fs24\cf1\lang2057\langfe255\cgrid\langnp2057\langfenp255 \sbasedon15 \snext17 Text body indent;}{\s18\ql \li0\ri0\sb240\sa120\keepn\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 +\fs28\cf1\lang1033\langfe255\loch\f36\hich\af0\dbch\af0\cgrid\langnp1033\langfenp255 \sbasedon15 \snext16 Heading;}{\*\cs19 \additive \cf1\lang0\langfe255\langnp0\langfenp255 Numbering Symbols;}{\*\cs20 \additive +\fs18\cf1\lang0\langfe255\loch\f37\langnp0\langfenp255 Bullets;}{\*\cs21 \additive \ul\cf2\lang0\langfe255\langnp0\langfenp255 \sbasedon22 Internet Link;}{\*\cs22 \additive \cf1\lang0\langfe255\langnp0\langfenp255 WW-Absatz-Standardschriftart;}{\*\cs23 +\additive \cf1\lang0\langfe255\loch\f3\langnp0\langfenp255 WW8Num5z0;}{\*\cs24 \additive \cf1\lang0\langfe255\loch\f2\langnp0\langfenp255 WW8Num5z1;}{\*\cs25 \additive \cf1\lang0\langfe255\loch\f10\langnp0\langfenp255 WW8Num5z2;}{\*\cs26 \additive +\ul\cf2 \sbasedon10 \styrsid14104483 Hyperlink;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\listtable{\list\listtemplateid1{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext +\'01\'95;}{\levelnumbers;}\f37\fs18 \fi-283\li283\lin283 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext\'01\'95;}{\levelnumbers;}\f37\fs18 \fi-283\li567\lin567 }{\listlevel\levelnfc23 +\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext\'01\'95;}{\levelnumbers;}\f37\fs18 \fi-283\li850\lin850 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0 +\levelindent0{\leveltext\'01\'95;}{\levelnumbers;}\f37\fs18 \fi-283\li1134\lin1134 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext\'01\'95;}{\levelnumbers;}\f37\fs18 +\fi-283\li1417\lin1417 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext\'01\'95;}{\levelnumbers;}\f37\fs18 \fi-283\li1701\lin1701 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 +\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext\'01\'95;}{\levelnumbers;}\f37\fs18 \fi-283\li1984\lin1984 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext +\'01\'95;}{\levelnumbers;}\f37\fs18 \fi-283\li2268\lin2268 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext\'01\'95;}{\levelnumbers;}\f37\fs18 \fi-283\li2551\lin2551 }{\listname +;}\listid1}{\list\listtemplateid2{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext\'01\'95;}{\levelnumbers;}\f37\fs18 \fi-283\li283\lin283 }{\listlevel\levelnfc23\levelnfcn23\leveljc0 +\leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext\'01\'95;}{\levelnumbers;}\f37\fs18 \fi-283\li567\lin567 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext +\'01\'95;}{\levelnumbers;}\f37\fs18 \fi-283\li850\lin850 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext\'01\'95;}{\levelnumbers;}\f37\fs18 \fi-283\li1134\lin1134 }{\listlevel +\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext\'01\'95;}{\levelnumbers;}\f37\fs18 \fi-283\li1417\lin1417 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1 +\levelspace0\levelindent0{\leveltext\'01\'95;}{\levelnumbers;}\f37\fs18 \fi-283\li1701\lin1701 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext\'01\'95;}{\levelnumbers;}\f37\fs18 +\fi-283\li1984\lin1984 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext\'01\'95;}{\levelnumbers;}\f37\fs18 \fi-283\li2268\lin2268 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 +\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext\'01\'95;}{\levelnumbers;}\f37\fs18 \fi-283\li2551\lin2551 }{\listname ;}\listid2}{\list\listtemplateid3{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1 +\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2 +\fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 +\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext +\'01o;}{\levelnumbers;}\f2 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23 +\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0 +\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10 \fi-360\li6480\lin6480 } +{\listname WW8Num5;}\listid3}}{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}}{\*\rsidtbl \rsid7266\rsid478716\rsid1529975\rsid2386661 +\rsid5311771\rsid6836014\rsid8399799\rsid8998230\rsid11820290\rsid12669354\rsid13114330\rsid14104483\rsid14353066\rsid14500044\rsid15797313\rsid16001860}{\*\generator Microsoft Word 11.0.6113;}{\info{\author Tom Verbeek}{\operator Christoph Wille} +{\creatim\yr2001\mo5\dy7\hr17\min11}{\revtim\yr2004\mo9\dy7\hr21\min46}{\printim\yr2113\mo1\dy1}{\version11}{\edmins69}{\nofpages4}{\nofwords937}{\nofchars5343}{\*\company AlphaSierraPapa}{\nofcharsws6268}{\vern24699}} +\paperw11905\paperh16837\margl1134\margr1134\margt1134\margb1134 \deftab1250\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\lytprtmet\hyphcaps0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3 +\jcompress\viewkind1\viewscale100\nolnhtadjtbl\rsidroot6836014 \fet0\sectd \sbknone\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3 +\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}} +{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain +\s15\qc \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\b\f38\fs132\insrsid6836014\charrsid6836014 #develop 1.0}{\f38\fs132\insrsid11820290\charrsid6836014 +\par }\pard \s15\ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\insrsid11820290 +\par }\pard \s15\qc \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0\pararsid6836014 {\insrsid8399799 {\*\shppict{\pict{\*\picprop\shplid1025{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}} +{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn pibFlags}{\sv 2}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0 +\picw14115\pich7763\picwgoal8002\pichgoal4401\pngblip\bliptag-992432282{\*\blipuid c4d8af66daa9b8284dc64b16077915b5}89504e470d0a1a0a0000000d4948445200000190000000dc0802000000d13060380000002c744558744372656174696f6e2054696d6500576564203130204170 +7220323030322031383a33303a3532202b3031303006027e470000000774494d4507d2040a101f3189bdfcf4000000097048597300000b1200000b1201d2dd7e +fc0000000467414d410000b18f0bfc6105000052e64944415478daec9d097c5375b6c76f6ef63d69b6b66993745f292d50145154c071c17d149599f75ce6c10c +8cc2f040c5e5cd7b8afda880e28aa08e1bb8200e8b83204f4091a542a1b4b494d2d252a06b926e69f6756ea996dc9be4df74cd4defff4b3e25f9e77f6fff84de +5fcf39f79cf3a7f97c3e04028140a20134d20b80402090708182058140a20628581008246a8082058140a20628581008246a8082058140a20628581008246a80 +82058140a20628581008246a8082058140a20628581008246a8082058140a20628581008246a8082058140a20646a417008190974badede5d5176a2fb476f758 +bb4c163a1d958af862212f2735614a6e8a48c08df4022907142caa6377b82eb6180113b47132369b15e96506c16cb537eb3b0113521295743a7d08672eab6ef8 +e79ea3db7e28c1042bd41c4cbc664cc95afaf06d330ab368345aa43f0caa40830dfc28ce96ef7ff9afe737847a57c8e36c2e9a27c75028a43131284aa218c23b +9fef796eed57a1ded5c4cb3f5871778c4cae502a251249989a72b4bcb668fdb6032567c25fc6dc9ba73efde84d2aa552201442e51a6da08545750e979e05bc5b +90a545109fd168c01e0c06432697ab1312b95c52b842c5276b00ef4eced2783c1e83be0d7b30994c4c70b195b3d9ec50f32d36c753ab376dfaf6d06097f1f59e +63669bfdf17b2673381c4c1de3e2e3592c321aa4e30312fdc2844484e232d0653f313dbeffb9dbed6e6b6d753a1c915e722f986770042858b9c9b1fdcf5d2e57 +4b7333a65fa126373419663db272086ad5c7ae9f4f9d6bb5daedf6c64b174f9e38deddd515e98f67dc02058bd2183b4d67cfb70026646ae4fe2f319707737c22 +bdea5eaaeb9b3bbacd8009a90912ff97989115ca30347498ee7de2b533754dc359cf3b9b0ff43dc164bdea74a5c5621eced920a1808245698acb6a01414c0e9b +99a8e0f98f606a35b430f68873e424c89355ca440a11cefb1389c441034c5eaf77def2b7eb2eb60d733d350dad2e2fda7fce7335b5303a3c1a40c1a23460af6a +62868641c7fd8460977da497fc2b874b412b2fccd1114644e2e02bdff8edc163a7ce8dc8929adb2dfdcfcde61e93a93bb21fd1b8040a16a51940b0d2d5849150 +97fdd8030ebde5a6c405ac5c1438cde972af5cb775a49664b2d8fd5f7675760ef54c909040c1a22e26b3ada2e622604296564e18118944080938dfa8076760a5 +274afd5f626e2c9f2f089cb6afb8d2d061029c07f322e552a14e2de771d9c840282438f7d96eb70f780864b0c0b406ea72b4bcd6e3f1867a9741a7eb54b88b9c +2f103018a4f881011b8612214f25e6f88f603a1b3480b56defb1a067e07158b7cfc89b5d98ac9270988c5f637616bbabb456ffd9ce92a6105a29e633fd5fc218 +d668408a9f3f48443802f6aad2d46c262ebe4e9e001638e23e394787a238790ae5c956d65c0a1c54aba4457fb9592921de52e47398b3a7244fcdd1fcc7ff6c34 +5b89b91d79191a2e13e7afc06cacd1000a167539028c5be767241246c4a409608123ee1352030358c1571e589384d9532f2fba452ec21968288ac6abd5aad838 +0ea777fcfac213df1d38493870e69434c248502714324ca06051149bdd79f2cc79c084ec24056144488e00568ba1f37ca31e30215323f37f89c98d40102477cc +ebf53a9c6ec2e09c197904b5c2bce09cdc09fed9674e17f12891807b5d1ef1068558224120230d0cba5394e3a7eb032fd77e68345a722cee22e7f27824f171c0 +86219fcb56cb70c16fa15018b404121bd4c413ef2af8e7c7f791969ee1af56cdfacec04ac3c7ee9ace6511dc67519f39061959a060519423c012c20c5d1c8f8d +b3be49727f101928f45690a5a58717c0c2983a218530d265b6f9bfe470b931b22bf69acfe72b5abf9560614d2f489b3d2981709ef804e208644480824551c037 +da266591378005965affe2c73e0082f5b7876fa3e33363b7ed2fb73baf941cf279fcfee72eb7fbc9d59f13ea0d5335aa250f4c23c4f8c562494c8c0c818c0250 +b0a80876ed9554d40126e42429092324b945d8d1653e53df0c981058fc281486b40d3392e25f78e27eff91267de753efee39566368d49bac76a7c3e968efea29 +ab6e78f3b3dd13ef7afa83aff7f94fce4d4b28facb4d5c06cde3f1f63f68283d2939057be2767bb047a43fb0f1060cba5391f2ea0b161ba8e9424a3c4e9ed818 +e488c81497d700f29bd82c8646c1f71f110804418b1fad76c7fe5f4e634f92129413d2132bfcf21bce5d6cfbbff776f63d67d05177e854b5cadac6079edd0458 +2d87cddcb1e6d1b8b8588542c9e3f311c8b081824545c0690149090a110f9703291293e5861738e23e3143c364e08b1f43f883c5276bfeb0fced01bf1d40adc2 +212f3dd1e376355eba843d30c1c2644ba95291e4de4594025d422a022ec49b94a9218c042dc48b0847ca0659fc18c2933d0c0ce18d14f9195742ef568be542c3 +79b319b69d191650b02887d7eb2d2eab054cc84d21deda17932380d563b19daa06163fea028a1f435858e0c8fd4841da62cce8050a16e5387daeb1cb64014c48 +53135adfb1b83c1e42024a2aeadca1bb86d2e9a84e85cb1de3f3f9418b1fed0e5769152869764408528cc9274b3166f402058b72805ba1c7292431425c90853c +fe2038f49693a2e6108a1f439857c72beb0049b323454e6a403126695243a217285894031cbe9992ad238c9027030b1c7acbcf24e66a860a6081cf33521404ac +873c9f64f402058b72802dacdc54156184241958981f77e2743d6042b62e20772c8440802db591223b20978d24c598510d142c6a71ee426b5b3ba8756f7a428c +ff4b0683419204224cad30cd0af52e8d4623e48e71b9dca009046eb7079c343b2290b91833aa8121406a014e0b9049044a31aeb5a63044ebbbb1076c18a66955 +7c765801a34e93e53fef9cee743a1164141becf1b96cb95464b55aafac871c866ab403058b5a80132f27676b09f2449eb0cbe181b64d258c841208458ce8e5e5 +7fb4d96c06bdde68d0634f4669c1985a61261587cb753a1c76bb5d4c9a7b17510d142c6a01eed599971a50394c0ebbe0b21f07dadb262b2920f406945acc61d4 +68b5d8c36ceec1fe8caab585414351b1443afcf340a0605188c6d6f60bcd46c004c2de0d288af205a4689b79eaecc51e0b684f87b480e2c730db51090442ecd1 +6aec3a78bcfa97f2dafa4bfa8eae9e1eab3d462c50c9c4d9a909b7cdc8cfcfd291c42f8640c1a210e09632421e273e06dffa4e240adafa6eec390c340cb5f172 +c20610e1673c1d3a51bd61f3de5d07ca0829a97548efd6aa3b7f2a5df5e1b7d929ea9796dc774d7e3a491268a90c142c0a31400fac6c2d71ef0672f883c84011 +f7f00358fe34eb3b9f79ed8bedfb8e0f38b3aaaee9f74bdefaeb8337ce9d95ab5028e50a05bcdf1729a0605108b060e505b4be2349c4dde7f3818b1f73028a1f +07b4b0f615573cb2e23d9325dc883bb68677bedccf663166e5f7349caf572a55baa424069319e6e190918214063f640c30769a6a1a5a0013b2025adff9f7328f +2067ea9a3aba414d0ed21208c58f4c2e970b98ffc5ce430f2c7d337cb5eae78d4d7b9b3bec9878b5b5b596979d1cbd3b8c905040c1a20a474ed6025adf71d84c +b51c17a0c1d42a68ebbb48ac1c6418aae462b910973b8699578018f9a7db0f2c7ae123d7907a817a3cde2f7f28ef7b6eb7dbab4e57badda35e9308f1070a1655 +002734e4676a98f8eee624f1079181046b72b696300208609555373cb5faf3e1ecc97ca0e4acedb7a6ef769bade1fca8777d80f803058b2a80e3d613d3c26d7d +37f680a576424ab8dba6769bad0f3fbd0e50df130e6e8fa7dd7cc5aad2b7b53a1c8e619c0f3238a0605102ec5aada8bd049810d8fa8e2495baf597da5a0c5d80 +091989b8e247cc8de587287e5cfbc9ae8626c3f09764e8ba527083196bed46e3304e06191cf02e212538567ece13ba3d39834ed7125adf09c8d26a0eec0f4a45 +7c42f1236618060d60193a4c843d6f08e751aba47172319bc568359a5a8c5d984a7abdc13dc716a3a920f94a866d8fc984a8d508644c20c50f2564b40117e2e5 +a627b0f17b3790a427323260002b478786b76dea5b1b779bad4172e5afc94fbde3dacc094972c2790cddf68fbf3bf1534990ef8e9fd81b7d8ff4874421a04b48 +09c061a0828c80d6775112710f3380e5767b3effd7e1c0f1271ebce1f987af9b98a220a81587c3c94ad5bcb66c6e76725ce051022e2e6bd4e381370ac70e6861 +8d7f6c76e7c9aa06c0846cad82304292bd129af59de71bf58009995a5c000b455141b0e2c7236535ed5d3d84c1c7ee9e7eeb55498441b158a24d4a12fe9680f6 +d87db396af22ee3ca890e262643472542f51042858e39f92ca3aa72ba4158019174971c456734c72949e800d43018fad26143f0a83173feefcb19430c2e7b16f +29d41106e3d56a5d52b27f084c2609227f89729c603161befb18027f398c7fc0090d19ba381e1bf77b8b4c090da095176469c30c60ed39544e189931395dc0c3 +89b2542a25a81546698065aa8993f1f09d02391c50563d64648116d678a6b6e66c59e9b1ddbb0ed23c761f3d78bb95490195c3d192321a24772cd8cabb7aac81 +4d75843ce2a7a1d1127bc898ccb68d3b7e264cbb7e4a0661442020450b698a00056b1ce272b936fe63ed87efafe7306c05e9569d1bedb0b0109eec223ac98712 +fd976c5d40008b1cbd31dbbb7aaaeb9b011332b432ff9798dc0883153f569d6b0c4c6d3f53dfe2f3e5f42b149dc12074fe72bb3d4b5ffe14133bc2818559c412 +7121690c522a00056bbc51577b76e1a377666bda36fe6f8f5ae6457c088d8958dcb4f55f5bb7ecedbcc0bed643c75d99296a7ceb3b0e87cd0eabf5dd68535c06 +2a7e64b3185a05ceb4110882173f06dd74a3a2b6f1c0a9a61b26fe7a7b948ef9967ee695bebd7bf9ab9b76ec27769e4950c524e3f74665b1583cd8246b0c8182 +35ae387ef4c0d245f3562e344e4d72221ec4db671fd8100ecdb7ec2173568a6be58683f5eceb7df45fafb1e404a5888bb3b9c89381050ebde5656818f8e2c750 +012c93d91a747cd5273f545c3b617a9e56c8411512dea5667dbbc9dad4d6b1fb40d9d7df1707dd6975de6d8584a8994c2687cd48c7122858e387eaaaf2e58f3f +f4ee338654b11b213423f0219e1ee4d6c98ece874cffd871b8d2371bb97c990506b0c8938105ee329a9f1e18c00aeec92aa4213ddcdd872ab0c76fafbe02af47 +26115c93434ccb52c6aa10c81802ef128e133a3b3b163e7ac72b8b8dbd6a15c291c20cae79b36cc9b1160d7aba6f243779707b378c193d165bc55950f16390d0 +5b08db50a7562023c1d23fce64d1893725313f34921f13f58082354e58f1f89d8fdc61cc8b7581f77ff19a9117179950d30596a737b293aac6b7be63b1c0adef +c68c63a7ce119aacfbc3a0d375f858129f1fb2f85197a018bed736fbea9c492932c2a046a31dd2c92043070ad678e0cb4f5eb399aaeebbda16ce6e55b15cefe2 +3f983318c7e295d218212e17893c012c70f1634eaa9acd246c9b1ad2efe371d8d3f2d386b398745decc27b261306e50a85582219d2f92043070a56d4535f57f3 +f61b6b563ed24df38635dfe742e6dd6463d2ecb92a27e12d922434200345dcf30759fcb860eeac21af44ad92beb8e0262e0ba78f2c162b392535d21f12158182 +15ddb85cae250bee5a36b753210c4fae2ee3b3227fbedf626df87fc2384902587687ebc4e97ac084eca47003587ddc3dbbf0c6ab7286b092822ced9ac573445c +9cb389a268667636acc8890850b0a21887ddfecc920792635a6e9ee0f258185e07eaf3d0c26affeb416ebfdaded1d179eeeca9fe310683c1e3912269fb78655d +d0ac823e68345a721c4e9eb85c2e78df2dec904f5f5d9497a14106c3fd3717be387fa6988713a6cb6a95231492c514a51a50b0a2953355e5f7fc6e626cd781e7 +a6d19c1705ae669ee3bcd0562db69e8ab194c7582b25f67aa14bcff1da83ff17a30e64febd96ed9bdfeb1f118a442449292a2e03f983e9ba583e9b10c01ad830 +140b785bdf5e76eb8cfc701630252769dd33731fbd25177f57b0b7ce39277782540a379d8f18300f2bfaf0f97c1fbf57f4c567eb8a16182666ba69f4dedf3b34 +b437d9ca87f985dedeaf3e0fe2b5a02e23cb7141e073d2690c2f43e660c438688cdf0c302f72e774db9b5f188a7fde356dc66d48e81242ecdb559dae3c767047 +5bf379a3a10da57915aa58a52a71ca35b767e74d190d8d3b5c0adcf0357388b9638a18d157af2ff9ee40e947dffc78f04475a011a78c115d5f98312d37313321 +c809c562495a46069bcd0ee77b414609da707610818c3d7abd7ec99fe6f474d7e765ba1c4e9a54e88d577ae215bd5fd3b56e42694aefffad1bf13a11af1d71b5 +b2dded1c4cd4982a1b5deac474e6bba3eca7df970a78e8737f7f3541a3c99b984fe8e36e341a37ac7d76fb8eef853cfbd5b9f638854726f59a2c685b3bdaa2a7 +1fadc4fc30e68dd7e5cd5fb22a257dc248fd03dd6e8f76e6e341bb83f6b172d1ed93d37031ac298553d99cc1951375992cc72b6a1a2eb5eadbbb791ca644c011 +f1594a113ba8fc72389c44ad56a15092c402a532d0c28a26f6efd9fad4f2c50ea78fcf13fe741c31b4dbfdfb5c4945de595739fe74af2555f36b0653eff5c544 +e8d8838f60e695cfeef098116723cfd9c263489c7bcb9412096fd6ccab5e7a61c5df9e7c6edaf46bfb4fe5f57adf5df3cc860f3ebb759ae5f357ac49099e5eed +bb6cb8217dc17d5aefdf276b99fb7e39f4fb3b67cf9e91b3e4d9f589baf4e1ff1bcbab2f00d40a230d9f3b86993c83552b0c89883f7b7a01f6c462b1e8dbda8c +46833360f31b0683219648309d8a91c9a0549104285851c33bab96eddcb973cd5b9f5e7fc3ccbeeb079315835edfdcdc78a9bee4e08fdb7efcf9f4373fa05bf7 +711ebcc5f6ecfc1e363e0c8d1d41e3222817a18bad5e9bd5d5caacbac04f4d4b7d69d53a91f8ef452fbe70aa64cfa2ff7e253d23a3bdbd7df9c27b9a1bcf6c79 +ad2b05932a07e2ee467c4e2430c92b5fe52a98eb5a70afe5c36d25737e77dd3d730a57146de60e2f727f0418c0d2c6cb45f828f830ef6cf2f9fca4e464ece170 +d8ed367bdfc6a874069dc3c6fe70a04e910de8128e1d4d6d1d6f7cba6b0807fa7cdea663eb518f63fdc69f84a1b78f77381cdf6c2a5abbf64363a73727d5f5d6 +8a6e4d5cc86471cc565abc3aabf42ce3cb2d5b190c7a4343c3eaa2e72babea381c86c3e1beb1d0fefab26e36665285b7c1028d8d181de8aa8f0515e7f8f937cd +674a869ea8b9e7507960fbaa7ed2b4b15373752e976b42926c72a6fafbe2b3ed166fa87dbd468ac71f981117a762b160f42af240c11a3b367d7bf0af2f7e34e8 +c37cde42de4f3919c9abd7ed6185d1b9b8ade5e2e205b71f2dd50bf95e4cb3ae9de40c35f39f7b852bd6f2bedeba7d627e414b7313e601b95cee679f7eb2f8c8 +e15d6b8c3ad9a037734785c807ffe2bdbf858fc6e5365847b76ce585f9b30bb3131f5bb9a5b5c33caadf2855a37a6b69ef4d098944aa502a6532199d1c1ba051 +1398d6307680fb6706c7e79b26d83fe39ac9af6fd86b30e88f1c3af4cd96cdfbf6fe70b6bada62b1043d4215a7f962fbc9457f9e63b6d216ae941c2e6179ac88 +c7dcdbad01fbeab5215e17d2f74bea86296614a57dbf7b179bcdd62525c7c8e41e8f5b151b8bbdc5f8377b5702dd44b9b6bf99c9be3669ba425bbaa4a5400b5d +2814440a1415b8822c0ad7df2b82d7ab5cad5245fc510e82a8e83deacf05f4aa8822b288a0822b42050129656b0b144ae90a2d5dd226cdda2cb3fd3349da2669 +9a2ed29a7b98e7e4e464bef9bed932f3ccfbbedfbb10fd798d1106f0c48cb60dcbf590aa245e52d58f2df4123004254607b7684d03cd56c025a18556db5a7ebd +ecec99026d6beb40ef94417760de1583875385657d1d3245f15b7070a2de16919c18efc15008822425274f9c74f73df7de4789481eab56aed9161af2faabebb7 +2c7b33e03fb9ad19c3ddebb32300e601b9844c4e9415e4e73bda0402419c323e63dcf803df7c7da54a3234480bfa0e8a10a78db42ad66873debc1a2a13379a6f +4fa6040f440f918bf8dcf3a5b70662e31e181913ec768204c1ebbb8d9fc1ed0223610d12ea55ad7dad933e63c8efcd6ac1e1a397f67fb5d76c368528d84909ec +e1316c3e8ffed7701c2f2e2a7a7fd3bfe7cc9a71ff8c7bbffa720f8abab1d2a34fae5efdf2b3661bf4cca6809a46777f07da4b0b606a30390d2bbb56aad7eb3b +d6cc5ff0a0442addf56ba0ad81df3f6b0169036322d1954b8d91d81908f42160a8f718194d93c895aaa681d8b80794e16e93929456cef38f8416772618096b90 +e0bb625557cc1a7abcbedeacd3118bee33678db58d1d6593889cfc4110a0b105aebec5aaaa43ca6a58c7ce0a2e5fbab8f285dc8f3ffccfabafad9f74f7e48e8d +3cfecf9729b9ecbd8ddb723f90ee59ade17958c0489039acf6dfb8b4e8c2f9c953a63adab83cdefdb3e7ecfa6247a90ac4eba5dc2803cceb33e9106d60f644cb +2fa7b822ebd9a38de36ffbc51c694fe35532f08415112a0f10b95d353f09b7bc63c1485883843e18b048e29ea03c0947fdf85ceda92f54eb730cd3c65b3bd80a +d0e16c203c98989862fbdbfde6d7730c27b637ed7c55332dd55a5971fd6f7f5db8e6955594dad2d13967c5eb53ef1e5d56cb7e639797f03765b80586e1d2d252 +d7c6050f2ea4be779ee3f16275b63a11dad41f0d08d783558f1b9aeb5becdef7b7191461e94d969b8d036e4b4a1de13975e03f35d0ee4c30843548e825614100 +cf14e44d4ed66c7e59bf688645d01357d05eec5a903a0cdd9ca3fd6a8d7a540cd8b1fdb3552b577470160441ef7eb0273c44f4f509fed122cf89793e17848504 +545556b836a6a4a5c5c6c6fd52c05591302f5e4fdd23960a31d9d73943120c11137111d8e8c08a3e8eec011121017289e06ab56a10e6b7bb6664f59f1a687726 +18c21a0c68b446df15ab9c20c974eeb145935a97ded3d6a35c4275a027feb4c091be1de683e431d88e354d934683bd7b76afc87d0e6fcfd82993c9377ef03904 +81b7f6882c5d9c1c6222c4d5559e337af31f7c08c3c99d87042c39e044583843da2cd7a5781b02fa02c20ca64fb084f37a71e27dc1083b890c8e012b7ea85b9c +338bcde6333572fe5430843518c82fbede1b7f3725ffda8870fd4359668a832895cac708c20a300dcd080e406c808801cc012205d8f46253520cf9cdfe7d5b36 +6dece89f317ee2fc07a6d635b33ef9d1d3c7521140dcb851e3d13877fe024a55dc7b4868b2402c096087e0bc041d7a4b88aafaa61e4687e0246aeed3901ee1c8 +e63e0806ac20995821719349257e93d0e28e0563741f0c34abb599a37b4e50692a3eb2f81e674d2ad2464b4f8804401ef1cc38ed4e45bac7bd415c604341eedb +d253c59cdc478d1b9f6f99fd62f0e68dff37396bea9814a7c7c3ffaedd74242f65dbcfc20593cda1f24ef94dc423743acfca7d61e1e119e3c717e4e71f38ca7b +e42f669807d84100e6eaad37f8d61a1127cad8cbc7564c3bcb43bd3977ab0d2b2cadf1d12149395424e0e138961c178ae38480c7a67e384f1f8207a238e0c8d8 +500f7a622cee7f3a18c21a0c2c993f75d1cccc6695aaa55965367b97384c46e3aa7c3431aa339a994401d60a6001adee510f0e89d14917086f45f620189cb9c4 +09563e25abfb75c3d69b63de41572cd4addb2ec9cd79fac7c3798e8759a1502ccf7d76dd6befeefd8dffdcbc4e972e218fb05a2c56abd52371caec397329c2da +7b48401116bd0b04200180c731dbea59947ac88bd34348cf3263430b12162c79f6b1493df6fcadb0ca0761f1b9ec379f9c86b814227ce3a97b07ebdfeb84ffe4 +bcbf63c110d62081cfe7474645511fa3c1d0d2d2ece13345e1a6d91c22eb62d926e83a37d40740c04781099200284e27ae0a0909adabadfdf02be1e6e77587cf +f14f5fa97ae3b5b5eb5e7f935ac566b31f5e9cb365d3a6af8ff397cd3671daff793e97dea9d168f020ac19b366bdbafae56bd5a0a8949d92481f2d459a881070 +8761b0c060b92ee1461b615e0fa6f8d3259c91a3d283437a2ede57d950ec636db2724880ccbdc00f9bcd1af410198f72f60c061f0c610d364462b1c85b00b344 +22e5b0bb3729fa946628e12b35115db67e3b41d02acc954a36c2036b171ae7bd11b87be717919191a392921104118b250fcc9eb36dc7fe23e7b9b3c63bb54a14 +a5d5431cf3a41e994c3e2a29a9a8b030af80eb202c076036e084118840d756226587b6b1a468774765b68223677907d7ad0d0cf51e0bad53d7edfee885b3e78a +aaeb0cd7c05dd4b5e96e531949d10617ef560ad41931456bee403046777f41a042a137f7b3ae01a5274a85e4c3339dcaa6d902517facac5efad8484ab422f7ec +da4510048ee35a6d6b4ae6743602edfd594c624eeb8cd9c6812028c05bdadf84e189d47759b5e75b8dd2405932204cd7615a8eada15bb7effd27f9599951ddb1 +d5f68d4b268e4b3b79f2706ae2ad7f2c3259485f19171222dd6a0252072c12f7b382298e134d2dba92f2dad2ca3a57873506ff1560242c7f01a5e0c0707ffe0e +eb4da1b55acc8b33aefabb41a586f3ce70ef4eb75212196141e625801d57e09a9aea82d3f913ecf9f96432d9d89451670b2fabcf05cad334308768b3b22452a9 +6b1e08bd5edfac6a6a6b6b8b88a4e37ecb6a78688b3d0b33424f47c21c00d90f13e103518ac952c5b5548928f5d0c30c6f45c18ec3c23dfb36773d608daa6ac5 +9333b57ad5aeb70d2362699bdd8f859124e8d68ccfe3b22383dce88c622b04e9ad8f0586e1a72f96ff70ecc2ef17ca9ad43a8dce487116d53e2f3beda939a9d4 +7b222838f8bbdf2ecece1a4d09b9cc24a09f83212c3f0297cba15ef9701fa55e54c50724642917533cf2fe6a5d931a964908dc88508d420e98ab24769480efbf +3b38a13da16862f2d8fcf3974b6eb032845241726bab11280215547b6343c3b68fb7e41dfabea656452db26008c5491e074151e8bdbdc2fb332d4a7b323fc2ee +4501f100cca5998ba7b4622da8b954c28b3374268c0760779e202b33265299e971b405795bfffed49af491e6ddffd275704e41b92f235788d0ec510ca297eee6 +2ab56ec3c7070fe49da348aaebda51b1211886353536165f29cf7963ffde1f62572fcd0e0b0b090a0a160c70822d06fd0643587e0404e9cf0b9eb43a19ce5c2a +26302838c9404943864b4e8d69e108e8cb6bd0cd1b37cacaae25240ca75ae2126845ef723348d5f05035f7c6ad369264bff0cc23477e39366e28ba34068e4b81 +c244808b80261354a525ced693df1d177ef2934839045d7c6fdb03132d304acf6012067afa12160276108188f5a68b624e681bcca76d61fa3668e7afc2833f7f +e67a9c388ebdfffac29ddf9418cda44848ba4a48f9d77d1156736dcd9e0f9f5ef4e4661871deae3dba1750badef66f8fafdbb25f6b68ebae4f4754f3a98b3524 +094e1655beb39bf7dc82b175b5b562b1242e3e7e205c2518fc4130362c3f0202e3fd202c44d269f6b6968b3407425a0f86a0f54ed352201f9a19436b4047f3f2 +1c2d94a22715f12eab6869c8562fa8a9d31a3437239a0e1f7c80589fc99a1e054707403c16459d50a8089a30145a9e011f980fbf3d0522acc8ea4fa50bd7cb8b +2b9cb636c24ca77cc04db4239868ac81c45998965ef5c369deb83121c14346741c98aaae64c9fc148c1df5c892a7a8c55a97ec110633bba456eee30473e6d61e +ce6fd9f9fe3fc976939344e2ab2c20455233fff156ee861d3ed82a541110d8ee147ab2b8c6f1e3c8e92ba7aed2fea80683fe5271914edb9f043b0c06140c61f9 +0b5014e573b07e0c6487ba3b76113089bafdadf31268162c2e2a74d89829261a3a6448b93d70b8a18e336f8c79df5fd0454a169fdd2d59c210343912fa6226b2 +221354d4b11e7d4b76e0f7769777d299a986b4015e8c951b81e116e4c4256ed6b4198ef526bd6aebbf16af7876e94beb3e7dfee5f7e2e26827d286e64ec23a5b +198c13ddde872c845836fbd6a655babc82d6e3dfad0776df021f0e0d0693797ecebba78bcb7d5fb4b4f6a8e606b5a1a2ae3323f347fb4f62f6e485388e5fbd7a +a5bb2c890cfe2c302aa1bf40abd5ca45683f06b2022d101727addd1aa19532a090f05bf4c6eaaaaa583b5f0406855ebb5e891364301fce49e86daa728ab616c4 +43c90a72d509e2954f25ad0678c98c761186a06389080b40c42437022face4976ff9a1e0ec25084248887ddf9c271e5f3103b61be7e29474659d162ddc66018e +d0eed33ef5c1a408b58887658fc7962d347df4558972c491f4acc7baeb6c325b1f5abef17c49cfc94e93dabde41dfa6007343a63e94d6dd2307ace94c0f1eb65 +d7c6a4a4329678ff012361f90b283544c2b7f5632004036eb49e25b7b182ac5efdb5a8e76d5c084d85d74aaf3a5a0202837012687a5760c203f172684b361c24 +04efec139dbcec962b8a12b21c118e30041aea35cb577fb661cb8f6f6d3e90953d0b6e9f4a88532ac512094140c5d79c637d5bdc33e39d3183cffcd5344a897e +befd531ff9129edfb0a397593112daa39a3bf4c10e34a83ba5aa3693a9a5b96f6917190c2818c2f217e875ad12beb51f03212e108cb448b3d5d2291ac9143580 +bd70d630096d0b6f51ab1d8b0eafabe6b6beecc6056122685336cc6381555ba5cd5af75b88a4fdf2e5125a726f69f1f2a853cc959a964efdb87095b676996d48 +51b5c2c7be32954ec24210b0e231e3952abcf0c456af3d7ff9fde2973fe5f7e6f8e5525170002ddd79e8830e34aadd3c5419c2f22b3084e52f50d5950607f42d +e914c402880cb0a49d01d2ec2094a5f022a605dbe7bbb4ad1ac7a2c3ebaadf84456198147a6234ac31c01fffe8c503402ea149b3bb473d2ddd4e585768c22aac +5658b16e95590822c729551d8b194968c648dbb6ad9f74ed4910c4dacdfb7a79f06923a21c5a9e873ee880cee8661334180dfdbf4c0c6e3718c2faf3517ee9f0 +96f5f3d7af79297a482f8cee108038b433011240b3156c9faf43313a5b83035e331a73ec9c80b5c7dfb0d9f430637f14d04e2c4c043172f29b13fc5683a78927 +24803e91baba5aaf03d3d333a8efe232367538be0d58c3c3b572919bd43937db7cfe8a51a7bee9d1f3fb6385572bbdd4a4904b8559631316dd37d6b531292ecc +f1a3e8ba975c5d52919bef3e6ab331a5f0fc070c61fd39c071fcfcf1cf37bc383d3b23fc95a71f86af9e8c95d9e2127196824e29038b9c491a1c8e4ed422d548 +31144b0ea80eac003a0899f638b713c5cd06a4e2268bd31ed58369bcc4f73884a9c04067808b83b06c7d2e3ce806048666c7c2661b74e09467744ed230da0c74 +f6cc19af0347a7a4b05888c90c9756b14e9787fad845667ca347cb940c2b418013873ef268dfdb45190c0c10e5fecfd4cf56cf5ff9f084b830b7389e8408a717 +c5c2ec64b88b415d2c600aa6fa2f18c21a6c34d75fdbf8ea9c896386bcb87c855c55b47912b16912675e344b638202c40404d305b810014044744e3efa23a417 +a946474c4cc7f385e3e05c09fbd0292e25a724c63845335b3d97307a99f9add5d33282a3e620b0d701a3bead7f8cb0284c8fa6688b2cb8ea59de35258eb6e79f +3d53e0759450288c8a8aa67e9454b0cf57faaa0336de451f742030808c1d8a5d2c74dbb2c164feb5a0c4b5452a16bc9d33737a7a149b459fa96b7a52219f132e +77326c725c586652a4c72ec2146eec06f7cf9d97c1c080716b183ca81b2bde5bf7e8be9f2a2364e4d363a0694359aeaff7cc20e4e32f85cf2ef6e5f843a97e75 +4d48751dd2a446043c32738c6deca84e4f0802854cc5de3d2a2f345322153a725492b3a7dd21eb0f4a58c0ee951a26212f94b3a90363bbdc4a8951289fc76a6c +68a8aaaa8c8989ed3a302e3ebeb2b2e2e4a52093d557bcf7842e121685d040a2cde4667e3bfcfb258bd5cd2324f7e1ac7079a771ed7255e776d24644bbe6d58a +08f19c731c16ead6d29b6adb0c060d0c610d12767fb0ecad8ddf04f2c9b577c1599170574d645122f4441ebf5e43a7c5a384260197e471491483ac368885907c +9efdc325a387e289d1d8d4719ef6271205fa63815ec5ab5b06b25a83cae5f2888808470b86d112197a3b52158488409d166ed02091c19dfcc76181d404f6a98b +d8c9e3c7bd12965219ffcbcf3f5dac0df6b1e5e8207d688097648756148a8975dbe67747cfbb2e2a64e294b8ce99c7368badea96a663315919eedad96476633a +2e87152c755309f94c15427f024358030ed46659979bbdf340c5fce1504e1acc6379d72ff86c282b1c494eb7ce9864b5a140a3a3a500b190a42429df1a096e42 +ac357c4b85a03bdfd16fcb68abf15d774fee506d0c067ae64bd4cf64366e08b43fcead06d895b0288c8b6f39755178f2f86f8b972ced3a4a194fbb8fd61a837c +dc801d1e581ea8be8524264fe8bcbc187624ffb2dbae93a21d9aa00357ab5504d169351f1ed599a9062788f3a575ae63531387c1ee575bc80442fb1318c21a70 +ac7f3e7bd7c1f29599d0bcf81e2c863363a0973e178f4bb6c9a564a8c2bbfc43d28e4e08a665e3ad6c4ccbc25ad93e7cdc295830f2fb0adafb69eab4691d8d8e +52cfd2db5171bdcd4a3fdf5d270ac7255aa887bde0743e8aa20e1bbf2be2944a8a42ccb0ccc796c72bbd1096c104b5e8e011a9f775b45caf693499dd661261f7 +7c17aee52a2801ca3553cd9992da06b59bd7c2e434cff4f3fd4ebcc56020c010d6c0e2a73dafeef8b6e299f49ed98a42b818ba3f82f5c13b41cb675b61210eb1 +094a2422ac306985090bf541ecdf30c0fa3055925703745690929a1214d4a97fa9d5b4b7a4fc761096da6e4dea9a9c6a44142611b1f54663e185f3e3fe9fbd2b +016be25adb6766b2af2424ec5b20619755512c2e75af16aa42b5bdda45ed5fadf6aa95eab55aabfd6b5b6bed2ab57abdad68ad4badd695ba5bade202822ca2ec +82ec7b42c89ecc3f0316212423a058b8ffbccf3c79c29933674e86276fdeef3bdff9be61e649665c5c5c8d142e0a13b9872c2aaca232c45e080462cff696ec3c +f310878cdcfb7a4350bbc8c21456fba9601f37ca5f0eacd2aaa6ef7ebddaf1424c81867b3b9a8d46564eed57205709fb16095b7e0cb44767f9777799295a0a2e +1642ca02a63a9bab4ae7b7a4f1d5b7b99a02b6ae8c69a8a3e12eaa9eb0950945f7e7e0d6d0b809133ab617e4e1fb57bc04dd1fc92a4a5bc3c2453c733d88d142 +44eba7be7ce952d7ab184ca68146747b47418bc4ce42c4667139c547d229937265ad794e85d2cafa7de7ef1a5ab3f4697586dc9287f1ab213e2e6d6f304bf0bd +2d271b9b3bf9c8827dddd89d431a381c4e577948e26f04a9b0fa1059d70ee414e9bf1d0f777f5d9c4985a25cd08ba5609ce4094ce05411c86f042eaeae4141c1 +ed8d72b9bcaaaaca5e6c6bcb7cdc52ef0d6ab445877f345b9e050336c0a5e1ec0dcebd7bc55d4fd1e97423dd9660e44899650716a6b07c7d3a3d1a8b3964f6fe +7ee37a56f1e8c1329341afef90ae5ea3d1ee4a4abb79b73cff7e5dd7abc645789bb5086d892649e2e98324ac3e4476fa05044283ec7a16c513eb0b7d928c8e93 +3c6eec8fd6886e4bc7e5d5f4d8173bba75301b0d45d1403721008f4b586df28a82a002ae05c2b2696db496558a586159f5b8dfa74c9c12dab1c52c30bd1d4565 +b5d861d6b8ebb8e558560ccef6c251412e668d2231d13a2689a70fd224ec435494973af0506bcb82d6e0c881383490d7f0b84107bfe480aa16e0eee111317468 +c7f6b64c7e23844f604fefedd631fcddf5544b3f7c7c36fe111a1b2dd0626169b509260a281f664561352a60b15da7504f0f9727c3290b5e1c8974fe36f0f936 +644c437f0349587d088ca81a55502f76a2bdec0f7d76155fe0ebf5adb36bd11fb270a28c8d9bd1d1202d2ec250c860d04789e5bd1ebc1dd72bf1190ef3b7bc29 +91cfc6cf36355920ac2be9b904c30a391a5f27cbba4cab037456a7653b0f67a258f96e2250e612ee659ef5d4d9c5a5578391e8439084d587f0f0f255e9a1aa9e +27adc4ac48ad01bc75122d95f786b3326ad0f88b348dde14317458587878c753e7ce9ec15e47f88809f28b7613f7e4e8cd56c21aea6739efa04dabc232192d48 +c5e43422c21a2aadb1e6f4d3e82026b31361f97b390bf98f55dfd4496cb3eab5d166a9c4f87cbe4028ece58824fa0c2461f5210242c7009c3e7a73eddc10d0a4 +475e398626a49aca9bbb455b9894cba84657dd142f3809e42d5a0f0fc9fcb7167694572a95ea6af215eccd4bcee5dd199018dbd351230ab118a650a96585c562 +e0d36658b2aaae101256a4a51d396dd0ea201aa35324279d467d75eac85e7f0a5b1bcec625d136ec4e4b81300c7b4965bd1d92441f8274baf7217c42268778d3 +0fe66a267976b7885e3b46bb41bb7210572787ddb7cbf7e4a0812274901df0b3852436c08d07a888b902399807ef2de496d560f6573597cb7d6ef29429d13166 +b9cf938e1fd3683411525180b8a163bbde88761d9018174bd17325f89bb8916a869568aab6d5b9aeb567caaaea4b2beb09061f6ec5e30e5a15168a9a4bb6f839 +cf1f3a7d9d784c8b90b88857cf1d2b649b7f0ba4326f265932a75f8224acbec5ec59d3de5dbb2fab06a39b9e31020c412b23f42baf34bdbb64e11f4987d20baa +32710f37ae59283070e5a2439dc0ec4048c4c287c5e8e3f3ab06001ac78e1b3f62d4282f2f29dca5ba615666e6d12387b161dff4ae079dab969635033a823a71 +bb3b43b906dd780d9f8988677c738a558b57df5a5cbaabdf9ab8420487a10b746db07616232c93d17cd3368fc33cb4397ef2fc0d359d93851200139eb3a644ce +78d687d2c5c6f0f4f212db918b83fd14a449d8b798fafa464c646d48316a8d3df646f9da4233a5aa0b674f2d5ef7d5d61f1257bcf3f6cce7a2c60f96054bc4f5 +5a64df1d10f71b9ad15aadab6dab1cf6259cf9d2cb32997757b6fae3c2f94d1b37188dc6d782298162736292d84057cb415a557767b8e9065aaf062cba69e302 +795b72518bd0b7124b57a9426c0f4678d55210ab636a7598e58b8fabd1ea771e3cdbd0d0d0b6a621f3703cf6fd8a8820297814b0a7343c44f6ed8ab87f8c3567 +2becb9f9f8fa393a39f7f43f45e2a98154587d0b0a85b6f1eb6dd12fbcb635d3b824b4c74ffb657fa8fa66c9379fae5db47c4df0d091d8d1d66e3018f6ff9890 +743ef9e76c34780c14e502a48efc824af9e66fbf993071a28b8bab482cc6be7e980178f7ee9d23870ee5e5e11c315e4a7f63900e582a0a3fdd072466820b25a6 +b7c22016a13ffea72cf44c31b0e519b72c6d1a24214a91aad35b53584475228659b707c103931067a8b49ce2651bf7a95a94e1def62291586427f691389dfe61 +d58193d7b0e3cfd4bb6a6d27cf1a0c43ee4ea2e79e091c1deac1b11450c1e5f1304b902c9edacf4112569fc33b78d2dae5d3567ffa9b33d71027edf1035f1a6e +da915dfcd987ab17af78dfc6e641b1620a8512353e0623acb654285404da365ab1f6a6f0726646566606d6c26030b85c6e5d5d5ddbd79b46a5fc4f3098edafb3 +16738fb5cf09c6371ebe7a0c9d2041a77a4376ec4e3d754634b512ecca466f55e3e9aebe7c4bee6eff887c5a7a4b3eacba46456e7125c1559132ab1e779d1e98 +4c1042c17d66c969b906a371edd6131bfe19e3a3d7575656f06d6cfc0302673c17891d72853227bfa4b4bcbaae4161c363d8f2593c06829a2c4f18a354573777 +8ce2c9447dfd1f24613d0dfc63d1d6aacab22f12531854c3f3ee3d7ee673028d8ec5151fad8a9ff9ea1b43860eabada9292ecc3bba2f918e3c28928a814d8336 +4536ddf5868e9609336ae1d29ac6dada5a3693ee6ccb1961a78c95ea844cc8a2b6ea88711e50983d987f12dd9d0389b9745721c3818bb4687455726d41ad566d +005e0274d364d3087718ba276c2e06108c02b8ed1585a826986e841846846544f83a08412dfab092d3f30902d3b0e71326a9b37636bf047f748e6e781ac2e456 +99a6d519567f777ce392184f07aebca9e9ee9d1c5f3f7f4c5af2799cc8f000ec502a9b6b6b6a1b1aea356af3d45a0c2613fb01b01589f87c1b92aa060a48c27a +4a58b6fe784bcb988f0fdcae1e6298ebdbe3acbb9324267fa172c98e84ad09df680df8329913077c3e06f213751ac7d716f2b5c503350d265463803834fd5ffb +6fba7b3b4cb2d5a9611a933ded95b9850505558d0d6aa0a173a9baea54004cab23217f3115553d8859b24a3c308a7116d0e21c8174cee4406c0f626c45a75a0d +f1bf7493e6e30ef36ddd0c06e38dcc82b6469546f75ec2894d4b625cc5acc68686fcdc5c6f5fdff6c7cbe170b143e2e98919d15a8dc6d8eab0c7f4299dc14090 +1e2fdd92f8db4112d6d3c39aafcebbbacf59ff65525e8361d5600a9fde33ce72e34307620cffbe851ece0593bcc0c23040b0e98702e3fb7b7a81623950eb4d21 +81d2c8e1cf60475be3ef492752536e387380bfb87bab3426c8d84817aba9080c9d3d79f4d7fdbb0d469350c095486469722782eb22ad3bb06a1ae01dbfb1572e +9b8ebdcfcabfdfdcf2b00c6c738b7a65c2f12f96c63808187575b5703e2c95799bfd24602445e13c567c2989fe007295f0a9e2f5a53b7efcfebdbb0dc8ac13c6 +73653dcea98ed1d0c23078770cd4a80173934056cd932f3fd5b63dd02c6c32f9ca65ec758c47b74640b83abaa499155ae733a97acef3cda1deaa949bd75352af +eedeb9797a7450b59ca858acb52d843a3d58f5352f6ab0ddcc371380a540f94645cbca8413b50a7cf09aeaeae2a2c227fe6448f4079084f5b43172cad2d37fa4 +8e1aeebefa1cf4ee9ffafc9e6f72b66343d1fe260a0ffae03ab4f09ce144a149a57f62ccf57b092ecc4243c3da5b2a2b2b8a0af1efff580f224908310c34f766 +76440d3bbc9eeeaea4f0f598c45936ad65d2b0ca19d1c1453967a483c6dbc866a2a875558898867859d81650590bcf5a21a8a9677db6f5625b8b45bbb2a641b1 +7acbc9a6d66a8b9515152596d2da9018e840d6ad5bf777cfe1ff1d182cdec417de1c16ccbb9c92b2e58aee9eda68c780ec58ddb5106fd598b664835ba6672b21 +9f1aa3a052d5bcfb96b6a8d9c8a1000736781cff714e1dba2dcde025954e8f8d6b6f3c7deae49d9c1c091f2c08b3fcf30673f40c2f05c3474115e860aa39757a +8a8dc181baf8ffbd3c38d4efd4cd1a82a85106dad4545a5e530fcb95b0520d2994504e2175cf09e69a04def070e9e6c43fd83c7c9f338aa22b3eff59a5b1b01f +48d1a24ecbaf1a112aa15311854201c3108f4fe60bfdaf426f7209907882b8726acb8eed097fa6d67b08d1184f788207c4a511310ea6a78e94c3996864a3b643 +452fd4e84cb967672a3668b43306a153dd101adc1bedfcfe25e86cb171c1c24523468e6a6bd16ab5f18b1735ca15eb47425d5274a1884047775562af8f24c994 +fbd41f8f3a5689e65fcbb04a58a37d513bcdb5bc7b8da555a04d8841103ad89ff5f6e2c5a39e7fa7bd5b6e7145c48bab09eee523715c3f7f3c9b8efbd4259e5e +4ece6420e87f0f48c2ea1790d7979d3ab8f1c8e1a4b43bcda324e8643738cc01a274aedf925b8f26a49bdcbc1d936a8755d45bf604514d2d53bceedfcb2f9eed +0ba23d7bc65957cbd1f873c0d1d9f9e34f3f6bcf0b7cf4c8e1fd7bf7c804606734f4b034198452c41a9caab8866e0e0e33c18477c477a82fe8f4562ff97cc9d4 +000f3cab9f51af6e91976ad5f291e36608edcc0b9de6dfab1cfbfa4772a59ae07683bc5d3f9cf72c8386739654e6dd5e4196c440074958fd0bd5f7330ffffce9 +d1e3974b2b75435c506716cca342f52af45a25cae75357ad5b65239b4aac2f12d7bd4c3329777cbb2a94d9346f507739aba2197d3d096ed1830f3ffa58e2f9a0 +c4438b52b96cf122a54afdf91868846b1b5ba1143b0ddda31961f56cc500e183c9ff92a62aa3ac75c0ccb75f3e99cda23f5cb666b25861e1832d76be9e913ffd +9f5f2a551a601d11833c57bd1245a3e29ce5e3eb27123f81b45924fe76904ef7fe057bd7a0f92bf79eb87cffc4c9c3635f9cc6f00facb777731f119978f09723 +c96543272c4c4e278a63120bb8621edd46209abffcebc3445b8cf140ad96bf5cf5e5cd68fc1f1485c6383d36ae9dad301c3dfc1bc6560122108567b2c3a84acd +1e52c7f26fea295b61f2ca008312391165f8783876642b4058ae6668b06ccf178b9974a2c08d1b59459bf65d6b2b4591977bb7a1bec7b91c48f443907158fd14 +6eb2c859b2c8aeedc484151ee0d1e674471044c07b6851d2dc9b61a61135403873504c30cd04d14cd54a70399b595642df9e4e69d1eaa7c5c64d9d1edb7e4966 +c6ada4a4e32c0a581305a8b8aa5222ecee1a801d01d101cc01db0fb0687c07a0b4da2dd4d7d5ac854fe82f1f35c46fe7670b672f4f20b0312fa7e531e8d42571 +431018e4debde31710d8beb789c400054958030c5709096b90d783b27ad72fec1a23d302f0a0f420aa41681273b670b601ce2eba5bf9946bcd32275954ec8b33 +da4f6566666cfe6a1384a21f44eb02c6297a2aa9da81b115c203d905943d499c468e0800bdb59e0112f38c2e3c3e8f78f08951c1dbd7bf396fd53683d1eaf4ce +5ebdcda451e7c7840060ba93733b2070108ff7886149f4679026e140424945ddfd2a22d3c6c715cfeaab6a519e3f7726c6e9af2c9a106a68a616df65de29b1f0 +fb142233fc107f474239bc77eb272a95aaacac6cc70fdb376df844afd76e78431e13d3d84bb68200c205143ec829a42c5a6ff3c6db4b551a3d41772fe74e7a8a +ce60d0e98f2ef43a75ec90ef3e980bc3448b94c72ededa793a1b455193d198733b5ba9543e725812fd16a4c21a482096573c0ed35e80676ff875e7ea97c62a85 +280fe6e8692e2d145b0d4c45b918df5523bbcf304704e9cc122d6046e4bc29b5b78bcfbdb726a7be1932eab5cf866896c6293d1d7b2bac28b8b0c25ecf5fa77d +f01def8b0d2b6fd6f9036075f21217318fd9294931bfdbf5965f9a325cadd1bdb36117c1f2d18153a998ce7a698cafd160c8c9ce0a0c0a26d3c80c50900a6b20 +2199b0d84cb8bf0702c32997f62ae425712146866f133bbc8ee6a06e0fe6c4786ad638754e09e5603203edf29f0f90180eacbd1fe0a608f7d1c4cfe82d5b21b8 +b04204408f824d899c2f126d1213ff133539fe1133f773376be951c0e79cd8d1eb97ce24eeb3ebd8d52357f0787dbd5e7f3b2bb36bf20612030224610d245c21 +54584132a78afbf9fb7f39b871999cc2d56154d5359e136b792e423b44aa5fb78b5b8fc2301bd741eda053c1f7ef34393898b69fe6251ce7d4a9e06e67790010 +158f5da008f135c10b29b4e845b60a95e4b753d97e612f984ca66b190504d70678da9bb5f43442fded5913df7f6b1a719f6dbf5e3a7db3147ba3d3e9b2b332b5 +5a6db78626d19f4012d68041759dbca0a48aa083c49efdfd376bd62c503888f04540829e62beb15963b7ef7ce8a9543a4631145b5c16614403d1009503d62d6a +16f0f5aebe2f7c79c863cd4fbcfc460a760a58c9c582f11dc67af8200200a8980d489ff52fc17f7e157dfded964fff9dd9b699e67641599382a8d899ccb9d3e2 +1d9546eb4505d3e5f36296be3699b8cfd7bbcf5dcaaa00ad11fc98cec298eb89fe8b48f439c8bd8403066792b30e9f4db17696c5a0091a0e4a1ccbdf8855617f +9a083dcb7bceb142a266cf5b7eb0e89e76f7fecc205f2d8b03603a801900a6e12aec9950dd773bcbd66c383678d8f33ffd72fb9bbdfa826ac44483eced4d7416 +4e5218b5612c865b7f2c6042407a2e75efefcc8fb6f2eae4f6f317ad895fb7d7de25a0fd7647cea66093b73619273bc1ccb1011d5b840261efe23c9f1d1a8031 +636a7611419fe48c22a9bb93b3886d3018e44d8d2291182613630d1c9091ee8f85cadac6959bf63c9d7b65e696169559ad71e8c5afe7ca938f6c6e6033f17fa9 +c17a217a8d0efc5f7be702dd567ddf713daeaede4feb614bb2fc90e587e2f89d0025244be9c6ab40d696410bdd18e7ec71d642799df6f48c6dedb652a094aeb0 +6eac5947d7752b501a1ad2065ada24405e4e82e37712bfedf829c9d6cb926c499677150759f74afacb966cebaff0fb1c9d1ce7afebbfaeafe4af7fbfdffd3d3e +f74db569efd796d9512b8608db2433fb6fde3977db6e9a8bd4d947fce0b5e2a58a2758d17e7c0b8ac5533edb85cb97677d81b090bfac554514d288679e333dcb +f1fa39257a81a2d01c56de182492b4bb3ad335386973a63a1f83565957499bb1cc2508e22311999f9f8f2c47befae7b757949b9e7c2efda5a67ef6778eb72f06 +512963d4e6af3f7dff4ae18e442aadadddce25e0ee537e00ef53567c70eee22f7f7f2ed767112d7e96b84f3ff39887522bd6954055d4d74fe114be7e4ca450cb +de3cd213b776cb84efdc91d397efb9d5bfb3ee6af2c142903d3ce66d1b8dfd7452166b677473ceb29c1d989cf78916fc8130dfb6a40810821e4a48a35a3a79e5 +b13e266cce89d472c68a46d6b88bf7ccfdec40ef465d6abd4eb9a25614f35e6f6f6f8f755b2d3420cd0b40b0b2029d77be65ecd69cde6909b46c5b4d7462f358 +cbc962ca9479f58b0f443dec1d8cf5772fb748889acbaf7ee8fb0fb746b1e4f5b32f8ef02cd505ac044b6d7999ed5a14518f2dfbe9aa4a343c82db33349dfd56 +2bb4d4d00aaa3d6ef7acc3aed54181741e00829515380816c10afa9c730f7f8116d5e68a59e16092a6eb2f1d9490aa229f3d49487b3e2cfe9d6d376b39a2f7d8 +b52257d050f8be1d8b66522bf7107b87ed59ef14db90a94d1229a4bfe707205899e3707afa46a6b2df274b76e93b6fad0fac388331d844f4ce5d24c05a0e4793 +ced9dc2b699ce7f9bde392e3f666d4766cce6440473d72fd63ad42095628bc7471d496fd562b588ae9372579bc0c6e4a023901042b73d013abb60c25317b437d +92dbf3944871e3a62ef40c10fbdf909cf0eecdf5f9ae0f2e875d53aaed1b73044319a6dd33d016c8d452da2455995c0e63bef205c8c3ca1cf4c4aa2d83cb233a +fb79e863bafa897f7c59deb6b06721c25fdbaeb860361608f9bceea199ecb75aa1c55aca5891adb90c08c8396061654ee2ec969cf09bb1eb87478eec6e5e3468 +93dc17a44cc0d7de111e3c223eebdbeb0989737db2eb662580d5b37182b5bda288b1027ddff308b0b032c4331fe8eabf9cebb388e20d898585157ff50dc5d133 +64bc871a0cb18e9d251ffc5bc5dbadda63ee5bf251ad286acb754b91c885e10d0b60551a95f1ffe572b962715e5e998f27606165486b47ffd2d2ba27746d12c7 +276a8c52cdff1e3efbc27f872c25e1024564c6c1ede8e399f4dca1c5da4bb6e2ec5f2227b0d92c6b996e64d2e95bd8981a1a8554a453d0bad650fe2004b0f208 +10ac0cf10716eedcd3b0ccdaf4a07b24b2fcce892eeadf54076cafd0aba251e432276b8758edf14686420b2eb65266fee47511b6d0c26259d6f3721bc86230f4 +eea95ec4019f6830abe429a7317b3d1e995820970846a69c7b9acaa55269f6a7545aa46234cf4adb2610c00a28cdc99c70383ceb70d8ed36b7cbb579afd23b3c +f3e48b87533d4b19073ffde67d4a298e77e54f748e7ceb95a3a99e2579dc9f3f7d3f8fc8717ef9f6fa7a08bae7116061650e4110bac242ea115c5c74381c9b54 +faff9bb3a388674d852a865a49a452b91c8bcee523efa2ccab5ab39ea15672b97ceb133825920d30dc802d03046b0320f9fccd9bd6d93bf226e2d9ebeacc8c95 +a2a2224caa4cba0751c5343bb79733560cc662a54ab5c6cd2391c8873dc387df3f3f3c6e77cc79ec4e8f7dceebf6faffefe93fad2a376ab45abbd32f970a94e0 +f15d5b806061cdd252e44c27baf55dc2ec063c1c1cf7bcbf7b007517b5aaa480b1225ddb7888de81f1fd3f3f72f8bdf3d30ea627aed72a25246b627c9c7abcfc +e6998ba38e671ebeb3ca6cd268356be9100fe00f0816d674f58fa1471c5bf434ef8f24f9023caa4c5a3b06107751092eb7544b0bb78b2512225d8f17ffc2e273 +ff79e85f7ffa4e289c3ceb3dd66a997ae9f7da06ddf30b8f7ef7c0771ebe433a322c93cb4da612398cf9ca73200f0b6b4eb6a192e98b0b550a096d98283ef7bc +d065e1b516239fc70c60a1376cede8bfe1debffbde8f7f9d4aad58d11ba6577de1aec1694aada82fc6a6e65e7aa3757979d9e3767777754e4e4ce4fac2005901 +828535e8ea9fa684d90d697fedb70cf4d489c66a236305edc99eed1afcec232f8c4ca469d860f92829f4838e91d8e2f1b6beeed1abcee3f0d0e0d4e4ba3b7601 +f80082852f945d80b6536206450c4c025894ef76be770471404d899a79e6a9a5b6fde2c8e71e79c1eb5b40bf688142a295472b25297ff06427edd6eae1131763 +5f539ae583d184790b0816bef48d4c399c5ec4018cd90d048f27c463dcdeb9ee21c404790e875d5e44735d4522118f97bc7e7bdae1facc975f7079fd695fb4d9 +5ab292b31ef307635c189a8ca5b3537f06464786737d85800c01c1c21774004bab92a965f436293219265526e833af2e2b12f169f1758479f5d8d33f9975a154 +3b465dc5d576f2f1fee00a76a777296e6099d3e90cc28caffc04040b5f4e20c3404d1f191431f0e93a800ebd3556336b1b5379b2475b7b0ebf7f7e8d2f5a698a +e67025fa83ac2b5695679ea6501eaf27d71709c804102c7c410fa6af4b6893b2f6f1ee9b4a281c4e933b56b6d6b1a9cfee3f98749d47706b2d468376d523968a +8545ca68a655f7d00cc31f5c4140d26c3ab0b0f214c8c3c2949109fbf8cc1ce280cae284362912090b03da2f8cfa91cd1518012c8140c0e727692b786978f254 +7b3f63d15454f0d05dd73556a829cd7ae4bb6fc5d69bac262e27fad7b7c258a0534966e66861750e872de071e25bdc238ac9019c010b0b53d05e955c2a2a54d0 +1244a5d804b04e20fb1a961bb532112dbe9ecabc7aeb0873a8d70d0d152f3df1e99dd53a4aad7c81e0d0e4aaa0571aaecab75848fef567ae677ca35ea3640ce4 +e070e1939f97c0db8629e8b875b3b584d926050f7f90952e65b4d96a62aca43af383f4298406adf2897bafe77d2434bdc333f156527c62577509736ab4d5cc1c +ef4af248169087806061cac97674065642000b8f887b241269ede8471c605d5b006be8f24c571fad1471dfde3a9160d5348b6f9a2ce49306f56ad7d04842c724 +8b89296102219416e62520583832e3700f8ca25a1d549b6889971c0e47b211fdedb2a7bb7f1c9d336531d2476c9164d2115b878eb631567654d3aca4f8b114f5 +d5c5bc38172fb101bcc5486b0241f9ce422116096bc07a01c1c211745d8b48401a0a983db0381c2cde4a74e84daf55aae8c58fa9ee6c7ed83dc4581192ab3fe0 +4230dc7f7936f6df864a5aa1cf2fdfeba1bd845454a167e6a9c260fa3c058b4f39c0001d066aa82921e831634cfc4156ba49422d5666f163aa887b67df186365 +c2b16ab85d1ab5c7974057c775aa3974fc422f7d62c5de9d35f4701f4b8a4dbc0f582f2058389246b02a99cd023189b8478b1f9116d6367342f16332c1a2f6b9 +3c35cb58dc7fb035364bb57b68d55fe611dc125dd41d8e44960f1ced7ef9c069c637de58c75449053499c95b200f0b3b9c1e5fefe038e2806a13adf51d9bcd5e +63ebbbcd666074da368bca20678cd822084294acf8d1eb5b082f317bc85c189afcd2f3873e7f6b73a94ed235b02a5895a585c3e30ecae67afb74dfd834b3a59f +44c4af34d23491f29d154a250bc84f40b0b0e3747b3f22ad91e411a684d6779844644e200dc358378518a9466c1104875a4f1c8f3261733eff93df31167b0626 +1eff7eca2e570fde7d238fee4528552a4c2e179001e01262073ae2bebdd24812b4770d137f9095ae96a8c55abac6e2479180af556d80cd58a896dfb2a38cb188 +49c37b203340b0b0234d00ab8ad9fa0ea3883b526aeb2c8933e253aa52a951c3ca9abffcec4d5c36ad4db3502452823f98cf8060e1852fb0d8711135d7cb9a90 +c68d49006b6cca319610298fc7524c4b86e270b988115b8d35a5599ecf1d7b1a765432e75c984c25981430019901828517673a07103dcbb95c4e5921ed975c24 +16a76a7db7c5a0fdc15837851832a914a11d5fbc7b7736cab27767cddfec6be2d273d328db4aadd900c30dc82120587881f6076bcaf502921630c6278095ae84 +b084211fe8ee5db596e207eedc95d999ec6aaa7cecdeebd9f46a6792cfafa8accaf54502b205ee12e205da4e69ac62b6bec3298085ecde6561961fa76d37f8dc +57ef1f1ab7a17b3f30100bf98f7ce1e65ddb740ce38c3242b76dab25492878ce7bc0c2c288c560e85c42494a3cd6c4b1a978ccf5b2cdbafbd3143f26e48ea59b +4a2f12f05f7de12bb7de54bf9613a036dcd352fdc3a7fee4a65aa65a090482ed75f594ef9ceb8b046c00606161445bef70603165eb3bea77d2cc687d27149224 +3ffdbe9bcfa9f6fec4b4a91857ba29d0124429b55a4bf1a34c227ced7b8ffeea58db8bfff3f6d9aec1a4e9697aad72df271bf7d4174b054936d468b5e5e68ab4 +235a817c01de488c40fb8366935622a0bd5f98f44466a54b6868a836f1b88c00d63a0cc34fff4113f59871b88eb5768f4eccd8e73c5c2e47a3946ae442b98454 +89a369a689df2596484acbca140a4862b8a600c1c20874a678734d42eb3b3cfc4156546a513db0ea128b1fd71f7ad3a915f7de110dc37bbd1ebbcde6b0db43a1 +50e2619431a554a9b43a9d5cae800c866b0f102c5c585a8a9ce958efec062c8a785d5e7f57ff18e2809a1266004b962e8085807227a94759b9d9eff3f9037e4a +b69623110e874b92a45024120a85a053d7302058b8d0d937e6f1051007541868560949f205022cda66b676a08a1f7904b734aef8f183f6e15f9fb824fef1079b +7a4a7b5aaa1eb87d8746abc5e412011b0508162ea03b491517aa1462da5d797ca610a2131a6a2d4692b79a3b76b26bac73606ab34fe9533b2c63a323d4432a93 +69345ab54683497a2d902590d6800be85e9dcd09adefe4d804b0d082153f1e8215ed5f3ccdda7c2a3e6ac4ecf578860607dadb3eccdde5013612102c2c88b6be +43c6ad6b135bdfe1718bd0bfb0d87e610471404d5cf1e3d4acd7e1f2a7dd334bb405328d8c96ed9136e70bc81740b0b0e0d2f0e4accb8b38c062a0c5d7091e4f +28c2628cc2d9aea160289cea590e871d3f36b57b702bccab166b2963059fdba9409680606101daabd2aa646a19a3f51d2e6353d1195835e57a615cf163e23c9b +cd2071061a3ef13e204b40b0b0206de530439ef029213c95a67b17adf8b17b702b048bd18899cbe58ac5924c3703f002040b0bd082b53db1f51d1e012cca193c +db358838605bd96af1e39cc73fe9f0a4df343b1452914e41ef63838d350a640f0856ee191eb74dcccc210e48623248b03019da2f8cf817828803ccfa5561dd1a +f3aa795b2987b3a646cc403e027958b9079dd020978a0a15b4b1a9526c4c06742d91b9582b15ae7ec09c1e7fadb988e4a7acd65e5e5eeeb8349698834a099056 +25d36b146c0e7bdae19e7178183375a8abf14f5fbaaba9521f08f8481e419954e170c8efbf7a3b12136b14d81040b072cfc9b634b31b182643be04b01ae9c58f +77efd9f6e52fdeb6b41471d8edc1e022e3e0f052e45f5e3dce502b834e75cfcdf537d51b8524117f645bbffdfb3f3b4629e0ca0aa574cfbef2db179fdc57a412 +89c59248642910080804023e5f100c0525d2948d9881bc03042bf7a0878f621bc0a2a4e734f2cc6bcb99c58f1aad4e2814969695b9ddee59c76af532a5385f7f +e9ada3e768e1b0fa2ae3df3fb4375eaa56e093bc4f5d57a990891efdce1bb145af2fb0ffe0b9a7fe6c97d71b0d932995aa6aab752d1d6c80fc02042bc74c3b5c +8363a8e04e35637603878389c9d0dd7fd93d8f2a7e64e48e458b938551df96f2e01457883df5fc8f0e1d3d4bd33e8356f90f0fed15d0d58adaa1a4b44cadd150 +17a1767bdd375e3eecf2aea6a19e6cef9fbcab457fa573bcd339373a325c566ecef545023618f8139463d05e9558c837a869ad3229b5c2c4704087de0c3aa552 +422f7e4c6118f68f4c7dfb8707198bf7fc612343ad4422517d639356a75bf9f129d54b9c873ae9985ffd7a62627e7e9e055c5b60f1d1ff38838e5b37549bb8b8 +06b0d285de98c58fa9eed6fdf3bf1f481c4cdf68a1b993943c55d758e39bb29f3cdf97581b30eba6d5fdd8a6b722b11ed84a40b0720cba49434362eb3b3c0258 +d1e247a485b5ad3ca1f8319960d966dd878eb525aefb1668cdf90ad4eaf852a4c560e85b2f1f48fc2e8594763bd5e7030beb5a03042b9738ddf3178626100754 +25ce6ec0636c6affe8b47d0e95055a594ccb1d23084294acf8f157c7da96962289ebbf38d61b8e5b97c685ede65cf3f73dfee2f10f9308bd5a4613ac44c30dc8 +7720e89e4b4eb5a35adf913ca2444b4b10154b2489819b9c809ebea5564a19fd1228f32a69ee586b8a26abbf3fdd3b3066bbef9626b584a7940af892b9197768 +7c66eedd139dafbf7d3ae9a80e3e4930465d105cf8785f6bc03b9a4bd071ebbaca621e419fdd80873f98f6cc9bada50c794a75e663538e549b8c4e3a9e7de5b7 +6b3fa53d2dd5021eed720945c2b57f3b9017804b984b4eb4a12b8799012c7c22eee89b9b756bee9730ed706dd429fdd17516c68a1c8f9ef7c00602829533e6fd +0b1d17471107c4b7be5b418647008b328bc6a6661107300258941b2b4951fc682a526fc829ddd45c6535d1e489c3e12855aa4cf7033005042b679ced1a444485 +b95c4e59212d4154241613783426472734c824c24225ad5f82549ab2f8b1c66c60658d542cfc8bbb5a188b5a9d0ee6a75e7b8060e50c74dcda6a3608485a7c1d +9fb1a9e80056534d0997c3189b9af2cc6fdfd398e5c9f049e29987ef54cb6849aa944d575c6cca744b005f40b07206fad7beb1cac858c1a74d0a5a6aeb2dfa84 +334fe9c9ee6ea9d977730b2b53344ae9735fd957a61333d6cbcd1588b61040fe0282951b1683a173dd438803ac71adef56c044b06cb3ee0164f163157d6c2a87 +c341cf8078faf1cf97e8338964eddd59f383affdb145cfacac2c3699287f30d7d709d814c0c9cf0d6dbdc30b8ba154cfb2d96c7311ed975c2014c617a6e49093 +ed7dcbcb2973c7847cd258404b869248d2143f1a74aa77ffeba907bffe6fe8b6abf17ca2c1f2c06d8da55aa661455db7d2b272bd6103e262009eb0111f3e60f3 +98b63bdb7b065c2ee75238896c71d86c133d6554a72baca8acccf55947199bb4775f1af2b85d4be124c3727804d740172c63b1a9a4b4742d3b1f6dedf9d11b47 +4e9eef4f3a40482420ad15865d0de69dd5850a71929b0f1289c45c61c1a49505b0498060e512eae2bb5c2e87dd36eb702c21eb482c955558b9399148c4e574da +6db6b9b959ea6bc491d6da5aa5721de905d475e8ed1f1b1a9b9cb6cdfa0241219f10f1797231a996f3537559a544ca60341614a83169c40a6c1e20585840fd96 +c6bad92585f20731e92ab3de33e7f3f999e908b5edacc34ee1f578123fa52b8dede572855aad1689c519ec0fe423205800ee5016dce2e26228188c9a726c4aaa +08f20a604f7d0c01c10200206fc0d1cb000000480a0816000079030816000079030816000079030816000079030816000079030816000079c3ff033966da2f4a595c5d0000000049454e44ae426082}}{\nonshppict{\pict\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0 +\picw14115\pich7763\picwgoal8002\pichgoal4401\wmetafile8\bliptag-992432282\blipupi71{\*\blipuid c4d8af66daa9b8284dc64b16077915b5} +010009000003e60302000000c103020000000400000003010800050000000b0200000000050000000c0226011602030000001e000400000007010400c1030200 +410b2000cc00dc0090010000000025011502000000002800000090010000dc00000001001800000000004007040000000000000000000000000000000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7f7f7f7efefeff7f7f7f7f7f7ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffefefefd6d6dec6c6c6cececec6c6c6c6cecec6c6c6cececec6c6c6cececed6d6d6e7e7eff7f7ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdededec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6 +c6cec6c6c6efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffefefefdededec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6f7 +f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdeded6cebdb5b5a59cad9c94b5a5 +94bdada5bdb5adc6c6c6c6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6ceced6d6eff7f7ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffff7efefd6c6bdbdb5adbdb5adb5ada5bdb5adb5ada5bdb5adb5ada5bdb5adb5adadcececec6c6c6c6cecec6c6c6cececedededeffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef +e7e7cec6bdbdb5adbdb5adb5ada5bdb5adb5ada5bdb5adb5ada5bdb5adbdb5adc6cecec6c6c6cececec6c6c6c6cecee7e7e7ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffd6cec69c7b636b42216339106331106339106331106339106331106339106b39188c634aa59484 +c6bdbdc6c6c6cececec6c6c6c6cecec6c6c6cececec6c6c6d6d6d6f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffded6ce6331086339106331 +08633110633108633910633108633110633108633910bdbdbdc6c6cec6c6c6c6c6cec6c6c6ceced6ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcec6b56331086331106331086339106331 +086331106331086339106331086b3918c6c6c6c6c6cec6c6c6c6c6cec6c6c6d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff7f7ef84634a6331106331086339106331086331106331086339106331086331106331086339106331086331106331088c6b4ab5ada5c6c6cec6c6c6c6 +c6cec6c6c6c6c6cec6c6c6c6cecee7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b4218633110633910633110633910633110633910633110 +633910633110b5a59cc6c6c6cececec6c6c6c6cecec6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7efef633910633110633910633110633910633110633910633110633910633110 +bdb5adc6c6c6c6cecec6c6c6cececec6c6cefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7efef73523163391063311063391063 +31106339106331106339106331106339106331106339106331106339106331106339106331106339108c6b52c6c6bdc6c6c6c6cecec6c6c6cececec6c6c6c6ce +cee7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff84634a6331106331086339106331086331106331086339106331086331109c846bc6c6cec6c6c6c6 +c6cec6c6c6c6c6ceefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff7b5231633910633108633110633108633910633108633110633108633910a58c7bc6c6cec6c6c6c6c6cec6c6c6c6 +c6cef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffff94735a6331106331086339106331086331106331086339106331086331106331 +086339106331086331106331086339106331086331106331086339106b4221bdada5c6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6ceefefefffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffb59c8c633110633910633110633910633110633910633110633910633110846342c6c6c6c6cecec6c6c6cececec6c6c6e7e7e7ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffa58c736331106339106331106339106331106339106331106339106331108c6b52c6c6c6cececec6c6c6c6cecec6c6c6efefefffffffffffffffffffffff +ffffffffffffffffffffffffffdecec6633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110 +633910633110633910633110633910633910bdb5adc6c6c6c6cecec6c6c6cececec6c6c6cececeffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6cebd6339106331 +08633110633108633910633108633110633108633910633110c6c6c6c6c6c6c6c6cec6c6c6c6c6cecececeffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6b5a56331106331086339106331 +086331106331086339106331086331106b4218c6c6c6c6c6c6c6c6cec6c6c6c6c6ced6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffad947b +63310863391063310863311063310863391063310863311063310863391063310863311063310863391063310863311063310863391063310863311063310863 +39106b3918bdbdb5c6c6c6c6c6cec6c6c6c6c6cec6c6c6dee7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff633910633910633110633910633110633910633110 +633910633110633910b5a59ccececec6c6c6c6cecec6c6c6cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7efe7633110633910633110633910633110633910633110633910633110 +633910bdb5adc6cecec6c6c6cececec6c6c6cececeffffffffffffffffffffffffffffffffffffffffffffffff8c6b5263391063311063391063311063391063 +31106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339108c6b4acececec6c6c6c6ce +cec6c6c6cececec6c6ceffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff846342633108633910633108633110633108633910633108633110633108a58c73c6c6c6c6 +c6cec6c6c6c6c6cec6c6c6f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff7b5231633108633110633108633910633108633110633108633910633108ad9484c6c6c6c6c6cec6c6c6c6 +c6cec6c6c6f7f7f7ffffffffffffffffffffffffffffffffffffffffff7b52316331086331106331086339106331086331106331086339106331086331106331 +08633910633108633110633108633910633108633110633108633910633108633110633108633910b5a59cc6c6cec6c6c6c6c6cec6c6c6c6c6ceefefefffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffad947b633910633110633910633110633910633110633910633110633910846342c6cecec6c6c6cececec6c6c6c6cecededee7ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffff9c846b6339106331106339106331106339106331106339106331106339108c7352cececec6c6c6c6cecec6c6c6cececee7e7e7ffffffffffffffff +ffffffffffffffffffffffffff8c634a633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110 +63391063311063391063311063391063311063391063311094735ac6c6c6cececec6c6c6c6cecec6c6c6e7e7e7ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6c6bd6331 +086331106331086339106331086331106331086339106331086b3918c6bdc6c6c6cec6c6c6c6c6cec6c6c6d6d6d6ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6b5a56331086339106331 +08633110633108633910633108633110633108734a21c6c6c6c6c6cec6c6c6c6c6cec6c6c6dededeffffffffffffffffffffffffffffffffffffffffff9c846b +633108633910633108633110633108633910633108633110734a29ad9c8cada59cb5b5add6cecee7ded6cebdb5a5847363391863391063310863311063310863 +3910633108633110633910c6c6c6c6c6c6c6c6cec6c6c6c6c6ced6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7633910633110633910633110633910633110 +633910633110633910633110bdada5c6c6c6c6cecec6c6c6cececec6c6ceffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefe7de633910633110633910633110633910633110633910633110 +633910633110bdbdb5c6c6c6cececec6c6c6c6cecec6ceceffffffffffffffffffffffffffffffffffffffffffc6ad9c63391063311063391063311063391063 +31106339108c6b52c6c6c6c6c6c6c6cecec6c6c6efefeffffffffffffffffffffff7f78c6b52633910633110633910633110633910633110633910bdada5c6ce +cec6c6c6cececec6c6c6d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b5a39633910633108633110633108633910633108633110633108633910a58c7bc6 +c6cec6c6c6c6c6cec6c6c6c6c6ceefeff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff6b4221633110633108633910633108633110633108633910633108633110ad948cc6c6cec6c6c6c6 +c6cec6c6c6c6c6cef7f7f7fffffffffffffffffffffffffffffffffffff7f7ef633110633110633108633910633108633110633108bdb5adc6c6c6c6c6cec6c6 +c6c6c6ced6d6deffffffffffffffffffffffffffffff8c634a633910633108633110633108633910633108b59c94c6c6c6c6c6cec6c6c6c6c6ced6d6d6ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffad947b6331106339106331106339106331106339106331106339106331108c6b4ac6c6c6cececec6c6c6c6cecec6c6c6e7e7 +efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffff9c7b63633110633910633110633910633110633910633110633910633110947b63c6c6c6c6cecec6c6c6cececec6c6c6efefefffffffffff +ffffffffffffffffffffffffffffffff9c7b63633110633910633110633910633110633910bdb5b5c6cecec6c6c6cececec6c6c6cececef7f7ffffffffffffff +ffffffffffffe7d6ce633110633910633110633910633110633910a5947bcececec6c6c6c6cecec6c6c6e7e7e7ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcebd +ad6331106331086339106331086331106331086339106331086331106b3918c6c6c6c6c6c6c6c6cec6c6c6c6c6ced6d6d6ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdad9c6339106331 +08633110633108633910633108633110633108633910734a29c6c6cec6c6c6c6c6cec6c6c6c6c6ced6d6deffffffffffffffffffffffffffffffffffffffffff +e7e7de6b3910633108633110633108633910633108a59484c6c6c6c6c6cec6c6c6c6c6cec6c6c6d6d6d6ffffffffffffffffffffffffffffff73422163310863 +3910633108633110633108b5a594c6c6c6c6c6cec6c6c6c6c6cef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ef633110633910633110633910633110 +633910633110633910633110633910bdadadc6cecec6c6c6cececec6c6c6cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ded6633110633910633110633910633110633910633110 +633910633110633910bdbdb5cececec6c6c6c6cecec6c6c6ceced6ffffffffffffffffffffffffffffffffffffffffffffffffb59c8c63391063311063391063 +3110633910734a29c6c6c6c6c6c6c6cecec6c6c6cececec6c6c6ceced6efefefffffffffffffffffff6b4221633910633110633910633110633910bdb5adc6ce +cec6c6c6cececedee7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b5231633108633110633108633910633108633110633108633910633108a5 +9484c6c6c6c6c6cec6c6c6c6c6cec6c6c6f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff6b4221633108633910633108633110633108633910633108633110633108b5a594c6c6c6c6 +c6cec6c6c6c6c6cec6c6c6ffffffffffffffffffefefefdedee7d6d6dedededed6d6d6dedede846b526339106331086331106331086339107b5a39c6c6bdc6c6 +c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6d6d6d6b5ad9c63391063310863311063310863391084634ac6c6cec6c6c6c6c6ced6d6d6ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffa5846b6339106331106339106331106339106331106339106331106339108c6b52cececec6c6c6c6cecec6c6c6cece +cee7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffff947352633910633110633910633110633910633110633910633110633910947b63c6cecec6c6c6cececec6c6c6c6cecee7e7e7e7e7 +e7cececec6cecec6c6c6cececec6c6c6c6cecec6c6c6c6c6c6846b52633910633110633910633110633910734a29ad9484c6bdbdc6cecec6c6c6cececec6c6c6 +c6c6c6ad9c94734a216331106339106331106339106b4218bdbdb5c6c6ced6d6ded6d6d6cecececececedededececed6ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffc6b5ad6331086339106331086331106331086339106331086331106331086b4221c6c6c6c6c6cec6c6c6c6c6cec6c6c6d6d6deffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbda5946331 +086331106331086339106331086331106331086339106331087b5231c6c6c6c6c6cec6c6c6c6c6ce9484737b5a39845a42846342845a42846342845a42846342 +845a42846342845a42846342633110633910633108633110633108633910633108633910734a21846342845a42734a2963311063391063310863311063310863 +3910633108b5a594cec6c6c6c6c6c6c6c6d6d6d6cececec6c6cec6c6c6c6c6cef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefe7e7633910633110633910633110 +633910633110633910633110633910633110bdb5b5c6c6c6cececec6c6c6c6cecec6c6ceffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffded6ce633910633110633910633110633910633110 +633910633110633910633110c6c6bdc6c6c6c6cecec6c6c6a59c8c63311063391063311063391063311063391063311063391063311063391063311063391063 +31106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331109473 +52c6c6c6cececec6c6c6c6cecec6c6c6efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff734a2963311063310863391063310863311063310863391063310863 +3110a59484c6c6cec6c6c6c6c6cec6c6c6c6c6cef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff633918633910633108633110633108633910633108633110633108633910ad9c94c6 +c6cec6c6c6c6c6ceb5b5b56331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331 +086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106b4218c6c6c6c6c6c6c6c6cec6c6c6c6c6ce +d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff9c846b63311063391063311063391063311063391063311063391063311094735ac6c6c6c6cecec6c6c6cece +cec6c6c6efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff946b526331106339106331106339106331106339106331106339106331109c846bc6c6c6cececec6c6c6c6cece734a296339 +10633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110 +633910633110633910633110633910633110633910633110633910633110633910bdb5adc6cecec6c6c6cececec6c6c6cececeffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffbdad9c6339106331086331106331086339106331086331106331086339106b4221c6c6c6c6c6c6c6c6cec6c6c6c6c6ced6d6d6ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffad9c +846331106331086339106331086331106331086339106331086331107b5a39c6c6cec6c6c6c6c6cec6c6c68c6b5a633108633110633108633910633108633110 +63310863391063310863311063310863391063310863311063310863391063310863311063310863391063310863311063310863391063310863311063310863 +3910633108633110633108633910633108ad9c8cc6c6c6c6c6cec6c6c6c6c6cec6c6c6f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefe7de633110633910633110 +633910633110633910633110633910633110633910bdb5b5cececec6c6c6c6cecec6c6c6cececeffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffded6c6633110633910633110633910633110 +6339106331106339106331106b3910c6bdbdc6cecec6c6c6cecece9c8c8463391063311063391063311063391063311063391063311063391063311063391063 +31106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339 +1094735acececec6c6c6c6cecec6c6c6cececee7e7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff73422163310863391063310863311063310863391063310863 +3110633108ad9c8cc6c6c6c6c6cec6c6c6c6c6cec6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff76b3918633108633110633108633910633108633110633108633910633108b5 +a59cc6c6c6c6c6cec6c6c6bdb5ad6331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331 +08633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110633108734a29c6c6c6c6c6cec6c6c6c6c6ce +c6c6c6dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff94735a633910633110633910633110633910633110633910633110633910947b63c6cecec6c6c6cece +cec6c6c6c6cecee7efefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff8463426339106331106339106331106339106331106339106331106339109c8473cececec6c6c6c6cecec6c6c6734a +29633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110 +633910633110633910633110633910633110633910633110633910633110633910633110c6bdb5c6c6c6cececec6c6c6c6cececececeffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffbdad9c633108633110633108633910633108633110633108633910633108734a29c6c6c6c6c6cec6c6c6c6c6cec6c6c6dededeffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffad9484633108633910633108633110633108633910633108633110633108846342c6c6c6c6c6cec6c6c6c6c6ce84634a633110633108633910633108633110 +63310863391063310863311063310863391063310863311063310863391063310863311063310863391063310863311063310863391063310863311063310863 +3910633108633110633108633910633108633110ad9c8cc6c6cec6c6c6d6d6d6e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ded6633910633110 +633910633110633910633110633910633110633910633110c6bdbdc6c6c6c6cecec6c6c6cecececececeffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6c6bd633910633110633910633110 +633910633110633910633110633910633910c6c6c6c6c6c6cececec6c6c6a59c8c7b5a398c6b4a8c634a8c6b4a84634a8c6b4a8c634a8c6b4a84634a8c6b4a8c +634a8c6b4a84634a8c6b4a8c634a8c6b4a84634a8c6b4a8c634a8c6b4a84634a8c6b4a8c634a8c6b4a84634a8c6b4a8c634a8c6b4a84634a8c6b4a8c634a8c6b +4a84634ab59c8ce7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b391863391063310863311063310863391063310863 +3110633108633910ad9c94c6c6cec6c6c6c6c6cec6c6c6c6c6ceffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f763311063311063310863391063310863311063310863391063310863 +3110b5ad9cc6c6cec6c6c6c6c6cec6c6c6c6ceceffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefe7e7e7efefefefefefffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff94735a6331106339106331106339106331106339106331106339106331109c846bc6c6c6cece +cec6c6c6c6cecec6c6c6efeff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff846342633110633910633110633910633110633910633110633910633110a58c7bc6c6c6c6cecec6c6c6cece +cec6c6c6f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +f7ffffdededececed6c6c6c6c6cecec6c6c6cececec6c6c6c6cecec6c6c6cececedededef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffb59c8c6331106331086339106331086331106331086339106331086331107b5231c6c6cec6c6c6c6c6cec6c6c6c6c6cedededeffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffa58c73633910633108633110633108633910633108633110633108633910846342c6c6cec6c6c6c6c6cec6c6c6c6c6cedee7e7ffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7efc6b5adb59c8c9c8c73a58c7bad9c8cbdada5bdb5b5c6 +c6c6c6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6d6d6d6efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffded6ce633110 +6339106331106339106331106339106331106339106331106b3910c6bdbdc6cecec6c6c6cececec6c6c6d6d6d6ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6c6b5633110633910633110 +6339106331106339106331106339106331106b4218c6c6c6cececec6c6c6c6cecec6c6c6d6d6deffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffcec6b58c6b4a633910633910633110633910633110633910633110633910734a29ad947bc6bdbdcececec6c6c6c6ce +cec6c6c6cececec6c6c6c6cecedededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b391863310863311063310863391063310863 +3110633108633910633108b5a59cc6c6c6c6c6cec6c6c6c6c6cec6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7efef63391063310863391063310863311063310863391063310863 +3110633108bdb5adc6c6c6c6c6cec6c6c6c6c6cec6c6c6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f79473 +526339106331086331106331086339106331086331106331086339106331086331106331086339108c634ac6bdb5c6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6ce +cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c6b4a6339106331106339106331106339106331106339106331106339109c846bcece +cec6c6c6c6cecec6c6c6cececeefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff7b5231633910633110633910633110633910633110633910633110633910a5947bc6cecec6c6c6cece +cec6c6c6c6cecef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c634a633910633110633910633110633910633110 +6339106331106339106331106339106331106339106331106339106b3918b59c8cc6c6c6c6cecec6c6c6cececec6c6c6c6cececececeffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffb59c8c633108633910633108633110633108633910633108633110633108845a39c6c6c6c6c6cec6c6c6c6c6cec6c6c6dedee7 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffa58c736331086331106331086339106331086331106331086339106331088c6b52c6c6c6c6c6cec6c6c6c6c6cec6c6c6e7e7e7ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff9c846b63391063310863311063310863391063310863311063310863391063310863311063310863 +39106331086331106331086339106331088c6b4ac6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cecececeffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6cec6 +633910633110633910633110633910633110633910633110633910633910c6c6c6c6c6c6cececec6c6c6c6cecececed6ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcebdad633910633110 +6339106331106339106331106339106331106339106b4218c6c6cec6c6c6c6cecec6c6c6cececed6d6d6ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffe7ded66b39106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339 +10633110947352c6c6c6c6cecec6c6c6cececec6c6c6c6ceced6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63311063311063310863391063310863 +3110633108633910633108633110b5a59cc6c6cec6c6c6c6c6cec6c6c6c6c6ceffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe763310863391063310863311063310863391063310863 +3110633108633910b5adadc6c6cec6c6c6c6c6cec6c6c6cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffad947b6331086331106331 +0863391063310863311063310863391063310863311063310863391063310863311063310863391063310863311063310863391063310894735ac6c6c6c6c6ce +c6c6c6c6c6cec6c6c6c6c6ceefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c634a633110633910633110633910633110633910633110633910633110a58c +7bc6c6c6c6cecec6c6c6cececec6c6c6f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff7b5231633110633910633110633910633110633910633110633910633110ad9c8cc6c6c6cece +cec6c6c6c6cecec6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffff84634a633910633110633910633110633910633110633910633110 +633910633110633910633110633910633110633910633110633910633110633910633110633910633110b5a594c6c6c6c6cecec6c6c6cececec6c6c6d6d6d6ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffad947b633910633108633110633108633910633108633110633108633910845a42c6c6cec6c6c6c6c6cec6c6c6c6c6ce +dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff9c7b636331106331086339106331086331106331086339106331086331108c6b52c6c6cec6c6c6c6c6cec6c6c6c6c6cee7e7e7ffffff +ffffffffffffffffffffffffffffffffffffffffff734a2963310863391063310863311063310863391063310863311063310863391063310863311063310863 +39106331086331106331086339106331086331106331086339106b4221c6c6c6c6c6c6c6c6cec6c6c6c6c6cec6c6c6f7f7f7ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +d6cebd6331106339106331106339106331106339106331106339106331106b3918c6c6c6cececec6c6c6c6cecec6c6c6d6d6d6ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6b5a5633110 +633910633110633910633110633910633110633910633110734a29c6c6c6c6cecec6c6c6cececec6c6c6dededeffffffffffffffffffffffffffffffffffffff +ffffffffff6331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339 +10633110633910633110633910a58c7bcececec6c6c6c6cecec6c6c6cececedededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ef63391063310863391063310863 +3110633108633910633108633110633108bdada5c6c6c6c6c6cec6c6c6c6c6cec6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7de63391063310863311063310863391063310863 +3110633108633910633108bdb5b5c6c6c6c6c6cec6c6c6c6c6cec6c6cefffffffffffffffffffffffffffffffffffffffffff7f7f76339106331086331106331 +08633910633108633110734a29ad9484b5ada57b5a426331086339106331087b5a39ada59c9c8c7b734a296331106331086339106331086331106331086b4218 +c6c6bdc6c6cec6c6c6c6c6cec6c6c6c6ceceffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b5a396339106331106339106331106339106331106339106331106339 +10a58c7bc6cecec6c6c6cececec6c6c6c6cecef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff734a21633910633110633910633110633910633110633910633110633910ad9c8ccece +cec6c6c6c6cecec6c6c6cececef7f7f7ffffffffffffffffffffffffffffffffffffffffff6339106339106331106339106331106339107b5239c6c6c6c6c6c6 +c6cece947b6b633910633110633910633910c6c6c6c6c6c6c6c6ce948473633910633110633910633110633910633110bdad9cc6c6c6cececec6c6c6c6cecec6 +c6c6f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffad8c7b6331086331106331086339106331086331106331086339106331088c6b4ac6c6c6c6c6cec6c6c6c6c6ce +c6c6c6e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffff9c7b63633108633910633108633110633108633910633108633110633108947b63c6c6c6c6c6cec6c6c6c6c6cec6c6c6efefef +ffffffffffffffffffffffffffffffffffffffffff7b5231633108633910633108633110633108b5ada5c6c6c6c6c6cec6c6c6ada59c63310863311063310863 +3910b5a59cc6c6cec6c6c6c6c6ce9c847363311063310863391063310863311094735ac6c6cec6c6c6c6c6cec6c6c6c6c6cedededeffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcebdb56339106331106339106331106339106331106339106331106339106b3918c6c6c6c6c6c6c6cecec6c6c6cececed6d6d6ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbdad9c +633910633110633910633110633910633110633910633110633910734a29c6cecec6c6c6cececec6c6c6c6cecedededeffffffffffffffffffffffffffffffff +ffffffffff94735a633910633110633910633110633910bdbdbdc6cecec6c6c6cececec6bdbd6b3918633110633910633110a58c7bc6c6c6cececec6c6c6c6ce +ce7b5239633910633110633910633110734221c6c6c6c6cecec6c6c6cececec6c6c6d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7efef63310863391063310863 +3110633108633910633108633110633108633910b5ada5c6c6cec6c6c6c6c6cec6c6c6c6ceceffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ded663310863311063310863391063310863 +3110633108633910633108633110bdb5b5c6c6cec6c6c6c6c6cec6c6c6cececeffffffffffffffffffffffffffffffffffffffffffbda5946331086331106331 +08633910633108bdb5b5c6c6c6c6c6cec6c6c6c6c6ce735239633910633108633110846342c6c6cec6c6c6c6c6cec6c6c6a59c8c633108633110633108633910 +633108b5ada5c6c6c6c6c6cec6c6c6c6c6cec6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b5a396331106339106331106339106331106339106331106339 +10633110ad9484c6c6c6cececec6c6c6c6cecec6c6c6f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff734221633110633910633110633910633110633910633110633910633110b5a5 +94c6c6c6c6cecec6c6c6cececec6c6c6ffffffffffffffffffffffffffffffffffffffffffefe7e7633910633110633910633110633910a58c7bcececec6c6c6 +c6cecec6c6c6947b6b6331106339106331106b4218c6c6c6c6cecec6c6c6cececebdbdb5633910633110633910633110633910a58c7bcececec6c6c6c6cecec6 +c6c6cececef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff9c846b6331106331086339106331086331106331086339106331086331108c6b52c6c6cec6c6c6c6c6ce +c6c6c6c6c6cee7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff947352633910633108633110633108633910633108633110633108633910947b63c6c6cec6c6c6c6c6cec6c6c6c6c6ce +efefefffffffffffffffffffffffffffffffffffffffffff7b5a39633910633108633110633108734a29bdbdbdc6c6cec6c6c6c6c6cea59c8c63311063310863 +3910633108bdadadc6c6c6c6c6cec6c6c6bdbdbd63310863391063310863311063310894735ac6c6c6c6c6cec6c6c6c6c6cec6c6c6efefefffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffcebdad633110633910633110633910633110633910633110633910633110734221c6c6c6c6cecec6c6c6cececec6c6c6dededeffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +bda5946331106339106331106339106331106339106331106339106331107b5231c6c6c6cececec6c6c6c6cecec6c6c6dee7e7ffffffffffffffffffffffffff +ffffffffffffffffbda5946331106339106331106339106331108c6b4ac6c6c6cececec6c6c6c6bdbd6331106339106331106339109c8473cececec6c6c6c6ce +cea59c8c633910633110633910633110633910734a29c6cecec6c6c6cececec6c6c6c6cecee7e7e7ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefe7e763391063310863 +3110633108633910633108633110633108633910633108bdb5adc6c6c6c6c6cec6c6c6c6c6cec6c6ceffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffded6ce63311063310863391063310863 +3110633108633910633108633110633108c6bdbdc6c6c6c6c6cec6c6c6c6c6cecececeffffffffffffffffffffffffffffffffffffffffffe7dede6331106331 +086339106331086331106331087b5231ad9c8cc6c6c6c6c6c67b52316331086331106331088c6b52c6c6c6c6c6cebdbdbd734a29633108633110633108633910 +633108633910c6c6c6c6c6cec6c6c6c6c6cec6c6c6e7e7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff734a296339106331106339106331106339106331106339 +10633110633910ad9484cececec6c6c6c6cecec6c6c6cececef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b39186339106331106339106331106339106331106339106331106339 +10b5a594c6cecec6c6c6cececec6c6c6c6ceceffffffffffffffffffffffffffffffffffffffffffffffff84634a633910633110633910633110633910633110 +633910633910845a42734a296339106331106339106b4218c6c6c6c6c6c6ada59c633110633910633110633910633110633910633110c6c6c6c6c6c6c6cecec6 +c6c6cececee7e7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff9c7b6363310863391063310863311063310863391063310863311063310894735ac6c6c6c6c6ce +c6c6c6c6c6cec6c6c6e7efefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff8c6b526331086331106331086339106331086331106331086339106331089c846bc6c6c6c6c6cec6c6c6c6c6ce +c6c6c6efefefffffffffffffffffffffffffffffffffffffffffffdecec663310863311063310863391063310863311063310863391063310863311063310863 +3910633108633110bdb5adc6c6cebdbdc66b4221633108633910633108633110633108633910bdb5b5c6c6cec6c6c6c6c6cec6c6c6efefefffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffc6ada5633910633110633910633110633910633110633910633110633910734a21c6c6cec6c6c6cececec6c6c6c6ceced6d6deffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffb59c8c6339106331106339106331106339106331106339106331106339107b5a39cececec6c6c6c6cecec6c6c6cececedededeffffffffffffffffffff +ffffffffffffffffffffffffffff94735a633110633910633110633910633110633910633110633910633110633910633110633910633110ad9c8cc6c6c6c6ce +ce8c6b5a633910633110633910633110633910633110cececec6c6c6cececec6c6c6c6ceceffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefe7de63310863 +3110633108633910633108633110633108633910633108633110bdb5b5c6c6cec6c6c6c6c6cec6c6c6cececeffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdecec663310863391063310863 +3110633108633910633108633110633108633910bdbdbdc6c6cec6c6c6c6c6cec6c6c6ced6d6fffffffffffffffffffffffffffffffffffffffffffffffff7ef +ef734a216331086331106331086339106331086331106331086339106331086331106331086339108c6b52c6c6cec6c6c6ada59c633108633110633108633910 +633108734a29c6c6c6c6c6cec6c6c6c6c6ced6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff734a296331106339106331106339106331106339 +10633110633910633110b59c94c6c6c6c6cecec6c6c6cececec6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff76b39186331106339106331106339106331106339106331106339 +10633110b5ad9cc6c6c6cececec6c6c6c6cecec6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ded6734221633110633910633110 +633910633110633910633110633910633110633910633110734a21c6c6c6cececec6c6c66b42216331106339106331106339108c6b4acececec6c6c6c6cecec6 +c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff94735a63391063310863311063310863391063310863311063310863391094735ac6c6ce +c6c6c6c6c6cec6c6c6c6c6cee7e7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff8463426331106331086339106331086331106331086339106331086331109c8473c6c6cec6c6c6c6c6ce +c6c6c6c6c6ceefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffded6ce6b422163310863311063310863391063310863311063310863 +3910633108633110633108bdb5b5c6c6c6c6c6ce8c6b5a633910633108633110633108b5a59cc6c6c6c6c6cec6c6c6efefefffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffc6ad9c6331106339106331106339106331106339106331106339106331107b5231c6c6c6cececec6c6c6c6cecec6c6c6dededeff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffb59c84633110633910633110633910633110633910633110633910633110846342c6c6c6c6cecec6c6c6cececec6c6c6e7e7e7ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffded6ce7b5231633110633910633110633910633110633910633110633910633110633910ad9c8cc6ce +cec6c6c6ada59c6331106339106331108c6b52c6c6c6c6cecec6c6c6efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffded6ce63 +3110633108633910633108633110633108633910633108633110633108c6bdbdc6c6c6c6c6cec6c6c6c6c6cecececeffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6c6bd63391063310863 +3110633108633910633108633110633108633910633110c6c6c6c6c6c6c6c6cec6c6c6c6c6cececed6ffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffff7b59c8463311063311063310863391063310863311063310863391063310894735ac6c6c6c6c6cebdbdc66b4221633108735231 +bdbdb5c6c6ced6d6d6f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b42186339106331106339106331106339 +10633110633910633110633910ad9c94c6cecec6c6c6cececec6c6c6c6ceceffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff76339106339106331106339106331106339106331106339 +10633110633910b5ad9ccececec6c6c6c6cecec6c6c6cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +efe7dea58c73734a29633110633910633110633910633110633910734a29cececec6c6c6c6cece8c735a7b5a39c6c6bdefefefffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94735a6331086331106331086339106331086331106331086339106331089c7b6b +c6c6c6c6c6cec6c6c6c6c6cec6c6c6efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff845a42633108633910633108633110633108633910633108633110633108a58c7bc6c6c6c6c6ce +c6c6c6c6c6cec6c6c6f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7d6cead94849c +7b638c634a7b5a396b42216b3910c6bdbde7e7e7f7f7f7efefe7f7f7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7e7e7e7e7e7e7e7e7 +e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7 +e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7a59484633910633110633910633110633910633110633910633110633910734a29cececec6c6c6c6cecec6c6c6cececed6 +d6d6e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7 +e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7 +e7e7e7e7e7e7e7e7e79c7b6b633910633110633910633110633910633110633910633110633910845a42c6cecec6c6c6cececec6c6c6c6ceced6d6d6e7e7e7e7 +e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7 +e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7efd6d6d6c6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6ce +c6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6ad +a59c633108633910633108633110633108633910633108633110633108633910bdb5b5c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6 +c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6ce +c6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6a59c8c63310863 +3110633108633910633108633110633108633910633108633918bdbdc6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6 +c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6ce +c6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffd6c6b594735a947b6394735a947b6394735a947b6394735a947b6394735a947b6394735a947b6394735a947b6394735a947b6394735a947b6394 +735a947b6394735a947b6394735a947b6394735a947b6394735a947b6394735a947b6394735a947b6394735a947b6394735a6b39106331106339106331106339 +10633110633910633110633910633110845a4284634a8c6b528463527b6b5a5263634a6b6b526b6b8c736394735a947b6394735a947b6394735a947b6394735a +947b6394735a947b6394735a947b6394735a947b6394735a947b6394735a947b6394735a947b6394735a947b6394735a947b6394735a947b6394735a947b6394 +735a947b6394735a947b6394735a947b6394735a947b6394735a947b6394735a947b6394735a947b638c6b526339106331106339106331106339106331106339 +106331106339106331108c6b4a94735a947b6394735a947b6394735a947b6394735a947b6394735a846b528c735acececeada59c8c6b5294735a947b6394735a +947b6394735a947b6394735a947b6394735a947b6394735a947b6394735a947b6394735a947b6394735a947b6394735a947b6394735a947b6394735aa59484c6 +c6c6cececec6c6c6c6cecec6c6c6efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6c6bd63311063310863 +39106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331 +08633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110 +6331086339104a422918526310394a105a73086b7b105a6b103139184a5a42423163311063310863391063310863311063310863391063310863311063310863 +39106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331 +08633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110 +633108633910633108633110633108633910633108633110633108633910bdb5b5b5ada563310863391063310863311063310863391063310863311063310863 +39106331086331106331086339106331086331106331086339106331086331106331086339106331086331106b4218c6c6c6c6c6c6c6c6cec6c6c6c6c6ced6d6 +d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff76339106339106331106339106331106339106331106339 +10633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110 +63391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391039524a18394a089cbd00d6ff00 +d6ff00d6ff00d6ff00d6ff089cbd104a5a21525a6339186331106339106331106339106331106339106331106339106331106339106331106339106331106339 +10633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110 +63391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063 +3110633910633110633910633110ad9c94c6c6c66b42216331106339106331106339106331106339106331106339106331106339106331106339106331106339 +10633110633910633110633910633110633910633110633910633110633910bdb5adc6cecec6c6c6cececec6c6c6cececeffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff846342633108633110633108633910633108633110633108633910633108633110633108633910 +63310863311063310863391063310863311063310863391063310863311063310863391063310863311063310863391063310863311063310863391063310863 +311063310863391063310863311063310863391063310863311063310863391052391810394200bde700d6ff00ceff00d6ff00d6ff00d6ff00ceff00d6ff00ce +ff088ca51042525a3921633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910 +63310863311063310863391063310863311063310863391063310863311063310863391063310863311063310863391063310863311063310863391063310863 +31106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331108c73 +63c6c6ce7b5a42633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910 +633108633110633108633910633108ad9c8cc6c6c6c6c6cec6c6c6c6c6cec6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffad947b63391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063 +31106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339 +10633110633910633110633910633110215a6b088ca500d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff08b5d61042525a4221633110 +63391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063 +31106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339 +106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331107b5a39c6c6c69c8473633110633910633110 +63391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391094 +735acececec6c6c6c6cecec6c6c6cececee7e7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6c6b563310863 +39106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331 +08633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110 +18526308b5d600ceff00d6ff00d6ff00d6ff00ceff00d6ff00d6ff00d6ff00ceff00d6ff00d6ff08b5d61042525a391863310863391063310863311063310863 +39106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331 +08633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110 +633108633910633108633110633108633910633108633110633108633910633110c6bdbdada59c63391063310863311063310863391063310863311063310863 +3910633108633110633108633910633108633110633108633910633108633110633108633910633108633110633108734a29c6c6c6c6c6cec6c6c6c6c6cec6c6 +c6dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ef6b39106331106339106331106339106331106339 +10633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110 +633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110315252087b9c00d6ff00d6ff00d6ff00 +d6ff00d6ff00d6ff00d6ff00c6ff00c6ff00c6ff00ceff00ceff089cbd184a5a6339106331106339106331106339106331106339106331106339106331106339 +10633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110 +63391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063 +3110633910633110633910633110633910ad9c94c6c6c66339106339106331106339106331106339106331106339106331106339106331106339106331106339 +10633110633910633110633910633110633910633110633910633110633910633110c6bdb5c6c6c6cececec6c6c6c6cececececeffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b5231633110633108633910633108633110633108633910633108633110633108633910 +63310863311063310863391063310863311063310863391063310863311063310863391063310863311063310863391063310863311063310863391063310863 +31106331086339106331086331106331086339106331086331106331086339105a311010394200c6f700d6ff00ceff00d6ff00d6ff00d6ff00bdf700bdff00bd +f700bdff00bdf700bdff00bdf7106b84294a4a6331106331086339106331086331106331086339106331086331105a31084a4229394239523921633108633910 +63310863311063310863391063310863311063310863391063310863311063310863391063310863311063310863391063310863311063310863391063310863 +31106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331 +08947b6bc6c6c67b5a42633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910 +633108633110633108633910633108633110ad9c8cc6c6cec6c6c6c6c6cec6c6c6c6c6cef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffa58c7363311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063 +31106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339 +10633110633910633110633910633110633910214a4a10738c00d6ff00d6ff00d6ff00d6ff00c6ff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00b5f7 +18394a5a39186339106331106339106331106339106331105a3921214a5218424a104a5a104252182129314a5263311063391063311063391063311063391063 +31106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339 +106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339107b5a39c6cece947b6b633910633110 +63391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063 +31109c7b63c6c6c6c6cecec6c6c6cececec6c6c6efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6b5ad63 +39106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331 +08633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110 +63310863311010313908adce00d6ff00d6ff00ceff00bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff08739c214a5263310863311063310863 +3910633108315252105a7308a5ce00ceff00d6ff00d6ff08adce1031426331106331086339106331086331106331086339105239184a42314242314a42315a31 +10633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110 +633108633910633108633110633108633910633108633110633108633910633108633918bdbdc6ad9c9463310863311063310863391063310863311063310863 +3910633108633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910734a29c6c6cec6c6c6c6c6cec6c6 +c6d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ef947b639c7b63947b639c7b63947b639c7b +63947b639c7b63947b639c7b63947b639c7b63947b639c7b63947b639c7b63947b639c7b63947b639c7b63947b639c7b63947b639c7b63947b639c7b63947b63 +9c7b63947b639c7b63947b639c7b63947b639c7b63947b637b5231633110633910633110633910633110633910633110633910633110524a3110314208cef700 +d6ff00d6ff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700bdf7103142947b63947b639c7b638473631863730894b500d6ff00d6ff00d6 +ff00d6ff00d6ff00adce215a63947b639c7b638c7b635a7373295a6318424a10314218394a104a5a105a73104a6318394a10313921525a42636b847b6b947b63 +9c7b63947b639c7b63947b639c7b63947b63734a296331106339106331106339106331106339106331106339106331107b523194735a94735a8c735a94735a94 +735a947b63947b639c7b63947b638c735a8c6b52d6d6cef7efef9c7b63947b639c7b63947b639c7b63947b639c7b63947b639c7b63947b639c7b63947b639c7b +636339106339106331106339106331106339106331106339106331106339106331106b3918c6bdbdcececec6c6c6d6d6d6ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffcebdad63311063310863391063310863311063310863391063310863311063391839637308637300d6ff00d6ff00bdff00bdf700bdff00bd +f700bdff00bdf700bdff00bdf700bdff00bdf708739c73a5adffffff7ba5b5106b7b00c6ef00d6ff00ceff00d6ff00d6ff00d6ff00ceff10526bcee7e7bddee7 +316b7b18424a08637b089cbd00bdef00ceff00c6ff00ceff00c6ff00d6ff00d6ff00d6ff00a5c608738c103142295a6b94bdc6ffffffffffffffffffffffffff +ffffbdad9c633910633108633110633108633910633108633110633108633910734a29c6c6cec6c6c6c6c6cec6c6c6c6c6ced6d6deffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa58c73633910633108633110633108633910 +633108633110633108633910633108633910ad9c8cc6c6cec6c6c6d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ef6331106339 +10633110633910633110633910633110633910633110633910b5ada5183942089cb500d6ff00c6ff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff +00bdff00b5ef295a6b317b8c0894b500d6ff00d6ff00ceff00ceff00c6ff00ceff00d6ff10738c5a94ad29637310637308add600c6ff00c6ff00bdff00bdff00 +bdf700c6ff00bdff00bdff00bdf700c6ff00c6ff00d6ff00d6ff00d6ff089cbd104a5a184252b5cedeffffffffffffffffffefe7de6331106339106331106339 +10633110633910633110633910633110633910bdb5b5cececec6c6c6c6cecec6c6c6ceced6ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffad9484633910633110633910633110633910633110633910633110633910633110633910ad +948ccececec6c6c6d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b5231633108633110633108633910633108633110 +633108633910633108a594849ca5ad18313900bde700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf708adde085a7300bde700c6ff00 +c6ff00bdf700bdff00bdf700bdff00b5f710637b105a7310738c00ade700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bd +f700bdff00bdf700c6ff00ceff00d6ff00d6ff089cbd103142316b7beff7f7ffffffffffff6b4221633108633910633108633110633108633910633108633110 +633108b59c94c6c6c6c6c6cec6c6c6c6c6cec6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffb59c8c633910633108633110633108633910633108633110633108633910633108633110a5947bc6c6cec6c6c6cececeffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffa584736339106331106339106331106339106331106339106331106339108c6b52cecece6b +8494104a5a08adf710adf700bdf700bdff00bdf700c6ff00bdff00bdff00bdf7088cb50884a500c6ff00bdf700c6ff00bdff00bdff00bdf700c6ff00b5f7104a +63104a6308adde00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf7 +00ceff00d6ff00d6ff08738c18394ab5d6deffffff94735a633910633110633910633110633910633110633910633110633910947b63c6cecec6c6c6cececec6 +c6c6c6ceceefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbda5946339106331106339 +10633110633910633110633910633110633910633110633910a58c73cececec6c6c6ceced6ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffcebdad6331086339106331086331106331086339106331086331106331086b4221bdc6c6c6c6ce315a63107ba5187be7188cef08a5 +f700bdff00bdf700bdff00a5d6087b9c00a5d600bdff00bdf700bdff00bdf700bdff00bdf700bdff009cce213942182931182931084a6300a5d600bdf700bdff +00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700c6ff00ceff00d6ff009cbd18 +31398cb5c6bda5946331086331106331086339106331086331106331086339106331087b5231c6c6c6c6c6cec6c6c6c6c6cec6c6c6dededeffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6ad9c633910633108633110633108633910633108633110633108633910 +6331086331109c846bc6c6cec6c6c6cececef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefe7e76339 +10633110633910633110633910633110633910633110633910633110bdb5b5c6c6c6bdbdc6183942187bde187bef2184ef187bef188cef0894d608a5d600bdff +00bdff00bdf700c6ff00bdff00bdff00bdf700bdff1873944a6373bdbdbdadadad5a63631821291818210884b500bdff00bdff00bdf700c6ff00bdff00bdff00 +bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00ceff00d6ff00add61831398c9c9c6339106331106339 +10633110633910633110633910633110633910633110c6c6bdc6c6c6c6cecec6c6c6cecececececeffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffc6b5ad6b3910633110633910633110633910633110633910633110633910633110633910947b63c6cecec6c6c6cececef7 +f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff734a29633110633108633910633108633110 +633108633910633108633110a59484c6c6cec6c6c6637b8c105a8c187bef187be7187bef1094ef00bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf708 +9cce2942526b6b73c6c6c6c6c6cec6c6c6c6c6ce949494212129101821106bad00b5f700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bd +f700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00c6f700d6ff00adce183139633918633910633108633110633108633910633108633110 +633108633910ad9c94c6c6cec6c6c6c6c6cec6c6c6c6c6ceffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcebdb56b +391063310863311063310863391063310863311063310863391063310863311094735ac6c6c6c6c6c6cececef7f7f7ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c846b63311063391063311063391063311063391063311063391063311094735ac6 +c6c6c6cecebdbdbd18394a187bef187bef187bef109cf708a5f710a5f7089cf710a5f708a5f708adf7089cde107bb5185294212131181821737373c6c6c6c6ce +cec6c6c6cecece94949c1821211821291873ce1094ef08b5ff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf7 +00c6ff00bdff00bdff00bdf700c6ff00c6ff00d6ff087b945a42316331106339106331106339106331106339106331106339106331109c846bc6c6c6cececec6 +c6c6c6cecec6c6c6f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6c6bd6b39186331106339106331106339106331106339 +106331106339106331106339108c6b52c6c6cec6c6c6cececef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6dee76b9cad42738439 +6b7b528494c6dee7ffffffffffffc6ad9c6339106331086331106331086339106331086331106331086339106b4221c6c6c6c6c6c6bdbdbd102131187bef187b +ef187bef187be7187bef187bef187bef187be7187bef187be7187be7187be7187bef186bce21314210181873737bc6c6c6c6c6cec6c6c6c6c6ce63636b181821 +10294a187bef187bef1094f700adf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700 +bdff00c6ff00ceff3931216331106331086339106331086331106331086339106331086331107b5239c6c6cec6c6c6c6c6cec6c6c6c6c6cedededeffffffffff +ffffffffffffffffffffffffffffffffffffffffffffd6cec66b391863310863311063310863391063310863311063310863391063310863311084634ac6c6c6 +c6c6c6c6c6ceefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6e7ef5a8c9c18394a182931184263184a84184a8c184a7b18294221395294bdceefe7 +de633110633910633110633910633110633910633110633910633110633910bdb5b5b5bdbd29425218528c187bef2184ef187bef187bef187bef2184ef187bef +187bef187bef2184ef187bef187bef187bef2184ef186bd6212931181821a5a5adc6c6c6c6cecec6c6c6bdbdc6212129182121185aad2184ef187bef187bef10 +94ef08b5ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00ceff29424a6331106339 +106331106339106331106339106331106339106331106b3910c6bdbdc6cecec6c6c6cececec6c6c6d6d6d6ffffffffffffffffffffffffffffffffffffffffff +ffffffded6ce6b4221633110633910633110633910633110633910633110633910633110633910846342c6c6c6c6c6c6c6ceceefefefffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffe7eff7739cad214a5a18212910426b1863b51873e7187bef187bef187bef187be7187bef1863c618395a295a736b4a29633108633910633108633110 +633108633910633108633110523110395a63102939185a9c187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef18 +7bef187be7187bef185aad182121313139c6c6c6c6c6c6c6c6cec6c6c673737b18182118314a187be7187bef187bef187bef187be71094ef00adf700bdff00bd +f700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700c6ff1031396b3918633108633110633108633910633108633110 +633108633910633108b5a59cc6c6c6c6c6cebdbdc69cb5bd8ca5b5e7eff7ffffffffffffffffffffffffffffffffffffe7e7de6b422163310863311063310863 +39106331086331106331086339106331086331107b5a39c6c6c6c6c6c6c6c6ceefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9cbdce29526318212918314a185a9c1873de +2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef185aa518394a5a422163311063391063311063391063311042392918314218314210 +5a94187be7187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef1839631821 +2184848ccececec6c6c6c6cecebdbdbd293131181821185aad187bef2184ef187bef187bef187bef1884ef108cef08adf700bdf700c6ff00bdff00bdff00bdf7 +00c6ff00bdff00bdff00bdf700c6ff00bdff00bdff009cc62152638c634a633910633110633910633110633910633110633910633110633910635a52295a6b18 +3142182121181821182121181821214a5a94b5c6ffffffffffffffffffffffffefe7de6331106339106331106339106331106339106331106339106331106339 +107b5231c6c6c6c6c6c6c6cecee7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff9cbdc6214a5a10182118426b1063bd187bef187bef187bef187be7187bef187bef187bef187be718 +7bef187bef187bef187be7187bef187bef186bbd10394a5a391863310852311821394218293110426b1863bd187be7187bef187bef187bef187be7187bef187b +ef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7186bc6181821424242c6c6c6c6c6cec6c6c6c6c6ce +6b6b73181821182942187bef187be7187bef187bef187bef187be7187bef187bef188cef08a5f700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700 +bdff00adce183942b5ced6ad9c84633108633910633108633110633108633910633108633110633108523918085a73088ca5009cbd08b5d600b5d608a5c6086b +8418293131637beff7f7ffffffffffffffffff734a21633108633910633108633110633108633910633108633110735231c6bdbdc6c6c6c6c6cee7e7e7ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffeff7f731637318212110395a186bce187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184 +ef187bef186bb5183942213139183952185aa51873de2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef +187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef213952181821a5a5adc6c6c6cececec6c6c6adadb5181821182121186bc6187bef18 +7bef2184ef187bef187bef187bef2184ef187bef187bef1084ef109cf700b5f700bdff00bdf700c6ff00bdff00bdff0894b51842529cc6d6ffffffd6c6bd6339 +1063311063391063311063391063311063391063311063391063391008cef700d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00bde710425218394af7ffffffffff +ffffff94735a633910633110633910633110633910633110633910734a29c6bdbdc6c6c6c6cecee7e7e7ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94bdc6102931182931105aa5187bef187b +e7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be71873d61839631831421863bd187bef +187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef18 +7bef187be7187bef187bef187bef18529c1818216b7373c6c6cec6c6c6c6c6cec6c6c6394242101818184a84187bef187bef187be7187bef187bef187bef187b +e7187bef187bef187bef187be7187bef1084ef109cf700adf700bdff086b84215a6be7f7f7e7f7f7bdd6de7ba5ad5a3108633110633108633910633108633110 +63310863391063310863311018a5bd00d6ff00ceff00d6ff00d6ff00d6ff00ceff00d6ff00cef7105263295a6bffffffffffffbdad9c63310863311063310863 +39106331086331106b4221bdbdb5c6c6c6c6c6cedededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff6394a51821211842631873de2184ef187bef187bef187bef2184ef187bef187bef187bef +2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187be7184a84182129184a7b187be7187bef187bef2184ef187bef187bef187bef2184ef18 +7bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef186b +ce1818214a5252c6c6c6c6cecec6c6c6cecece7b7b7b1821211829392184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef +2184ef187bef187bef1873ce1821292931392129291821212939394a525a6b4a2963311063391063311063391063311063391063311063391063311039848c00 +d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00c6e71829316b9cadffffffe7ded66339106331106339106331106339106b4221c6bdb5c6c6c6c6ce +cedededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff42738410182118528c187be7187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be718 +7bef187bef187bef186bce2129391818211818211018181829391863b5187bef187be7187bef187bef187bef187be7187bef187bef187bef1873de187bef187b +ef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187be71821292121298c8c8c63636b525a5a +4a4a4a5252521818211818211063bd187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef108cef088cbd1018187b +7b84ffffffffffffffffffffffffa58c7b6339106331086331106331086339106331086331106331086339104a5a4a00d6ff00d6ff00d6ff00ceff00d6ff00d6 +ff00d6ff00ceff00d6ff087b9418394affffffffffff6b39186339106331086331106b3918bdb5adc6c6c6c6c6ced6d6deffffffffffffffffffffffffffffff +fffffffffffffffffffffffff7f7f7f7f7f7f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5284941818211863a518 +7bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef185aa52931398c8c94c6ce +ceadadb58c8c94213142182129186bc6187bef187bef2184ef187bef186bc6294a7331394a18212118212121212931394a214a841873de187bef2184ef187bef +187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef1873de18293918212921293929425a294a73294a6b21314a18212918182118314a10 +63ad188cef1884ef1884ef1084ef188cf7108cef188cf71094ef109cf708a5f708adf700bdf700c6ff088cbd182121737b7bffffffffffffffffffffffffd6c6 +bd63311063391063311063391063311063391063311063391063311063391800cef700d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff08b5d6181821 +e7f7f7ffffff94735a6331106339106b3918bdb5adc6c6c6c6ceced6d6d6fffffffffffffffffffffffffffffff7f7f7e7e7e7cecececececec6c6c6c6cecec6 +c6c6cececec6c6c6d6d6d6dededef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b9cad101821185a94187bef187bef187be7187bef187bef187bef187b +e7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef184a8439424ab5b5b5c6c6cec6c6c6c6c6cec6c6c6a5a5ad101818184273 +187bef187bef1873de29425a18182118182110181821212929313118212110181818182118212121528c187be7187bef187bef187bef187be7187bef187bef18 +7bef187be7187bef187bef185aad102139184a84186bd6187bef187be7187bef187bef187bef1873e71863b518315218182110394a00a5de00bdf700bdff00bd +f700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf70894c6181821737373fffffffffffffffffffffffff7efef633910633108633910633108633110 +63310863391063310863311063310818adc600ceff00d6ff00d6ff00d6ff00ceff00d6ff00d6ff00d6ff00cef7181821b5cedeffffffb59c8c633110633910b5 +ada5c6c6c6c6c6ced6d6d6fffffffffffffffffff7f7f7ded6cebdb5adb5a59cbdada5c6c6bdc6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6 +c6ceced6efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffbdd6e7182129184a7b187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef +2184ef187bef187bef187bef2184ef184a7b424a5abdbdbdcececec6c6c6c6cecec6c6c6c6c6c6525a6b18212118395a2184ef187be729394a1818214a4a5294 +9494b5b5b5c6c6c6cececebdbdbd949c9c42424218212118182121426b187be72184ef187bef187bef187bef2184ef187bef187bef187bef18528c184273187b +e7187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef184a8c182121102931089cce00bdff00bdff00bdf700c6ff00bdff00bdff00bdf7 +00c6ff00bdff00bdff0094c618212163636bffffffffffffffffffffffffffffff7b523963391063311063391063311063391063311063391063311063391031 +848c00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff181821b5d6deffffffded6ce633910b5ad9ccececee7e7e7f7f7f7ffffffffffffcebd +ad9473526b4218633110633910633110633910633110633910735231ad947bc6bdbdc6cecec6c6c6cececec6c6c6c6cecec6c6c6cececed6d6d6ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +18424a1831421873e7187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef184a8c39 +4a52bdc6c6bdbdbd848c9452637b394a63314252182129181821181829186bbd187be7185aad181821182121b5b5bdc6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6 +c6c6c6ce7b8484182121181821214a84187be7187bef187bef187bef187be7187bef187bef18529c1863b5187bef187bef187bef187be7187bef187bef187bef +187be7187bef187bef187bef187be7187bef1839631818211021290894c600bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf7089cce1018185a +5a63ffffffffffffffffffffffffffffffa58c736331086331106331086339106331086331106331086339106331084a635200d6ff00d6ff00ceff00d6ff00d6 +ff00d6ff00ceff00d6ff00d6ff182129adced6ffffffffffffc6b5a5efefefffffffffffffffffffe7ded68c634a633108633910633108633110633108633910 +63310863311063310863391063310863391084634abdada5c6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6efeff7ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff739cad1821211863bd2184ef187bef187bef18 +7bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef186bc6293139848c9431425a1818211821211818211821 +2118182118294218427b1873de187bef187bef185aad18212118182163636b9c9ca5c6c6cec6c6c6c6cecec6c6c6cececec6c6c6c6cece94949c212129181821 +186bc6187bef2184ef187bef187bef187bef1873ce186bd6187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef18 +7bef187bde18213118212110293108b5ef00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff009cd6182121525252ffffffffffffffffffffffffffff +ffcebdad6339106331106339106331106339106331106339106331106339105a391808d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff182931 +bdd6deffffffffffffffffffffffffffffffffffffefe7de734a2963311063391063311063391063311063391063311063391063311063391063311063391063 +3110633910633110a58473c6c6c6cececec6c6c6c6cecec6c6c6cececec6c6c6efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21425210314a187bef187be7187bef187bef187bef187be7187bef187bef187bef187b +e7187bef187bef187bef187be7187bef187bef187bef187be721314a31425218182110182118315218427b185aad186bc6187be7187bef187bef187be7187bef +187bef187bef18529429313918182118182121212973737bbdbdc6c6c6cec6c6c6c6c6cec6c6c6c6c6ce6b6b73181821293952187bef187be7187bef187bef18 +7bef1873e7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7185aad1818211818210863 +7b00bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700a5d61818214a4a52fffffffffffffffffffffffffffffff7efe7633108633910633108633110 +63310863391063310863311063310863391010adce00d6ff00d6ff00d6ff00ceff00d6ff00d6ff00d6ff00ceff183139b5d6deffffffffffffffffffffffffff +fffff7f7f77352316331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331087b5231bdb5 +adc6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffbdd6de181821185aa5187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef +2184ef187bef1863ad182939182129184a7b1873d6187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef186bbd31 +4a63182121181821394242bdbdbdc6cecec6c6c6cececec6c6c6bdbdc62121291821211863bd187bef187bef2184ef187bef187bef187bef2184ef187bef187b +ef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef18426b18182118292900b5ef00c6ff00bdff00bdff00bdf7 +00c6ff00bdff00bdff00a5de182121394242ffffffffffffffffffffffffffffffffffff7b523163311063391063311063391063311063391063311063391063 +3110318c9400d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff103142bdd6e7ffffffffffffffffffffffffffffffb59c846331106339106331106339 +10633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110734a21bdbdb5cececec6c6c6c6cecec6c6c6 +cececec6c6ceffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff739cad181821 +186bce187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef18294218314a186bce18 +7bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef1863bd21293110181852525ac6c6 +c6c6c6cec6c6c6c6c6cec6c6c65a6363101818314a6b187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef +187be7187bef187bef187bef187be7187bef187bef187bef186bc61818211818210894c600bdf700bdff00bdf700bdff00bdf700bdff00bdf7089cd610181831 +3939ffffffffffffffffffffffffffffffffffff9c7b6363311063310863391063310863311063310863391063310863311042635a00d6ff00ceff00d6ff00d6 +ff00d6ff00ceff00d6ff00d6ff10394aadced6ffffffffffffffffffffffffffffff6b4221633910633108633110633108633910633108633110633108633910 +633108633110633108633910633108633110633108633910633108633110633108734a29bdb5b5c6c6cec6c6c6c6c6cec6c6c6c6c6ced6d6d6ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff528494182129187bef187bef2184ef187bef187bef18 +7bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef1863bd183152187be7187bef187bef2184ef187bef187bef187bef2184 +ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef1863bd18212918182194949cc6c6c6c6cecec6c6c6cececea5a5a5 +182121212129187be7187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef18 +7bef2184ef187bef187bef183152182121086b8c00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff0894bd182121313939ffffffffffffffffffffffffffff +ffffffffc6b5a56331106339106331106339106331106339106331106339106331105a422100d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff104252 +a5c6d6ffffffffffffffffffffffffe7ded663391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063 +3110633910633110633910633110633910633110845a42c6c6c6cececec6c6c6c6cecec6c6c6cececef7f7f7ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff4a7b8c182939187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187b +e7187bef187bef187bef187be7187bef187bef1839631063c6187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef +187bef187bef187be7187bef187bef187bef187be7187bef184a8c181821313939c6c6c6c6c6c6c6c6cec6c6c6c6c6ce393942181821215a9c187bef187bef18 +7bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef1852941018 +1810425200bdf700bdff00bdf700bdff00bdf700bdff00bdf7088cb51818214a4a52ffffffffffffffffffffffffffffffffffffefe7de633910633108633110 +63310863391063310863311063310863391063310810bdd600d6ff00d6ff00ceff00d6ff00d6ff00d6ff00ceff104a5a94b5c6ffffffffffffffffffffffffce +c6b56331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331 +08633110633108b5a594c6c6c6c6c6cec6c6c6c6c6cec6c6c6d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff6b9cad181821187be7187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef +1873d6183152187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef18 +7bef187bef187bef187be71829391821218c8c8ccececec6c6c6c6cecec6c6c684848c18182142526b187bef2184ef187bef187bef187bef2184ef187bef187b +ef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef1863bd18212118182100bdf700bdff00bdff00bdf7 +00c6ff00bdff00bdff087ba51821215a5a63ffffffffffffffffffffffffffffffffffffffffff5a311063391063311063391063311063391063311063391063 +311063391029949c00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff10526b7ba5b5ffffffffffffffffffffffffb5a5946339106331106339106331106339 +10633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910734a29c6c6c6c6c6c6 +cececec6c6c6c6cecec6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffadced6181821 +185ab5187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef10427b185aa5187bef187bef187be718 +7bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7185aa51818 +21393942bdc6c6c6c6cec6c6c6c6c6ceb5b5b5181821293131187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef +187be7187bef187bef187bef187be7187bef187bef187bef187be71873de18182118182100adde00bdff00bdf700bdff00bdf700bdff00bdf71073941018186b +6b73ffffffffffffffffffffffffffffffffffffffffff4a2918633108633910633108633110633108633910633108633110633108426b6300ceff00d6ff00d6 +ff00d6ff00ceff00d6ff00d6ff10738c427384ffffffffffffffffffffffffad94846331086339106331086331106331086339106331087b52319c84739c8473 +633108633110633108633910947b6b947b6b735231633910633108633110633108633910633108633110a59484c6c6cec6c6c6c6c6cec6c6c6c6c6cee7e7e7ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18394a183152187bef2184ef187bef187bef18 +7bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef1873e7182942187be72184ef187bef187bef187bef2184ef187bef187bef187bef2184 +ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187be718314a181821949c9cc6c6c6cececec6c6c6 +c6cece3131391821211873d6187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef18 +7bef2184ef187bef187bef187bef18213118182108a5d600bdf700c6ff00bdff00bdff00bdf700c6ff2152631821218c8c8cffffffffffffffffffffffffffff +ffffffffffffff3121186339106331106339106331106339106331106339106331106339105a422900d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff0894ad +295263ffffffffffffffffffffffffb5a5946339106331106339106331106339106331109c846bc6c6c6cececec6bdc66b3918633110633910633110a58c7bc6 +c6c6cececead9c946b4221633110633910633110633910633110846342c6c6c6c6cecec6c6c6cececec6c6c6d6d6d6ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84adbd181821185294187be7187bef187bef187bef187be7187bef187bef187bef187b +e7187bef187bef187bef187be7185294104a7b109cf708a5f708adf708adf710adf7089cef109cf7108cef188cef107be7187bef187bef187bef187be7187bef +187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef18529c1818214a4a52c6c6cec6c6c6c6c6cec6c6c65a5a631018181863b5187bef18 +7bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef1029 +4a181821008cbd00bdff00bdf700bdff00bdf700bdff00b5f7212931181821cececefffffffffffffffffffffffffffffffffffff7f7f7292121633108633110 +63310863391063310863311063310863391063310863311008bdde00d6ff00ceff00d6ff00d6ff00d6ff00ceff08adce102939ffffffffffffffffffffffffce +bdad633108633110633108633910633108735231bdbdc6c6c6cec6c6c6c6c6ce7b5239633910633108633110846342c6c6cec6c6c6c6c6ceb5ada56b42216331 +08633110633108633910633108c6bdbdc6c6c6c6c6cec6c6c6c6c6cec6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff427384181821185a9c187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef1873d6103142 +08c6ef00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00c6ff08bdff10a5f71094f71884ef2184ef187bef187bef187bef2184ef18 +7bef187bef187bef2184ef187bef187be7182131212129adb5b5c6cecec6c6c6cecece6b6b73182121185aa52184ef187bef187bef187bef2184ef187bef187b +ef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef1839631818210894bd00bdff00bdff00bdf7 +00c6ff00bdff089cce181821292931ffffffffffffffffffffffffffffffffffffffffffdedede18182163311063311063391063311063391063311063391063 +3110633910633110299ca500d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00c6ef182121e7eff7ffffffffffffffffffe7ded66339106331106339106331106339 +1094735acececec6c6c6c6cecec6c6c6947b6b6331106339106331106b4218c6c6c6c6cecec6c6c6cececea5948c633910633110633910633110633910ad948c +cececec6c6c6c6cecec6c6c6cececeefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +f7ffff396b7b1818211842731873de187bef187bef187bef187be7187bef187bef187bef187be7187bef184a840894b500ceff00ceff00bde700c6e700c6ef00 +d6ff00d6ff00d6ff00ceff00d6ff00d6ff00d6ff00ceff00d6ff00d6ff00d6ff00c6f710adf71084ef187bef187be7187bef187bef187bef187be7187bef187b +ef184a841018186b6b73c6c6c6c6c6cec6c6c67b7b84181821185294187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef +187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef1042631818210094c600bdff00bdf700bdff00bdf700bdff0873941818215a5a63ff +ffffffffffffffffffffffffffffffffffffffffadadb51818214a3118633910633108633110633108633910633108633110633108633910396b6b00d6ff00d6 +ff00d6ff00ceff00d6ff00d6ff00d6ff1029319cbdceffffffffffffffffffffffff6b391863391063310863311063310894735ac6c6c6c6c6cec6c6c6c6c6ce +a59c94633110633108633910633108bdada5c6c6c6c6c6cec6c6c6c6c6c66b42296339106331086331106331088c634ac6c6c6c6c6cec6c6c6c6c6cec6c6c6e7 +e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b9cad18293118314218 +5aa5187bef187bef187bef187bef2184ef187bef187bef1873e718314a106373106373105a6b106b7b086b84106b84106373106b7b086b84107b8c087b94089c +bd00bdde00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff108cef187bef187bef2184ef187bef187bef187bef2184ef186bce182121292931c6cecec6c6c6 +c6cece848c8c182121184a84187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef18 +7bef2184ef187bef187bef187bef18395a18182108adde00bdf700c6ff00bdff00bdff00bdf7215263181821a5a5a5ffffffffffffffffffffffffffffffffff +ffffffff8c8c941818213942396331106339106331106339106331106339106331106339106331105a4a3100d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff +104a5a5a8c9cffffffffffffffffffffffff9c7b63633110633910633110633910734221c6c6c6c6c6c6cececec6c6c6c6c6c6633110633910633110633910a5 +8c7bcececec6c6c6c6cecec6c6c6947363633110633910633110633910633918c6c6cec6c6c6cececec6c6c6c6ceced6d6d6ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdeeff7396b7b1821291029421863a5187be7187bef187b +e7187bef187bef18528c08738c00d6ff00d6ff00d6ff00ceff00d6ff00d6ff00d6ff00ceff00d6ff00d6ff00d6ff00b5de089cbd0884a50894b500bde700d6ff +00d6ff00d6ff00ceff00ceff1084ef187bef187be7187bef187bef187bef187be7187bef182942181821a5a5a5c6c6cec6c6c68c949410181818528c187bef18 +7bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef1029 +3918212900b5f700bdff00bdf700bdff00bdf700bdf7182129181821dededeffffffffffffffffffffffffffffffffffffffffff636363181821185a63633110 +63310863391063310863311063310863391063310863311063310808c6e700ceff00d6ff00d6ff00d6ff00ceff00d6ff104a5a396b7bffffffffffffffffffff +ffffcebdad633110633108633910633108633110ad9c8cc6c6cec6c6c6c6c6cec6c6c67b52316331086331106331088c6b52c6c6c6c6c6cec6c6c6c6c6ce8c7b +63633110633108633910633108633110bdb5adc6c6cec6c6c6c6c6cec6c6c6ced6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdeefef52849418293918314210639c187bde187bef2184ef10395200ceff00d6ff +00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00ceff08adce0894b508bdde00d6ff00d6ff00d6ff08bdff18 +7bef187bef187bef2184ef187bef187bef187bef184a7b1818217b7b84c6c6c6cecece8c94941821211852942184ef187bef187bef187bef2184ef187bef187b +ef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef1873d6182129104a5a00c6ff00bdff00bdff00bdf7 +00c6ff089cce182121313139ffffffffffffffffffffffffffffffffffffffffffffffff42424a181821088ca55a391863391063311063391063311063391063 +3110633910633110633910219cad00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff18394a427384ffffffffffffffffffffffffffffff6339186339106331106339 +10633110734221bdb5adc6cecec6c6c6cecece8c73636339106331106339106b3918c6c6c6c6c6c6cececec6c6c684634a633110633910633110633910633110 +b5a594c6c6c6c6cecec6c6c6cececec6ceceffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffa5c6ce4a7b8c18314218425a105a9410426300bde700d6ff00c6ff00ceff00c6ff00c6ff00c6f700 +ceff00c6ff00ceff00ceff00ceff00ceff00d6ff00ceff00d6ff00d6ff00d6ff00b5de08b5d600d6ff00d6ff00ceff188cef187bef187bef187be7187bef187b +ef187bef1852941818215a6363c6c6cec6c6c68c8c9418182118529c187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef +187be7187bef187bef187bef187be7187bef187bef187bef187be718529418182108739c00bdf700bdff00bdf700bdff00bdf710739c1818216b6b73ffffffff +ffffffffffffffffffffffffffffffffffffffff18182118182100adce4a6352633108633110633108633910633108633110633108633910633108397b7300d6 +ff00d6ff00ceff00d6ff00d6ff00c6ef1018217badb5ffffffffffffffffffffffffffffff94735a633108633110633108633910633108734221a58c84c6c6c6 +c6c6c6a59c8c633108633910633108633110b5adadc6c6cec6c6c6ada59c6331106339106331086331106331086339109c8473c6c6cec6c6c6c6c6cec6c6c6c6 +c6ceffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffbdd6de5a8c9c183139089cc600bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6 +ff00c6ff00ceff00ceff00d6ff00d6ff00d6ff00cef700d6ff00d6ff00d6ff109cef2184ef187bef187bef187bef2184ef187bef1863ad18182152525ac6c6c6 +c6cece84848c182121185a9c187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef18 +7bef2184ef187bef187bef18294218212900ade700bdff00bdf700c6ff00bdff00bdff18526b182121a5a5a5ffffffffffffffffffffffffffffffffffffffff +ffc6c6ce18212110212900d6ff31848c63391063311063391063311063391063311063391063311063391052523900d6ff00d6ff00d6ff00d6ff00d6ff088cad +182129e7eff7ffffffffffffffffffffffffffffffcebdb56339106331106339106331106339106331106339106b42218c6b52947b6b63391063311063391063 +3110ad9484c6c6c6c6cece7b5a426339106331106339106331106339106331109c846bc6c6c6cececec6c6c6c6cecec6c6c6ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffa5b5bd08739c00bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700ceff +00d6ff00d6ff00ceff00d6ff00d6ff1094f7187be7187bef187bef187bef187be7187bef185aa51818214a5252c6c6cec6c6c684848c101818185aad187bef18 +7bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef184a8c181821085a +7b00bdff00bdf700bdff00bdf700bdff00bdf7214252101818c6c6c6ffffffffffffffffffffffffffffffffffffffffff949494181821104a5a00ceff18adc6 +63310863391063310863311063310863391063310863311063310863391000c6ef00d6ff00d6ff00d6ff00ceff104a5a214a5affffffffffffffffffffffffff +ffffffffffffffff7b52396339106331086331106331086339106331086331106331086339106331086331106331086339108c6b52c6c6cec6c6c69c84736331 +086331106331086339106331086331108c735ac6c6cec6c6c6c6c6cec6c6c6cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffced6d6106b8c00bdf7 +00c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00ceff00d6ff00d6ff08c6ff18 +7bef187bef187bef2184ef187bef187bef187bef185294181821636b6bc6c6c6cecece7b7b841821211863bd2184ef187bef187bef187bef2184ef187bef187b +ef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef186bce18212918293108ade700bdf700c6ff00bdff00bdff00bdf7 +00c6ff213142182121d6d6d6ffffffffffffffffffffffffffffffffffffffffff5a5a63182121087b9400d6ff00cef763391863311063391063311063391063 +311063391063311063391063311021a5b500d6ff00d6ff00d6ff08adce1818218cb5c6ffffffffffffffffffffffffffffffffffffffffffd6cebd6331106339 +10633110633910633110633910633110633910633110633910633110633910633110734a21c6c6c6cececeb5b5ad633910633110633910633110633910633110 +9c846bc6c6c6c6cecec6c6c6cececed6d6deffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7105a7b00bdff00bdf700bdff00bdf700bdff00bdf700 +bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf708a5f7108cef1094f7187be7187bef187bef187bef187be7187bef187b +ef187bef18396b18182173737bc6c6cec6c6c66b6b731818211873d6187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef +187be7187bef187bef187bef187be7187bef186bce1829391018210894bd00bdf700bdff00bdf700bdff00bdf700bdff00c6f7182931181821efefefffffffff +ffffffffffffffffffffffffffffffffff29293110181808a5c600d6ff00d6ff4a5a42633110633108633910633108633110633108633910633108633110317b +7b00d6ff00ceff00d6ff10425218424aefefefffffffffffffffffffffffffffffffffffffffffffffffff9c846b633108633910633108633110633108633910 +633108633110633108633910633108633110633108bdb5b5c6c6c6c6c6ce735231633910633108633110633108633910a58c7bc6c6cec6c6c6c6c6cec6c6c6ef +efefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffefefef215a7300bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6 +ff00bdff00bdff00bdf700c6ff00bdff00bdff1884ef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef212939181821a5a5adc6c6c6 +c6cece525a5a182129187be7187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef187bef2184ef187bef187bef18 +6bc618314218182110739c00bdf700c6ff00bdff00bdff00bdf700c6ff00ceff00d6ff1821293139394a6b7b52737b526b7bbdc6c6ffffffffffffffffffdede +e718182118212100cef700d6ff00d6ff398484633110633910633110633910633110633910633110633910633110525a4200d6ff00d6ff08738c1821297b9cad +e7e7e7fffffffffffffffffffffffffffffffffffffffffffffffffffff78c6b4a63311063391063311063391063311063391063311063391063311063391063 +3110633910ad9c8cc6cecec6c6c69c8473633110633910633110633910633110b5ad9cc6c6c6cececec6c6c6d6d6d6ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff184a5a00bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff +08a5f7187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7186bc6181821292931bdc6c6c6c6cec6c6c639424a102131187bef1873d610 +527b1073de187bef187bef187bef187be7187bef187bef187bef187be7187bef187bef187bef187be7187bef1852941821291018210884ad00bdf700bdff00bd +f700bdff00bdf700ceff00ceff00ceff00b5f7104a6373a5adffffffffffffeff7ff5a8c9c395263ced6d6ffffffb5b5b518182110293100d6ff00ceff00d6ff +18a5bd6339106331086331106331086339106331086331106331086339105a311008cef7089cb5182121427384c6c6cececed6ffffffffffffffffffffffffff +fffffffffffffffffffffffffffff7f7f784634263310863391063310863311063310863391063310863311063310863391063310894735ac6c6c6c6c6ceb5ad +ad633910633108633910633108734221c6c6c6c6c6cec6c6c6cececef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff294a5200bdf7 +00c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf71894f7187bef187bef187bef2184ef18 +7bef1884ef187bef2184ef187bef187bef1842731821215a5a5ac6cecec6c6c6c6cece212931183963187bef1894f7182129213139105294187be7187bef187b +ef187bef2184ef187bef187bef187bef2184ef187bef1863ad10314218212110394a089cce00bdf700c6ff00bdff00c6ff00c6ff00d6ff00d6ff08b5ff00adf7 +00c6ff087b9c316373ffffffffffffffffffffffffd6e7ef315263738c94949494181821184a5200d6ff00d6ff00d6ff08cef763391063391063311063391063 +3110633910633110633910633110633910217b8418212929526bc6c6cec6c6c6cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fff7f7f78c6b4a633110633910633110633910633110633910633110633910633110633910734a29cececec6c6c6c6cece735231633910633110633910ad9c8c +cececec6c6c6cececef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21424a00bdff00bdf700bdff00bdf700bdff00bdf700 +bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff107bef187bef187bef187bef089cef00ceff00ceff109cf7187be7187bef1873 +d61821291018189c9ca5c6c6c6c6c6cea5a5a5181821184a8c187bef00a5f729424a39394263737318212918426b185aa5186bce1873de187bef186bd61863b5 +10427318293918182110394a087ba500bdf700bdf700bdff00bdf700c6ff00ceff00d6ff00c6ff109cf700b5f700bdff00bdf700b5ef102939deefefffffffff +ffffffffffffffffffffff528494212931181821085a6b00d6ff00d6ff00d6ff00ceff5252426331086339106331086331106331086339106331086331106331 +08422918295a6bc6c6c6c6c6c6c6c6cec6c6c6f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6b5a56b4218633910 +633108633110633108633910633108633110633108633910bdb5b5c6c6cec6c6c69c84736331086331108c6b52c6c6c6c6c6c6d6d6d6f7f7f7ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff29425200bdf700bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6 +ff00bdff00bdff00bdf700c6ff00bdff188cef187bef2184ef08a5f700d6ff00bde700d6ff00c6ff187bef187bef184a84181821393942c6c6c6cececec6c6c6 +7b848c181821186bbd108cef00bdff315a6b42424affffffefefef7b848431394218182118212118182118212118212921293908638408a5d600bdff00bdff00 +bdf700c6ff00ceff00d6ff00d6ff00d6ff00bdff1094f700b5f700c6ff00bdff00bdff00bdf710739c396b7bffffffffffffffffffffffffffffffffffffa5c6 +ce18212910526300ceff00d6ff00d6ff00d6ff317b7b6339106331106339106331106339106331106339106331106339105a4a31c6c6cec6c6c6cececec6c6c6 +c6cecee7e7e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7a58c73734a2163311063391063311063391063 +3110633910633110b5a594c6c6c6cececeb5b5ad63391084634acececee7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffff18314200bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff +089cef187bef089cef00ceff105263182121085a6b00d6ff187bef187be7182129181821848c8cc6c6cec6c6c6c6c6ce424a5a1821291084e700b5f700bdf739 +6b7b212929fffffffffffffffffffffffff7f7f7dededed6d6d694949418182118293900c6ff00bdf700c6ff00c6ff00d6ff00ceff00d6ff00d6ff00d6ff00ad +f7109cf700bdf700bdff00bdf700bdff00bdf700bdff00b5ef183139c6dee7ffffffffffffffffffffffffffffffffffffe7eff729526310425200add600d6ff +00d6ff21a5b56331086331106331086339106331086331106331086339106331086b3918c6c6c6c6c6cec6c6c6c6c6cec6c6c6d6d6d6ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffded6c6a58c73845a396b4221633910633108633110947b63cececedede +def7f7f7c6b5a5f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21394200bdf7 +00c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdf700d6ff086b7b18212118 +182118293100d6ff188cf7184a8c182121393942c6c6cec6c6c6c6ceceb5b5b518212910395200bdff00bdf700c6ff316b84182121ffffffffffffffffffffff +ffffffffffffffffffff7b7b7b18182110526300d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00ceff089cf708a5f700bdf700c6ff00bdff00bdff00bdf7 +00c6ff00bdff00bdff08739c397384ffffffffffffffffffffffffffffffffffffffffffffffff6394a5182931104a5a10849c108cad63391063311063391063 +3110633910633110633910633110633910633110bdb5adc6c6c6c6cecec6c6c6cececec6c6ceffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7efe7ded6efe7deffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef10395200bdff00bdf700bdff00bdf700bdff00bdf700 +bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700c6ff00c6ef18212110181818182110313900d6ff009cde1821291818 +219c9c9cc6c6c6cececed6d6d6737b841018180884ad00bdf700bdff00bdf729738c181821efefefffffffffffffffffffffffffffffffffffff4a4a52181821 +086b8400d6ff00d6ff00d6ff00ceff00d6ff00ceff00c6ff0894ef08adf700bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700b5f7103139de +eff7ffffffffffffffffffffffffffffffffffffffffffffffffe7eff75a8c9c2152631839425231186339106331086331106331086339106331086331106331 +08633910a58c7bc6c6cec6c6c6c6c6cec6c6c6c6c6cef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7 +f7f7e7e7e7dededededee7dedededee7e7dededededee7bdbdbd18425200bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6 +ff00bdff00bdff00bdf700c6ff00bdff00bdff00c6ff08a5bd7b7b7b52525a181821105a6b00c6ff184a5a1818217b7b84ffffffffffffffffffffffff182931 +18293900b5f700c6ff00bdff00bdff297b94182121efefefffffffffffffffffffffffffffffffeff7f721212918182108adce00d6ff00d6ff00d6ff00d6ff00 +ceff08bdff1094ef08b5ff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff106b845a8c9cdee7e7dededededee7dedededee7 +e7dededededee7dedededee7e7dededededee7dedede9c7b6b63311063391063311063391063311063391063311063391063311084634ad6d6d6d6d6ded6d6d6 +d6d6d6d6d6d6dedededededededee7dedededee7e7dededededee7dedededee7e7dededededee7dedededee7e7dededededee7dedededee7e7dededededee7de +dededee7e7dededededee7dedededee7e7dededededee7dedededee7e7dededededee7dedededee7e7dededededee7dedededee7e7dededededee7ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7e7e7e7cececec6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6 +c6c6c6cec6c6c6bdbdbd10293100bdff00bdf700bdff00bdf700bdff00bdf700ceff00ceff00d6ff00ceff00ceff00bdf700bdff00bdf700bdff00bdf700bdff +00bdf700ceff009cbd7b7b7b31393918212100adce087ba5181821394242f7f7f7ffffffffffffffffff8c9c9c181821086b8400bdff00bdf700bdff00bdf731 +738c101818ffffffffffffffffffffffffffffffffffffa5adad10181810394a00d6ff00d6ff00ceff00d6ff00c6ff08adf70894ef00bdff00bdf700bdff00bd +f700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff0094bd296373c6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6ce +c6c6c6c6c6ce9c9484633110633108633910633108633110633108633910633108633110633918c6c6c6c6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6 +c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6 +c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6f7f7ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffc6ada58c6b4a84634a8c6b4a84634a8c6b4a84634a8c6b4a84634a8c6b4a84634a8c6b4a84634a213942009cce +00c6ff00bdff00bdff00c6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00c6ff00c6ff00bdff00bdff00bdf700c6ff00ceff00d6ff10526318293108 +849c08b5e7182129212129d6d6d6ffffffffffffffffffefefef21293118212908ade700bdff00bdff00bdf700c6ff316b7b212929ffffffffffffffffffffff +ffffffffffffff52525a1821210884a500d6ff00d6ff00d6ff00c6ff10a5f7089cf700bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf7 +00c6ff00bdff00bdff00bdf708adde184a5a8c6b4a84634a8c6b4a84634a8c6b4a84634a8c6b4a84634a8c6b4a84634a8c6b4a84634a84634263311063391063 +31106339106331106339106331106339106331106339107b5a398c6b4a846342bdb5b5c6c6c68463427b5a397b5a427b5a39845a4284634a8c6b4a84634a8c6b +4a84634a8c6b4a84634a8c6b4a84634a8c6b4a84634a8c6b4a84634a8c6b4a84634a8c6b4a84634a8c6b4a84634a8c6b4a84634a8c6b4a84634a8c6b4a84634a +8c6b4a84634a8c6b4a9c8473cececec6c6c6c6cecec6c6c6cececee7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffd6c6b5633108633910633108633110633108633910633108633110633108633910633108633110393931105a7300bdf700bdff00c6f700d6ff00ceff00 +d6ff00d6ff00d6ff00ceff00d6ff00d6ff00d6ff00ceff00bdff00bdf700bdff00bdf700c6ff00d6ff00d6ff00ceff00c6f710394a1818218c8c94ffffffffff +ffffffffffffff5a6b73181821106b8c00bdf700bdff00bdf700bdff00bdf7396373293131ffffffffffffffffffffffffffffffe7e7e718212118212900cef7 +00ceff00ceff00bdf7109cf708a5f700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff009cc618 +4a5a6331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331 +086339106331086331106331086339109c8c7bc6c6ce735231633910633108633110633108633910633108633110633108633910633108633110633108633910 +633108633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110633108734a29c6c6c6c6 +c6cec6c6c6c6c6cec6c6c6dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ef6b391063311063391063 +3110633910633110633910633110633910633110633910633110633910183942087ba500bdf700d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6 +ff00d6ff00d6ff00ceff00ceff00bdff00bdff00bdf700ceff00ceff00c6f7184a5a1821216b7373ffffffffffffffffffffffffcecece18182118314200b5f7 +00bdff00bdf700c6ff00bdff00bdff39525a52525affffffffffffffffffffffffffffff949c9c18182110738c00d6ff00c6ff00b5f71094f700b5f700bdff00 +bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff088cad214a5a6339106331106339106331106339 +10633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110 +8c735ac6c6c6947b6b63311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063 +3110633910633110633910633110633910633110633910633110633910633110633910633110633910633110bdbdb5c6c6c6cececec6c6c6c6cececececeffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b52316331106331086339106331086331106331086339106331 +0863311063310863391063310863311018394a087b9c00ceff00d6ff00d6ff00d6ff00ceff00d6ff00d6ff00d6ff00ceff00d6ff00d6ff00d6ff00ceff00ceff +00bdf700bdff00bdf7089cce18394a181821737373fffffffffffffffffffffffff7f7f7213139181821008cb500bdff00bdf700bdff00bdf700bdff00bdf729 +3939737373ffffffffffffffffffffffffffffff39394218212900b5de00bdff08a5f7109cf700b5f700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bd +f700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700c6ff104a63394a42633108633110633108633910633108633110633108633910633108633110 +633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110734a29c6c6cea5948c63311063310863 +39106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331 +08633110633108633910633108633110633108633910633108633110ad9c8cc6c6cec6c6c6c6c6cec6c6c6c6c6cef7f7f7ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffa58c73633110633910633110633910633110633910633110633910633110633910633110633910633110 +633910184a52105a6b088ca500cef700d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff089cc610526b1818211821217b +7b84ffffffffffffffffffffffffffffff4a5a63182121105a7300bdff00bdf700c6ff00bdff00bdff00bdf700bdf71818219c9c9cffffffffffffffffffffff +ffceced6182121105a6b00bdff1094ef08adf700bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf7 +00c6ff00bdff00c6ff00b5de18394263311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063 +3110633910633110633910633110633910633110633910633110633910633110633910bdb5b5bdbdbd6331106339106331106339106331106339106331106339 +10633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110 +6339106331106339106331109c7b63c6c6c6c6cecec6c6c6cececec6c6c6efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffcebdad63391063310863311063310863391063310863311063310863391063310863311063310863391063310863311021525a18394210212910 +637b089cbd00cef700ceff00d6ff00d6ff00d6ff00bde708a5c608849c10637b10293118182118182142424ac6c6c6ffffffffffffffffffffffffffffff7b8c +9418182110314200b5f700bdf700bdff00bdf700bdff00bdf700bdff089cc6181821bdbdc6ffffffffffffffffffffffff7b7b7b101818088cce1094ef00b5ff +00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00ceff10526b294a5263 +31106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331 +08633910633108633110633108633910633108a5948cc6c6c6735231633108633110633108633910633108633110633108633910633108633110633108633910 +633108633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910734a29c6 +c6cec6c6c6c6c6cec6c6c6c6c6ced6dedeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ef63311063391063 +311063391063311063391063311063391063311063391063311063391063311063391063311063391021525a29394218182118212118182121313918424a2142 +4a1821291821211818211821211818211821214a4a4aadadb5ffffffffffffffffffffffffffffffffffff84949c18212118212908a5de00bdf700c6ff00bdff +00bdff00bdf700c6ff00bdff297b94181821ffffffffffffffffffffffffffffff29293129425a08a5f700bdff00bdff00bdff00bdf700c6ff00bdff00bdff00 +bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00c6ff0894b51039426339106331106339106331106339106331106339 +10633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110 +6339108c735acecece8c735a63391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063 +3110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910bdbdb5cececec6c6c6c6cecec6c6c6cece +d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b52316331086339106331086331106331086339106331 +086331106331086339106331086331106331086339106331086331102142524a636b6b73732129291818211818211018181818211818211821214a4a4a8c8c8c +ced6d6ffffffffffffffffffffffffffffffffffffffffff849ca51821211021290894c600bdf700bdff00bdf700bdff00bdf700c6ff00c6f700d6ff2942524a +4a4affffffffffffffffffffffffa5a5a51818211084ad00bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bd +f700bdff00bdf700bdff00bdf700bdff00c6f708adce1029314a4229633108633910633108633110633108633910633108633110633108633910633108633110 +6331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331087b5231c6c6c6a5948c63310863 +39106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331 +08633110633108633910633108633110633108633910633108633110633108b5a594c6c6c6c6c6cec6c6c6c6c6cec6c6c6ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff9c846b633910633110633910633110633910633110633910633110633910633110633910633110 +63391063311063391063311063391018424a527b84ffffffefefefc6c6ceadb5b5bdbdbddededef7f7f7ffffffffffffffffffffffffffffffffffffffffffff +ffffffffff63848c18212118212908a5c600c6ff00ceff00c6ff00ceff00ceff00d6ff00d6ff00d6ff00c6ef182129848484ffffffffffffffffffdedede7373 +7318182108ade700bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00c6ff +089cbd18293142423963311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063 +3110633910633110633910633110633910633110633910633110633910633110633910633110c6bdbdbdb5b56339106331106339106331106339106331106339 +10633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110 +6339106331106339106331106339109c7b63c6cecec6c6c6cececec6c6c6cececef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffc6b5ad63310863311063310863391063310863311063310863391063310863311063310863391063310863311063310863391063310863 +3110183942426b73ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7efef294a5218182110212908a5c600d6 +ff00d6ff00ceff00d6ff00d6ff00d6ff00ceff00d6ff00d6ff1094ad101818cececeffffffe7e7e7e7e7e7e7e7e752525a18182100a5d600bdff00bdf700bdff +00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00c6ff087b9410212942423163310863391063310863 +31106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331 +08633910633108633110633108633910633108633110a59c94c6c6ce6b4221633110633108633910633108633110633108633910633108633110633108633910 +6331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331087b +5231c6c6c6c6c6ced6d6d6efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7efe7ad8c7ba5 +8c73ad947ba58c73ad8c7ba58c73ad947ba58c73ad8c7ba58c73ad947ba58c73ad8c7ba58c73ad947ba58c73ad8c7ba58c73ad8c7b39525a395263f7f7f7ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff84a5ad18293118212110424a08bde700d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff +00d6ff00d6ff00d6ff295a6b313139dededee7e7e7c6c6c6424a5218182121292918182110526300c6f700ceff00bdff00bdff00bdf700c6ff00bdff00bdff00 +bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00c6ff00bde7105a73183142847b73a58c73ad947ba58c73ad8c7ba58c73ad947ba58c73ad8c7ba58c73ad94 +7ba58c73ad8c7ba58c73ad947ba58c73ad8c7ba58c73ad947ba58c73ad8c7b734a296339106331106339106331106339106331106339106331106339107b5231 +9c846b947b63ada59cc6c6c6a58c849c846bad947ba58c73ad8c7ba58c73ad947ba58c73ad8c7ba58c73ad947ba58c73ad8c7ba58c73ad947ba58c73ad8c7ba5 +8c73ad947ba58c73ad8c7ba58c73ad947ba58c73ad8c7ba58c73ad947ba58c73ad8c7ba58c73ad947ba58c73ad8c7ba58c73efe7e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff738c9429424abdbdbdffffffffffffffffffffffffefefef +cecece9cb5b5426b7318313118182118212108637b00cef700d6ff00d6ff00ceff00d6ff00d6ff00d6ff00ceff00d6ff00ceff00c6ff00adf7293142525252ff +ffff737b8418212152636bdededeffffffefefef39526318394a00b5d600d6ff00c6ff00c6ff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00c6 +f700c6ef086b841829314a737bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffbdad946331086331106331086339106331086331106331086339106331087b5231c6c6c6c6c6cec6c6c6c6c6cec6c6c6de +dedeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffefeff7efeff7efefeff7f7f7f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffb5bdc621313918292921313921313918212918182118212118182118212110293110637b00 +b5de00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00d6ff00ceff00bdf710a5f71094ef10a5f721526b3131396373732129319c9c9cffffffffffffffff +ffffffffffffff7b8c94182931085a7308bde700d6ff00d6ff00ceff00d6ff00ceff00ceff00ceff00ceff08a5ce10738c1829314a6b7bdee7e7ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7 +d6ce633910633110633910633110633910633110633910633110633910633110c6bdbdc6c6c6c6cecec6c6c6cecececececeffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdedee7ced6d6c6c6c6c6cecec6c6c6 +cececec6c6c6c6cecec6cecedededeefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffefefef39525a10394a106b7b08637310738c08849c089cbd00add600d6ff00ceff00d6ff00d6ff00d6ff00ceff00d6ff00ce +ff00ceff00bdf708adf71094ef1094f700a5f700bdff00bdf70884ad181821182931a5a5adc6c6cef7f7f7ffffffffffffffffffffffffffffffefefef6b7b8c +18293118394208637b087b940884a508849c086b84105a6b1021311831394a6b7bd6dee7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b39186339106331086331106331 +08633910633108633110633108633910ad9c94c6c6cec6c6c6c6c6cec6c6c6c6c6ceffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff7f7cec6bdbdad9cad9484b5a594b5ad9cbdb5b5c6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6 +c6cecececeefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff8c9ca518394208a5ce00ceff00ceff00ceff00d6ff00ceff00ceff00ceff00ceff00c6ff08bdff08a5f7109cf7108cef1094f708a5f708bdff00bdff +00bdff00bdf700c6ff00bdef1829317b848ccececec6c6c6efefefffffffffffffffffffffffffffffffffffffffffffffffffd6d6d68c9ca5637b8c526b7b4a +6b736b8494849ca5d6d6deffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff947352633110633910633110633910633110633910633110633910633110 +9c846bc6c6c6cececec6c6c6c6cecec6c6c6eff7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffce +c6b594735a633918633910633110633910633110633910633110734a299c7b63bdada5c6c6c6cececec6c6c6c6cecec6c6c6cececec6c6c6d6d6deffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd6dede21394a105a8c +108cef109cf70894ef1094f7108cef108cef108cef1094ef089cef08adf700b5f700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf70884a5294252c6 +c6cec6c6c6c6c6ced6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffb59c8c6331106331086339106331086331106331086339106331086331107b5231c6c6cec6c6c6c6c6cec6c6c6c6 +c6cedededefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7ef94735a6339106331086331106331086339106331 +08633110633108633910633108633110633108846342b5ada5c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6cececef7f7f7ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff526b73105a7300b5f708b5ff00b5f708bdff00 +bdf700bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00ceff1031399ca5a5c6c6c6c6cecec6c6c6cececeffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffded6ce6331106339106331106339106331106339106331106339106331106b3910c6bdbdc6cecec6c6c6cececec6c6c6d6d6d6ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffff7845a39633910633110633910633110633910633110633910633110633910633110633910633110 +633910633110633910947b63cececec6c6c6c6cecec6c6c6cececec6c6c6cececef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff29424a088cb500bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bd +f700bdff00bdf700bdff00bdf700bdff00bdf700c6ff088cad29424ac6c6c6c6c6cec6c6c6c6c6cec6c6c6f7ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b39186331086331106331 +08633910633108633110633108633910633108b5a59cc6c6c6c6c6cec6c6c6c6c6cec6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff8c6b526339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339107b5a39c6 +bdbdc6c6c6c6c6cec6c6c6c6c6cec6c6c6cececef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffdee7e718313908b5e700bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff +00bdff00ceff1839426b6352c6cecec6c6c6cececec6c6c6c6cecee7e7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c634a633910633110633910633110633910633110633910633110 +6339109c846bcececec6c6c6c6cecec6c6c6cececeefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffcebdb563391063311063391063 +3110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910734a29c6c6bdc6c6c6c6cecec6c6c6cece +cec6c6c6ceced6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff94a5ad104a5a00bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf700bdff00bdf70884a5183139734a29c6c6c6c6 +c6cec6c6c6c6c6cec6c6c6dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffb59c84633108633910633108633110633108633910633108633110633108845a42c6c6c6c6c6cec6c6c6c6 +c6cec6c6c6dee7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffff8c6b4a6331086331106331086339106331086331106331086339106331 +086331106331086339106331086331106331086339106331086331106331086339107b5231c6c6bdc6c6c6c6c6cec6c6c6c6c6cec6c6c6dededeffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff42636b0884a500c6ff00 +bdff00bdff00bdf700c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf708bde7182931523118633110c6bdbdc6c6c6c6cecec6c6c6cecececececeffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffd6cebd633910633110633910633110633910633110633910633110633910633910c6c6c6c6c6c6cececec6c6c6c6cecececed6ffffffffffffffff +ffffffffffffffffffffffffffffffffffffff633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110 +6339106331106339106331106339106331106339108c6b52cececec6c6c6c6cecec6c6c6cececec6c6c6f7f7f7ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefef21394200a5c600bdff00bdf700bdff00bdf700bdff00bd +f700bdff00bdf700bdff00bdf700ceff104a5a393931633108633910ad9c8cc6c6cec6c6c6c6c6cec6c6c6c6c6cef7f7f7ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff76331106331106331 +08633910633108633110633108633910633108633110b5a59cc6c6cec6c6c6c6c6cec6c6c6c6c6ceffffffffffffffffffffffffffffffffffffffffffffffff +e7ded663311063310863391063310863311063310863391063310863311063310863391063310863311063310863391063310863311063310863391063310863 +3110633108633910ad9c94c6c6cec6c6c6c6c6cec6c6c6c6c6ced6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffd6dede18394200add600c6ff00bdff00bdff00bdf700c6ff00bdff00bdff00bdf700ceff0884a5 +2139426331106339106331109c7b6bc6c6c6cececec6c6c6c6cecec6c6c6efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff846342633110633910633110633910633110633910633110 +633910633110a58c7bc6c6c6c6cecec6c6c6cececec6c6c6f7f7f7ffffffffffffffffffffffffffffffffffffffffffd6c6bd63311063391063311063391063 +3110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110734a21c6c6c6cece +cec6c6c6c6cecec6c6c6cececef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffc6cece183142009cbd00c6ff00bdf700bdff00bdf700bdff00bdf700ceff0094ad182931523110633910633108633110735231c6 +c6cec6c6c6c6c6cec6c6c6c6c6cedededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffad8c7b633910633108633110633108633910633108633110633108633910846342c6c6cec6c6c6c6 +c6cec6c6c6c6c6cededee7ffffffffffffffffffffffffffffffffffffffffffc6b5a563391063310863311063310863391063310863311063310894735aad9c +94b5ada5bdb5b5efefe7ded6ced6c6bd9c846b6b3918633108633110633108633910633108633110633108ad9c8cc6c6c6c6c6cec6c6c6c6c6cec6c6c6dedee7 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffde +dede29424a105a7308b5e700c6ff00ceff00ceff08cef708738c182931523110633910633110633910633110633910bdbdbdc6cecec6c6c6cececec6c6c6ced6 +d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffd6c6bd6331106339106331106339106331106339106331106339106331106b3918c6c6c6cececec6c6c6c6cecec6c6c6d6d6deffffffffff +ffffffffffffffffffffffffffffffffd6c6b5633110633910633110633910633110633910633110ad9c8cc6c6c6c6cecec6c6c6ceced6ffffffffffffffffff +fffffff7efef9c7b63633110633910633110633910633110633910734a29c6c6cec6c6c6cececec6c6c6c6cececececeffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c9ca5213139183942085a +731052631021292931315a3110633910633108633110633108633910633108b5a594c6c6c6c6c6cec6c6c6c6c6cec6c6c6ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7efef6339106331 +08633910633108633110633108633910633108633110633108bdada5c6c6c6c6c6cec6c6c6c6c6cec6c6c6ffffffffffffffffffffffffffffffffffffffffff +decec6633110633108633910633108633110633108845a42c6c6c6c6c6cec6c6c6c6c6cec6c6c6ffffffffffffffffffffffffffffffffffff9c7b6363310863 +3110633108633910633108633110b5ada5c6c6cec6c6c6c6c6cec6c6c6c6c6cef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdededeadadb56b52425a3110633110633910633110 +6339106331106339106331106339109c846bcececec6c6c6c6cecec6c6c6cececeefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b5a39633910633110633910633110633910633110 +633910633110633910a58c7bc6cecec6c6c6cececec6c6c6c6cecef7f7f7fffffffffffffffffffffffffffffffffffffffff763311063391063311063391063 +31106339109c7b63c6cecec6c6c6cececec6c6c6c6cecef7f7f7fffffffffffffffffffffffffffffffff7f7734221633110633910633110633910633110a584 +73c6c6c6c6cecec6c6c6cececec6c6c6efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb59c8c6331086339106331086331106331086339106331086331106331087b +5a39c6c6c6c6c6cec6c6c6c6c6cec6c6c6dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffa58c736331086331106331086339106331086331106331086339106331088c6b4ac6c6c6c6 +c6cec6c6c6c6c6cec6c6c6e7e7e7ffffffffffffffffffffffffffffffffffffffffff7b523163310863311063310863391063310894735ac6c6c6c6c6cec6c6 +c6c6c6cec6c6c6d6dedeffffffffffffffffffffffffffffffffffffad947b633910633108633110633108633910734a29c6c6cec6c6c6c6c6cec6c6c6c6c6ce +dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffdecec6633910633110633910633110633910633110633910633110633910633910c6c6c6c6c6c6cececec6c6c6c6ce +cecececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffcebdad6339106331106339106331106339106331106339106331106339106b3918c6c6cec6c6c6c6cecec6c6c6cececed6d6d6ffff +ffffffffffffffffffffffffffffffffffffffa58c7b6339106331106339106331106339106b3918c6bdbdc6c6c6c6cecec6c6c6cececec6c6c6e7e7e7ffffff +ffffffffffffffffffffffffcec6b5633110633910633110633910633110633910c6bdbdcececec6c6c6c6cecec6c6c6dededeffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff633910633110633108633910633108633110633108633910633108633110b5a59cc6c6cec6c6c6c6c6cec6c6c6c6c6ceffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7efef6331 +08633910633108633110633108633910633108633110633108633910b5ada5c6c6cec6c6c6c6c6cec6c6c6c6ceceffffffffffffffffffffffffffffffffffff +ffffffdecec66331086339106331086331106331086339109c8473c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6d6d6def7f7f7ffffffffffffffffffbdad9c63 +3110633108633910633108633110633108bdada5c6c6c6c6c6cec6c6c6c6c6cecececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c6b4a633110633910633110 +633910633110633910633110633910633110a58c73c6c6c6c6cecec6c6c6cececec6c6c6f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b5231633110633910633110633910633110 +633910633110633910633110ad9484c6c6c6cececec6c6c6c6cecec6c6c6ffffffffffffffffffffffffffffffffffffffffffffffff734a2963311063391063 +3110633910633110633910a58c7bcececec6c6c6c6cecec6c6c6cececec6c6c6c6cececececedededededede7b5a396331106339106331106339106331106339 +10ad9c8cc6cecec6c6c6cececec6c6c6d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffad948463391063310863311063310863391063310863311063310863 +39107b5a39c6c6cec6c6c6c6c6cec6c6c6c6c6cedededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c846b6331106331086339106331086331106331086339106331086331108c6b52c6 +c6cec6c6c6c6c6cec6c6c6c6c6cee7e7e7ffffffffffffffffffffffffffffffffffffffffffad947b6331106331086339106331086331106331086339108463 +4ab5a59cc6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cebdb5ad8c6b52633108633910633108633110633108633910633108a59484c6c6c6c6c6cec6c6c6c6c6ce +ceced6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffdecec66331106339106331106339106331106339106331106339106331106b3918c6c6bdcececec6c6c6c6ce +cec6c6c6d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffceb5ad633110633910633110633910633110633910633110633910633110734a21c6c6c6c6cecec6c6c6cececec6c6c6dede +defffffffffffffffffffffffffffffffffffffffffff7f7f76b3918633910633110633910633110633910633110633910633110734a217b5a3994735a94735a +8c634a734a29633910633110633910633110633910633110633910633110633910a58c7bcececec6c6c6c6cecec6c6c6dededeffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffff7f7f7633910633108633910633108633110633108633910633108633110633108b5ada5c6c6c6c6c6cec6c6c6c6c6cec6c6c6ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefe7 +de633910633108633110633108633910633108633110633108633910633108bdb5b5c6c6c6c6c6cec6c6c6c6c6cec6c6ceffffffffffffffffffffffffffffff +ffffffffffffffffffb59c8463310863311063310863391063310863311063310863391063310863311063310863391063310863311063310863391063310863 +3110633108633910633108633110633108b5a59cc6c6c6c6c6cec6c6c6c6c6cee7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff845a42633910633110 +633910633110633910633110633910633110633910a58c7bc6cecec6c6c6cececec6c6c6c6ceceefeff7ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff734a29633910633110633910633110 +633910633110633910633110633910ad9484cececec6c6c6c6cecec6c6c6cececef7f7f7fffffffffffffffffffffffffffffffffffffffffffff7f77b523163 +31106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339 +10bdb5adc6cecec6c6c6cececec6c6ceffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffad947b63310863311063310863391063310863311063310863 +391063310884634ac6c6c6c6c6cec6c6c6c6c6cec6c6c6e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c7b6363310863391063310863311063310863391063310863311063310894 +735ac6c6c6c6c6cec6c6c6c6c6cec6c6c6efefefffffffffffffffffffffffffffffffffffffffffffffffffe7ded66b39186331086331106331086339106331 +08633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633110c6c6bdc6c6c6c6c6cec6c6c6dedede +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffcec6b5633910633110633910633110633910633110633910633110633910633918c6c6c6c6c6c6c6ce +cec6c6c6cececed6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffbdad9c633910633110633910633110633910633110633910633110633910734a29c6cecec6c6c6cececec6c6c6c6ce +ced6dedeffffffffffffffffffffffffffffffffffffffffffffffffffffffc6b5a5633910633110633910633110633910633110633910633110633910633110 +633910633110633910633110633910633110633910633110633910633110947352c6c6c6cececec6c6c6d6d6d6ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffff7f7ef633110633910633108633110633108633910633108633110633108633910b5ada5c6c6cec6c6c6c6c6cec6c6c6c6c6ceffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffefe7de633108633110633108633910633108633110633108633910633108633110bdb5b5c6c6cec6c6c6c6c6cec6c6c6cececeffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffc6b5a56b391863310863311063310863391063310863311063310863391063310863311063310863391063310863 +3110633108633910633108633910bdb5adc6c6cec6c6c6ceced6f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff845a39633110 +633910633110633910633110633910633110633910633110a59484c6c6c6cececec6c6c6c6cecec6c6c6f7f7f7ffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff734a21633110633910633110 +633910633110633910633110633910633110b5a594c6c6c6c6cecec6c6c6cececec6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffd6cebd6b4221633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910ad9484cece +cec6c6cededee7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5846b63311063310863391063310863311063310863 +39106331086331108c6b4ac6c6cec6c6c6c6c6cec6c6c6c6c6cee7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94735a63391063310863311063310863391063310863311063310863 +3910947363c6c6cec6c6c6c6c6cec6c6c6c6c6cee7e7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe79c7b636331 +08633110633108633910633108633110633108633910633108633110633108633910633108633910a58c7bd6d6d6e7e7e7ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffcebdad6331106339106331106339106331106339106331106339106331106b4221c6c6c6c6ce +cec6c6c6cececec6c6c6d6dedeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffbdad9c6331106339106331106339106331106339106331106339106331107b5231c6c6c6cececec6c6c6c6ce +cec6c6c6dedee7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffded6ce94735a6b3918633110633910633110 +633910633110633910633110633910633110845a39d6c6bdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffefefe7633910633108633110633108633910633108633110633108633910633108bdb5adc6c6c6c6c6cec6c6c6c6c6cec6c6c6ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffded6ce633110633108633910633108633110633108633910633108633110633108c6bdbdc6c6c6c6c6cec6c6c6c6c6cecececeffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe7cebdada58c739473527b5a397b5231846342947b5aad9484e7 +ded6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff735231 +633910633110633910633110633910633110633910633110633910a59484cececec6c6c6c6cecec6c6c6cececef7f7f7ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b4218633910633110 +633910633110633910633110633910633110633910b5a594c6cecec6c6c6cececec6c6c6c6ceceffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffefefefefefefe7efefefefefefefefefefefe7efefefefefefefefefefefe7efefefefefefefefefefefe7efefefef +efefefefefefefe7efefefefefefefefefefefe7efefefefefefefefefefefe7efefefefefefefefefefefe7efefefefefefefefefefefffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c846b63310863391063310863311063310863 +391063310863311063310894735ac6c6c6c6c6cec6c6c6c6c6cec6c6c6e7e7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94735263310863311063310863391063310863311063310863 +39106331089c846bc6c6c6c6c6cec6c6c6c6c6cec6c6c6efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7e7e7ced6d6c6c6 +c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6ce +c6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6cececed6d6d6ceced6c6c6c6efefefffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6b5a56339106331106339106331106339106331106339106331106339106b4221c6c6 +cec6c6c6cececec6c6c6c6ceced6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffb59c8c6339106331106339106331106339106331106339106331106339107b5231cececec6c6c6c6ce +cec6c6c6cececedededefffffffffffffffffffffffffffffffffffffffffff7f7efad947b9c8473a58c7b9c8c73a58c7b9c8473a58c7b9c8c73a58c7b9c8473 +a58c7b9c8c73a58c7b9c8473a58c7b9c8c73a58c7b9c8473a58c7b9c8c73a58c7b9c8473a58c7b9c8c73a58c7b9c8473a58c7b9c8c73a58c7b9c8473a58c7b9c +8c73a58c7ba5947bd6d6d6c6c6c6c6cecec6c6c6cececedededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffefe7e7633108633110633108633910633108633110633108633910633108633110bdb5adc6c6cec6c6c6c6c6cec6c6c6cecece +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffded6ce633108633910633108633110633108633910633108633110633108633910bdbdbdc6c6cec6c6c6c6c6cec6c6c6ceced6ffffffffffff +ffffffffffffffffffffffffffffffffffff6b391863391063310863311063310863391063310863311063310863391063310863311063310863391063310863 +3110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910bdbdbdc6c6cec6c6 +c6c6c6cec6c6c6ced6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +734a29633110633910633110633910633110633910633110633910633110ad9c8cc6c6c6c6cecec6c6c6cececec6c6c6ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6b4218633110 +633910633110633910633110633910633110633910633110b5a59cc6c6c6cececec6c6c6c6cecec6c6c6ffffffffffffffffffffffffffffffffffffffffffff +ffff9473526331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339 +10633110633910633110633910633110633910633110633910633110633910633110633910633110b5ad9cc6c6c6cececec6c6c6c6cecec6c6c6ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff947b5a63391063310863311063310863 +391063310863311063310863391094735ac6c6cec6c6c6c6c6cec6c6c6c6c6cee7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84634a63311063310863391063310863311063310863 +39106331086331109c846bc6c6cec6c6c6c6c6cec6c6c6c6c6ceefefefffffffffffffffffffffffffffffffffffffffffffb59c8c6331106331086339106331 +08633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110 +6331086339106331086331106331086339106331086331109c846bc6c6cec6c6c6c6c6cec6c6c6c6c6ceefefefffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6ada5633110633910633110633910633110633910633110633910633110734a +29c6c6c6cececec6c6c6c6cecec6c6c6dededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffb59c8c633110633910633110633910633110633910633110633910633110846342c6c6c6c6ce +cec6c6c6cececec6c6c6e7e7e7ffffffffffffffffffffffffffffffffffffffffffded6ce633110633910633110633910633110633910633110633910633110 +63391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063 +3110633910633110846342c6c6c6c6cecec6c6c6cececec6c6c6e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffe7ded6633110633108633910633108633110633108633910633108633110633108c6bdb5c6c6c6c6c6cec6c6c6c6c6ce +c6c6ceffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffd6cebd633910633108633110633108633910633108633110633108633910633110c6c6c6c6c6c6c6c6cec6c6c6c6c6cececed6ffffff +ffffffffffffffffffffffffffffffffffffffffff6b391863310863311063310863391063310863311063310863391063310863311063310863391063310863 +3110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633110c6c6c6c6c6 +c6c6c6cec6c6c6c6c6cececed6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff6b4221633910633110633910633110633910633110633910633110633910ad9c94c6cecec6c6c6cececec6c6c6c6cecef7f7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff633910 +633910633110633910633110633910633110633910633110633910b5ad9ccececec6c6c6c6cecec6c6c6cececeffffffffffffffffffffffffffffffffffffff +ffffffffff8c634a6339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339106331106339 +10633110633910633110633910633110633910633110633910633110633910633110633910633110633910b5ad9ccececec6c6c6c6cecec6c6c6cececeffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94735a63310863311063310863 +3910633108633110633108633910633108947b63c6c6c6c6c6cec6c6c6c6c6cec6c6c6efefefffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84634263310863391063310863311063310863 +3910633108633110633108a58c7bc6c6c6c6c6cec6c6c6c6c6cec6c6c6f7f7f7ffffffffffffffffffffffffffffffffffffffffffb59c846331086339106331 +08633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110 +633108633910633108633110633108633910633108633110633108a58c7bc6c6c6c6c6cec6c6c6c6c6cec6c6c6f7f7f7ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbda5946339106331106339106331106339106331106339106331106339 +10735231cececec6c6c6c6cecec6c6c6cececedededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffad947b633910633110633910633110633910633110633910633110633910846342c6ce +cec6c6c6cececec6c6c6c6cecedee7e7ffffffffffffffffffffffffffffffffffffffffffd6cebd633910633110633910633110633910633110633910633110 +63391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063 +3110633910633110633910846342c6cecec6c6c6cecececed6d6efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffe7d6ce633108633910633108633110633108633910633108633110633108633910bdbdb5c6c6cec6c6c6c6c6ce +c6c6c6cececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffd6c6bd6331086331106331086339106331086331106331086339106331086b3918c6bdc6c6c6cec6c6c6c6c6cec6c6c6d6d6d6 +ffffffffffffffffffffffffffffffffffffffffffffffffcebdb5d6c6b5cec6b5845a4263310863311063310863391063310863311063310863391063311063 +31106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086331106331086339106331086b3918c6c6 +cee7e7e7f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff6b4221633110633910633110633910633110633910633110633910633110b5a59cc6c6c6cececec6c6c6c6cecec6c6c6ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7f7 +633910633110633910633110633910633110633910633110633910633110bdb5adc6c6c6c6cecec6c6c6cececec6c6ceffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffbdad9c6331106339106331106339106331107b5239ad9c94bdb5adbdbdbdd6d6d6f7f7efe7ded6bda5947b52296331106339 +10633110633910633110845a42bdbdbdc6c6c6c6c6c6c6c6cec6c6c6c6c6c6c6c6c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c6b4a63311063310863 +39106331086331106331086339106331086331109c7b6bc6c6cec6c6c6c6c6cec6c6c6c6c6ceefefefffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b523963391063310863311063310863 +3910633108633110633108633910a58c7bc6c6cec6c6c6c6c6cec6c6c6c6c6ceeff7f7ffffffffffffffffffffffffffffffffffffffffffffffffefe7de6331 +10633110633108633910633108734a29bdbdbdc6c6cec6c6c6c6c6ced6d6deffffffffffffffffffffffffad8c7b6331086331106331086339106331087b5231 +bdbdbdc6c6cec6c6c6c6c6cec6c6c6c6c6ced6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5a58c6331106339106331106339106331106339106331106339 +10633110845a39c6c6c6c6cecec6c6c6cececec6c6c6dee7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffad8c7b6331106339106331106339106331106339106331106339106331108c6b +52c6c6c6cececec6c6c6c6cecec6c6c6e7e7efffffffffffffffffffffffffffffffffffffffffffffffff9c846b633910633110633910633110633910a58c7b +cececec6c6c6c6cecec6c6c6d6d6d6ffffffffffffffffffffffffffffffa584736331106339106331106339106331108c6b52c6c6c6c6cecec6c6c6cececec6 +c6c6c6ceceefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffdecec6633910633108633110633108633910633108633110633108633910633108c6bdbdc6c6c6c6c6ce +c6c6c6c6c6cecececeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffcebdad6331106331086339106331086331106331086339106331086331106b3918c6c6c6c6c6c6c6c6cec6c6c6c6c6ce +d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffff7b5231633108633910633108633110633108ad9c8cc6c6c6c6c6cec6c6c6c6c6cec6c6c6f7 +f7f7ffffffffffffffffffffffffefefe76b3918633108633110633108633910633108ad9484c6c6c6c6c6cec6c6c6c6c6cec6c6c6d6d6d6ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff633918633910633110633910633110633910633110633910633110633910b5a59ccececec6c6c6c6cecec6c6c6cececeffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +f7f7ef633110633910633110633910633110633910633110633910633110633910bdb5adc6cecec6c6c6cececec6c6c6cececeffffffffffffffffffffffffff +ffffffffffffffffffffff633910633910633110633910633110633910947b63c6cecec6c6c6cececec6c6c6c6cecec6ceceffffffffffffffffffffffffffff +ff9473526339106331106339106331106339106b4218c6c6c6c6c6c6c6cecec6c6c6cececec6c6c6ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c634a63310863 +3910633108633110633108633910633108633110633108a58473c6c6c6c6c6cec6c6c6c6c6cec6c6c6efeff7ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b523163310863311063310863 +3910633108633110633108633910633108a59484c6c6c6c6c6cec6c6c6c6c6cec6c6c6f7f7f7ffffffffffffffffffffffffffffffffffffffffff6b42216331 +08633110633108633910633108633910bdb5b5c6c6cec6c6c6c6c6cec6c6c6c6c6cec6c6c6e7e7e7ffffffffffffffffff94735a633108633910633108633110 +633108633910a58c7bc6c6cec6c6c6c6c6cec6c6c6c6c6ceefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffad94846339106331106339106331106339106331106339 +10633110633910845a42c6cecec6c6c6cececec6c6c6c6cecedededeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c846b6339106331106339106331106339106331106339106331106339 +108c6b52cececec6c6c6c6cecec6c6c6cececee7e7e7ffffffffffffffffffffffffffffffffffffffffff7b5a39633910633110633910633110633910633110 +7b5231bdb5b5c6cecec6c6c6cececec6c6c6c6cecec6c6c6cececececececec6c66b3918633910633110633910633110633910633110846342c6c6c6cececec6 +c6c6c6cecec6c6c6e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffd6cebd633108633110633108633910633108633110633108633910633108633910bdbdbdc6c6ce +c6c6c6c6c6cec6c6c6d6d6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffc6b5ad6331086339106331086331106331086339106331086331106331086b4221c6c6c6c6c6cec6c6c6c6c6ce +c6c6c6d6d6deffffffffffffffffffffffffffffffffffffffffff9c846b6331086339106331086331106331086339106331086b3918947b63bdb5adbdbdbdc6 +c6cec6c6c6c6c6cebdbdbdad9c8c734a29633910633108633110633108633910633108633110633108c6c6c6c6c6c6c6c6cec6c6c6c6c6ced6d6d6ffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff7f76b3910633110633910633110633910633110633910633110633910633110bdada5c6c6c6c6cecec6c6c6cececec6c6c6ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffefe7e7633910633110633910633110633910633110633910633110633910633110bdb5b5c6c6c6cececec6c6c6c6cecec6c6ceffffffffffffffffffff +ffffffffffffffffffffffd6c6bd6339106331106339106331106339106331106339106331106339106331106339106b42217b52316b39186339106331106339 +10633110633910633110633910633110633910633110633910bdb5adc6cecec6c6c6cececec6c6c6dededeffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff845a3963 +39106331086331106331086339106331086331106331086339109c8473c6c6cec6c6c6c6c6cec6c6c6c6c6ceefefefffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff734a2963311063310863 +3910633108633110633108633910633108633110ad9484c6c6cec6c6c6c6c6cec6c6c6c6c6cef7f7f7ffffffffffffffffffffffffffffffffffffffffff6b42 +21633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110 +633108633910633108b5a59cc6c6c6c6c6cec6c6c6c6c6cedee7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffad947b6331106339106331106339106331106339 +106331106339106331108c634ac6c6c6cececec6c6c6c6cecec6c6c6e7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c7b636331106339106331106339106331106339106331106339 +10633110947b63c6c6c6c6cecec6c6c6cececec6c6c6efefefffffffffffffffffffffffffffffffffffffffffffc6b5a5633110633910633110633910633110 +633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910633110633910bdada5cececec6 +c6c6c6cecec6c6c6f7f7f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffcebdb5633110633108633910633108633110633108633910633108633110633910c6c6c6 +c6c6c6c6c6cec6c6c6c6c6ceced6d6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffbdad9c6339106331086331106331086339106331086331106331086339106b4221c6c6cec6c6c6c6c6ce +c6c6c6c6c6ced6d6deffffffffffffffffffffffffffffffffffffffffffffffff8c634a63310863311063310863391063310863311063310863391063310863 +3110633108633910633108633110633108633910633108633110633108633910633108633110633108cec6c6c6c6c6c6c6cec6c6c6d6d6d6ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffff7f7f7633110633910633110633910633110633910633110633910633110633910bdada5c6cecec6c6c6cececec6c6c6cececeff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffefe7de633110633910633110633910633110633910633110633910633110633910bdb5b5cececec6c6c6c6cecec6c6c6ceced6ffffffffffffff +fffffffffffffffffffffffffffffffffff7f7ef7b52316331106339106331106339106331106339106331106339106331106339106331106339106331106339 +106331106339106331106339106331106339106331107b5a39c6c6c6c6cecec6c6c6cececef7f7f7ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7b +5a39633108633110633108633910633108633110633108633910633108a5947bc6c6c6c6c6cec6c6c6c6c6cec6c6c6f7f7f7ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff73422163310863 +3910633108633110633108633910633108633110633108ad9c94c6c6c6c6c6cec6c6c6c6c6cec6c6c6ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffefe7e7845a39633108633110633108633910633108633110633108633910633108633110633108633910633108633110633108633910633108633110 +633108633910b5ada5c6c6cec6c6c6cececeefeff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa58c736339106331106339106331106339 +106331106339106331106339108c6b4acececec6c6c6c6cecec6cecee7e7e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94735a6339106331106339106331106339106331106339 +10633110633910947b63c6cecec6c6c6cecececececee7e7e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7a58473633110 +63391063311063391063311063391063311063391063311063391063311063391063311063391063311063391063311063391094735ac6cececececee7e7e7ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcebdad6331086339106331086331106331086339106331086331106331086b4221 +c6c6c6dededeefefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffbdad9c6331086331106331086339106331086331106331086339106331087b5231c6c6cededede +efefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffded6ce8c6b4a63311063310863391063310863 +3110633108633910633108633110633108633910633108633110633108633910947b63dededef7f7f7ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffefe7e7efe7deefe7deefe7deefe7e7efe7deefe7deefe7deefe7e7efe7deffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffff7efe7deefe7deefe7e7efe7deefe7deefe7deefe7e7efe7deefe7deefe7deffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ded6ad9484734a296339106331106339106331106339106331106339 +10633110633910633910947352decec6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe7d6c6bdb5a58cad9484a58473a58c73ad9484bda594d6cebdfffff7ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff040000002701ffff030000000000}}}{\insrsid6836014 +\par }\pard \s15\ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\insrsid11820290 +\par }{\insrsid14104483 +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par +\par }{\insrsid11820290 +\par }{\fs20\insrsid14104483\charrsid14104483 This work is licensed under the Creative Commons Attribution License. To view a copy of th +is license, visit http://creativecommons.org/licenses/by/2.0/at/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.}{\fs20\insrsid11820290\charrsid14104483 +\par }{\insrsid11820290 +\par }\pard\plain \s1\ql \li0\ri0\sb240\sa60\keepn\nowidctlpar\aspalpha\faauto\outlinelevel0\rin0\lin0\itap0\pararsid14500044 \b\fs32\cf1\lang1033\langfe255\loch\af1\hich\af0\dbch\af0\cgrid\langnp1033\langfenp255 {\insrsid11820290 \page }{ +\insrsid11820290\charrsid14500044 \hich\af0\dbch\af0\loch\f1 Introduction}{\insrsid11820290 +\par }\pard\plain \s17\qj \fi1\li360\ri0\nowidctlpar\aspalpha\faauto\rin0\lin360\itap0 \fs24\cf1\lang2057\langfe255\cgrid\langnp2057\langfenp255 {\insrsid13114330 The #develop project }{\insrsid1529975 started}{\insrsid13114330 on September 11}{ +\super\insrsid13114330\charrsid13114330 th}{\insrsid13114330 , 2000. }{\insrsid5311771 The project}{\insrsid13114330 was }{\insrsid2386661 initiated}{\insrsid13114330 by Mike Kr\'fcger, who }{\insrsid5311771 +is the main developer and architect of #develop to date. In the course of the project, Mike was joined by several }{\insrsid2386661 contributors}{\insrsid5311771 , who have helped a great deal to make the 1.0 release}{\insrsid11820290 a successful one}{ +\insrsid5311771 \endash though it took us four years and a few architectural changes along the way.}{\insrsid11820290 +\par +\par With version 1.0, we have built a solid foundation for the growth of this Integrated Development Environment. Though the features found inside the IDE should not be considered \'93basic\'94, we have plans for the future and w +e are sure that you will like those too. +\par +\par }{\insrsid13114330 +\par }{\b\i\insrsid13114330\charrsid13114330 The #develop team +\par }{\field{\*\fldinst {\insrsid14104483 HYPERLINK "http://www.icsharpcode.net/pub/relations/team.aspx" }{\insrsid8399799 {\*\datafield +00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b6600000068007400740070003a002f002f007700770077002e00690063007300680061007200700063006f00640065002e006e00650074002f007000750062002f00720065006c006100740069006f006e0073002f00 +7400650061006d002e006100730070007800000000}}}{\fldrslt {\cs26\ul\cf2\insrsid13114330\charrsid14104483 http://www.icsharpcode.net/pub/relations/team.aspx}}}{\insrsid13114330\charrsid13114330 +\par }{\field{\*\fldinst {\insrsid14104483 HYPERLINK "http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.Contributors" }{\insrsid8399799 {\*\datafield +00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b8800000068007400740070003a002f002f00770069006b0069002e007300680061007200700064006500760065006c006f0070002e006e00650074002f00640065006600610075006c0074002e006100730070007800 +2f005300680061007200700044006500760065006c006f0070002e0043006f006e007400720069006200750074006f0072007300000000}}}{\fldrslt {\cs26\ul\cf2\insrsid13114330\charrsid14104483 http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.Contributors}}}{ +\insrsid13114330\charrsid13114330 +\par }{\insrsid11820290 +\par }\pard\plain \s1\ql \li0\ri0\sb240\sa60\keepn\nowidctlpar\aspalpha\faauto\outlinelevel0\rin0\lin0\itap0\pararsid14500044 \b\fs32\cf1\lang1033\langfe255\loch\af1\hich\af0\dbch\af0\cgrid\langnp1033\langfenp255 {\insrsid14500044 \hich\af0\dbch\af0\loch\f1 +Overview}{\insrsid11820290 +\par }\pard\plain \s17\qj \fi1\li360\ri0\nowidctlpar\aspalpha\faauto\rin0\lin360\itap0 \fs24\cf1\lang2057\langfe255\cgrid\langnp2057\langfenp255 {\insrsid8998230\charrsid8998230 #develop (short for SharpDevelop) is a free }{\insrsid8998230 +Integrated Development Environment (IDE)}{\insrsid8998230\charrsid8998230 for C#}{\insrsid1529975 , }{\insrsid8998230\charrsid8998230 VB.NET}{\insrsid1529975 , Managed C++ and ILAsm}{\insrsid8998230\charrsid8998230 + projects on Microsoft's .NET platform.}{\insrsid8998230 It is written entirely in C#, and comes }{\insrsid1529975 with features you would expect in an IDE}{\insrsid16001860 plus a few more}{\insrsid1529975 \endash the next section details those.}{ +\insrsid14500044\charrsid8998230 +\par }\pard\plain \s1\ql \li0\ri0\sb240\sa60\keepn\nowidctlpar\aspalpha\faauto\outlinelevel0\rin0\lin0\itap0\pararsid14500044 \b\fs32\cf1\lang1033\langfe255\loch\af1\hich\af0\dbch\af0\cgrid\langnp1033\langfenp255 {\insrsid14500044 \hich\af0\dbch\af0\loch\f1 +Features +\par }\pard\plain \s2\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid16001860 \b\i\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid1529975 Code Completion +\par }\pard\plain \s17\qj \fi1\li360\ri0\nowidctlpar\aspalpha\faauto\rin0\lin360\itap0\pararsid16001860 \fs24\cf1\lang2057\langfe255\cgrid\langnp2057\langfenp255 {\insrsid478716 No IDE would be complete without this feature, which is supported for both +C# and VB.NET. Write a statement followed by the . (dot) and code completion will kick in. Too lazy to type that long variable or class name? Press }{\insrsid1529975 Ctrl+Space}{\insrsid478716 + and #develop will provide you with potential candidates for what you began to type.}{\insrsid1529975 +\par }\pard\plain \s2\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid16001860 \b\i\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid1529975 Forms Designer +\par }\pard\plain \s17\qj \fi1\li360\ri0\nowidctlpar\aspalpha\faauto\rin0\lin360\itap0\pararsid16001860 \fs24\cf1\lang2057\langfe255\cgrid\langnp2057\langfenp255 {\insrsid478716 A Windows Forms Designer ships insi +de #develop for both C# and VB.NET. It comes with full design time support, roundtripping and generally saves you a lot of time when developing Windows-based client software. Note: there is no designer for ASP.NET Web forms.}{\insrsid1529975 +\par }\pard\plain \s2\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid16001860 \b\i\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { +\lang1031\langfe1033\langnp1031\insrsid1529975\charrsid16001860 Code AutoInsert +\par }\pard\plain \s17\qj \fi1\li360\ri0\nowidctlpar\aspalpha\faauto\rin0\lin360\itap0\pararsid16001860 \fs24\cf1\lang2057\langfe255\cgrid\langnp2057\langfenp255 {\lang1033\langfe255\langnp1033\insrsid478716\charrsid478716 +Tired of implementing interface definition}{\lang1033\langfe255\langnp1033\insrsid478716 s}{\lang1033\langfe255\langnp1033\insrsid478716\charrsid478716 , }{\lang1033\langfe255\langnp1033\insrsid478716 overrideables, }{ +\lang1033\langfe255\langnp1033\insrsid478716\charrsid478716 writing get and set accessors for }{\lang1033\langfe255\langnp1033\insrsid478716 various }{\lang1033\langfe255\langnp1033\insrsid478716\charrsid478716 member variable}{ +\lang1033\langfe255\langnp1033\insrsid478716 s? }{\lang1033\langfe255\langnp1033\insrsid1529975\charrsid478716 Alt+Ins}{\lang1033\langfe255\langnp1033\insrsid478716 is your ticket to time saving. Just select the action you want to perform a +nd the tedious typing work is taken care of for you.}{\lang1033\langfe255\langnp1033\insrsid1529975\charrsid478716 +\par }\pard\plain \s2\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid16001860 \b\i\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { +\lang1031\langfe1033\langnp1031\insrsid1529975\charrsid16001860 Code Converter +\par }\pard\plain \s17\qj \fi1\li360\ri0\nowidctlpar\aspalpha\faauto\rin0\lin360\itap0\pararsid16001860 \fs24\cf1\lang2057\langfe255\cgrid\langnp2057\langfenp255 {\lang1033\langfe255\langnp1033\insrsid478716\charrsid478716 You are a VB.NET developer. }{ +\lang1033\langfe255\langnp1033\insrsid478716 You find a sample that exactly solves your problem. It is C#. Sound familiar? No problem with #develop \endash it comes with conversion from C# to VB.NET and vice versa. +And it does its magic on the project level too, }{\lang1033\langfe255\langnp1033\insrsid15797313 so }{\lang1033\langfe255\langnp1033\insrsid478716 converting entire projects}{\lang1033\langfe255\langnp1033\insrsid15797313 is a piece of cake}{ +\lang1033\langfe255\langnp1033\insrsid478716 . Combined with the next feature, this }{\lang1033\langfe255\langnp1033\insrsid15797313 really }{\lang1033\langfe255\langnp1033\insrsid478716 becomes a time saver.}{ +\lang1033\langfe255\langnp1033\insrsid1529975\charrsid478716 +\par }\pard\plain \s2\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid16001860 \b\i\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid1529975 VS.NET Solution Import / Export + +\par }\pard\plain \s17\qj \fi1\li360\ri0\nowidctlpar\aspalpha\faauto\rin0\lin360\itap0\pararsid16001860 \fs24\cf1\lang2057\langfe255\cgrid\langnp2057\langfenp255 {\insrsid14353066 You can import Visual Studio .NET solutions (.sln + as well as the project files only, which is especially helpful for ASP.NET projects) into #develop. Export is also supported, but please note that because #develop is capable of deeper project nesting than VS.NET, this hierarchy will be flattened}{ +\insrsid15797313 if necessary}{\insrsid14353066 .}{\insrsid1529975 +\par }\pard\plain \s2\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid16001860 \b\i\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid1529975 Folding +\par }\pard\plain \s17\qj \fi1\li360\ri0\nowidctlpar\aspalpha\faauto\rin0\lin360\itap0\pararsid16001860 \fs24\cf1\lang2057\langfe255\cgrid\langnp2057\langfenp255 {\insrsid14353066 +Considered a standard feature in modern development editors, folding code regions is supported by #develop based on the parsing information of your code files. Folding state is remembered for you}{\insrsid15797313 across development sessions}{ +\insrsid14353066 .}{\insrsid1529975 +\par }\pard\plain \s2\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid16001860 \b\i\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid1529975 Integrated NUnit Unit Testing +\par }\pard\plain \s17\qj \fi1\li360\ri0\nowidctlpar\aspalpha\faauto\rin0\lin360\itap0\pararsid16001860 \fs24\cf1\lang2057\langfe255\cgrid\langnp2057\langfenp255 {\insrsid14353066 View / Tools / Unit Tests is an integrated NUnit +front end for executing unit tests in your assembly. No need to leave the development environment, do test-first-design inside your IDE!}{\insrsid1529975 +\par }\pard\plain \s2\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid16001860 \b\i\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid1529975 Assembly Analyzer +\par }\pard\plain \s17\qj \fi1\li360\ri0\nowidctlpar\aspalpha\faauto\rin0\lin360\itap0\pararsid16001860 \fs24\cf1\lang2057\langfe255\cgrid\langnp2057\langfenp255 {\insrsid14353066 When you have built your project, go to View / Assembly Analyzer. +It will point out errors and make suggestions to improve your code\rquote s compliance to .NET coding standards. This is comparable to the separately available FxCop tool}{\insrsid15797313 from Microsoft}{\insrsid14353066 +, however integrated into your development experience.}{\insrsid1529975 +\par }\pard\plain \s2\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid16001860 \b\i\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid1529975 XML Documentation Preview +\par }\pard\plain \s17\qj \fi1\li360\ri0\nowidctlpar\aspalpha\faauto\rin0\lin360\itap0\pararsid16001860 \fs24\cf1\lang2057\langfe255\cgrid\langnp2057\langfenp255 {\insrsid14353066 You have written an XML documentation comment \endash want +to know how it will look like in the help file? Simply place the cursor in the comment and press Ctrl+Q. And when you are satisfied, use Project / Generate Documentation to let NDoc create the help file for you.}{\insrsid1529975 +\par }\pard\plain \s2\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid16001860 \b\i\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid1529975 And more}{\insrsid16001860 \'85}{ +\insrsid1529975 +\par }\pard\plain \s17\qj \fi1\li360\ri0\nowidctlpar\aspalpha\faauto\rin0\lin360\itap0\pararsid16001860 \fs24\cf1\lang2057\langfe255\cgrid\langnp2057\langfenp255 {\insrsid16001860 To pick a few of the other features that are supported by #develop +, starting with the obvious: s}{\insrsid1529975 yntax highlighting, intelligent braces, bookmarks, code templates, regular expressions toolkit, }{\insrsid16001860 New Class wizard, HTML export, Class browser, NDoc integration, NProf integration}{ +\insrsid1529975 . +\par }\pard\plain \s15\ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0\pararsid14104483 \fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid1529975 +\par }\pard\plain \s1\ql \li0\ri0\sb240\sa60\keepn\nowidctlpar\aspalpha\faauto\outlinelevel0\rin0\lin0\itap0\pararsid14104483 \b\fs32\cf1\lang1033\langfe255\loch\af1\hich\af0\dbch\af0\cgrid\langnp1033\langfenp255 {\insrsid14104483 \hich\af0\dbch\af0\loch\f1 +Documentation}{\f38\insrsid14104483\charrsid14104483 +\par }\pard\plain \s17\qj \fi1\li360\ri0\nowidctlpar\aspalpha\faauto\rin0\lin360\itap0 \fs24\cf1\lang2057\langfe255\cgrid\langnp2057\langfenp255 {\insrsid14104483 The Help system inside #develop +has not been updated for version 1.0. Though most of the information still should be applicable, it is neither complete nor guaranteed to work as advertised. Plans are to move the entire help system to a Web based content management system to provide you +with the most up to date information and give our help authors an easy way to build the help experience.}{\insrsid14500044 +\par }\pard\plain \s1\ql \li0\ri0\sb240\sa60\keepn\nowidctlpar\aspalpha\faauto\outlinelevel0\rin0\lin0\itap0\pararsid14500044 \b\fs32\cf1\lang1033\langfe255\loch\af1\hich\af0\dbch\af0\cgrid\langnp1033\langfenp255 {\insrsid14500044 \hich\af0\dbch\af0\loch\f1 +Support +\par }\pard\plain \s17\qj \fi1\li360\ri0\nowidctlpar\aspalpha\faauto\rin0\lin360\itap0 \fs24\cf1\lang2057\langfe255\cgrid\langnp2057\langfenp255 {\insrsid14104483 +Our primary means of support is via our Web-based forum (please do not email team members directly unless they advise you to do so in the forum):}{\insrsid14500044 +\par }{\insrsid14104483 +\par }\pard \s17\qj \fi1\li360\ri0\nowidctlpar\aspalpha\faauto\rin0\lin360\itap0\pararsid14104483 {\field{\*\fldinst {\insrsid14104483 HYPERLINK "http://www.icsharpcode.net/opensource/sd/forum/" }{\insrsid8399799 {\*\datafield +00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b6000000068007400740070003a002f002f007700770077002e00690063007300680061007200700063006f00640065002e006e00650074002f006f00700065006e0073006f0075007200630065002f00730064002f00 +66006f00720075006d002f00000000}}}{\fldrslt {\cs26\ul\cf2\insrsid14104483\charrsid14104483 http://www.icsharpcode.net/opensource/sd/forum/}}}{\insrsid14104483 +\par +\par Before posting, we would like to encourage you to visit the following Wiki pages: +\par +\par }{\field{\*\fldinst {\insrsid14104483 HYPERLINK "http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.FrequentlyAskedQuestions1x" }{\insrsid8399799 {\*\datafield +00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90ba400000068007400740070003a002f002f00770069006b0069002e007300680061007200700064006500760065006c006f0070002e006e00650074002f00640065006600610075006c0074002e006100730070007800 +2f005300680061007200700044006500760065006c006f0070002e004600720065007100750065006e0074006c007900410073006b00650064005100750065007300740069006f006e00730031007800000000}}}{\fldrslt {\cs26\ul\cf2\insrsid14104483\charrsid14104483 +http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.FrequentlyAskedQuestions1x}}}{\insrsid14104483 +\par }{\field{\*\fldinst {\insrsid14104483 HYPERLINK "http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.BugList1x" }{\insrsid8399799 {\*\datafield +00d0c9ea79f9bace118c8200aa004ba90b02000000170000004100000068007400740070003a002f002f00770069006b0069002e007300680061007200700064006500760065006c006f0070002e006e00650074002f00640065006600610075006c0074002e0061007300700078002f005300680061007200700044006500 +760065006c006f0070002e004200750067004c00690073007400310078000000e0c9ea79f9bace118c8200aa004ba90b8200000068007400740070003a002f002f00770069006b0069002e007300680061007200700064006500760065006c006f0070002e006e00650074002f00640065006600610075006c0074002e0061 +007300700078002f005300680061007200700044006500760065006c006f0070002e004200750067004c0069007300740031007800000000}}}{\fldrslt {\cs26\ul\cf2\insrsid14104483\charrsid7266 http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.BugList1x}}}{\insrsid14104483 + +\par +\par When reporting bugs, please use the Bug Reporting forum and be sure to revisit the sticky topics on how to make good bug reports. Please provide us with steps to reproduce the error. +\par }\pard\plain \s1\ql \li0\ri0\sb240\sa60\keepn\nowidctlpar\aspalpha\faauto\outlinelevel0\rin0\lin0\itap0\pararsid14500044 \b\fs32\cf1\lang1033\langfe255\loch\af1\hich\af0\dbch\af0\cgrid\langnp1033\langfenp255 {\insrsid14500044 \hich\af0\dbch\af0\loch\f1 +License +\par }\pard\plain \s17\qj \fi1\li360\ri0\nowidctlpar\aspalpha\faauto\rin0\lin360\itap0 \fs24\cf1\lang2057\langfe255\cgrid\langnp2057\langfenp255 {\insrsid11820290 #develop\rquote s source code is GPL licensed (please se +e license.txt for the GPL in its entire length). Should you have questions about the GPL, please }{\insrsid15797313 visit}{\insrsid11820290 the following URLs:}{\insrsid14500044 +\par }{\insrsid11820290 +\par }{\insrsid11820290\charrsid11820290 Frequently Asked Questions about the GNU GPL}{\insrsid11820290 +\par }{\field{\*\fldinst {\insrsid14104483 HYPERLINK "http://www.gnu.org/licenses/gpl-faq.html" }{\insrsid8399799 {\*\datafield +00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b5200000068007400740070003a002f002f007700770077002e0067006e0075002e006f00720067002f006c006900630065006e007300650073002f00670070006c002d006600610071002e00680074006d006c000000 +00}}}{\fldrslt {\cs26\ul\cf2\insrsid11820290\charrsid14104483 http://www.gnu.org/licenses/gpl-faq.html}}}{\insrsid11820290\charrsid11820290 +\par }{\insrsid11820290 +\par IC#Code }{\insrsid11820290\charrsid11820290 FAQ: Open Source Licenses (GPL, LGPL}{\insrsid11820290 )}{\insrsid11820290\charrsid11820290 +\par }{\field{\*\fldinst {\insrsid14104483 HYPERLINK "http://www.icsharpcode.net/opensource/sd/forum/forum.asp?FORUM_ID=12" }{\insrsid8399799 {\*\datafield +00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b8a00000068007400740070003a002f002f007700770077002e00690063007300680061007200700063006f00640065002e006e00650074002f006f00700065006e0073006f0075007200630065002f00730064002f00 +66006f00720075006d002f0066006f00720075006d002e006100730070003f0046004f00520055004d005f00490044003d0031003200000000}}}{\fldrslt {\cs26\ul\cf2\insrsid11820290\charrsid14104483 http://www.icsharpcode.net/opensource/sd/forum/forum.asp?FORUM_ID=12}}}{ +\insrsid11820290 +\par }{\insrsid16001860 +\par }{\insrsid16001860\charrsid11820290 +\par }} \ No newline at end of file diff --git a/doc/technotes/AddInBuildingGuide.sxw b/doc/technotes/AddInBuildingGuide.sxw new file mode 100644 index 0000000000000000000000000000000000000000..d04d3d6c733434ff7256bb6fb9cfbe6c4d11c76f GIT binary patch literal 39975 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 + + 1 + + + 1 + + + + + + + + The installer will guide you through the steps required to install [ProductName] on your computer. + + + [BigFont]Welcome to the [ProductName] installation + + + + + + + + 1 + + + + AcceptLicense = "Yes" + AcceptLicense <> "Yes" + AcceptLicense = "Yes" + + + + 1 + + + + + + + + + + + + Please read the following license agreement carefully! + + + [TitleFont]End-User License Agreement + + + + Yes + No + + + + + 1 + + + + 1 + + + + 1 + + + + + + 1 + 1 + + + + To install in this folder, click "Next". To install to a different folder, enter it below or click "Browse". + + + + + + + + + + This is the folder where [ProductName] will be installed. + + + + [TitleFont]Select Installation Folder + + + + + + + + OutOfDiskSpace <> 1 + OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST) + OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D" + OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D" + (OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F") + + + + 1 + + + + + + + + + + Click Install to begin the installation. If you want to review or change any of your installation settings, click Back. Click Cancel to exit the wizard. + + + + + The [Wizard] is ready to begin the [InstallMode] installation + + + [TitleFont]Ready to Install + + + + + + 1 + + + + + + Please wait while [ProductName] is installed. + + + + + Install [ProductName] + + + + + + + + + + + + + + Are you sure you want to cancel [ProductName] installation? + + + + 1 + + + 1 + + + + + + + + + 1 + + + 1 + 1 + + + + + + + 1 + + + 1 + + + + + + + + Browse to the destination folder + + + [TitleFont]Change current destination folder + + + + + + 1 + + + + + + + + [BigFont][ProductName] installation was interrupted + + + The installation was interrupted before [ProductName] could be installed. You need to restart the installer to try again. + + + Click the Finish button to exit. + + + + + + 1 + + + + + + + Click the Finish button to exit. + + + [BigFont]Completing the [ProductName] installation. + + + + + + 1 + + + + The highlighted volumes do not have enough disk space available for the currently selected features. You can either remove some files from the highlighted volumes, or choose to install less features onto local drive(s), or select different destination drive(s). + + + + + Disk space required for the installation exceeds available disk space. + + + [TitleFont]Out of Disk Space + + + {120}{70}{70}{70}{70} + + + + + + 1 + + + 1 + 1 + + + + The highlighted volumes do not have enough disk space available for the currently selected features. You can either remove some files from the highlighted volumes, or choose to install less features onto local drive(s), or select different destination drive(s). + + + + + Disk space required for the installation exceeds available disk space. + + + [TitleFont]Out of Disk Space + + + {120}{70}{70}{70}{70} + + + Alternatively, you may choose to disable the installer's rollback functionality. This allows the installer to restore your computer's original state should the installation be interrupted in any way. Click Yes if you wish to take the risk to disable rollback. + + + + + + 1 + + + + + + + [BigFont][ProductName] ended prematurely + + + [ProductName] setup ended prematurely because of an error. Your system has not been modified. To install this program at a later time, please run the installation again. + + + Click the Finish button to exit the. + + + + + + TARGETDIR="" + + + + + + + + + + + + TARGETDIR="" + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/setup/fileassoc.nsh b/setup/fileassoc.nsh new file mode 100644 index 0000000000..db655800ac --- /dev/null +++ b/setup/fileassoc.nsh @@ -0,0 +1,85 @@ +!ifndef _FILEASSOC_NSH_ +!define _FILEASSOC_NSH_ + + +!ifdef HAVE_SYSTEM_PLUGIN +;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; RefreshShellIcons based on +;; http://nsis.sourceforge.net/archive/nsisweb.php?page=236&instances=0 +;; by jerome tremblay - april 2003 + +!define SHCNE_ASSOCCHANGED 0x08000000 +!define SHCNF_IDLIST 0 + +Function RefreshShellIcons + System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v \ + (${SHCNE_ASSOCCHANGED}, ${SHCNF_IDLIST}, 0, 0)' +FunctionEnd + +!define RefreshShellIcons "call RefreshShellIcons" +!else +!define RefreshShellIcons +!endif ; HAVE_SYSTEM_PLUGIN + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; parts from http://nsis.sourceforge.net/archive/viewpage.php?pageid=282 by Vytautas +;; Will add the registry entries to associate the given file extension with the +;; previously set (see CreateApplicationAssociation) appType. I.e. indicate to +;; open documents with this extension using the application specified by appType +;; registry entry. If the extension is currently associated with a different +;; appType, it will store the current association in the "prior_appType" key. + +!macro CreateFileAssociation extension extType extDef exeCmd defIcon + !define skipBackupLbl "skipBackup_${__LINE__}" + push $0 + + ; back up old value of extension (.ext) if it exists + ReadRegStr $0 HKCR "${extension}" "" ; read current value + StrCmp $0 "" "${skipBackupLbl}" ; nothing, then skip storing old value + StrCmp $0 "${extType}" "${skipBackupLbl}" ; only store if old is different than current + WriteRegStr HKCR "${extension}" "PreSD" "$0" ; actually store the old association + + "${skipBackupLbl}:" + ; Write File Associations + WriteRegStr HKCR "${extension}" "" "${extType}" + WriteRegStr HKCR "${extType}" "" "${extDef}" + WriteRegStr HKCR "${extType}\DefaultIcon" "" "${defIcon}" + WriteRegStr HKCR "${extType}\shell" "" "open" + WriteRegStr HKCR "${extType}\shell\open\command" "" '"${exeCmd}" "%1"' + + ; Force shell refresh (so icons updated as needed) + ${RefreshShellIcons} + + pop $0 + !undef skipBackupLbl +!macroend +!define CreateFileAssociation "!insertmacro CreateFileAssociation" + + +; check if a file extension is associated with us and if so delete it +!macro RemoveFileAssociation extension extType + push $0 + push $1 + + ReadRegStr $0 HKCR "${extension}" "" + StrCmp "$0" "${extType}" 0 Skip_Del_File_Assoc.${extension} + ReadRegStr $0 HKCR "${extension}" "PreSD" + StrCmp "$0" "" "DeleteFA.${extension}" 0 ; if "prior_value" is not empty + ReadRegStr $1 HKCR "$0" "" ; restore previous association + StrCmp "$1" "" DeleteFA.${extension} ; only if it is still valid (has something defined) + WriteRegStr HKCR "${extension}" "" $0 ; actually restore prior association + DeleteRegValue HKCR "${extension}" "PreSD" ; and remove stored value + DeleteRegKey HKCR "${extType}" ; remove the extension type we added + Goto Skip_Del_File_Assoc.${extension} + DeleteFA.${extension}: ; else delete file association key + DeleteRegKey HKCR "${extension}" ; actually remove file assoications + + Skip_Del_File_Assoc.${extension}: + pop $1 + pop $0 +!macroend +!define RemoveFileAssociation "!insertmacro RemoveFileAssociation" + + +!endif ; _FILEASSOC_NSH_ diff --git a/setup/readme.txt b/setup/readme.txt new file mode 100644 index 0000000000..b7a066eeb2 --- /dev/null +++ b/setup/readme.txt @@ -0,0 +1,32 @@ +The setup program is maintained by Christoph Wille, christophw@alphasierrapapa.com + +Information + +Setup uses NSIS 2.0 Release - http://nsis.sourceforge.net + + +CHANGELOG + +10/07/2004: + +* Batch files replaced with WSH scripts + +9/13/2004: + +* bin\setup directory created, batch files added +* gacutil2 source code added +* setup changed to call post & pre batch files, disabled app data deletion + +6/23/2004: + +* http://abiword.pchasm.org/source/cvs/abiword-cvs/abi/src/pkg/win/setup/NSISv2/abi_util_fileassoc.nsh added +* abi_util_fileassoc.nsh modified (now named fileassoc.nsh) to allow icons per extension in CreateFileAssociation +* modified fileassoc.nsh to match file type registerer in Tools / Options +* Compressor set to lzma in Fidalgo.nsi + +2/18/2004: changes for .99 and NSIS 2.0 Release + +8/25/2003: added check to .onInit for installed previous version (protect us from + partially overwriting previous installations) + +8/23/2003: added check to .onInit for installed .NET 1.1 Framework diff --git a/setup/wizard-image.bmp b/setup/wizard-image.bmp new file mode 100644 index 0000000000000000000000000000000000000000..150829f055fdcfe4ada8eb84fb5ebbb86553d471 GIT binary patch literal 154542 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 Ie`$gL2Q=mW@&Et; literal 0 HcmV?d00001 diff --git a/src/AddIns/AddIns/DisplayBindings/ResourceEditor.pdb b/src/AddIns/AddIns/DisplayBindings/ResourceEditor.pdb new file mode 100644 index 0000000000000000000000000000000000000000..172c74069fb87d5bea774cfea27e29edb239d6a8 GIT binary patch literal 116224 zcmeF44S-fvwfE1!%m@fND1Ltp2#AWvH-n$R3;dY%hJl;Yj0F^ua%}5mfdUm{{DOKb)NGa&J4rw4DZ#;hBfOs zd#|QT>^MdeGk&&#G)_qf-62}E0{_*Y)-f9vZ$r+YG(RRVke za6(y)`hHaa(B$aVSIfcu^ZeQ4Ue_hi(Av~d-`KWtO?$4RZB=_?uC-xBuCZ;!3IfJ8 zc0?z3v^So3QFBYKO0$4wO(4^vAm&uWmE35Tua-^dcx})nwpwhJL;R7J65(d ztXbCF%Hzcy^%iBWskyVQy?$kT+az>{mqb>?!do$YIOqtten&D|}vqv0~2 z(}s?|&ugfRrrbr%t<9ayZLNJ+o5_l}x&?#@h_Oke!FOGld2=FZ%T{~t1!H*_rTY*^Nk+ug!jnmamom(0%G z>P~A)2cbts11zINKe&AP$y0+~sbW!OAip0#(GCUwdao!t7+h5uMZ>^10Rw<~{u}}p z4M9zE0I)=t5%FN~i})W1mY}^sgMbR)G58M!Ukb6(at88b>i>wfoPEK^L$n|G zZ3sU3a>F-ut#| z-Z=E4$A^CNxF~vQz`SoR{Y>kOtok25;pdm!{HM45spU7{`0i0BKGtsu8P9^jhegq5 z+SCoS%WB%(S|Cq@T}=CZl7_v7cJ?6Qcj3RD4l;4$a2N1J;BMecz((L6;LE_hzcuH2=FNIBjCrtW5CJ45x|kaQ9v~?92fx{ z4RodRXA?FD7zFGM3{HnBY{!CXy6!N3~&-~1~39<1`GPt-}!je_pX2F!VlKGapZ;ZOb1@iPGz*2%9u>WD8JH|%I|!X ziu}8($KLu|-SkEM_m%!sdAwd-U-kdjYk9ri@>Qz(-{)PQx$X;R-tn_lC$_(G%H1Pm z{_JtDff6WH{SO=Ti_=@)c*rvyXU%`{fe+m;vvZGo4U|Bs>VNA;-hbhL`*_(mZj(#p?BJ zPPp`SjdgRPCN9ZR=C95jquDKuG5f?$pXBO1cT8uu+bj&CgPy%IWYC-D0er7nlG*5?@E(nL0VreDFj%~o#w*Ty- zQn9pB=Zyi5^HF`Csp4Z;eV7}az1j`ANgna)yWIG5U45UO;`3vDmY-U8XsFM#Q+zh5 z&vG-514(_Jm*lCZzRQVeyS~qkX}ZhOTC~)9&9da}^&%6p)C$}3B<loay2iU z)QX!#U**Y;gvEmTGDmZh=fGl#eVMhQlV`ESzRKhLaNH~w)K^)vb8WGpoy<|G=Ko7) z{o#R2ZoK%{XFM|Lch!f!boCBz07!PF`s9hZQ(2|h#BRh}6#)!Jg3a3e_1`vE!aZoY^ujz0m2GMdb`$J>BE!n24tlJ5QF za~q(Ys=MEns{R`XRQ&SFyS`devG4p}toX)N6IFX-$j)KE9bY#3sg^Hkzo=?ewV|+F zBC9G{qy7A(S67HuH6mJtC23VVMtkt3ryL|&)tYD(mZVil8*Rm5AFmXxYCyCKOVX<5 zjP|pqcDzHhs!`D@EJ>@@WwZ_dz3oQPs?~{BVM$uGBBR~%&-u5DR;^343QN+ewHfW3 zzdWi{v}%>2RalZ%tj(aO`v>GB*-Z}OrJ>S$baoJ2)i zGGwfVW>g7f)X~1=ly`Hbs{a}L-n3xO(3+nfHRh`;D_a+wm6Y*z@-e@J`53ImgHwH( zdj~R>mQcpZ3>jA-V^s-dJdq*eN@TphgfeOvW8~D%&Ak&Dp9nHaRsZStzwbiES4)tO zsiA)iK;Oxsrel{!#-k?Vj9lmJ)>SKV?G3%|ix&i0H)P1V3RzE>tVL@&G%KrZYvE0k z?pEp;H?OYQ{bGe}Tq-HO(hHWBYQ`tIWWL``TK>Jew1k4tH5)rhOR4HVz5i!t_2Ai7 z&mp54C(K<>!&H1?FL{?p@sdVJf2%_N6u8oRaRb%f=Wm$3@yO?jRf z%5w(xq+D{GejhT%n~WWlr;^Yc`KF`p3i4%hn0r6+Yfb*exz4xF>o_mh&~#2~%bH%v zvNk$Q1`bX(jkymX>zpE4Xek1_%TuZ9KfV9Ir}mHag>o5MxMaWoAo*#t{Oq9aT+#aM zcAMX>>@Z8mwILnJHuNFVaYYZ)(V;5dg>+c`YR)E?Y)c;|9Ur!ID8m;tw5-Z?^eVq5 zr&RTyp8r|@KPmLhM?yxD`S}R>`D`*j^E&1`GPtS^K|xGViI<}63nrAyz=*!r`ndbR$9Y>QU9S@*LVsLt%V;N zRlE5U_N~K;qtUZ)6_(~#J3l9z7253DkhY}lbrWgp&!Oq$_&m?0(cNkmQrq+LS6y0P zv2kQukek$n>ybOi|Y?ArvOj05K+dz z{giN=ri0_%FSqWHm+4O%$SX-S`+PaKhg5KrNI8Ekj{gdAfSgOlL9w|wh(E9SA7fg+ zJemRbPa zwZ<_PT+Z!X72F(=jKi-JWXCZM9>qajyErC*%ULO`V4Wx#hhGQCj$;x$iem~`>6i*G z=f&q~qyd2lxELPvYJi&y>Xx1oKRUe$7#n_4{7Oa|HdNGM3@z64_<^AxD2yEW_LTW$|1xDdRe5rN^#!JknzY8Qwn6&hssf z{>V5zA4}C^GS8oMw7%`CEWMqa9q;EI?a^`Cy^UL3&x%9t%h0NP?gdw{>Rqb(PoMv- zM9W*<{<52VKJ3z7?PxUyc)PAFwg;2?>L-rY-LIHuEYbanusv+HnGLg9uw0Zy9!yM@Q1vHg$GN_YPWta15S$Ez_! zWAo5hp0_!&^YNmK{G{lH_uGe9{;oZjn=2bKU@*Si+D1K0#S32XxfQ-EVsi2n;+sp>y{{^!tW z+!?DF+t3Rs z-Xsm-HaDP&1WTSfL!EpdrtXmp^E$lgNND~w{3mQ$0R!5_Vs?yW0T{ipB$-7iu9b?psQ!NtDbLz}Qoduk8ewH3|hcD7zrN9FzQ zFRB+?Lzy4+Bi%lBZPeYf2ZTAj=65!St6M|;o1FWCoMhFkgl3z`(L&)a$gwr3 zk)bUl^Yb?3ylirmA1iFPURa#3Qq_O@{FnQdOoqH2tqWT@+I;*J`jK3tNA53ergCpy z&buOZ^KtFgpV!)yTkY0~)>9?};1iG09U0b%D3+iX%A?vvBgc;%kAtq~>jv{L*F3?} zY4v@pIymm_p+5AxlXSLPIv2P317rAWEo%npTMm!tjYeryG_Yi*QQ-`0nc)-gSGd|i z7XQQ$uJ)J=FID|#-~Ux8R?(3mu;FA&Ro^yPi9V5_;mbD_ZPycgEcGF zmEox#s`gS8wqhmE{fBl^7flrWuOZkAgUr)a4^>qr>6bw-8ITwGYv(pz_*D;;?n&~f z4XSPRynVg;YO;N4JedpVZgh<&Am=1UcBUL0IK9Of0u6sZ84dAI@t&QzP31)%P zI*i8Q`)gU;*HtG2)M#+jN&ekncCqHK2cHJM89W30TktIKpTV`@zk+9j4}fk4FXMK4#PBhlP^+|7-0t zgUOkl`)DBhGfIA5zm(FtEVoh$u|xUXMbPDu_EO3#%2e^OzCIH(t2ueLv(Lm>*0f)v z=s;2_CC2rYeeAoGqAWkI-`aznAL}zg#m9>KOw2sXkSU`+lVpPI3|F5CnpJ%0x6kBc z9%?V8w9HEYN+}@jMAd;OO-n1WU8T<2nD_a0a2(Z(U
      nGMy39 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 R4HVWuVGR`4z<;s^{sv%*U0(nI literal 0 HcmV?d00001 diff --git a/src/AddIns/AddIns/Misc/FiletypeRegisterer/ICSharpCode.FiletypeRegisterer.dll b/src/AddIns/AddIns/Misc/FiletypeRegisterer/ICSharpCode.FiletypeRegisterer.dll new file mode 100644 index 0000000000000000000000000000000000000000..a1eb2dd512c7a1ea5c5355e77b3a31af3a3bba34 GIT binary patch literal 24576 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 literal 0 HcmV?d00001 diff --git a/src/AddIns/AddIns/Misc/FiletypeRegisterer/ICSharpCode.FiletypeRegisterer.pdb b/src/AddIns/AddIns/Misc/FiletypeRegisterer/ICSharpCode.FiletypeRegisterer.pdb new file mode 100644 index 0000000000000000000000000000000000000000..91c439f4ca2dabf646415de23197003ca708a86d GIT binary patch literal 24064 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/AssemblyInfo.cs b/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/AssemblyInfo.cs new file mode 100644 index 0000000000..de5f23d6dd --- /dev/null +++ b/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/AssemblyInfo.cs @@ -0,0 +1,32 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following +// attributes. +// +// change them to the information which is associated with the assembly +// you compile. + +[assembly: AssemblyTitle("CPPNetBinding")] +[assembly: AssemblyDescription("C++.NET language binding for #develop")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("www.icsharpcode.net")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("(c) 2004 Mike Krueger")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has following format : +// +// Major.Minor.Build.Revision +// +// You can specify all values by your own or you can build default build and revision +// numbers with the '*' character (the default): + +[assembly: AssemblyVersion("2.0.0.1")] + +// The following attributes specify the key for the sign of your assembly. See the +// .NET Framework documentation for more information about signing. +// This is not required, if you don't want signing let these attributes like they're. +[assembly: AssemblyDelaySign(false)] +[assembly: AssemblyKeyFile("")] diff --git a/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/CPPNetBindingCompilerManager.cs b/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/CPPNetBindingCompilerManager.cs new file mode 100644 index 0000000000..81dbc30508 --- /dev/null +++ b/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/CPPNetBindingCompilerManager.cs @@ -0,0 +1,565 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.IO; +using System.Diagnostics; +using System.Text; +using System.Text.RegularExpressions; +using System.CodeDom.Compiler; + +using ICSharpCode.Core; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Gui; +using System.Windows.Forms; + +namespace CPPBinding +{ + /// + /// This class controls the compilation of C Sharp files and C Sharp projects + /// + public class CPPBindingCompilerManager + { + private FileUtilityService _fileUtilityService = (FileUtilityService)ServiceManager.Services.GetService(typeof(FileUtilityService)); + private StringBuilder _inputFiles = new StringBuilder(); + private StringBuilder _buildProcess = new StringBuilder(); + private StringBuilder _results = new StringBuilder(); + private bool _treatWarningsAsErrors; + + + // we have 2 formats for the error output the csc gives : + // d:\vc\include\xstring(1466) : warning C4701: local variable '_Ptr' may be used without hav + readonly static Regex normalError = new Regex(@"(?.*)\((?\d+)\)\s+\:\s+(?.+?)\s+(?[\d\w]+):\s+(?.*)", RegexOptions.Compiled); + // cl : Command line error D2016 : '/clr' and '/ML' command-line options are incompatible + readonly static Regex generalError = new Regex(@"(?.+)\s+(?[\d\w]+)\s*:\s+(?.*)", RegexOptions.Compiled); + + + public string GetCompiledOutputName(string fileName) + { + return Path.ChangeExtension(fileName, ".exe"); + } + + public string GetCompiledOutputName(IProject project) + { + CPPCompilerParameters compilerparameters = (CPPCompilerParameters)project.ActiveConfiguration; + return compilerparameters.OutputFile; + } + + public bool CanCompile(string fileName) + { + return Path.GetExtension(fileName) == ".cpp" || Path.GetExtension(fileName) == ".c" || Path.GetExtension(fileName) == ".cxx"; + } + + public ICompilerResult CompileFile(string filename, CPPCompilerParameters compilerparameters) + { + + if (!CanCompile(filename)) + { + MessageBox.Show("File " + filename + " is not a source file.", "Compilation Error", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); + return new DefaultCompilerResult(new CompilerResults(new TempFileCollection()), ""); + } + string output = ""; + string error = ""; + string exe = Path.ChangeExtension(filename, ".exe"); + if (compilerparameters.OutputAssembly != null && compilerparameters.OutputAssembly.Length > 0) { + exe = compilerparameters.OutputAssembly; + } + _treatWarningsAsErrors = compilerparameters.TreatWarningsAsErrors; + string responseFileName = Path.GetTempFileName(); + + StreamWriter writer = new StreamWriter(responseFileName); + + writer.WriteLine("/nologo"); + if (compilerparameters.UseManagedExtensions) + { + writer.WriteLine("/clr"); + } + writer.WriteLine("/Fe\"" + exe + "\""); + + writer.WriteLine('"' + filename + '"'); + + TempFileCollection tf = new TempFileCollection(); + + writer.Close(); + + string compilerName = GetCompilerName(); + string outstr = compilerName + " \"@" + responseFileName + "\""; + string currDir = Directory.GetCurrentDirectory(); + string intDir = compilerparameters.IntermediateDirectory; + if (intDir == null || intDir.Length == 0) { + intDir = compilerparameters.OutputDirectory; + } + + Directory.SetCurrentDirectory(intDir); + ICompilerResult result; + try { + Executor.ExecWaitWithCapture(outstr, currDir, tf, ref output, ref error); + result = ParseOutput(tf, output, error); + } + catch (System.Runtime.InteropServices.ExternalException e) { + ShowErrorBox(e); + result = CreateErrorCompilerResult(tf, e); + } + finally { + File.Delete(responseFileName); + File.Delete(output); + File.Delete(error); + Directory.SetCurrentDirectory(currDir); + } + return result; + } + + private void ShowErrorBox(System.Runtime.InteropServices.ExternalException e) + { + MessageBox.Show("It seems cl.exe is not installed or not found.\n\nInstall compiler and set PATH environment variable.\n\nException: " + e, "Compile Error", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1); + } + + public ICompilerResult CompileProject(IProject project, bool force) + { + _inputFiles = new StringBuilder(); + _buildProcess = new StringBuilder(); + _results = new StringBuilder(); + + CPPProject p = (CPPProject)project; + CPPCompilerParameters compilerparameters = (CPPCompilerParameters)p.ActiveConfiguration; + _treatWarningsAsErrors = compilerparameters.TreatWarningsAsErrors; + + CheckDirectory(Path.GetDirectoryName(compilerparameters.OutputFile)); + CheckDirectory(Path.GetDirectoryName(compilerparameters.IntermediateDirectory)); + + StringBuilder output = new StringBuilder(); + + ICompilerResult result; + + if (compilerparameters.PreCompileHeader) { + result = InternalCompileProject(p, true, force); + if (result != null) { + output.Append(result.CompilerOutput); + if (HasErrors(result)) { + goto exit; + } + } + } + + result = InternalCompileProject(p, false, force); + if (result != null) { + output.Append(result.CompilerOutput); + if (HasErrors(result)) { + goto exit; + } + } + if (result != null || !File.Exists(Path.GetFullPath(compilerparameters.OutputFile))) { + result = LinkProject(p); + output.Append(result.CompilerOutput); + } + exit: + WriteResultFile(p); + CompilerResults cr = result != null ? result.CompilerResults : new CompilerResults(new TempFileCollection()); + return new DefaultCompilerResult(cr, output.ToString()); + } + + private bool HasErrors(ICompilerResult compilerResult) + { + bool result = false; + if (compilerResult.CompilerResults.Errors.Count > 0) + { + if (_treatWarningsAsErrors) + { + result = true; + } + else { + foreach (CompilerError error in compilerResult.CompilerResults.Errors) + { + if (!error.IsWarning) + { + result = true; + break; + } + } + } + } + return result; + } + + private void CheckDirectory(string directory) + { + if (!Directory.Exists(directory)) { + Directory.CreateDirectory(directory); + } + } + + private void WriteResultFile(CPPProject p) + { + CPPCompilerParameters compilerparameters = (CPPCompilerParameters)p.ActiveConfiguration; + string directory = Path.GetDirectoryName(compilerparameters.OutputFile); + string resultFile = Path.Combine(directory, "BuildLog.html"); + _results.Append("writing result file to : " + resultFile); + + StreamWriter writer = new StreamWriter(resultFile); + writer.Write(""); + writer.Write("
      Build Log from: " + p.Name + "(" + compilerparameters.Name + ")
      "); + writer.Write("Build started."); + writer.Write("
      Command Line
      "); + writer.WriteLine(_inputFiles.ToString()); + + writer.Write("
      Output
      "); + writer.Write("
      ");
      +			writer.WriteLine(_buildProcess.ToString());
      +			writer.Write("
      "); + + writer.Write("
      Results
      "); + writer.Write("
      ");
      +			writer.WriteLine(_results.ToString());
      +			writer.Write("
      "); + writer.Write("Build finished."); + writer.Write(""); + writer.Close(); + } + + #region COMPILER + private string GetCompilerName() + { + return @"cl.exe"; + } + + private string WriteCompilerParameters(CPPProject p, bool preCompiledHeader, bool force) + { + CPPCompilerParameters compilerparameters = (CPPCompilerParameters)p.ActiveConfiguration; + StringBuilder sb = new StringBuilder(); + + sb.Append("/c\n"); + + if (compilerparameters.UseManagedExtensions) { + sb.Append("/clr\n"); + } + string directory = Path.GetDirectoryName(compilerparameters.OutputFile); + sb.Append("/Fo\""); + sb.Append(directory); + sb.Append("/\"\n"); + + IProjectService projectService = (IProjectService)ICSharpCode.Core.ServiceManager.Services.GetService(typeof(IProjectService)); + ArrayList allProjects = Combine.GetAllProjects(projectService.CurrentOpenCombine); + if (preCompiledHeader) { + sb.Append(compilerparameters.GetPreCompiledHeaderOptions()); + } else { + sb.Append(compilerparameters.GetCompilerOptions()); + } + if (compilerparameters.AdditionalCompilerOptions != null && compilerparameters.AdditionalCompilerOptions.Length > 0) { + foreach (string option in compilerparameters.AdditionalCompilerOptions.Split(';')) { + sb.Append(option); + sb.Append("\n"); + } + } + + foreach (ProjectReference lib in p.ProjectReferences) { + sb.Append("/FU\""); + sb.Append(lib.GetReferencedFileName(p)); + sb.Append("\"\n"); + } + + switch (compilerparameters.ConfigurationType) { + case ConfigurationType.Dll: + sb.Append("/LD\n"); + break; + } + bool includedFile = false; + foreach (ProjectFile finfo in p.ProjectFiles) { + if (finfo.Subtype != Subtype.Directory) { + switch (finfo.BuildAction) { + case BuildAction.Compile: + if (CanCompile(finfo.Name)) + { + string fileName = Path.GetFileNameWithoutExtension(Path.GetFullPath(finfo.Name)).ToLower(); + string headerFile = Path.GetFileNameWithoutExtension(compilerparameters.preCompiledHeaderCPPOptions.HeaderFile).ToLower(); + bool isPreHeader = fileName == headerFile; + + if (!(preCompiledHeader ^ isPreHeader)) { + if (force || ShouldCompileFile(p, finfo.Name)) { + includedFile = true; + sb.Append("\""); + sb.Append(Path.GetFullPath(finfo.Name)); + sb.Append("\"\n"); + } + } + } + break; + } + } + } + if (!includedFile) { + return null; + } + string responseFileName = Path.GetTempFileName(); + StreamWriter writer = new StreamWriter(responseFileName, false); +// string standardIncludes = Environment.GetEnvironmentVariable("INCLUDE"); +// if (standardIncludes != null && standardIncludes.Length > 0) { +// writer.WriteLine("/I\"" + standardIncludes + "\""); +// } + + writer.Write(sb.ToString()); + writer.Close(); + + _inputFiles.Append("Creating temporary file "); + _inputFiles.Append(responseFileName); + _inputFiles.Append(" with following content:
      "); + _inputFiles.Append("
      ");
      +			_inputFiles.Append(sb.ToString());
      +			_inputFiles.Append("
      "); + + return responseFileName; + } + + Hashtable lastCompiledFiles = new Hashtable(); + + private bool ShouldCompileFile(CPPProject p, string fileName) + { + CPPCompilerParameters compilerparameters = (CPPCompilerParameters)p.ActiveConfiguration; + string directory = Path.GetDirectoryName(compilerparameters.OutputFile); + string objectFile = Path.Combine(directory, Path.ChangeExtension(Path.GetFileName(fileName), ".obj")); + if (!File.Exists(objectFile)) { + return true; + } + + string[] additinalIncludeDirs = compilerparameters.AdditionalCompilerOptions.Split(';'); + ArrayList dirs = new ArrayList(additinalIncludeDirs.Length+1); + dirs.Add(Path.GetDirectoryName(fileName)); + foreach (string dir in additinalIncludeDirs) + { + dirs.Add(dir); + } + + DateTime lastWriteTime = new IncludeParser(fileName, dirs, true).Parse().GetLastWriteTime(); +// DateTime lastWriteTime = File.GetLastWriteTime(fileName); + + bool shouldCompile; + if (lastCompiledFiles[fileName] == null) { + shouldCompile = true; + } else { + shouldCompile = lastWriteTime != (DateTime)lastCompiledFiles[fileName]; + } + + lastCompiledFiles[fileName] = lastWriteTime; + return shouldCompile; + } + + private ICompilerResult InternalCompileProject(CPPProject p, bool preCompiledHeader, bool force) + { + CPPCompilerParameters compilerparameters = (CPPCompilerParameters)p.ActiveConfiguration; + + string responseFileName = WriteCompilerParameters(p, preCompiledHeader, force); + if (responseFileName == null) { + return null; + } + string output = String.Empty; + string error = String.Empty; + + string compilerName = GetCompilerName(); + string clstr = compilerName + " \"@" + responseFileName + "\""; + + TempFileCollection tf = new TempFileCollection(); + + string currDir = Directory.GetCurrentDirectory(); + string intDir = compilerparameters.IntermediateDirectory; + if (intDir == null || intDir.Length == 0) { + intDir = compilerparameters.OutputDirectory; + } + _inputFiles.Append("Executing command: " + clstr + "
      "); + + ICompilerResult result; + try { + Executor.ExecWaitWithCapture(clstr, tf, ref output, ref error); + result = ParseOutput(tf, output, error); + } + catch (System.Runtime.InteropServices.ExternalException e) { + ShowErrorBox(e); + result = CreateErrorCompilerResult(tf, e); + } + finally { + File.Delete(responseFileName); + File.Delete(output); + File.Delete(error); + } + + return result; + } + #endregion + + #region LINKER + private string GetLinkerName() + { + return @"link.exe"; + } + + private string WriteLinkerOptions(CPPProject p) + { + CPPCompilerParameters compilerparameters = (CPPCompilerParameters)p.ActiveConfiguration; + + StringBuilder sb = new StringBuilder(); + + string exe = compilerparameters.OutputFile; + string dir = Path.GetDirectoryName(Path.GetFullPath(exe)); + sb.Append("/OUT:\"");sb.Append(exe);sb.Append("\"\n"); + foreach (ProjectFile finfo in p.ProjectFiles) { + if (finfo.Subtype != Subtype.Directory) { + switch (finfo.BuildAction) { + case BuildAction.Compile: + if (CanCompile(finfo.Name)) + { + sb.Append('"'); + sb.Append(Path.Combine(dir, + Path.ChangeExtension(Path.GetFileName(finfo.Name), + ".obj"))); + sb.Append("\"\n"); + } + break; + case BuildAction.EmbedAsResource: + sb.Append("/ASSEMBLYRESOURCE:\"");sb.Append(Path.GetFullPath(finfo.Name));sb.Append("\"\n"); + break; + } + } + } + switch (compilerparameters.ConfigurationType) { + case ConfigurationType.Dll: + sb.Append("/DLL\n"); + break; + } + + sb.Append(compilerparameters.GetLinkerOptionsForCompiler()); + + // write to response file + string responseFileName = Path.GetTempFileName(); + StreamWriter writer = new StreamWriter(responseFileName); +// string standardLibs = Environment.GetEnvironmentVariable("LIB"); +// if (standardLibs != null && standardLibs.Length > 0) { +// foreach (string lib in standardLibs.Split(';')) { +// if (lib.Length > 0) { +// writer.WriteLine("/LIBPATH:\"" + lib + "\""); +// } +// } +// } + writer.Write(sb.ToString()); + writer.Close(); + + _inputFiles.Append("Creating temporary file " + responseFileName + " with following content:
      "); + _inputFiles.Append("
      ");
      +			_inputFiles.Append(sb.ToString());
      +			_inputFiles.Append("
      "); + return responseFileName; + } + + private ICompilerResult LinkProject(CPPProject p) + { + CPPCompilerParameters compilerparameters = (CPPCompilerParameters)p.ActiveConfiguration; + + string responseFileName = WriteLinkerOptions(p); + + string output = String.Empty; + string error = String.Empty; + + string compilerName = GetLinkerName(); + string clstr = compilerName + " \"@" + responseFileName + "\""; + + TempFileCollection tf = new TempFileCollection(); + + string currDir = Directory.GetCurrentDirectory(); + string intDir = compilerparameters.IntermediateDirectory; + if (intDir == null || intDir.Length == 0) { + intDir = compilerparameters.OutputDirectory; + } + + _inputFiles.Append("Executing command : "); + _inputFiles.Append(clstr); + _inputFiles.Append("
      "); + Executor.ExecWaitWithCapture(clstr, tf, ref output, ref error); + + ICompilerResult result = ParseOutput(tf, output, error); + +// File.Delete(responseFileName); + File.Delete(output); + File.Delete(error); + + return result; + } + #endregion + + private ICompilerResult CreateErrorCompilerResult(TempFileCollection tf, System.Runtime.InteropServices.ExternalException e) + { + CompilerError error = new CompilerError(); + error.Line = 0; + error.FileName = ""; + error.IsWarning = false; + error.ErrorNumber = ""; + error.ErrorText = e.Message; + CompilerResults cr = new CompilerResults(tf); + cr.Errors.Add(error); + return new DefaultCompilerResult(cr, ""); + } + + private void InternalParseOutputFile(StringBuilder compilerOutput, CompilerResults cr, string file) + { + StreamReader sr = new StreamReader(File.OpenRead(file), Encoding.Default); + + // skip fist whitespace line + sr.ReadLine(); + + + while (true) { + string curLine = sr.ReadLine(); + _buildProcess.Append(curLine); + _buildProcess.Append("\n"); + compilerOutput.Append(curLine); + compilerOutput.Append('\n'); + if (curLine == null) { + break; + } + curLine = curLine.Trim(); + if (curLine.Length == 0) { + continue; + } + + CompilerError error = new CompilerError(); + + // try to match standard errors + Match match = normalError.Match(curLine); + if (match.Success) { + error.Line = Int32.Parse(match.Result("${line}")); + try { + error.FileName = Path.GetFullPath(match.Result("${file}")); + } catch (Exception) { + error.FileName = ""; + } + error.IsWarning = match.Result("${error}").EndsWith("warning"); + error.ErrorNumber = match.Result("${number}"); + error.ErrorText = match.Result("${message}"); + } else { + match = generalError.Match(curLine); // try to match general csc errors + if (match.Success) { + error.IsWarning = match.Result("${error}").EndsWith("warning"); + error.ErrorNumber = match.Result("${number}"); + error.ErrorText = match.Result("${message}"); + } else { // give up and skip the line + continue; + } + } + + cr.Errors.Add(error); + } + sr.Close(); + } + + private ICompilerResult ParseOutput(TempFileCollection tf, string outputFile, string errorFile) + { + StringBuilder compilerOutput = new StringBuilder(); + CompilerResults cr = new CompilerResults(tf); + InternalParseOutputFile(compilerOutput, cr, outputFile); + InternalParseOutputFile(compilerOutput, cr, errorFile); + return new DefaultCompilerResult(cr, compilerOutput.ToString()); + } + } +} diff --git a/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/CPPNetBindingExecutionManager.cs b/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/CPPNetBindingExecutionManager.cs new file mode 100644 index 0000000000..054795f8b3 --- /dev/null +++ b/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/CPPNetBindingExecutionManager.cs @@ -0,0 +1,74 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Diagnostics; +using System.Collections; +using System.Reflection; +using System.Resources; +using System.Windows.Forms; +using System.Xml; +using System.CodeDom.Compiler; +using System.Threading; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Gui; + +using ICSharpCode.Core; + +namespace CPPBinding +{ + /// + /// This class describes the main functionalaty of a language codon + /// + public class CPPBindingExecutionManager + { + public void Execute(string filename, bool debug) + { + string exe = Path.ChangeExtension(filename, ".exe"); + ProcessStartInfo psi = new ProcessStartInfo(Environment.GetEnvironmentVariable("ComSpec"), "/c " + "\"" + exe + "\"" + " & pause"); + psi.WorkingDirectory = Path.GetDirectoryName(exe); + psi.UseShellExecute = false; + try { + Process p = new Process(); + p.StartInfo = psi; + p.Start(); + } catch (Exception) { + throw new ApplicationException("Can't execute " + "\"" + exe + "\"\n(.NET bug? Try restaring SD or manual start)"); + } + } + + public void Execute(IProject project, bool debug) + { + CPPCompilerParameters parameters = (CPPCompilerParameters)project.ActiveConfiguration; + + + string exe = ((CPPCompilerParameters)project.ActiveConfiguration).OutputFile; + + //string args = ((CPPCompilerParameters)project.ActiveConfiguration).CommandLineParameters; + string args = ""; + + ProcessStartInfo psi; + string runtimeStarter = String.Empty; + + psi = new ProcessStartInfo(runtimeStarter + "\"" + exe + "\""); + psi.Arguments = args; + + try { + psi.WorkingDirectory = Path.GetDirectoryName(exe); + psi.UseShellExecute = false; + + Process p = new Process(); + p.StartInfo = psi; + p.Start(); + } catch (Exception) { + throw new ApplicationException("Can't execute " + "\"" + exe + "\""); + } + } + } +} diff --git a/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/CPPNetLanguageBinding.cs b/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/CPPNetLanguageBinding.cs new file mode 100644 index 0000000000..5aabddf21c --- /dev/null +++ b/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/CPPNetLanguageBinding.cs @@ -0,0 +1,95 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Diagnostics; +using System.Collections; +using System.Reflection; +using System.Resources; +using System.Windows.Forms; +using System.Xml; +using System.CodeDom.Compiler; +using System.Threading; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Internal.Templates; +using ICSharpCode.SharpDevelop.Gui; + +namespace CPPBinding +{ + public class CPPLanguageBinding : ILanguageBinding + { + public const string LanguageName = "C++.NET"; + + CPPBindingCompilerManager compilerManager = new CPPBindingCompilerManager(); + CPPBindingExecutionManager executionManager = new CPPBindingExecutionManager(); + + public string Language { + get { + return LanguageName; + } + } + + public void Execute(string filename, bool debug) + { + Debug.Assert(executionManager != null); + executionManager.Execute(filename, debug); + } + + public void Execute(IProject project, bool debug) + { + Debug.Assert(executionManager != null); + executionManager.Execute(project, debug); + } + + public string GetCompiledOutputName(string fileName) + { + Debug.Assert(compilerManager != null); + return compilerManager.GetCompiledOutputName(fileName); + } + + public string GetCompiledOutputName(IProject project) + { + Debug.Assert(compilerManager != null); + return compilerManager.GetCompiledOutputName(project); + } + + public bool CanCompile(string fileName) + { + Debug.Assert(compilerManager != null); + return compilerManager.CanCompile(fileName); + } + + public ICompilerResult CompileFile(string fileName) + { + MessageBox.Show("Cannot compile a single file. Create a project first.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1); + return null; + } + + public ICompilerResult CompileProject(IProject project) + { + return CompileProject(project, false); + } + + public ICompilerResult RecompileProject(IProject project) + { + return CompileProject(project, true); + } + + public IProject CreateProject(ProjectCreateInformation info, XmlElement projectOptions) + { + return new CPPProject(info, projectOptions); + } + + private ICompilerResult CompileProject(IProject project, bool force) + { + Debug.Assert(compilerManager != null); + return compilerManager.CompileProject(project, force); + } + } +} diff --git a/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/Dependences.cs b/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/Dependences.cs new file mode 100644 index 0000000000..834fc36d1d --- /dev/null +++ b/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/Dependences.cs @@ -0,0 +1,218 @@ +// +// -*- C# -*- +// +// Author: Roman Taranchenko +// Copyright: (c) 2004 Roman Taranchenko +// Copying Policy: GNU General Public License +// + +using System; +using System.Collections; +using System.IO; + +namespace CPPBinding +{ + + public interface IDependence + { + + string Name + { + get; + } + + DependenceTree DependsOn + { + get; + } + + DependenceTree Children + { + get; + } + + void Add(IDependence dependence); + + DateTime GetLastWriteTime(); + + bool Exists + { + get; + } + + bool Contains(IDependence dep); + + bool Contains(string dep); + + } + + public class SourceFile: IDependence + { + + private string _name; + private DependenceTree _dependences = new DependenceTree(); + + public SourceFile(string name) + { + _name = name; + } + + public string Name + { + get + { + return _name; + } + } + + public DependenceTree Children + { + get + { + return _dependences; + } + } + + public DependenceTree DependsOn + { + get + { + DependenceTree listOfNames = new DependenceTree(); + FillListOfNames(this, listOfNames); + return listOfNames; + } + } + + public void Add(IDependence dependence) + { + _dependences.Add(dependence); + } + + private static void FillListOfNames(IDependence dependence, DependenceTree list) + { + foreach (IDependence dep in dependence.Children) + { + list.Add(dep); + FillListOfNames(dep, list); + } + } + + public DateTime GetLastWriteTime() + { + DateTime result = DateTime.MinValue; + if (Exists) + { + result = File.GetLastWriteTime(_name); + foreach (IDependence dep in _dependences) + { + DateTime dt = dep.GetLastWriteTime(); + if (dt.CompareTo(result) > 0) + { + result = dt; + } + } + } + return result; + } + + public bool Exists + { + get + { + return File.Exists(_name); + } + } + + public override string ToString() + { + return _name; + } + + public bool Contains(IDependence dep) + { + return Contains(dep.Name); + } + + public bool Contains(string dep) + { + if (_name.Equals(dep)) { + return true; + } + return _dependences.Contains(dep); + } + } + + public class DependenceTree: IEnumerable + { + + private SortedList _list; + + public DependenceTree() + { + _list = new SortedList(); + } + + public void Add(IDependence value) + { + if (!Contains(value)) + { + _list.Add(value.Name, value); + } + } + + public IDependence Get(string name) + { + return (IDependence) _list.GetByIndex(_list.IndexOfKey(name)); + } + + public IDependence Get(IDependence dep) + { + return Get(dep.Name); + } + + public bool Contains(IDependence dep) + { + return Contains(dep.Name); + } + + public bool Contains(string name) + { + return _list.ContainsKey(name); + } + + public IEnumerator GetEnumerator() + { + return new DependenceTreeEnumerator(_list.GetEnumerator()); + } + + } + + class DependenceTreeEnumerator: IEnumerator + { + private IDictionaryEnumerator _enum; + + public DependenceTreeEnumerator(IDictionaryEnumerator e) + { + _enum = e; + } + + public object Current + { + get + { + return ((DictionaryEntry)_enum.Current).Value; + } + } + + public bool MoveNext() + { + return _enum.MoveNext(); + } + + public void Reset() + { + _enum.Reset(); + } + } + +} diff --git a/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/FormattingStrategy/CPPNetFormattingStrategy.cs b/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/FormattingStrategy/CPPNetFormattingStrategy.cs new file mode 100644 index 0000000000..92d5cced34 --- /dev/null +++ b/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/FormattingStrategy/CPPNetFormattingStrategy.cs @@ -0,0 +1,343 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.Diagnostics; +using System.Drawing; +using System.Text; + +using ICSharpCode.TextEditor; +using ICSharpCode.TextEditor.Document; +using ICSharpCode.Core; + +namespace CPPBinding.FormattingStrategy +{ + /// + /// This class handles the auto and smart indenting in the textbuffer while + /// you type. + /// + public class CSharpFormattingStrategy : DefaultFormattingStrategy + { + public CSharpFormattingStrategy() + { + } + + /// + /// Define CSharp specific smart indenting for a line :) + /// + protected override int SmartIndentLine(TextArea textArea, int lineNr) + { + if (lineNr > 0) { + LineSegment lineAbove = textArea.Document.GetLineSegment(lineNr - 1); + string lineAboveText = lineAbove == null ? "" : textArea.Document.GetText(lineAbove).Trim(); + + LineSegment curLine = textArea.Document.GetLineSegment(lineNr); + string curLineText = textArea.Document.GetText(curLine.Offset, curLine.Length).Trim(); + + if ((lineAboveText.EndsWith(")") && curLineText.StartsWith("{")) || // after for, while, etc. + (lineAboveText.EndsWith("else") && curLineText.StartsWith("{"))) // after else + { + string indentation = GetIndentation(textArea, lineNr - 1); + textArea.Document.Replace(curLine.Offset, curLine.Length, indentation + curLineText); + return indentation.Length; + } + + if (curLineText.StartsWith("}")) { // indent closing bracket. + int closingBracketOffset = TextUtilities.SearchBracketBackward(textArea.Document, curLine.Offset + textArea.Document.GetText(curLine.Offset, curLine.Length).IndexOf('}') - 1, '{', '}'); + if (closingBracketOffset == -1) { // no closing bracket found -> autoindent + return AutoIndentLine(textArea, lineNr); + } + + string indentation = GetIndentation(textArea, textArea.Document.GetLineNumberForOffset(closingBracketOffset)); + + textArea.Document.Replace(curLine.Offset, curLine.Length, indentation + curLineText); + return indentation.Length; + } + + if (lineAboveText.EndsWith(";")) { // expression ended, reset to valid indent. + int closingBracketOffset = TextUtilities.SearchBracketBackward(textArea.Document, curLine.Offset + textArea.Document.GetText(curLine.Offset, curLine.Length).IndexOf('}') - 1, '{', '}'); + + if (closingBracketOffset == -1) { // no closing bracket found -> autoindent + return AutoIndentLine(textArea, lineNr); + } + + int closingBracketLineNr = textArea.Document.GetLineNumberForOffset(closingBracketOffset); + LineSegment closingBracketLine = textArea.Document.GetLineSegment(closingBracketLineNr); + string closingBracketLineText = textArea.Document.GetText(closingBracketLine.Offset, closingBracketLine.Length).Trim(); + + string indentation = GetIndentation(textArea, closingBracketLineNr); + + // special handling for switch statement formatting. + if (closingBracketLineText.StartsWith("switch")) { + if (lineAboveText.StartsWith("break;") || + lineAboveText.StartsWith("goto") || + lineAboveText.StartsWith("return")) { + // nothing + } else { + indentation += ICSharpCode.TextEditor.Actions.Tab.GetIndentationString(textArea.Document); + } + } + indentation += ICSharpCode.TextEditor.Actions.Tab.GetIndentationString(textArea.Document); + + textArea.Document.Replace(curLine.Offset, curLine.Length, indentation + curLineText); + return indentation.Length; + } + + if (lineAboveText.EndsWith("{") || // indent opening bracket. + lineAboveText.EndsWith(":") || // indent case xyz: + (lineAboveText.EndsWith(")") && // indent single line if, for ... etc + (lineAboveText.StartsWith("if") || + lineAboveText.StartsWith("while") || + lineAboveText.StartsWith("for"))) || + lineAboveText.EndsWith("else")) { + string indentation = GetIndentation(textArea, lineNr - 1) + ICSharpCode.TextEditor.Actions.Tab.GetIndentationString(textArea.Document); + textArea.Document.Replace(curLine.Offset, curLine.Length, indentation + curLineText); + return indentation.Length; + } else { + // try to indent linewrap + ArrayList bracketPos = new ArrayList(); + for (int i = 0; i < lineAboveText.Length; ++i) { // search for a ( bracket that isn't closed + switch (lineAboveText[i]) { + case '(': + bracketPos.Add(i); + break; + case ')': + if (bracketPos.Count > 0) { + bracketPos.RemoveAt(bracketPos.Count - 1); + } + break; + } + } + + if (bracketPos.Count > 0) { + int bracketIndex = (int)bracketPos[bracketPos.Count - 1]; + string indentation = GetIndentation(textArea, lineNr - 1); + + for (int i = 0; i <= bracketIndex; ++i) { // insert enough spaces to match + indentation += " "; // brace start in the next line + } + + textArea.Document.Replace(curLine.Offset, curLine.Length, indentation + curLineText); + return indentation.Length; + } + } + } + return AutoIndentLine(textArea, lineNr); + } + + bool NeedCurlyBracket(string text) + { + int curlyCounter = 0; + + bool inString = false; + bool inChar = false; + + bool lineComment = false; + bool blockComment = false; + + for (int i = 0; i < text.Length; ++i) { + switch (text[i]) { + case '\r': + case '\n': + lineComment = false; + break; + case '/': + if (blockComment) { + Debug.Assert(i > 0); + if (text[i - 1] == '*') { + blockComment = false; + } + } + if (!inString && !inChar && i + 1 < text.Length) { + if (!blockComment && text[i + 1] == '/') { + lineComment = true; + } + if (!lineComment && text[i + 1] == '*') { + blockComment = true; + } + } + break; + case '"': + if (!(inChar || lineComment || blockComment)) { + inString = !inString; + } + break; + case '\'': + if (!(inString || lineComment || blockComment)) { + inChar = !inChar; + } + break; + case '{': + if (!(inString || inChar || lineComment || blockComment)) { + ++curlyCounter; + } + break; + case '}': + if (!(inString || inChar || lineComment || blockComment)) { + --curlyCounter; + } + break; + } + } + return curlyCounter > 0; + } + + bool IsInsideStringOrComment(TextArea textArea, LineSegment curLine, int cursorOffset) + { + // scan cur line if it is inside a string or single line comment (//) + bool isInsideString = false; + bool isInsideComment = false; + for (int i = curLine.Offset; i < cursorOffset; ++i) { + char ch = textArea.Document.GetCharAt(i); + if (ch == '"') { + isInsideString = !isInsideString; + } + if (ch == '/' && i + 1 < cursorOffset && textArea.Document.GetCharAt(i + 1) == '/') { + isInsideComment = true; + break; + } + } + + return isInsideString || isInsideComment; + } + + bool IsInsideDocumentationComment(TextArea textArea, LineSegment curLine, int cursorOffset) + { + // scan cur line if it is inside a string or single line comment (//) + bool isInsideString = false; + bool isInsideComment = false; + for (int i = curLine.Offset; i < cursorOffset; ++i) { + char ch = textArea.Document.GetCharAt(i); + if (ch == '"') { + isInsideString = !isInsideString; + } + if (!isInsideString) { + if (ch == '/' && i + 2 < cursorOffset && textArea.Document.GetCharAt(i + 1) == '/' && textArea.Document.GetCharAt(i + 2) == '/') { + isInsideComment = true; + break; + } + } + } + + return isInsideComment; + } + + public override int FormatLine(TextArea textArea, int lineNr, int cursorOffset, char ch) // used for comment tag formater/inserter + { + LineSegment curLine = textArea.Document.GetLineSegment(lineNr); + LineSegment lineAbove = lineNr > 0 ? textArea.Document.GetLineSegment(lineNr - 1) : null; + + //// local string for curLine segment + string curLineText=""; + + if (ch != '\n' && ch != '>') { + if (IsInsideStringOrComment(textArea, curLine, cursorOffset)) { + return 0; + } + } + + switch (ch) { + case '>': + if (IsInsideDocumentationComment(textArea, curLine, cursorOffset)) { + curLineText = textArea.Document.GetText(curLine.Offset, curLine.Length); + int column = textArea.Caret.Offset - curLine.Offset; + int index = Math.Min(column - 1, curLineText.Length - 1); + + while (index >= 0 && curLineText[index] != '<') { + --index; + if(curLineText[index] == '/') + return 0; // the tag was an end tag or already + } + + if (index > 0) { + StringBuilder commentBuilder = new StringBuilder(""); + for (int i = index; i < curLineText.Length && i < column && !Char.IsWhiteSpace(curLineText[ i]); ++i) { + commentBuilder.Append(curLineText[ i]); + } + string tag = commentBuilder.ToString().Trim(); + if (!tag.EndsWith(">")) { + tag += ">"; + } + if (!tag.StartsWith("/")) { + textArea.Document.Insert(textArea.Caret.Offset, " 0) { + curLineText = textArea.Document.GetText(curLine.Offset,curLine.Length); + } + + LineSegment nextLine = lineNr + 1 < textArea.Document.TotalNumberOfLines ? textArea.Document.GetLineSegment(lineNr + 1) : null; + string nextLineText = lineNr + 1 < textArea.Document.TotalNumberOfLines ? textArea.Document.GetText(nextLine.Offset, nextLine.Length) : ""; + + if (lineAbove.HighlightSpanStack != null && lineAbove.HighlightSpanStack.Count > 0) { + if (!((Span)lineAbove.HighlightSpanStack.Peek()).StopEOL) { // case for /* style comments + int index = lineAboveText == null ? -1 : lineAboveText.IndexOf("/*"); + + if (index > 0) { + string indentation = GetIndentation(textArea, lineNr - 1); + for (int i = indentation.Length; i < index; ++ i) { + indentation += ' '; + } + //// adding curline text + textArea.Document.Replace(curLine.Offset, cursorOffset - curLine.Offset, indentation + " * "+curLineText); + return indentation.Length + 3+curLineText.Length; + } + + index = lineAboveText.IndexOf("*"); + if (index > 0) { + string indentation = GetIndentation(textArea, lineNr - 1); + for (int i = indentation.Length; i < index; ++ i) { + indentation += ' '; + } + //// adding curline if present + textArea.Document.Replace(curLine.Offset, cursorOffset - curLine.Offset, indentation + "* "+curLineText); + return indentation.Length + 2 + curLineText.Length; + } + } else { // don't handle // lines, because they're only one lined comments + int indexAbove = lineAboveText.IndexOf("///"); + int indexNext = nextLineText.IndexOf("///"); + if (indexAbove > 0 && (indexNext != -1 || indexAbove + 4 < lineAbove.Length)) { + string indentation = GetIndentation(textArea, lineNr - 1); + for (int i = indentation.Length; i < indexAbove; ++ i) { + indentation += ' '; + } + //// adding curline text if present + textArea.Document.Replace(curLine.Offset, cursorOffset - curLine.Offset, indentation + "/// " + curLineText); + return indentation.Length + 4 /*+ curLineText.Length*/; + } + } + } + return IndentLine(textArea, lineNr); + } + return 0; + } + } +} diff --git a/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/Gui/CPPCodeGenerationPanel.cs b/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/Gui/CPPCodeGenerationPanel.cs new file mode 100644 index 0000000000..6fe9e2ff03 --- /dev/null +++ b/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/Gui/CPPCodeGenerationPanel.cs @@ -0,0 +1,152 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Drawing; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Internal.ExternalTool; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace CPPBinding +{ + public abstract class AbstractCPPConfigPanel : AbstractOptionPanel + { + protected CPPCompilerParameters compilerParameters; + protected System.Windows.Forms.PropertyGrid grid = new System.Windows.Forms.PropertyGrid(); + + protected abstract void SetGridObject(); + + public override void LoadPanelContents() + { + compilerParameters = (CPPCompilerParameters)((Properties)CustomizationObject).Get("Config"); + + grid.Dock = DockStyle.Fill; + SetGridObject(); + Controls.Add(grid); + } + + public override bool StorePanelContents() + { + return true; + } + } + + public class CPPCodeGenerationPanel : AbstractCPPConfigPanel + { + protected override void SetGridObject() + { + grid.SelectedObject = this.compilerParameters; + } + } + #region compiler panels + public class GeneralCPPOptionsPanel : AbstractCPPConfigPanel + { + protected override void SetGridObject() + { + grid.SelectedObject = this.compilerParameters.generalCPPOptions; + } + } + public class OptimizeCPPOptionsPanel : AbstractCPPConfigPanel + { + protected override void SetGridObject() + { + grid.SelectedObject = this.compilerParameters.optimizeCPPOptions; + } + } + public class PreProcessorCPPOptionsPanel : AbstractCPPConfigPanel + { + protected override void SetGridObject() + { + grid.SelectedObject = this.compilerParameters.preProcessorCPPOptions; + } + } + + public class CodeGenerationCPPOptionsPanel : AbstractCPPConfigPanel + { + protected override void SetGridObject() + { + grid.SelectedObject = this.compilerParameters.codeGenerationCPPOptions; + } + } + + public class LanguageCPPOptionsPanel : AbstractCPPConfigPanel + { + protected override void SetGridObject() + { + grid.SelectedObject = this.compilerParameters.languageCPPOptions; + } + } + + public class PreCompiledHeaderCPPOptionsPanel : AbstractCPPConfigPanel + { + protected override void SetGridObject() + { + grid.SelectedObject = this.compilerParameters.preCompiledHeaderCPPOptions; + } + } + + public class OutputFileCPPOptionsPanel : AbstractCPPConfigPanel + { + protected override void SetGridObject() + { + grid.SelectedObject = this.compilerParameters.outputFileCPPOptions; + } + } + + public class InformationSearchCPPOptionsPanel : AbstractCPPConfigPanel + { + protected override void SetGridObject() + { + grid.SelectedObject = this.compilerParameters.informationSearchCPPOptions; + } + } + + public class ExtendedCPPOptionsPanel : AbstractCPPConfigPanel + { + protected override void SetGridObject() + { + grid.SelectedObject = this.compilerParameters.extendedCPPOptions; + } + } + #endregion + + public class GeneralLinkerOptionsPanel : AbstractCPPConfigPanel + { + protected override void SetGridObject() + { + grid.SelectedObject = this.compilerParameters.generalLinkerOptions; + } + } + public class InputLinkerOptionsPanel : AbstractCPPConfigPanel + { + protected override void SetGridObject() + { + grid.SelectedObject = this.compilerParameters.inputLinkerOptions; + } + } + public class DebugLinkerOptionsPanel : AbstractCPPConfigPanel + { + protected override void SetGridObject() + { + grid.SelectedObject = this.compilerParameters.debugLinkerOptions; + } + } + + public class SystemLinkerOptionsPanel : AbstractCPPConfigPanel + { + protected override void SetGridObject() + { + grid.SelectedObject = this.compilerParameters.systemLinkerOptions; + } + } + +} + diff --git a/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/IncludeParser.cs b/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/IncludeParser.cs new file mode 100644 index 0000000000..0ec1df84d7 --- /dev/null +++ b/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/IncludeParser.cs @@ -0,0 +1,123 @@ +// +// -*- C# -*- +// +// Author: Roman Taranchenko +// Copyright: (c) 2004 Roman Taranchenko +// Copying Policy: GNU General Public License +// + +using System; +using System.Collections; +using System.IO; + +namespace CPPBinding +{ + + /// + /// Description of IncludeParser. + /// + public class IncludeParser + { + private IDependence _owner; + private IList _includeDirectories; + private bool _onlyProjectInclude; + + public IncludeParser(IDependence owner, IList includeDirectories, bool onlyProjectInclude) + { + _includeDirectories = includeDirectories; + _owner = owner; + _onlyProjectInclude = onlyProjectInclude; + } + + public IncludeParser(String fileName, IList includeDirectories, bool onlyProjectInclude) + { + _includeDirectories = includeDirectories; + _owner = new SourceFile(fileName); + _onlyProjectInclude = onlyProjectInclude; + } + + public IDependence Parse() + { + ParseFile(_owner); + return _owner; + } + + private void ParseFile(IDependence parent) + { + if (!parent.Exists) + { + return; + } + ArrayList includes = new ArrayList(); + StreamReader reader = File.OpenText(parent.Name); + using (reader) + { + string line = null; + while ((line = reader.ReadLine()) != null) + { + line = line.TrimStart(' ', '\t'); + if (line.StartsWith("#include")) + { + IDependence include = GetInclude(line); + if (include != null) + { + includes.Add(include); + } + } + } + } + foreach (IDependence include in includes) + { + parent.Add(include); + ParseFile(include); + } + } + + private IDependence GetInclude(string line) + { + IDependence result = null; + int start = -1, end = -1; + bool quotes = false; + + // find first index + for (int i = 8; i < line.Length; ++i) + { + if (!_onlyProjectInclude && line[i] == '<') + { + start = i+1; + break; + } + if (line[i] == '"') + { + start = i+1; + quotes = true; + break; + } + } + + // find second index + if (start > 0 && start + 1 < line.Length) + { + end = line.IndexOf(quotes ? '"' : '>', start + 1); + } + + // create include + if (start > 0 && end > start) + { + string includeName = line.Substring(start, end-start); + foreach (string dir in _includeDirectories) + { + string fullName = Path.Combine(dir, includeName); + if (!_owner.Contains(fullName) && File.Exists(fullName)) + { + result = new SourceFile(fullName); + } + } + } + + return result; + } + + } + +} diff --git a/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/Project/CPPNetCompilerParameters.cs b/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/Project/CPPNetCompilerParameters.cs new file mode 100644 index 0000000000..10b0efb584 --- /dev/null +++ b/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/Project/CPPNetCompilerParameters.cs @@ -0,0 +1,2257 @@ +// +// +// +// +// +// + +using System; +using System.ComponentModel; +using System.Text; +using System.Xml; +using System.Diagnostics; + +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Internal.Project; + +namespace CPPBinding +{ + #region OPTIMIZATION + public enum OptimizeLevel { + Deactivated, // /Od + MinimizeSize, // /O1 + MaximizeSpeed, // /O2 + CompleteOptimize // /Ox + } + + public enum FloatingPointConsistency { + Standard, + Enhanced // /Op + } + + public enum InlineFunctionExpansion + { + Standard, // /Ob0 + Manual, // /Ob1 + Automatic // /Ob2 + } + + public enum SizeOrSpeedOptimization + { + Neither, + Size, + Speed + } + + #endregion + + #region CODE GENERATION + public enum Architecture { + Mixed, + i386, // /G3 + i486, // /G4 + Pentium, // /G5 + PentiumPRO, // /G6 + Pentium4 // /G7 + } + + public enum CallingConvention { + __cdecl, // default (/Gd) + __fastcall, // /Gr + __stdcall // /Gz + } + + public enum EnhancedInstructionSet { + NotSpecified, + SSE, // /arch:SSE + SSE2 // /arch:SSE2 + } + + public enum RunTimeObservation { + Standard, + Stack, // /RTCs + UninitializedVariables, // /RTCu + Both // /RTCs /RTCu + } + + public enum ExceptionHandling { + None, + SynchronousExceptionHandling, // /GX + AsynchronousExceptionHandling // /EHa + } + + public enum StringPooling { + Disabled, + Enabled, + EnabledReadOnlyPooling + } + + #endregion + + #region DEBUGGING + public enum DebugInformationFormat { + Deactivated, + C7, // /Z7 + OnlyLineNumbers, // /Zd + ProgramDatabase, // /Zi + ProgramDatabaseWithEditAndContinue // /ZI + } + + #endregion + + #region PREPROCESSOR + public enum PreProcessorRun { + No, + WithLineNumbers, // /E + WithoutLineNumbers // /EP + } + #endregion + + #region LANGUAGE + public enum StructMemberAlignment { + Standard, + Byte1, // /Zp1 + Byte2, // /Zp2 + Byte4, // /Zp4 + Byte8, // /Zp8 + Byte16, // /Zp16 + } + + public enum LanguageExtensions { + Enable, // /Ze + Disable // /Za + } + + #endregion + + #region LINKING + public enum RunTimeLibrary { + MultiThreaded, // /MT + MultiThreadedDebug, // /MTd + MultiThreadedDLL, // /MD + MultiThreadedDebugDLL, // /MDd + SingleThreaded, // /ML + SingleThreadedDebug // /MLd + } + + public enum ConfigurationType { + Exe, + Dll + } + + #endregion + + #region PRECOMPILED HEADER + public enum PreCompiledHeader { + DontUsePre, // /Y- + Create, // /Yc + CreateAutomatically, // /YX + Use // /Yu + } + #endregion + + #region MISCELLANEOUS + public enum CompileType { + Standard, + C, // /TC + CPP // /TP + } + + #endregion + + + + public enum AssemblyOutput { + NoList, + ListAssembly, + ListAssemblyWithSource, + ListAssemblyWithCode, + ListAssemblyWithCodeAndSource, + } + + public enum ShowLinkerStatus { + Unselected, + ShowAll, + ShowSome + } + public enum IncrementalLinking { + Standard, + Yes, + No + } + + public enum DebuggableAssembly { + DontEmitDebuggable, + EnableDebugToRuntimeDisableOptimization, + DisableDebugToRuntimEnableOptimization + } + + public enum LinkerSubSystem { + Unselected, + Console, + Windows + } + public enum ActivateBigAddresses { + Standard, + NoSupport, + Supported + } + public enum TerminalServer { + Standard, + NotBound, + Bound + } + + /// + /// This class handles project specific compiler parameters + /// + public class CPPCompilerParameters : AbstractProjectConfiguration + { + + private static bool IsNotEmpty(string arg) + { + return arg != null && arg.Length > 0; + } + + private static void AppendOption(StringBuilder sb, String opt, String val) + { + AppendOption(sb, opt, val, true); + } + + private static void AppendOption(StringBuilder sb, String opt, String val, bool quote) + { + + sb.Append(opt); + if (quote) + sb.Append('"'); + sb.Append(val); + if (quote) + sb.Append('"'); + sb.Append("\n"); + } + + private static void AppendList(StringBuilder sb, String opt, String values) + { + AppendList(sb, opt, values, true); + } + + private static void AppendList(StringBuilder sb, String opt, String values, bool quote) + { + foreach (string val in values.Split(';')) + { + AppendOption(sb, opt, val, quote); + } + } + + #region Misc Options + [XmlNodeName("MiscOptions")] + public class MiscCPPOptions + { + [ConvertToRelativePath()] + [XmlAttribute("OutputDirectory")] + public string outputDirectory = ""; + + [ConvertToRelativePath()] + [XmlAttribute("IntermediateDirectory")] + public string intermediateDirectory = ""; + + [XmlAttribute("ConfigurationType")] + public ConfigurationType configurationType = ConfigurationType.Exe; + + [XmlAttribute("UseManagedExtensions")] + public bool useManagedExtensions = true; + + [XmlAttribute("additionalCompilerOptions")] + public string additionalCompilerOptions = ""; + } + #endregion + + #region General Options + [XmlNodeName("GeneralCPPOptions")] + public class GeneralCPPOptions + { + [XmlAttribute("additionalIncludeDirectories")] + public string additionalIncludeDirectories = ""; + + [XmlAttribute("additionalAssemblySearchPaths")] + public string additionalAssemblySearchPaths = ""; + + [XmlAttribute("debugInformationFormat")] + public DebugInformationFormat debugInformationFormat = DebugInformationFormat.Deactivated; + + [XmlAttribute("noStartLogo")] + public bool noStartLogo = true; + + [XmlAttribute("warningLevel")] + public int warningLevel = 4; + + [XmlAttribute("search64BitPortabilityProblems")] + public bool search64BitPortabilityProblems = false; + +// [XmlAttribute("treatWarningsAsErrors")] +// public bool treatWarningsAsErrors = false; + + [DefaultValue("")] + [LocalizedProperty("Additional include paths", + Description = "Specifies one or more semi-colon delimited additonal paths to search for includes. (/I[path])")] + public string AdditionalIncludeDirectories { + get { + return additionalIncludeDirectories; + } + set { + additionalIncludeDirectories = value; + } + } + + [DefaultValue("")] + [LocalizedProperty("Additional assembly search", + Description = "Specifies one or more semi-colon delimited additonal paths to search for #using assemblies. (/AI[path])")] + public string AdditionalAssemblySearchPaths { + get { + return additionalAssemblySearchPaths; + } + set { + additionalAssemblySearchPaths = value; + } + } + + [LocalizedProperty("Debug information format", + Description = "(/Z7, /Zd, /Zi. /ZI)")] + public DebugInformationFormat DebugInformationFormat { + get { + return debugInformationFormat; + } + set { + debugInformationFormat = value; + } + } + + [DefaultValue(true)] + [LocalizedProperty("Surpress Startup Logo", + Description = "Surpress the display of the startup logo and information messages. (/nologo)")] + public bool NoStartLogo { + get { + return noStartLogo; + } + set { + noStartLogo = value; + } + } + + [DefaultValue(4)] + [LocalizedProperty("Warning level", + Description = "(/W0 - /W4)")] + public int WarningLevel { + get { + return warningLevel; + } + set { + warningLevel = value; + } + } + + [DefaultValue(false)] + [LocalizedProperty("Search for 64-Bit portability problems", + Description = "(/Wp64)")] + public bool Search64BitPortabilityProblems { + get { + return search64BitPortabilityProblems; + } + set { + search64BitPortabilityProblems = value; + } + } + +// [DefaultValue(false)] +// [LocalizedProperty("Treat warnings as errors", +// Description = "(/WX)")] +// public bool TreatWarningsAsErrors { +// get { +// return treatWarningsAsErrors; +// } +// set { +// treatWarningsAsErrors = value; +// } +// } + + public string GetCommandLineParameters() + { + StringBuilder result = new StringBuilder(); + if (IsNotEmpty(AdditionalIncludeDirectories)) { + AppendList(result, "/I", AdditionalIncludeDirectories, true); + } + if (IsNotEmpty(AdditionalAssemblySearchPaths)) { + AppendList(result, "/AI", AdditionalAssemblySearchPaths, true); + } + switch (DebugInformationFormat) { + case DebugInformationFormat.Deactivated: + break; + case DebugInformationFormat.C7: + result.Append("/Z7\n"); + break; + case DebugInformationFormat.OnlyLineNumbers: + result.Append("/Zd\n"); + break; + case DebugInformationFormat.ProgramDatabase: + result.Append("/Zi\n"); + break; + case DebugInformationFormat.ProgramDatabaseWithEditAndContinue: + result.Append("/ZI\n"); + break; + + } + if (NoStartLogo) { + result.Append("/nologo\n"); + } + AppendOption(result, "/W", WarningLevel.ToString()); + if (Search64BitPortabilityProblems) { + result.Append("/Wp64\n"); + } +// if (TreatWarningsAsErrors) { +// result.Append("/WX\n"); +// } + + return result.ToString(); + } + } + #endregion + + #region Optimize Options + [XmlNodeName("OptimizeCPPOptions")] + public class OptimizeCPPOptions + { + [XmlAttribute("optimizeLevel")] + public OptimizeLevel optimizeLevel = OptimizeLevel.Deactivated; + + [XmlAttribute("useGlobalOptimize")] + public bool useGlobalOptimize = false; + + [XmlAttribute("inlineFunctionExtension")] + public InlineFunctionExpansion inlineFunctionExpansion = InlineFunctionExpansion.Standard; + + [XmlAttribute("activateSysInternalFunctions")] + public bool activateSysInternalFunctions = false; + + [XmlAttribute("floatingPointConsistency")] + public FloatingPointConsistency floatingPointConsistency = FloatingPointConsistency.Standard; + + [XmlAttribute("sizeOrSpeedOptimization")] + public SizeOrSpeedOptimization sizeOrSpeedOptimization = SizeOrSpeedOptimization.Neither; + + [XmlAttribute("surpressFramePointer")] + public bool surpressFramePointer = false; + + [XmlAttribute("enableFiberSaveOptimize")] + public bool enableFiberSaveOptimize = false; + + [XmlAttribute("architecture")] + public Architecture architecture = Architecture.Mixed; + + [XmlAttribute("optimizeForWindowsExecutable")] + public bool optimizeForWindowsExecutable = false; + + [LocalizedProperty("Optimize Level", + Description = "/Od,/O1,/O2,/Ox")] + public OptimizeLevel OptimizeLevel { + get { + return optimizeLevel; + } + set { + optimizeLevel = value; + } + } + + [DefaultValue(false)] + [LocalizedProperty("Use Global Optimization", + Description = "/Og")] + public bool UseGlobalOptimize { + get { + return useGlobalOptimize; + } + set { + useGlobalOptimize = value; + } + } + [LocalizedProperty("Inline Functions Expansion", + Description = "/Ob1,/Ob2")] + public InlineFunctionExpansion InlineFunctionExpansion { + get { + return inlineFunctionExpansion; + } + set { + inlineFunctionExpansion = value; + } + } +// [DefaultValue(false)] +// [LocalizedProperty("", +// Description = "")] +// public bool ActivateSysInternalFunctions { +// get { +// return activateSysInternalFunctions; +// } +// set { +// activateSysInternalFunctions = value; +// } +// } + [LocalizedProperty("Floating Point Consistency", + Description = "/Op")] + public FloatingPointConsistency FloatingPointConsistency { + get { + return floatingPointConsistency; + } + set { + floatingPointConsistency = value; + } + } + [LocalizedProperty("Size Or Speed Optimization", + Description = "/Ot,/Os")] + public SizeOrSpeedOptimization SizeOrSpeedOptimization { + get { + return sizeOrSpeedOptimization; + } + set { + sizeOrSpeedOptimization = value; + } + } + [DefaultValue(false)] + [LocalizedProperty("Suppress Frame Pointer", + Description = "/Oy")] + public bool SurpressFramePointer { + get { + return surpressFramePointer; + } + set { + surpressFramePointer = value; + } + } + [DefaultValue(false)] + [LocalizedProperty("Fiber Safety Support", + Description = "/GT")] + public bool EnableFiberSaveOptimize { + get { + return enableFiberSaveOptimize; + } + set { + enableFiberSaveOptimize = value; + } + } + [LocalizedProperty("Optimize for Processor", + Description = "/G3,/G4,/G5,/G6,/G7")] + public Architecture Architecture { + get { + return architecture; + } + set { + architecture = value; + } + } + [DefaultValue(false)] + [LocalizedProperty("Optimizes for Windows Application", + Description = "/GA")] + public bool OptimizeForWindowsExecutable { + get { + return optimizeForWindowsExecutable; + } + set { + optimizeForWindowsExecutable = value; + } + } + public string GetCommandLineParameters() + { + StringBuilder result = new StringBuilder(); + switch (OptimizeLevel) { + case OptimizeLevel.CompleteOptimize: + result.Append("/Ox\n"); + break; + case OptimizeLevel.Deactivated: +// result.Append("/Od\n"); + break; + case OptimizeLevel.MaximizeSpeed: + result.Append("/O2\n"); + break; + case OptimizeLevel.MinimizeSize: + result.Append("/O1\n"); + break; + } + switch (FloatingPointConsistency) { + case FloatingPointConsistency.Enhanced: + result.Append("/Op\n"); + break; + } + switch (architecture) { + case Architecture.Mixed: + break; + case Architecture.i386: + result.Append("/G3\n"); + break; + case Architecture.i486: + result.Append("/G4\n"); + break; + case Architecture.Pentium: + result.Append("/G5\n"); + break; + case Architecture.PentiumPRO: + result.Append("/G6\n"); + break; + case Architecture.Pentium4: + result.Append("/G7\n"); + break; + } + if (UseGlobalOptimize) { + result.Append("/Og\n"); + } +// if (activateSysInternalFunctions) { +// result.Append("/\n"); +// } + if (surpressFramePointer) { + result.Append("/Oy\n"); + } + if (enableFiberSaveOptimize) { + result.Append("/GT\n"); + } + if (optimizeForWindowsExecutable) { + result.Append("/GA\n"); + } + switch (InlineFunctionExpansion) { + case InlineFunctionExpansion.Automatic: + result.Append("/Ob2\n"); + break; + case InlineFunctionExpansion.Manual: + result.Append("/Ob1\n"); + break; + case InlineFunctionExpansion.Standard: + break; + } + switch (SizeOrSpeedOptimization) { + case SizeOrSpeedOptimization.Neither: + break; + case SizeOrSpeedOptimization.Size: + result.Append("/Os\n"); + break; + case SizeOrSpeedOptimization.Speed: + result.Append("/Ot\n"); + break; + } + return result.ToString(); + } + } + #endregion + + #region Preprocessor Options + [XmlNodeName("PreProcessorCPPOptions")] + public class PreProcessorCPPOptions + { + [XmlAttribute("additionalDirectives")] + public string additionalDirectives = ""; + + [XmlAttribute("ignoreStandardIncludePath")] + public bool ignoreStandardIncludePath = false; + + [XmlAttribute("preProcessorRun")] + public PreProcessorRun preProcessorRun = PreProcessorRun.No; + + [XmlAttribute("keepComments")] + public bool keepComments = true; + + [LocalizedProperty("Pre Processor Directives", + Description = "Specifies additional pre processor directives. (/D[macro])")] + public string AdditionalDirectives { + get { + return additionalDirectives; + } + set { + additionalDirectives = value; + } + } + + [LocalizedProperty("Ignore standard search paths", + Description = "If true, standard search paths are ignored. (/X)")] + public bool IgnoreStandardIncludePath { + get { + return ignoreStandardIncludePath; + } + set { + ignoreStandardIncludePath = value; + } + } + + [LocalizedProperty("Pre Processor Run", + Description = "Specifies the pre processor options for this configuration. (/E, /P, /EP)")] + public PreProcessorRun PreProcessorRun { + get { + return preProcessorRun; + } + set { + preProcessorRun = value; + } + } + + [LocalizedProperty("Keep comments", + Description = "Specifies if comments should be removed from the source code. (/C)")] + public bool KeepComments { + get { + return keepComments; + } + set { + keepComments = value; + } + } + public string GetCommandLineParameters() + { + StringBuilder result = new StringBuilder(); + if (IsNotEmpty(additionalDirectives)) { + AppendList(result, "/D", additionalDirectives); + } + if (ignoreStandardIncludePath) { + result.Append("/X\n"); + } + switch (preProcessorRun) { + case PreProcessorRun.No: + break; + case PreProcessorRun.WithLineNumbers: + result.Append("/P\n"); + if (keepComments) { + result.Append("/C\n"); + } + break; + case PreProcessorRun.WithoutLineNumbers: + result.Append("/EP\n/P\n"); + if (keepComments) { + result.Append("/C\n"); + } + break; + } + return result.ToString(); + } + } + #endregion + + #region Code Generation Options + [XmlNodeName("CodeGenerationCPPOptions")] + public class CodeGenerationCPPOptions + { + [XmlAttribute("activateStringPooling")] + public bool activateStringPooling = false; + + [XmlAttribute("activateMinimalRecompilation")] + public bool activateMinimalRecompilation = false; + + [XmlAttribute("activateCPPExceptions")] + public bool activateCPPExceptions = true; + + [XmlAttribute("observeSmallTypes")] + public bool observeSmallTypes = false; + + [XmlAttribute("runTimeObservation")] + public RunTimeObservation runTimeObservation = RunTimeObservation.Standard; + + [XmlAttribute("runTimeLibrary")] + public RunTimeLibrary runTimeLibrary = RunTimeLibrary.MultiThreaded; + + [XmlAttribute("structMemberAlignment")] + public StructMemberAlignment structMemberAlignment = StructMemberAlignment.Standard; + + [XmlAttribute("bufferOverflowCheck")] + public bool bufferOverflowCheck = false; + + [XmlAttribute("functionLevelLinking")] + public bool functionLevelLinking = false; + + [XmlAttribute("enhancedInstructionSet")] + public EnhancedInstructionSet enhancedInstructionSet = EnhancedInstructionSet.NotSpecified; + + [LocalizedProperty("Activate String Pooling", + Description = "(/GF)")] + public bool ActivateStringPooling { + get { + return activateStringPooling; + } + set { + activateStringPooling = value; + } + } + + [LocalizedProperty("Activate minimal recompilation", + Description = "(/Gm)")] + public bool ActivateMinimalRecompilation { + get { + return activateMinimalRecompilation; + } + set { + activateMinimalRecompilation = value; + } + } + + [LocalizedProperty("Activate C++ exceptions", + Description = "(/EHsc)")] + public bool ActivateCPPExceptions { + get { + return activateCPPExceptions; + } + set { + activateCPPExceptions = value; + } + } + + [LocalizedProperty("Observe small types", + Description = "(/RTCc)")] + public bool ObserveSmallTypes { + get { + return observeSmallTypes; + } + set { + observeSmallTypes = value; + } + } + + [LocalizedProperty("Full Runtimeobservation", + Description = "(/RTCs, /RTCu, /RTC1)")] + public RunTimeObservation RunTimeObservation { + get { + return runTimeObservation; + } + set { + runTimeObservation = value; + } + } + + [LocalizedProperty("Runtime library", + Description = "(/MT, /MTd, /MD, /MDd, /ML, /MLd)")] + public RunTimeLibrary RunTimeLibrary { + get { + return runTimeLibrary; + } + set { + runTimeLibrary = value; + } + } + + [LocalizedProperty("Struct member alignment", + Description = "1, 2, 4, 8 or 16 byte. (/Zp[number])")] + public StructMemberAlignment StructMemberAlignment { + get { + return structMemberAlignment; + } + set { + structMemberAlignment = value; + } + } + + [LocalizedProperty("Buffer overwflow check", + Description = "(/GS)")] + public bool BufferOverflowCheck { + get { + return bufferOverflowCheck; + } + set { + bufferOverflowCheck = value; + } + } + + [LocalizedProperty("Activate function level linking", + Description = "(/Gy)")] + public bool FunctionLevelLinking { + get { + return functionLevelLinking; + } + set { + functionLevelLinking = value; + } + } + + [LocalizedProperty("Activate enhanced instruction set", + Description = "(/arch:SSE, /arch:SSE2)")] + public EnhancedInstructionSet EnhancedInstructionSet { + get { + return enhancedInstructionSet; + } + set { + enhancedInstructionSet = value; + } + } + + public string GetCommandLineParameters() + { + StringBuilder result = new StringBuilder(); + if (activateStringPooling) { + result.Append("/GF\n"); + } + if (activateMinimalRecompilation) { + result.Append("/Gm\n"); + } + if (activateCPPExceptions) { + result.Append("/EHsc\n"); + } + + if (observeSmallTypes) { + result.Append("/RTCc\n"); + } + switch (runTimeObservation) { + case RunTimeObservation.Both: + result.Append("/RTCsu\n"); + break; + case RunTimeObservation.Stack: + result.Append("/RTCs\n"); + break; + case RunTimeObservation.UninitializedVariables: + result.Append("/RTCu\n"); + break; + } + switch (runTimeLibrary) { + case RunTimeLibrary.MultiThreaded: + result.Append("/MT\n"); + break; + case RunTimeLibrary.MultiThreadedDebug: + result.Append("/MTd\n"); + break; + case RunTimeLibrary.MultiThreadedDLL: + result.Append("/MD\n"); + break; + case RunTimeLibrary.MultiThreadedDebugDLL: + result.Append("/MDd\n"); + break; + case RunTimeLibrary.SingleThreaded: + result.Append("/ML\n"); + break; + case RunTimeLibrary.SingleThreadedDebug: + result.Append("/MLd\n"); + break; + } + + switch (structMemberAlignment) { + case StructMemberAlignment.Standard: + break; + case StructMemberAlignment.Byte1: + result.Append("/Zp1\n"); + break; + case StructMemberAlignment.Byte2: + result.Append("/Zp2\n"); + break; + case StructMemberAlignment.Byte4: + result.Append("/Zp4\n"); + break; + case StructMemberAlignment.Byte8: + result.Append("/Zp8\n"); + break; + case StructMemberAlignment.Byte16: + result.Append("/Zp16\n"); + break; + } + + if (bufferOverflowCheck) { + result.Append("/GS\n"); + } + if (functionLevelLinking) { + result.Append("/Gy\n"); + } + + switch (EnhancedInstructionSet) { + case EnhancedInstructionSet.NotSpecified: + break; + case EnhancedInstructionSet.SSE: + result.Append("/arch:SSE\n"); + break; + case EnhancedInstructionSet.SSE2: + result.Append("/arch:SSE2\n"); + break; + } + return result.ToString(); + } + } + #endregion + + #region Language Options + [XmlNodeName("LanguageCPPOptions")] + public class LanguageCPPOptions + { + [XmlAttribute("deactivateLanuageExtensions")] + public bool deactivateLanuageExtensions = false; + + [XmlAttribute("standardCharTypeIsUnsigned")] + public bool standardCharTypeIsUnsigned = true; + + [XmlAttribute("wchar_tIsBuiltIn")] + public bool wchar_tIsBuiltIn = false; + + [XmlAttribute("forceForScope")] + public bool forceForScope = false; + + [XmlAttribute("addRuntimeTypeInformation")] + public bool addRuntimeTypeInformation = true; + + public bool DeactivateLanuageExtensions { + get { + return deactivateLanuageExtensions; + } + set { + deactivateLanuageExtensions = value; + } + } + public bool StandardCharTypeIsUnsigned { + get { + return standardCharTypeIsUnsigned; + } + set { + standardCharTypeIsUnsigned = value; + } + } + public bool Wchar_tIsBuiltIn { + get { + return wchar_tIsBuiltIn; + } + set { + wchar_tIsBuiltIn = value; + } + } + public bool ForceForScope { + get { + return forceForScope; + } + set { + forceForScope = value; + } + } + public bool AddRuntimeTypeInformation { + get { + return addRuntimeTypeInformation; + } + set { + addRuntimeTypeInformation = value; + } + } + public string GetCommandLineParameters() + { + StringBuilder result = new StringBuilder(); + + if (deactivateLanuageExtensions) { + result.Append("/Za\n"); + } + + if (standardCharTypeIsUnsigned) { + result.Append("/J\n"); + } + + if (wchar_tIsBuiltIn) { + result.Append("/Zc:wchar_t\n"); + } + + if (forceForScope) { + result.Append("/Zc:forScope\n"); + } + + if (addRuntimeTypeInformation) { + result.Append("/GR\n"); + } + + return result.ToString(); + } + } + #endregion + + #region PreCompiler Header Options + [XmlNodeName("PreCompiledHeaderCPPOptions")] + public class PreCompiledHeaderCPPOptions + { + [XmlAttribute("preCompiledHeader")] + public PreCompiledHeader preCompiledHeader = PreCompiledHeader.DontUsePre; + + [XmlAttribute("headerFile")] + public string headerFile = "Stdafx.H"; + + [ConvertToRelativePath()] + [XmlAttribute("preCompiledHeaderFile")] + public string preCompiledHeaderFile = ""; + + public PreCompiledHeader PreCompiledHeader { + get { + return preCompiledHeader; + } + set { + preCompiledHeader = value; + } + } + public string HeaderFile { + get { + return headerFile; + } + set { + headerFile = value; + } + } + public string PreCompiledHeaderFile + { + get + { + return preCompiledHeaderFile; + } + set + { + preCompiledHeaderFile = value; + } + } + + private void AppendHeaderFile(StringBuilder result) + { + if (IsNotEmpty(headerFile)) { + result.Append("\""); + result.Append(headerFile); + result.Append("\""); + } + result.Append("\n"); + } + + public string GetCreatePreCompiledHeaderParameter() + { + StringBuilder result = new StringBuilder(); + result.Append("/Yc"); + AppendHeaderFile(result); + + if (IsNotEmpty(preCompiledHeaderFile)) { + AppendOption(result, "/Fp", preCompiledHeaderFile); + } + + return result.ToString(); + } + + public bool PreCompileHeader { + get { + return preCompiledHeader == PreCompiledHeader.Create || + preCompiledHeader == PreCompiledHeader.Use; + } + } + + public string GetCommandLineParameters() + { + StringBuilder result = new StringBuilder(); + switch (preCompiledHeader) { + case PreCompiledHeader.DontUsePre: + result.Append("/Y-\n"); + break; + case PreCompiledHeader.Create: + case PreCompiledHeader.Use: + result.Append("/Yu"); + AppendHeaderFile(result); + break; + case PreCompiledHeader.CreateAutomatically: + result.Append("/YX"); + AppendHeaderFile(result); + break; + +// case PreCompiledHeader.Create: +// result.Append("/Yc"); +// AppendHeaderFile(result); +// break; +// case PreCompiledHeader.Use: +// result.Append("/Yu"); +// AppendHeaderFile(result); +// break; +// case PreCompiledHeader.CreateAutomatically: +// result.Append("/YX"); +// AppendHeaderFile(result); +// break; + } + + if (IsNotEmpty(preCompiledHeaderFile)) { + AppendOption(result, "/Fp", preCompiledHeaderFile); + } + + return result.ToString(); + } + } + #endregion + + #region Output File Options + [XmlNodeName("OutputFileCPPOptions")] + public class OutputFileCPPOptions + { + [XmlAttribute("extendSourceWithAttributes")] + public bool extendSourceWithAttributes = false; + + [XmlAttribute("assemblyOutput")] + public AssemblyOutput assemblyOutput = AssemblyOutput.NoList; + + [XmlAttribute("assemblerListSaveLocation")] + public string assemblerListSaveLocation = ""; + + [XmlAttribute("objectName")] + public string objectName = ""; + + [XmlAttribute("programDatabaseName")] + public string programDatabaseName = ""; + + public bool ExtendSourceWithAttributes { + get { + return extendSourceWithAttributes; + } + set { + extendSourceWithAttributes = value; + } + } + public AssemblyOutput AssemblyOutput { + get { + return assemblyOutput; + } + set { + assemblyOutput = value; + } + } + public string AssemblerListSaveLocation { + get { + return assemblerListSaveLocation; + } + set { + assemblerListSaveLocation = value; + } + } + public string ObjectName { + get { + return objectName; + } + set { + objectName = value; + } + } + public string ProgramDatabaseName { + get { + return programDatabaseName; + } + set { + programDatabaseName = value; + } + } + public string GetCommandLineParameters() + { + StringBuilder result = new StringBuilder(); + + if (extendSourceWithAttributes) { + result.Append("/Fx\n"); + } + + switch (assemblyOutput) { + case AssemblyOutput.ListAssembly: + result.Append("/FA\n"); + break; + case AssemblyOutput.ListAssemblyWithCode: + result.Append("/FAc\n"); + break; + case AssemblyOutput.ListAssemblyWithCodeAndSource: + result.Append("/FAcs\n"); + break; + case AssemblyOutput.ListAssemblyWithSource: + result.Append("/FAs\n"); + break; + case AssemblyOutput.NoList: + break; + } + + if (IsNotEmpty(assemblerListSaveLocation)) + { + AppendOption(result, "/Fa", assemblerListSaveLocation); + } + + if (IsNotEmpty(objectName)) + { + AppendOption(result, "/Fo", objectName); + } + + if (IsNotEmpty(programDatabaseName)) + { + AppendOption(result, "/Fd", programDatabaseName); + } + return result.ToString(); + } + } + #endregion + + #region Information Search Options + [XmlNodeName("InformationSearchCPPOptions")] + public class InformationSearchCPPOptions + { + [XmlAttribute("activateBrowseInformation")] + public bool activateBrowseInformation = false; + + [XmlAttribute("browseFile")] + public string browseFile = ""; + + public bool ActivateBrowseInformation { + get { + return activateBrowseInformation; + } + set { + activateBrowseInformation = value; + } + } + public string BrowseFile { + get { + return browseFile; + } + set { + browseFile = value; + } + } + public string GetCommandLineParameters() + { + StringBuilder result = new StringBuilder(); + if (activateBrowseInformation) { + result.Append("/FR"); + if (IsNotEmpty(browseFile)) + { + result.Append(browseFile); + } + result.Append("\n"); + } + return result.ToString(); + } + } + #endregion + + #region Extended Options + [XmlNodeName("ExtendedCPPOptions")] + public class ExtendedCPPOptions + { + [XmlAttribute("callingConvention")] + public CallingConvention callingConvention = CallingConvention.__cdecl; + + [XmlAttribute("compileType")] + public CompileType compileType = CompileType.CPP; + + [XmlAttribute("surpressedWarnings")] + public string surpressedWarnings = ""; + + [XmlAttribute("forcedIncludes")] + public string forcedIncludes = ""; + + [XmlAttribute("forcedUsings")] + public string forcedUsings = ""; + + [XmlAttribute("showIncludes")] + public bool showIncludes = false; + + [XmlAttribute("overridePreProcessorDirectives")] + public string overridePreProcessorDirectives = ""; + + [XmlAttribute("overrideAllPreProcessorDirectives")] + public bool overrideAllPreProcessorDirectives = false; + + public CallingConvention CallingConvention { + get { + return callingConvention; + } + set { + callingConvention = value; + } + } + public CompileType CompileType { + get { + return compileType; + } + set { + compileType = value; + } + } + public string SurpressedWarnings { + get { + return surpressedWarnings; + } + set { + surpressedWarnings = value; + } + } + public string ForcedIncludes { + get { + return forcedIncludes; + } + set { + forcedIncludes = value; + } + } + public string ForcedUsings { + get { + return forcedUsings; + } + set { + forcedUsings = value; + } + } + public bool ShowIncludes { + get { + return showIncludes; + } + set { + showIncludes = value; + } + } + public string OverridePreProcessorDirectives { + get { + return overridePreProcessorDirectives; + } + set { + overridePreProcessorDirectives = value; + } + } + public bool OverrideAllPreProcessorDirectives { + get { + return overrideAllPreProcessorDirectives; + } + set { + overrideAllPreProcessorDirectives = value; + } + } + public string GetCommandLineParameters() + { + StringBuilder result = new StringBuilder(); + switch (CallingConvention) { + case CallingConvention.__cdecl: + result.Append("/Gd\n"); + break; + case CallingConvention.__fastcall: + result.Append("/Gr\n"); + break; + case CallingConvention.__stdcall: + result.Append("/Gz\n"); + break; + } + + switch (CompileType) { + case CompileType.C: + result.Append("/TC\n"); + break; + case CompileType.CPP: + result.Append("/TP\n"); + break; + case CompileType.Standard: + break; + } + + if (IsNotEmpty(surpressedWarnings)) + { + AppendList(result, "/wd", surpressedWarnings); + } + + if (IsNotEmpty(forcedIncludes)) + { + AppendList(result, "/FI", forcedIncludes, true); + } + + if (IsNotEmpty(forcedUsings)) + { + AppendList(result, "/FU", forcedUsings, true); + } + + if (showIncludes) + { + result.Append("/showIncludes\n"); + } + + if (overrideAllPreProcessorDirectives) + { + result.Append("/u\n"); + } + else + { + if (IsNotEmpty(overridePreProcessorDirectives)) + { + AppendList(result, "/U", overridePreProcessorDirectives); + } + } + + return result.ToString(); + } + } + #endregion + + #region General Linker Options + [XmlNodeName("GeneralLinkerOptions")] + public class GeneralLinkerOptions : LocalizedObject + { + [XmlAttribute("outputFile")] + [ConvertToRelativePath()] + public string outputFile = "a.exe"; + + [XmlAttribute("showLinkerStatus")] + public ShowLinkerStatus showLinkerStatus = ShowLinkerStatus.Unselected; + + [XmlAttribute("version")] + public string version = ""; + + [XmlAttribute("incrementalLinking")] + public IncrementalLinking incrementalLinking = IncrementalLinking.Standard; + + [XmlAttribute("surpressStartLogo")] + public bool surpressStartLogo = false; + + [XmlAttribute("additionalLinkerOptions")] + public string additionalLinkerOptions = ""; + +// [XmlAttribute("ignoreImportLibrary")] +// public bool ignoreImportLibrary = true; + +// [XmlAttribute("registerOutput")] +// public bool registerOutput = false; + + [XmlAttribute("additionalLibraryDirectories")] + public string additionalLibraryDirectories = ""; + + public string GetCommandLineParameters() + { + StringBuilder result = new StringBuilder(); +// result.Append("/OUT:");result.Append(outputFile);result.Append("\n"); + switch (ShowLinkerStatus) { + case ShowLinkerStatus.ShowAll: + result.Append("/VERBOSE\n"); + break; + case ShowLinkerStatus.ShowSome: + result.Append("/VERBOSE:LIB\n"); + break; + + } + if (IsNotEmpty(version)) { + result.Append("/VERSION:").Append(version).Append("\n"); + } + + switch (IncrementalLinking) { + case IncrementalLinking.Standard: + break; + case IncrementalLinking.No: + result.Append("/INCREMENTAL:NO\n"); + break; + case IncrementalLinking.Yes: + result.Append("/INCREMENTAL\n"); + break; + } + + if (SurpressStartLogo) { + result.Append("/NOLOGO\n"); + } + + if (IsNotEmpty(AdditionalLibraryDirectories)) { + AppendList(result, "/LIBPATH:", AdditionalLibraryDirectories, true); + } + result.Append(additionalLinkerOptions); + result.Append("\n"); + return result.ToString(); + } + + [LocalizedProperty("Output File", + Description = "Specifies the name of the output file. (/OUT:[file])")] + public string OutputFile { + get { + return outputFile; + } + set { + outputFile = value; + } + } + + [DefaultValue(ShowLinkerStatus.Unselected)] + [LocalizedProperty("Show Status", + Description = "Shows detailed progress status. (/VERBOSE, /VERBOSE:LIB)")] + public ShowLinkerStatus ShowLinkerStatus { + get { + return showLinkerStatus; + } + set { + showLinkerStatus = value; + } + } + + [DefaultValue("")] + [LocalizedProperty("Version", + Description = "Use this value as the version number in created image header. (/VERSION:[version])")] + public string Version { + get { + return version; + } + set { + version = value; + } + } + + [DefaultValue(IncrementalLinking.Standard)] + [LocalizedProperty("Enable Incremental Linking", + Description = "Enables incremental linking. (/INCREMENTAL, /INCREMENTAL:NO)")] + public IncrementalLinking IncrementalLinking { + get { + return incrementalLinking; + } + set { + incrementalLinking = value; + } + } + + [DefaultValue(false)] + [LocalizedProperty("Surpress Startup Logo", + Description = "Surpress the display of the startup logo and information messages. (/NOLOGO)")] + public bool SurpressStartLogo { + get { + return surpressStartLogo; + } + set { + surpressStartLogo = value; + } + } + +// [DefaultValue(true)] +// [LocalizedProperty("Ignore Import Library", +// Description = "Specifies that the import library generated by this configuration should not be imported into dependent projects.")] +// public bool IgnoreImportLibrary { +// get { +// return ignoreImportLibrary; +// } +// set { +// ignoreImportLibrary = value; +// } +// } + +// [LocalizedProperty("Register Output", +// Description = "Specifies whether to register the primary output of this build.")] +// public bool RegisterOutput { +// get { +// return registerOutput; +// } +// set { +// registerOutput = value; +// } +// } + + [DefaultValue("")] + [LocalizedProperty("Additional Library Directories", + Description = "Specifies one or more semi-colon delimited additonal paths to search for libraries. (/LIBPATH:[path])")] + public string AdditionalLibraryDirectories { + get { + return additionalLibraryDirectories; + } + set { + additionalLibraryDirectories = value; + } + } + + [DefaultValue("")] + [LocalizedProperty("Additional Linker Options", + Description = "Specifies additional options given to the linker.")] + public string AdditionalLinkerOptions { + get { + return additionalLinkerOptions; + } + set { + additionalLinkerOptions = value; + } + } + + + } + #endregion + + #region Input Linker Options + [XmlNodeName("InputLinkerOptions")] + public class InputLinkerOptions + { + [XmlAttribute("additionalDependencies")] + public string additionalDependencies = ""; + + [XmlAttribute("ignoreStandardLibrary")] + public bool ignoreStandardLibrary = false; + + [XmlAttribute("ignoreLibrary")] + public string ignoreLibrary = ""; + + [XmlAttribute("moduleDefinition")] + public string moduleDefinition = ""; + + [XmlAttribute("addModuleToAssembly")] + public string addModuleToAssembly = ""; + + [XmlAttribute("embedResourceToAssembly")] + public string embedResourceToAssembly = ""; + + [XmlAttribute("forcedSymbolLinks")] + public string forcedSymbolLinks = ""; + + [XmlAttribute("laterLoadedDLLs")] + public string laterLoadedDLLs = ""; + + public string GetCommandLineParameters() + { + StringBuilder result = new StringBuilder(); + if (ignoreStandardLibrary) + { + result.Append("/NODEFAULTLIB\n"); + } + else + { + if (IsNotEmpty(ignoreLibrary)) + { + AppendList(result, "/NODEFAULTLIB:", ignoreLibrary); + } + } + if (IsNotEmpty(additionalDependencies)) + { + AppendList(result, "", additionalDependencies); + } + if (IsNotEmpty(moduleDefinition)) + { + result.Append("/DEF:"); + result.Append(moduleDefinition); + result.Append("\n"); + } + if (IsNotEmpty(addModuleToAssembly)) + { + AppendList(result, "/ASSEMBLYMODULE:", addModuleToAssembly); + } + if (IsNotEmpty(embedResourceToAssembly)) + { + AppendList(result, "/ASSEMBLYRESOURCE:", embedResourceToAssembly); + } + if (IsNotEmpty(forcedSymbolLinks)) + { + AppendList(result, "/INCLUDE:", forcedSymbolLinks); + } + if (IsNotEmpty(laterLoadedDLLs)) + { + AppendList(result, "/DELAYLOAD:", laterLoadedDLLs); + } + return result.ToString(); + } + + public string AdditionalDependencies { + get { + return additionalDependencies; + } + set { + additionalDependencies = value; + } + } + + public bool IgnoreStandardLibrary { + get { + return ignoreStandardLibrary; + } + set { + ignoreStandardLibrary = value; + } + } + public string IgnoreLibrary { + get { + return ignoreLibrary; + } + set { + ignoreLibrary = value; + } + } + public string ModuleDefinition { + get { + return moduleDefinition; + } + set { + moduleDefinition = value; + } + } + public string AddModuleToAssembly { + get { + return addModuleToAssembly; + } + set { + addModuleToAssembly = value; + } + } + public string EmbedResourceToAssembly { + get { + return embedResourceToAssembly; + } + set { + embedResourceToAssembly = value; + } + } + public string ForcedSymbolLinks { + get { + return forcedSymbolLinks; + } + set { + forcedSymbolLinks = value; + } + } + public string LaterLoadedDLLs { + get { + return laterLoadedDLLs; + } + set { + laterLoadedDLLs = value; + } + } + + } + #endregion + + #region Debug Linker Options + [XmlNodeName("DebugLinkerOptions")] + public class DebugLinkerOptions + { + [XmlAttribute("generateDebugInfo")] + public bool generateDebugInfo = false; + + [XmlAttribute("generatedProgramDatabase")] + public string generatedProgramDatabase = ""; + + [XmlAttribute("removePrivateSymbols")] + public string removePrivateSymbols = ""; + + [XmlAttribute("generateMapFile")] + public bool generateMapFile = false; + + [XmlAttribute("mapFile")] + public string mapFile = ""; + + [XmlAttribute("mapExport")] + public bool mapExport = false; + + [XmlAttribute("mapLines")] + public bool mapLines = false; + + [XmlAttribute("debuggableAssembly")] + public DebuggableAssembly debuggableAssembly; + + public bool GenerateDebugInfo { + get { + return generateDebugInfo; + } + set { + generateDebugInfo = value; + } + } + public string GeneratedProgramDatabase { + get { + return generatedProgramDatabase; + } + set { + generatedProgramDatabase = value; + } + } + public string RemovePrivateSymbols { + get { + return removePrivateSymbols; + } + set { + removePrivateSymbols = value; + } + } + public bool GenerateMapFile { + get { + return generateMapFile; + } + set { + generateMapFile = value; + } + } + public string MapFile { + get { + return mapFile; + } + set { + mapFile = value; + } + } + public bool MapExport { + get { + return mapExport; + } + set { + mapExport = value; + } + } + public bool MapLines { + get { + return mapLines; + } + set { + mapLines = value; + } + } + public DebuggableAssembly DebuggableAssembly { + get { + return debuggableAssembly; + } + set { + debuggableAssembly = value; + } + } + public string GetCommandLineParameters() + { + StringBuilder result = new StringBuilder(); + + if (generateDebugInfo) + { + result.Append("/DEBUG\n"); + } + + if (IsNotEmpty(generatedProgramDatabase)) + { + result.Append("/PDB:"); + result.Append(generatedProgramDatabase); + result.Append("\n"); + } + + if (IsNotEmpty(removePrivateSymbols)) + { + result.Append("/PDBSTRIPPED:"); + result.Append(removePrivateSymbols); + result.Append("\n"); + } + + if (generateMapFile) + { + result.Append("/MAP"); + if (IsNotEmpty(mapFile)) + { + result.Append(":"); + result.Append(mapFile); + } + result.Append("\n"); + + } + + if (mapExport) + { + result.Append("/MAPINFO:EXPORTS\n"); + } + + if (mapLines) + { + result.Append("/MAPINFO:LINES\n"); + } + + switch (debuggableAssembly) { + case DebuggableAssembly.DontEmitDebuggable: + break; + case DebuggableAssembly.DisableDebugToRuntimEnableOptimization: + result.Append("/ASSEMBLYDEBUG:DISABLE\n"); + break; + case DebuggableAssembly.EnableDebugToRuntimeDisableOptimization: + result.Append("/ASSEMBLYDEBUG\n"); + break; + } + + return result.ToString(); + } + + } + #endregion + + #region System Linker Options + [XmlNodeName("SystemLinkerOptions")] + public class SystemLinkerOptions + { + [XmlAttribute("linkerSubSystem")] + public LinkerSubSystem linkerSubSystem = LinkerSubSystem.Unselected; + + [XmlAttribute("heapAllocationSize")] + public int heapAllocationSize = 0; + + [XmlAttribute("heapCommitSize")] + public int heapCommitSize = 0; + + [XmlAttribute("stackAllocationSize")] + public int stackAllocationSize = 0; + + [XmlAttribute("stackCommitSize")] + public int stackCommitSize= 0; + + [XmlAttribute("activateBigAddresses")] + public ActivateBigAddresses activateBigAddresses = ActivateBigAddresses.Standard; + + [XmlAttribute("terminalServer")] + public TerminalServer terminalServer = TerminalServer.Standard; + + [XmlAttribute("runFromCDROM")] + public bool runFromCDROM = false; + + [XmlAttribute("runFromNetwork")] + public bool runFromNetwork = false; + + public LinkerSubSystem LinkerSubSystem { + get { + return linkerSubSystem; + } + set { + linkerSubSystem = value; + } + } + public int HeapAllocationSize { + get { + return heapAllocationSize; + } + set { + heapAllocationSize = value; + } + } + public int HeapCommitSize { + get { + return heapCommitSize; + } + set { + heapCommitSize = value; + } + } + public int StackAllocationSize { + get { + return stackAllocationSize; + } + set { + stackAllocationSize = value; + } + } + public int StackCommitSize { + get { + return stackCommitSize; + } + set { + stackCommitSize = value; + } + } + public ActivateBigAddresses ActivateBigAddresses { + get { + return activateBigAddresses; + } + set { + activateBigAddresses = value; + } + } + public TerminalServer TerminalServer { + get { + return terminalServer; + } + set { + terminalServer = value; + } + } + public bool RunFromCDROM { + get { + return runFromCDROM; + } + set { + runFromCDROM = value; + } + } + public bool RunFromNetwork { + get { + return runFromNetwork; + } + set { + runFromNetwork = value; + } + } + public string GetCommandLineParameters() + { + StringBuilder result = new StringBuilder(); + + switch (LinkerSubSystem) { + case LinkerSubSystem.Console: + result.Append("/SUBSYSTEM:CONSOLE\n"); + break; + case LinkerSubSystem.Unselected: + break; + case LinkerSubSystem.Windows: + result.Append("/SUBSYSTEM:WINDOWS\n"); + break; + } + + if (heapAllocationSize > 0) + { + result.Append("/HEAP:"); + result.Append(heapAllocationSize); + if (heapCommitSize > 0) + { + result.Append(","); + result.Append(heapCommitSize); + } + result.Append("\n"); + } + + if (stackAllocationSize > 0) + { + result.Append("/STACK:"); + result.Append(stackAllocationSize); + if (stackCommitSize > 0) + { + result.Append(","); + result.Append(stackCommitSize); + } + result.Append("\n"); + } + + switch (ActivateBigAddresses) { + case ActivateBigAddresses.NoSupport: + result.Append("/LARGEADDRESSAWARE:NO\n"); + break; + case ActivateBigAddresses.Standard: + break; + case ActivateBigAddresses.Supported: + result.Append("/LARGEADDRESSAWARE\n"); + break; + } + + switch (TerminalServer) { + case TerminalServer.Bound: + result.Append("/TSAWARE\n"); + break; + case TerminalServer.NotBound: + result.Append("/TSAWARE:NO\n"); + break; + case TerminalServer.Standard: + break; + } + + if (runFromCDROM) + { + result.Append("/SWAPRUN:CD\n"); + } + + if (runFromNetwork) + { + result.Append("/SWAPRUN:NET\n"); + } + + return result.ToString(); + } + + } + #endregion + + + public bool PreCompileHeader { + get { + return preCompiledHeaderCPPOptions.PreCompileHeader; + } + } + + public string GetPreCompiledHeaderOptions() + { + return generalCPPOptions.GetCommandLineParameters() + + optimizeCPPOptions.GetCommandLineParameters() + + preProcessorCPPOptions.GetCommandLineParameters() + + codeGenerationCPPOptions.GetCommandLineParameters() + + languageCPPOptions.GetCommandLineParameters() + + preCompiledHeaderCPPOptions.GetCreatePreCompiledHeaderParameter() + + outputFileCPPOptions.GetCommandLineParameters() + + informationSearchCPPOptions.GetCommandLineParameters() + + extendedCPPOptions.GetCommandLineParameters(); + } + + public string GetCompilerOptions() + { + return generalCPPOptions.GetCommandLineParameters() + + optimizeCPPOptions.GetCommandLineParameters() + + preProcessorCPPOptions.GetCommandLineParameters() + + codeGenerationCPPOptions.GetCommandLineParameters() + + languageCPPOptions.GetCommandLineParameters() + + preCompiledHeaderCPPOptions.GetCommandLineParameters() + + outputFileCPPOptions.GetCommandLineParameters() + + informationSearchCPPOptions.GetCommandLineParameters() + + extendedCPPOptions.GetCommandLineParameters(); + } + + public string GetLinkerOptions() + { + return generalLinkerOptions.GetCommandLineParameters() + + inputLinkerOptions.GetCommandLineParameters() + + debugLinkerOptions.GetCommandLineParameters() + + systemLinkerOptions.GetCommandLineParameters(); + } + + public string GetLinkerOptionsForCompiler() + { + StringBuilder result = new StringBuilder(); + foreach (string val in GetLinkerOptions().Split('\n')) + { + result.Append(val); + result.Append("\n"); + } + return result.ToString(); + } + + public GeneralCPPOptions generalCPPOptions = new GeneralCPPOptions(); + public OptimizeCPPOptions optimizeCPPOptions = new OptimizeCPPOptions(); + public PreProcessorCPPOptions preProcessorCPPOptions = new PreProcessorCPPOptions(); + public CodeGenerationCPPOptions codeGenerationCPPOptions = new CodeGenerationCPPOptions(); + public LanguageCPPOptions languageCPPOptions = new LanguageCPPOptions(); + public PreCompiledHeaderCPPOptions preCompiledHeaderCPPOptions = new PreCompiledHeaderCPPOptions(); + public OutputFileCPPOptions outputFileCPPOptions = new OutputFileCPPOptions(); + public InformationSearchCPPOptions informationSearchCPPOptions = new InformationSearchCPPOptions(); + public ExtendedCPPOptions extendedCPPOptions = new ExtendedCPPOptions(); + + public GeneralLinkerOptions generalLinkerOptions = new GeneralLinkerOptions(); + public InputLinkerOptions inputLinkerOptions = new InputLinkerOptions(); + public DebugLinkerOptions debugLinkerOptions = new DebugLinkerOptions(); + public SystemLinkerOptions systemLinkerOptions = new SystemLinkerOptions(); + + MiscCPPOptions miscCPPOptions = new MiscCPPOptions(); + + public override string OutputDirectory { + get { + return miscCPPOptions.outputDirectory; + } + set { + miscCPPOptions.outputDirectory = value; + } + } + + public string OutputFile { + get { + return generalLinkerOptions.OutputFile; + } + set { + generalLinkerOptions.OutputFile = value; + } + } + + public string IntermediateDirectory { + get { + return miscCPPOptions.intermediateDirectory; + } + set { + miscCPPOptions.intermediateDirectory = value; + } + } + + public ConfigurationType ConfigurationType { + get { + return miscCPPOptions.configurationType; + } + set { + miscCPPOptions.configurationType = value; + } + } + + public bool UseManagedExtensions { + get { + return miscCPPOptions.useManagedExtensions; + } + set { + miscCPPOptions.useManagedExtensions = value; + } + } + + public string AdditionalCompilerOptions { + get { + return miscCPPOptions.additionalCompilerOptions; + } + set { + miscCPPOptions.additionalCompilerOptions = value; + } + } + +// public CPPCompilerParameters(string[] additionalCompilerOptions) +// { +// this.AdditionalCompilerOptions = additionalCompilerOptions; +// } + + public CPPCompilerParameters() + { + } + + public CPPCompilerParameters(string name) + { + this.name = name; + + } + } +} diff --git a/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/Project/CPPNetProject.cs b/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/Project/CPPNetProject.cs new file mode 100644 index 0000000000..57c47f7f88 --- /dev/null +++ b/src/AddIns/BackendBindings/CPPNetBinding/Project/Src/Project/CPPNetProject.cs @@ -0,0 +1,61 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Collections; +using System.Diagnostics; +using System.ComponentModel; +using System.Xml; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Internal.Templates; + +namespace CPPBinding +{ + /// + /// This class describes a C Sharp project and it compilation options. + /// + public class CPPProject : AbstractProject + { + public override string ProjectType { + get { + return CPPLanguageBinding.LanguageName; + } + } + + public CPPProject() + { + } + + public override IConfiguration CreateConfiguration() + { + return new CPPCompilerParameters(); + } + + public CPPProject(ProjectCreateInformation info, XmlElement projectOptions) + { + if (info != null) { + Name = info.ProjectName; + Configurations.Add(CreateConfiguration("Debug")); + Configurations.Add(CreateConfiguration("Release")); + + foreach (CPPCompilerParameters parameter in Configurations) { + parameter.OutputDirectory = info.BinPath + Path.DirectorySeparatorChar + parameter.Name; + parameter.IntermediateDirectory = info.BinPath + Path.DirectorySeparatorChar + parameter.Name; + parameter.OutputAssembly = Name; + if (projectOptions != null) { + if (projectOptions.Attributes["ConfigurationType"] != null) { + parameter.ConfigurationType = (ConfigurationType)Enum.Parse(typeof(ConfigurationType), projectOptions.Attributes["ConfigurationType"].InnerText); + } + } + parameter.OutputFile = parameter.OutputDirectory + Path.DirectorySeparatorChar + Name + (parameter.ConfigurationType == ConfigurationType.Dll ? ".dll" : ".exe"); + } + } + } + } +} diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin new file mode 100644 index 0000000000..307072752e --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj new file mode 100644 index 0000000000..2e035f9a31 --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj @@ -0,0 +1,110 @@ + + + Debug + AnyCPU + 8.0.41115 + 2.0 + {1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} + CSharpBinding + Library + 4 + False + False + OnSuccessfulBuild + Library + + + True + True + True + True + ..\..\..\..\..\AddIns\AddIns\BackendBindings\CSharpBinding\ + True + + + True + True + True + True + ..\..\..\..\..\AddIns\AddIns\BackendBindings\CSharpBinding\ + False + + + + + + + + + + + + + + + + + + + UserControl + + + UserControl + + + UserControl + + + UserControl + + + UserControl + + + UserControl + + + UserControl + + + + + + + + {2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} + ICSharpCode.TextEditor + False + + + {3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} + NRefactory + False + + + {2748AD25-9C63-4E12-877B-4DCE96FBED54} + ICSharpCode.SharpDevelop + False + + + {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} + ICSharpCode.Core + False + + + + + + + + + + + True + + + + + + + \ No newline at end of file diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj.user b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj.user new file mode 100644 index 0000000000..9cfbe798d4 --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj.user @@ -0,0 +1,11 @@ + + + ..\..\..\..\..\bin\SharpDevelop.exe + + + + 8.0.41115 + ShowAllFiles + 0 + + \ No newline at end of file diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Configuration/AssemblyInfo.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Configuration/AssemblyInfo.cs new file mode 100644 index 0000000000..583fac7b1f --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Configuration/AssemblyInfo.cs @@ -0,0 +1,32 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following +// attributes. +// +// change them to the information which is associated with the assembly +// you compile. + +[assembly: AssemblyTitle("C#Binding")] +[assembly: AssemblyDescription("C# language binding for #develop")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("www.icsharpcode.net")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("(c) 2004 Mike Krueger")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has following format : +// +// Major.Minor.Build.Revision +// +// You can specify all values by your own or you can build default build and revision +// numbers with the '*' character (the default): + +[assembly: AssemblyVersion("2.0.0.1")] + +// The following attributes specify the key for the sign of your assembly. See the +// .NET Framework documentation for more information about signing. +// This is not required, if you don't want signing let these attributes like they're. +[assembly: AssemblyDelaySign(false)] +[assembly: AssemblyKeyFile("")] diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/AdvancedBuildOptionsDialog.xfrm b/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/AdvancedBuildOptionsDialog.xfrm new file mode 100644 index 0000000000..ecc4feaf68 --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/AdvancedBuildOptionsDialog.xfrm @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/ApplicationSettings.xfrm b/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/ApplicationSettings.xfrm new file mode 100644 index 0000000000..769fc5ec89 --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/ApplicationSettings.xfrm @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/BuildEvents.xfrm b/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/BuildEvents.xfrm new file mode 100644 index 0000000000..61223c2808 --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/BuildEvents.xfrm @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/BuildOptions.xfrm b/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/BuildOptions.xfrm new file mode 100644 index 0000000000..243d8737d9 --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/BuildOptions.xfrm @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/DebugOptions.xfrm b/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/DebugOptions.xfrm new file mode 100644 index 0000000000..b1f7bf7319 --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/DebugOptions.xfrm @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/Publish.xfrm b/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/Publish.xfrm new file mode 100644 index 0000000000..d32a0042f6 --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/Publish.xfrm @@ -0,0 +1,250 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/ReferencePaths.xfrm b/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/ReferencePaths.xfrm new file mode 100644 index 0000000000..46c7d351a3 --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/ReferencePaths.xfrm @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/Signing.xfrm b/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/Signing.xfrm new file mode 100644 index 0000000000..7526bc0631 --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/Signing.xfrm @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpAmbience.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpAmbience.cs new file mode 100644 index 0000000000..a636617a76 --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpAmbience.cs @@ -0,0 +1,592 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.Text; + +using ICSharpCode.SharpDevelop.Dom; +using ICSharpCode.Core; + +namespace ICSharpCode.Core +{ + public class CSharpAmbience : AbstractAmbience + { + static string[,] typeConversionList = new string[,] { + {"System.Void", "void"}, + {"System.Object", "object"}, + {"System.Boolean", "bool"}, + {"System.Byte", "byte"}, + {"System.SByte", "sbyte"}, + {"System.Char", "char"}, + {"System.Enum", "enum"}, + {"System.Int16", "short"}, + {"System.Int32", "int"}, + {"System.Int64", "long"}, + {"System.UInt16", "ushort"}, + {"System.UInt32", "uint"}, + {"System.UInt64", "ulong"}, + {"System.Single", "float"}, + {"System.Double", "double"}, + {"System.Decimal", "decimal"}, + {"System.String", "string"} + }; + + static Hashtable typeConversionTable = new Hashtable(); + + public static Hashtable TypeConversionTable { + get { + return typeConversionTable; + } + } + + static CSharpAmbience() + { + for (int i = 0; i < typeConversionList.GetLength(0); ++i) { + typeConversionTable[typeConversionList[i, 0]] = typeConversionList[i, 1]; + } + } + + bool ModifierIsSet(ModifierEnum modifier, ModifierEnum query) + { + return (modifier & query) == query; + } + + public override string Convert(ModifierEnum modifier) + { + if (ShowAccessibility) { + if (ModifierIsSet(modifier, ModifierEnum.Public)) { + return "public "; + } else if (ModifierIsSet(modifier, ModifierEnum.Private)) { + return "private "; + } else if (ModifierIsSet(modifier, ModifierEnum.ProtectedAndInternal)) { + return "protected internal "; + } else if (ModifierIsSet(modifier, ModifierEnum.ProtectedOrInternal)) { + return "internal protected "; + } else if (ModifierIsSet(modifier, ModifierEnum.Internal)) { + return "internal "; + } else if (ModifierIsSet(modifier, ModifierEnum.Protected)) { + return "protected "; + } + } + + return string.Empty; + } + + string GetModifier(IDecoration decoration) + { + string ret = ""; + + if (IncludeHTMLMarkup) { + ret += ""; + } + + if (decoration.IsStatic) { + ret += "static "; + } else if (decoration.IsFinal) { + ret += "final "; + } else if (decoration.IsVirtual) { + ret += "virtual "; + } else if (decoration.IsOverride) { + ret += "override "; + } else if (decoration.IsNew) { + ret += "new "; + } + + if (IncludeHTMLMarkup) { + ret += ""; + } + + return ret; + } + + + public override string Convert(IClass c) + { + StringBuilder builder = new StringBuilder(); + + builder.Append(Convert(c.Modifiers)); + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (ShowModifiers) { + if (c.IsSealed) { + switch (c.ClassType) { + case ClassType.Delegate: + case ClassType.Struct: + case ClassType.Enum: + break; + + default: + builder.Append("sealed "); + break; + } + } else if (c.IsAbstract && c.ClassType != ClassType.Interface) { + builder.Append("abstract "); + } + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (ShowModifiers) { + switch (c.ClassType) { + case ClassType.Delegate: + builder.Append("delegate"); + break; + case ClassType.Class: + builder.Append("class"); + break; + case ClassType.Struct: + builder.Append("struct"); + break; + case ClassType.Interface: + builder.Append("interface"); + break; + case ClassType.Enum: + builder.Append("enum"); + break; + } + builder.Append(' '); + } + if (c.ClassType == ClassType.Delegate && c.Methods.Count > 0) { + foreach(IMethod m in c.Methods) { + if (m.Name != "Invoke") continue; + + builder.Append(Convert(m.ReturnType)); + builder.Append(' '); + } + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (UseFullyQualifiedMemberNames) { + builder.Append(c.FullyQualifiedName); + } else { + builder.Append(c.Name); + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (c.ClassType == ClassType.Delegate) { + builder.Append(" ("); + if (IncludeHTMLMarkup) builder.Append("
      "); + + foreach(IMethod m in c.Methods) { + if (m.Name != "Invoke") continue; + + for (int i = 0; i < m.Parameters.Count; ++i) { + if (IncludeHTMLMarkup) builder.Append("   "); + + builder.Append(Convert(m.Parameters[i])); + if (i + 1 < m.Parameters.Count) builder.Append(", "); + + if (IncludeHTMLMarkup) builder.Append("
      "); + } + } + builder.Append(')'); + + } else if (ShowInheritanceList) { + if (c.BaseTypes.Count > 0) { + builder.Append(" : "); + for (int i = 0; i < c.BaseTypes.Count; ++i) { + builder.Append(c.BaseTypes[i]); + if (i + 1 < c.BaseTypes.Count) { + builder.Append(", "); + } + } + } + } + + if (IncludeBodies) { + builder.Append("\n{"); + } + + return builder.ToString(); + } + + public override string ConvertEnd(IClass c) + { + return "}"; + } + + public override string Convert(IField field) + { + StringBuilder builder = new StringBuilder(); + + builder.Append(Convert(field.Modifiers)); + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (ShowModifiers) { + if (field.IsStatic && field.IsLiteral) { + builder.Append("const "); + } else if (field.IsStatic) { + builder.Append("static "); + } + + if (field.IsReadonly) { + builder.Append("readonly "); + } + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (field.ReturnType != null && ShowReturnType) { + builder.Append(Convert(field.ReturnType)); + builder.Append(' '); + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (UseFullyQualifiedMemberNames) { + builder.Append(field.FullyQualifiedName); + } else { + builder.Append(field.Name); + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (IncludeBodies) builder.Append(";"); + + return builder.ToString(); + } + + public override string Convert(IProperty property) + { + StringBuilder builder = new StringBuilder(); + + builder.Append(Convert(property.Modifiers)); + + if (ShowModifiers) { + builder.Append(GetModifier(property)); + } + + if (property.ReturnType != null && ShowReturnType) { + builder.Append(Convert(property.ReturnType)); + builder.Append(' '); + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (UseFullyQualifiedMemberNames) { + builder.Append(property.FullyQualifiedName); + } else { + builder.Append(property.Name); + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (property.Parameters.Count > 0) { + builder.Append("("); + if (IncludeHTMLMarkup) builder.Append("
      "); + + for (int i = 0; i < property.Parameters.Count; ++i) { + if (IncludeHTMLMarkup) builder.Append("   "); + builder.Append(Convert(property.Parameters[i])); + if (i + 1 < property.Parameters.Count) { + builder.Append(", "); + } + if (IncludeHTMLMarkup) builder.Append("
      "); + } + + builder.Append(')'); + } + + if (IncludeBodies) { + builder.Append(" { "); + + if (property.CanGet) { + builder.Append("get; "); + } + if (property.CanSet) { + builder.Append("set; "); + } + + builder.Append(" } "); + } + + return builder.ToString(); + } + + public override string Convert(IEvent e) + { + StringBuilder builder = new StringBuilder(); + + builder.Append(Convert(e.Modifiers)); + + if (ShowModifiers) { + builder.Append(GetModifier(e)); + } + + if (e.ReturnType != null && ShowReturnType) { + builder.Append(Convert(e.ReturnType)); + builder.Append(' '); + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (UseFullyQualifiedMemberNames) { + builder.Append(e.FullyQualifiedName); + } else { + builder.Append(e.Name); + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (IncludeBodies) builder.Append(";"); + + return builder.ToString(); + } + + public override string Convert(IIndexer m) + { + StringBuilder builder = new StringBuilder(); + builder.Append(Convert(m.Modifiers)); + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (ShowModifiers) { + if (m.IsStatic) { + builder.Append("static "); + } + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (m.ReturnType != null && ShowReturnType) { + builder.Append(Convert(m.ReturnType)); + builder.Append(' '); + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (UseFullyQualifiedMemberNames) { + builder.Append(m.FullyQualifiedName); + } else { + builder.Append(m.Name); + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + builder.Append("this["); + if (IncludeHTMLMarkup) builder.Append("
      "); + + for (int i = 0; i < m.Parameters.Count; ++i) { + if (IncludeHTMLMarkup) builder.Append("   "); + builder.Append(Convert(m.Parameters[i])); + if (i + 1 < m.Parameters.Count) { + builder.Append(", "); + } + if (IncludeHTMLMarkup) builder.Append("
      "); + } + + builder.Append(']'); + + if (IncludeBodies) builder.Append(";"); + + return builder.ToString(); + } + + public override string Convert(IMethod m) + { + StringBuilder builder = new StringBuilder(); + builder.Append(Convert(m.Modifiers)); + + if (ShowModifiers) { + builder.Append(GetModifier(m)); + } + + if (m.ReturnType != null && ShowReturnType) { + builder.Append(Convert(m.ReturnType)); + builder.Append(' '); + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (m.IsConstructor) { + if (m.DeclaringType != null) { + builder.Append(m.DeclaringType.Name); + } else { + builder.Append(m.Name); + } + } else { + if (UseFullyQualifiedMemberNames) { + builder.Append(m.FullyQualifiedName); + } else { + builder.Append(m.Name); + } + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + builder.Append("("); + if (IncludeHTMLMarkup) builder.Append("
      "); + + for (int i = 0; i < m.Parameters.Count; ++i) { + if (IncludeHTMLMarkup) builder.Append("   "); + builder.Append(Convert(m.Parameters[i])); + if (i + 1 < m.Parameters.Count) { + builder.Append(", "); + } + if (IncludeHTMLMarkup) builder.Append("
      "); + } + + builder.Append(')'); + + if (IncludeBodies) { + if (m.DeclaringType != null) { + if (m.DeclaringType.ClassType == ClassType.Interface) { + builder.Append(";"); + } else { + builder.Append(" {"); + } + } else { + builder.Append(" {"); + } + } + return builder.ToString(); + } + + public override string ConvertEnd(IMethod m) + { + return "}"; + } + + public override string Convert(IReturnType returnType) + { + if (returnType == null) { + return String.Empty; + } + StringBuilder builder = new StringBuilder(); + + bool linkSet = false; + + if (UseLinkArrayList) { +// TODO: #Assembly dependance: +// SharpAssemblyReturnType ret = returnType as SharpAssemblyReturnType; +// if (ret != null) { +// if (ret.UnderlyingClass != null) { +// builder.Append("
      "); +// linkSet = true; +// } +// } + } + + if (returnType.FullyQualifiedName != null && typeConversionTable[returnType.FullyQualifiedName] != null) { + builder.Append(typeConversionTable[returnType.FullyQualifiedName].ToString()); + } else { + if (UseFullyQualifiedNames) { + builder.Append(returnType.FullyQualifiedName); + } else { + builder.Append(returnType.Name); + } + } + + if (linkSet) { + builder.Append(""); + } + + for (int i = 0; i < returnType.PointerNestingLevel; ++i) { + builder.Append('*'); + } + + for (int i = 0; i < returnType.ArrayCount; ++i) { + builder.Append('['); + for (int j = 1; j < returnType.ArrayDimensions[i]; ++j) { + builder.Append(','); + } + builder.Append(']'); + } + + return builder.ToString(); + } + + public override string Convert(IParameter param) + { + StringBuilder builder = new StringBuilder(); + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (param.IsRef) { + builder.Append("ref "); + } else if (param.IsOut) { + builder.Append("out "); + } else if (param.IsParams) { + builder.Append("params "); + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + builder.Append(Convert(param.ReturnType)); + + if (ShowParameterNames) { + builder.Append(' '); + builder.Append(param.Name); + } + return builder.ToString(); + } + + public override string WrapAttribute(string attribute) + { + return "[" + attribute + "]"; + } + + public override string WrapComment(string comment) + { + return "// " + comment; + } + + public override string GetIntrinsicTypeName(string dotNetTypeName) + { + if (typeConversionTable[dotNetTypeName] != null) { + return (string)typeConversionTable[dotNetTypeName]; + } + return dotNetTypeName; + } + + } +} diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpBindingExecutionManager.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpBindingExecutionManager.cs new file mode 100644 index 0000000000..0a1e315903 --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpBindingExecutionManager.cs @@ -0,0 +1,85 @@ +//// +//// +//// +//// +//// +//// +// +//using System; +//using System.IO; +//using System.Diagnostics; +//using System.Collections; +//using System.Reflection; +//using System.Resources; +//using System.Windows.Forms; +//using System.Xml; +//using System.CodeDom.Compiler; +//using System.Threading; +// +//using ICSharpCode.SharpDevelop.Project; +//using ICSharpCode.SharpDevelop.Gui; +//using ICSharpCode.Core; +// +//namespace CSharpBinding +//{ +// /// +// /// This class describes the main functionalaty of a language codon +// /// +// public class CSharpBindingExecutionManager +// { +// public void Execute(string filename, bool debug) +// { +// } +// +// public void Execute(IProject project, bool debug) +// { +// CSharpCompilerParameters parameters = (CSharpCompilerParameters)project.ActiveConfiguration; +// +// +// string directory = FileUtility.GetDirectoryNameWithSeparator(((CSharpCompilerParameters)project.ActiveConfiguration).OutputDirectory); +// string exe = ((CSharpCompilerParameters)project.ActiveConfiguration).OutputAssembly + ".exe"; +// string args = ((CSharpCompilerParameters)project.ActiveConfiguration).CommandLineParameters; +// +// +// bool customStartup = false; +// ProcessStartInfo psi; +// if (parameters.ExecuteScript != null && parameters.ExecuteScript.Length > 0) { +// customStartup = true; +// psi = new ProcessStartInfo("\"" + parameters.ExecuteScript + "\"", args); +// } else { +// if (parameters.CompileTarget == CompileTarget.Library) { +// +// MessageService.ShowError("${res:BackendBindings.ExecutionManager.CantExecuteDLLError}"); +// return; +// } +// +// string runtimeStarter = String.Empty; +// +// switch (parameters.NetRuntime) { +// case NetRuntime.Mono: +// runtimeStarter = "mono "; +// break; +// case NetRuntime.MonoInterpreter: +// runtimeStarter = "mint "; +// break; +// } +// +// if (parameters.CompileTarget != CompileTarget.WinExe && parameters.PauseConsoleOutput) { +// psi = new ProcessStartInfo(Environment.GetEnvironmentVariable("ComSpec"), "/c " + runtimeStarter + "\"" + directory + exe + "\" " + args + " & pause"); +// } else { +// psi = new ProcessStartInfo(runtimeStarter + "\"" + directory + exe + "\""); +// psi.Arguments = args; +// } +// } +// +// psi.WorkingDirectory = Path.GetDirectoryName(directory); +// psi.UseShellExecute = false; +// DebuggerService DebuggerService = (DebuggerService)ServiceManager.Services.GetService(typeof(DebuggerService)); +// if (debug && !customStartup) { +// DebuggerService.Start(Path.Combine(directory, exe), directory, args); +// } else { +// DebuggerService.StartWithoutDebugging(psi); +// } +// } +// } +//} diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs new file mode 100644 index 0000000000..faad1c6bd2 --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs @@ -0,0 +1,90 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Diagnostics; +using System.Collections; +using System.Reflection; +using System.Resources; +using System.Windows.Forms; +using System.Xml; +using System.CodeDom.Compiler; +using System.Threading; + +using ICSharpCode.SharpDevelop.Project; +using ICSharpCode.SharpDevelop.Internal.Templates; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace CSharpBinding +{ + public class CSharpLanguageBinding : ILanguageBinding + { + public const string LanguageName = "C#"; + + public string Language { + get { + return LanguageName; + } + } + + #region routines for single file compilation + public bool CanCompile(string fileName) + { + Debug.Assert(fileName != null); + + string ext = Path.GetExtension(fileName); + if (ext == null) { + return false; + } + return ext.ToUpper() == ".CS"; + } + + public string GetCompiledOutputName(string fileName) + { + Debug.Assert(CanCompile(fileName)); + + return Path.ChangeExtension(fileName, ".exe"); + } + + public CompilerResults CompileFile(string fileName) + { + Debug.Assert(CanCompile(fileName)); + + // TODO: Implement me! + return null; + } + + public void Execute(string fileName, bool debug) + { + string exe = GetCompiledOutputName(fileName); + + + if (debug) { + DebuggerService.Start(exe, Path.GetDirectoryName(exe), ""); + } else { + ProcessStartInfo psi = new ProcessStartInfo(Environment.GetEnvironmentVariable("ComSpec"), "/c " + "\"" + exe + "\"" + " & pause"); + psi.WorkingDirectory = Path.GetDirectoryName(exe); + psi.UseShellExecute = false; + + DebuggerService.StartWithoutDebugging(psi); + } + } + #endregion + + public IProject LoadProject(string fileName, string projectName) + { + return new CSharpProject(fileName, projectName); + } + + public IProject CreateProject(ProjectCreateInformation info, XmlElement projectOptions) + { + return new CSharpProject(info); + } + } +} diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs new file mode 100644 index 0000000000..23b6c8261b --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs @@ -0,0 +1,757 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Collections; +using System.Diagnostics; +using System.Drawing; +using System.Text; + +using ICSharpCode.SharpDevelop.Dom; +using ICSharpCode.TextEditor; +using ICSharpCode.TextEditor.Actions; +using ICSharpCode.TextEditor.Document; +using ICSharpCode.Core; + +namespace CSharpBinding.FormattingStrategy +{ + /// + /// This class handles the auto and smart indenting in the textbuffer while + /// you type. + /// + public class CSharpFormattingStrategy : DefaultFormattingStrategy + { + public CSharpFormattingStrategy() + { + } + + #region SmartIndentLine + /// + /// Define CSharp specific smart indenting for a line :) + /// + protected override int SmartIndentLine(TextArea textArea, int lineNr) + { + if (lineNr <= 0) { + return AutoIndentLine(textArea, lineNr); + } + + string oldText = textArea.Document.GetText(textArea.Document.GetLineSegment(lineNr)); + + DocumentAccessor acc = new DocumentAccessor(textArea.Document, lineNr, lineNr); + + IndentationSettings set = new IndentationSettings(); + set.IndentString = Tab.GetIndentationString(textArea.Document); + IndentationReformatter r = new IndentationReformatter(); + + r.Reformat(acc, set); + + if (acc.ChangedLines > 0) + textArea.Document.UndoStack.UndoLast(2); + + string t = acc.Text; + if (t.Length == 0) { + // use AutoIndentation for new lines in comments / verbatim strings. + return AutoIndentLine(textArea, lineNr); + } else { + int newIndentLength = t.Length - t.TrimStart().Length; + int oldIndentLength = oldText.Length - oldText.TrimStart().Length; + if (oldIndentLength != newIndentLength && lineNr == textArea.Caret.Position.Y) { + // fix cursor position if indentation was changed + int newX = textArea.Caret.Position.X - oldIndentLength + newIndentLength; + textArea.Caret.Position = new Point(Math.Max(newX, 0), lineNr); + } + return newIndentLength; + } + } + + /// + /// This function sets the indentlevel in a range of lines. + /// + public override void IndentLines(TextArea textArea, int begin, int end) + { + if (textArea.Document.TextEditorProperties.IndentStyle != IndentStyle.Smart) { + base.IndentLines(textArea, begin, end); + return; + } + int cursorPos = textArea.Caret.Position.Y; + int oldIndentLength = 0; + + if (cursorPos >= begin && cursorPos <= end) + oldIndentLength = GetIndentation(textArea, cursorPos).Length; + + IndentationSettings set = new IndentationSettings(); + set.IndentString = Tab.GetIndentationString(textArea.Document); + IndentationReformatter r = new IndentationReformatter(); + DocumentAccessor acc = new DocumentAccessor(textArea.Document, begin, end); + r.Reformat(acc, set); + + if (cursorPos >= begin && cursorPos <= end) { + int newIndentLength = GetIndentation(textArea, cursorPos).Length; + if (oldIndentLength != newIndentLength) { + // fix cursor position if indentation was changed + int newX = textArea.Caret.Position.X - oldIndentLength + newIndentLength; + textArea.Caret.Position = new Point(Math.Max(newX, 0), cursorPos); + } + } + + if (acc.ChangedLines > 0) + textArea.Document.UndoStack.UndoLast(acc.ChangedLines); + } + #endregion + + #region Private functions + bool NeedCurlyBracket(string text) + { + int curlyCounter = 0; + + bool inString = false; + bool inChar = false; + bool verbatim = false; + + bool lineComment = false; + bool blockComment = false; + + for (int i = 0; i < text.Length; ++i) { + switch (text[i]) { + case '\r': + case '\n': + lineComment = false; + inChar = false; + if (!verbatim) inString = false; + break; + case '/': + if (blockComment) { + Debug.Assert(i > 0); + if (text[i - 1] == '*') { + blockComment = false; + } + } + if (!inString && !inChar && i + 1 < text.Length) { + if (!blockComment && text[i + 1] == '/') { + lineComment = true; + } + if (!lineComment && text[i + 1] == '*') { + blockComment = true; + } + } + break; + case '"': + if (!(inChar || lineComment || blockComment)) { + if (inString && verbatim) { + if (i + 1 < text.Length && text[i + 1] == '"') { + ++i; // skip escaped quote + inString = false; // let the string go on + } else { + verbatim = false; + } + } else if (!inString && i > 0 && text[i - 1] == '@') { + verbatim = true; + } + inString = !inString; + } + break; + case '\'': + if (!(inString || lineComment || blockComment)) { + inChar = !inChar; + } + break; + case '{': + if (!(inString || inChar || lineComment || blockComment)) { + ++curlyCounter; + } + break; + case '}': + if (!(inString || inChar || lineComment || blockComment)) { + --curlyCounter; + } + break; + case '\\': + if ((inString && !verbatim) || inChar) + ++i; // skip next character + break; + } + } + return curlyCounter > 0; + } + + bool IsInsideStringOrComment(TextArea textArea, LineSegment curLine, int cursorOffset) + { + // scan cur line if it is inside a string or single line comment (//) + bool insideString = false; + char stringstart = ' '; + bool verbatim = false; // true if the current string is verbatim (@-string) + char c = ' '; + char lastchar; + for (int i = curLine.Offset; i < cursorOffset; ++i) { + lastchar = c; + c = textArea.Document.GetCharAt(i); + if (insideString) { + if (c == stringstart) { + if (verbatim && i + 1 < cursorOffset && textArea.Document.GetCharAt(i + 1) == '"') + ++i; // skip escaped character + else + insideString = false; + } else if (c == '\\' && !verbatim) { + ++i; // skip escaped character + } + } else if (c == '/' && i + 1 < cursorOffset && textArea.Document.GetCharAt(i + 1) == '/') { + return true; + } else if (c == '"' || c == '\'') { + stringstart = c; + insideString = true; + verbatim = (c == '"') && (lastchar == '@'); + } + } + return insideString; + } + + bool IsInsideDocumentationComment(TextArea textArea, LineSegment curLine, int cursorOffset) + { + for (int i = curLine.Offset; i < cursorOffset; ++i) { + char ch = textArea.Document.GetCharAt(i); + if (ch == '"') { + // parsing strings correctly is too complicated (see above), + // but I don't now any case where a doc comment is after a string... + return false; + } + if (ch == '/' && i + 2 < cursorOffset && textArea.Document.GetCharAt(i + 1) == '/' && textArea.Document.GetCharAt(i + 2) == '/') { + return true; + } + } + return false; + } + + + + bool IsBeforeRegion(TextArea textArea, IRegion region, int lineNr) + { + if (region == null) { + return false; + } + return region.BeginLine - 2 <= lineNr && lineNr <= region.BeginLine; + } + + object GetClassMember(TextArea textArea, int lineNr, IClass c) + { + if (IsBeforeRegion(textArea, c.Region, lineNr)) { + return c; + } + + foreach (IClass inner in c.InnerClasses) { + object o = GetClassMember(textArea, lineNr, inner); + if (o != null) { + return o; + } + } + + foreach (IField f in c.Fields) { + if (IsBeforeRegion(textArea, f.Region, lineNr)) { + return f; + } + } + foreach (IProperty p in c.Properties) { + if (IsBeforeRegion(textArea, p.Region, lineNr)) { + return p; + } + } + foreach (IIndexer i in c.Indexer) { + if (IsBeforeRegion(textArea, i.Region, lineNr)) { + return i; + } + } + foreach (IEvent e in c.Events) { + if (IsBeforeRegion(textArea, e.Region, lineNr)) { + return e; + } + } + foreach (IMethod m in c.Methods) { + if (IsBeforeRegion(textArea, m.Region, lineNr)) { + return m; + } + } + return null; + } + + object GetMember(TextArea textArea, int lineNr) + { + string fileName = textArea.MotherTextEditorControl.FileName; + if (fileName != null && fileName.Length > 0 ) { + string fullPath = Path.GetFullPath(fileName); + ParseInformation parseInfo = ParserService.GetParseInformation(fullPath); + if (parseInfo != null) { + ICompilationUnit currentCompilationUnit = (ICompilationUnit)parseInfo.BestCompilationUnit; + if (currentCompilationUnit != null) { + foreach (IClass c in currentCompilationUnit.Classes) { + object o = GetClassMember(textArea, lineNr, c); + if (o != null) { + return o; + } + } + } + } + } + return null; + } + #endregion + + #region FormatLine + public override int FormatLine(TextArea textArea, int lineNr, int cursorOffset, char ch) // used for comment tag formater/inserter + { + LineSegment curLine = textArea.Document.GetLineSegment(lineNr); + LineSegment lineAbove = lineNr > 0 ? textArea.Document.GetLineSegment(lineNr - 1) : null; + + //// local string for curLine segment + string curLineText=""; + if (ch == '/') { + curLineText = textArea.Document.GetText(curLine); + string lineAboveText = lineAbove == null ? "" : textArea.Document.GetText(lineAbove); + if (curLineText != null && curLineText.EndsWith("///") && (lineAboveText == null || !lineAboveText.Trim().StartsWith("///"))) { + string indentation = base.GetIndentation(textArea, lineNr); + object member = GetMember(textArea, lineNr); + if (member != null) { + StringBuilder sb = new StringBuilder(); + sb.Append(" \n"); + sb.Append(indentation); + sb.Append("/// \n"); + sb.Append(indentation); + sb.Append("/// "); + + if (member is IMethod) { + IMethod method = (IMethod)member; + if (method.Parameters != null && method.Parameters.Count > 0) { + for (int i = 0; i < method.Parameters.Count; ++i) { + sb.Append("\n"); + sb.Append(indentation); + sb.Append("/// "); + } + } + if (method.ReturnType != null && method.ReturnType.FullyQualifiedName != "System.Void") { + sb.Append("\n"); + sb.Append(indentation); + sb.Append("/// "); + } + } + textArea.Document.Insert(cursorOffset, sb.ToString()); + + textArea.Refresh(); + textArea.Caret.Position = textArea.Document.OffsetToPosition(cursorOffset + indentation.Length + "/// ".Length + " \n".Length); + return 0; + } + } + return 0; + } + if (ch != '\n' && ch != '>') { + if (IsInsideStringOrComment(textArea, curLine, cursorOffset)) { + return 0; + } + } + + switch (ch) { + case '>': + if (IsInsideDocumentationComment(textArea, curLine, cursorOffset)) { + curLineText = textArea.Document.GetText(curLine); + int column = textArea.Caret.Offset - curLine.Offset; + int index = Math.Min(column - 1, curLineText.Length - 1); + + while (index >= 0 && curLineText[index] != '<') { + --index; + if(curLineText[index] == '/') + return 0; // the tag was an end tag or already + } + + if (index > 0) { + StringBuilder commentBuilder = new StringBuilder(""); + for (int i = index; i < curLineText.Length && i < column && !Char.IsWhiteSpace(curLineText[i]); ++i) { + commentBuilder.Append(curLineText[ i]); + } + string tag = commentBuilder.ToString().Trim(); + if (!tag.EndsWith(">")) { + tag += ">"; + } + if (!tag.StartsWith("/")) { + textArea.Document.Insert(textArea.Caret.Offset, " 0) { + curLineText = textArea.Document.GetText(curLine); + } + + LineSegment nextLine = lineNr + 1 < textArea.Document.TotalNumberOfLines ? textArea.Document.GetLineSegment(lineNr + 1) : null; + string nextLineText = lineNr + 1 < textArea.Document.TotalNumberOfLines ? textArea.Document.GetText(nextLine) : ""; + + int addCursorOffset = 0; + + if (lineAbove.HighlightSpanStack != null && lineAbove.HighlightSpanStack.Count > 0) { + if (!((Span)lineAbove.HighlightSpanStack.Peek()).StopEOL) { // case for /* style comments + int index = lineAboveText.IndexOf("/*"); + if (index > 0) { + StringBuilder indentation = new StringBuilder(GetIndentation(textArea, lineNr - 1)); + for (int i = indentation.Length; i < index; ++ i) { + indentation.Append(' '); + } + //// adding curline text + textArea.Document.Replace(curLine.Offset, curLine.Length, indentation.ToString() + " * " + curLineText); + return indentation.Length + 3 + curLineText.Length; + } + + index = lineAboveText.IndexOf("*"); + if (index > 0) { + StringBuilder indentation = new StringBuilder(GetIndentation(textArea, lineNr - 1)); + for (int i = indentation.Length; i < index; ++ i) { + indentation.Append(' '); + } + //// adding curline if present + textArea.Document.Replace(curLine.Offset, curLine.Length, indentation.ToString() + "* " + curLineText); + return indentation.Length + 2 + curLineText.Length; + } + } else { // don't handle // lines, because they're only one lined comments + int indexAbove = lineAboveText.IndexOf("///"); + int indexNext = nextLineText.IndexOf("///"); + if (indexAbove > 0 && (indexNext != -1 || indexAbove + 4 < lineAbove.Length)) { + StringBuilder indentation = new StringBuilder(GetIndentation(textArea, lineNr - 1)); + for (int i = indentation.Length; i < indexAbove; ++ i) { + indentation.Append(' '); + } + //// adding curline text if present + textArea.Document.Replace(curLine.Offset, curLine.Length, indentation.ToString() + "/// " + curLineText); + textArea.Document.UndoStack.UndoLast(2); + return indentation.Length + 4 /*+ curLineText.Length*/; + } + + if (IsInString(lineAboveText, curLineText)) { + textArea.Document.Insert(lineAbove.Offset + lineAbove.Length, + "\" +"); + curLine = textArea.Document.GetLineSegment(lineNr); + textArea.Document.Insert(curLine.Offset, "\""); + textArea.Document.UndoStack.UndoLast(3); + addCursorOffset = 1; + } + } + } + int result = IndentLine(textArea, lineNr) + addCursorOffset; + if (textArea.TextEditorProperties.AutoInsertCurlyBracket) { + string oldLineText = TextUtilities.GetLineAsString(textArea.Document, lineNr - 1); + if (oldLineText.EndsWith("{")) { + if (NeedCurlyBracket(textArea.Document.TextContent)) { + textArea.Document.Insert(curLine.Offset + curLine.Length, "\n}"); + IndentLine(textArea, lineNr + 1); + } + } + } + return result; + } + return 0; + } + + bool IsInString(string start, string end) + { + bool inString = false; + for (int i = 0; i < start.Length; ++i) { + char c = start[i]; + if (c == '"') { + if (!inString && i > 0 && start[i - 1] == '@') + return false; // no string line break for verbatim strings + inString = !inString; + } + if (!inString && i > 0 && start[i - 1] == '/' && (c == '/' || c == '*')) + return false; + if (inString && start[i] == '\\') + ++i; + } + if (!inString) return false; + // we are possibly in a string, or a multiline string has just ended here + // check if the closing double quote is in end. + for (int i = 0; i < end.Length; ++i) { + char c = end[i]; + if (c == '"') { + if (!inString && i > 0 && start[i - 1] == '@') + return false; // no string line break for verbatim strings + inString = !inString; + } + if (!inString && i > 0 && start[i - 1] == '/' && (c == '/' || c == '*')) + break; + if (inString && start[i] == '\\') + ++i; + } + // return true if string was closed properly + return !inString; + } + #endregion + + #region SearchBracket helper functions + static int ScanLineStart(IDocument document, int offset) + { + for (int i = offset - 1; i > 0; --i) { + if (document.GetCharAt(i) == '\n') + return i + 1; + } + return 0; + } + + /// + /// Gets the type of code at offset.
      + /// 0 = Code,
      + /// 1 = Comment,
      + /// 2 = String
      + /// Block comments and multiline strings are not supported. + ///
      + static int GetStartType(IDocument document, int linestart, int offset) + { + bool inString = false; + bool inChar = false; + bool verbatim = false; + for(int i = linestart; i < offset; i++) { + switch (document.GetCharAt(i)) { + case '/': + if (!inString && !inChar && i + 1 < document.TextLength) { + if (document.GetCharAt(i + 1) == '/') { + return 1; + } + } + break; + case '"': + if (!inChar) { + if (inString && verbatim) { + if (i + 1 < document.TextLength && document.GetCharAt(i + 1) == '"') { + ++i; // skip escaped quote + inString = false; // let the string go on + } else { + verbatim = false; + } + } else if (!inString && i > 0 && document.GetCharAt(i - 1) == '@') { + verbatim = true; + } + inString = !inString; + } + break; + case '\'': + if (!inString) inChar = !inChar; + break; + case '\\': + if ((inString && !verbatim) || inChar) + ++i; // skip next character + break; + } + } + return (inString || inChar) ? 2 : 0; + } + #endregion + + #region SearchBracketBackward + public override int SearchBracketBackward(IDocument document, int offset, char openBracket, char closingBracket) + { + if (offset + 1 >= document.TextLength) return -1; + // this method parses a c# document backwards to find the matching bracket + + // first try "quick find" - find the matching bracket if there is no string/comment in the way + int quickResult = base.SearchBracketBackward(document, offset, openBracket, closingBracket); + if (quickResult >= 0) return quickResult; + + // we need to parse the line from the beginning, so get the line start position + int linestart = ScanLineStart(document, offset + 1); + + // we need to know where offset is - in a string/comment or in normal code? + // ignore cases where offset is in a block comment + int starttype = GetStartType(document, linestart, offset + 1); + if (starttype != 0) { + return -1; // start position is in a comment/string + } + + // I don't see any possibility to parse a C# document backwards... + // We have to do it forwards and push all bracket positions on a stack. + Stack bracketStack = new Stack(); + bool blockComment = false; + bool lineComment = false; + bool inChar = false; + bool inString = false; + bool verbatim = false; + + for(int i = 0; i <= offset; ++i) { + char ch = document.GetCharAt(i); + switch (ch) { + case '\r': + case '\n': + lineComment = false; + inChar = false; + if (!verbatim) inString = false; + break; + case '/': + if (blockComment) { + Debug.Assert(i > 0); + if (document.GetCharAt(i - 1) == '*') { + blockComment = false; + } + } + if (!inString && !inChar && i + 1 < document.TextLength) { + if (!blockComment && document.GetCharAt(i + 1) == '/') { + lineComment = true; + } + if (!lineComment && document.GetCharAt(i + 1) == '*') { + blockComment = true; + } + } + break; + case '"': + if (!(inChar || lineComment || blockComment)) { + if (inString && verbatim) { + if (i + 1 < document.TextLength && document.GetCharAt(i + 1) == '"') { + ++i; // skip escaped quote + inString = false; // let the string go + } else { + verbatim = false; + } + } else if (!inString && offset > 0 && document.GetCharAt(i - 1) == '@') { + verbatim = true; + } + inString = !inString; + } + break; + case '\'': + if (!(inString || lineComment || blockComment)) { + inChar = !inChar; + } + break; + case '\\': + if ((inString && !verbatim) || inChar) + ++i; // skip next character + break; + default : + if (ch == openBracket) { + if (!(inString || inChar || lineComment || blockComment)) { + bracketStack.Push(i); + } + } else if (ch == closingBracket) { + if (!(inString || inChar || lineComment || blockComment)) { + if (bracketStack.Count > 0) + bracketStack.Pop(); + } + } + break; + } + } + if (bracketStack.Count > 0) return (int)bracketStack.Pop(); + return -1; + } + #endregion + + #region SearchBracketForward + public override int SearchBracketForward(IDocument document, int offset, char openBracket, char closingBracket) + { + bool inString = false; + bool inChar = false; + bool verbatim = false; + + bool lineComment = false; + bool blockComment = false; + + if (offset < 0) return -1; + + // first try "quick find" - find the matching bracket if there is no string/comment in the way + int quickResult = base.SearchBracketForward(document, offset, openBracket, closingBracket); + if (quickResult >= 0) return quickResult; + + // we need to parse the line from the beginning, so get the line start position + int linestart = ScanLineStart(document, offset); + + // we need to know where offset is - in a string/comment or in normal code? + // ignore cases where offset is in a block comment + int starttype = GetStartType(document, linestart, offset); + if (starttype != 0) return -1; // start position is in a comment/string + + int brackets = 1; + + while (offset < document.TextLength) { + char ch = document.GetCharAt(offset); + switch (ch) { + case '\r': + case '\n': + lineComment = false; + inChar = false; + if (!verbatim) inString = false; + break; + case '/': + if (blockComment) { + Debug.Assert(offset > 0); + if (document.GetCharAt(offset - 1) == '*') { + blockComment = false; + } + } + if (!inString && !inChar && offset + 1 < document.TextLength) { + if (!blockComment && document.GetCharAt(offset + 1) == '/') { + lineComment = true; + } + if (!lineComment && document.GetCharAt(offset + 1) == '*') { + blockComment = true; + } + } + break; + case '"': + if (!(inChar || lineComment || blockComment)) { + if (inString && verbatim) { + if (offset + 1 < document.TextLength && document.GetCharAt(offset + 1) == '"') { + ++offset; // skip escaped quote + inString = false; // let the string go + } else { + verbatim = false; + } + } else if (!inString && offset > 0 && document.GetCharAt(offset - 1) == '@') { + verbatim = true; + } + inString = !inString; + } + break; + case '\'': + if (!(inString || lineComment || blockComment)) { + inChar = !inChar; + } + break; + case '\\': + if ((inString && !verbatim) || inChar) + ++offset; // skip next character + break; + default : + if (ch == openBracket) { + if (!(inString || inChar || lineComment || blockComment)) { + ++brackets; + } + } else if (ch == closingBracket) { + if (!(inString || inChar || lineComment || blockComment)) { + --brackets; + if (brackets == 0) { + return offset; + } + } + } + break; + } + ++offset; + } + return -1; + } + #endregion + } +} diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/DocumentAccessor.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/DocumentAccessor.cs new file mode 100644 index 0000000000..58e8610a57 --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/DocumentAccessor.cs @@ -0,0 +1,190 @@ +using System; +using System.Collections; +using System.IO; + +using ICSharpCode.TextEditor; +using ICSharpCode.TextEditor.Document; + +namespace CSharpBinding.FormattingStrategy +{ + /// + /// Interface used for the indentation class to access the document. + /// + public interface IDocumentAccessor + { + /// Gets if something was changed in the document. + bool Dirty { get; } + /// Gets if the current line is read only (because it is not in the + /// selected text region) + bool ReadOnly { get; } + /// Gets the number of the current line. + int LineNumber { get; } + /// Gets/Sets the text of the current line. + string Text { get; set; } + /// Advances to the next line. + bool Next(); + } + + #region DocumentAccessor + public class DocumentAccessor : IDocumentAccessor + { + IDocument doc; + + int minLine; + int maxLine; + int changedLines = 0; + + public DocumentAccessor(IDocument document) + { + doc = document; + this.minLine = 0; + this.maxLine = doc.TotalNumberOfLines - 1; + } + + public DocumentAccessor(IDocument document, int minLine, int maxLine) + { + doc = document; + this.minLine = minLine; + this.maxLine = maxLine; + } + + int num = -1; + bool dirty; + string text; + LineSegment line; + + public bool ReadOnly { + get { + return num < minLine; + } + } + + public bool Dirty { + get { + return dirty; + } + } + + public int LineNumber { + get { + return num; + } + } + + public int ChangedLines { + get { + return changedLines; + } + } + + bool lineDirty = false; + + public string Text { + get { return text; } + set { + if (num < minLine) return; + text = value; + dirty = true; + lineDirty = true; + } + } + + public bool Next() + { + if (lineDirty) { + doc.Replace(line.Offset, line.Length, text); + lineDirty = false; + ++changedLines; + } + ++num; + if (num > maxLine) return false; + line = doc.GetLineSegment(num); + text = doc.GetText(line); + return true; + } + } + #endregion + + #region FileAccessor + public class FileAccessor : IDisposable, IDocumentAccessor + { + public bool Dirty { + get { + return dirty; + } + } + + public bool ReadOnly { + get { + return false; + } + } + + FileStream f; + StreamReader r; + ArrayList lines = new ArrayList(); + bool dirty = false; + + System.Text.Encoding encoding; + + string filename; + public FileAccessor(string filename) + { + this.filename = filename; + f = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.None); + // TODO: Auto-detect encoding + encoding = System.Text.Encoding.GetEncoding("ISO-8859-1"); + r = new StreamReader(f, encoding); + } + + int num = 0; + + public int LineNumber { + get { return num; } + } + + + string text = ""; + + public string Text { + get { + return text; + } + set { + dirty = true; + text = value; + } + } + + public bool Next() + { + if (num > 0) { + lines.Add(text); + } + text = r.ReadLine(); + ++num; + return text != null; + } + + void IDisposable.Dispose() + { + Close(); + } + + public void Close() + { + r.Close(); + f.Close(); + if (dirty) { + f = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.None); + using (StreamWriter w = new StreamWriter(f, encoding)) { + foreach (string line in lines) { + w.WriteLine(line); + } + } + f.Close(); + } + } + } + #endregion +} diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/Indentation.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/Indentation.cs new file mode 100644 index 0000000000..bbd4b7d1e5 --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/Indentation.cs @@ -0,0 +1,375 @@ +using System; +using System.Collections; +using System.Text; + +namespace CSharpBinding.FormattingStrategy +{ + public class IndentationSettings + { + public string IndentString = "\t"; + } + + public class IndentationReformatter + { + public struct Block + { + public string OuterIndent; + public string InnerIndent; + public string LastWord; + public char Bracket; + public bool Continuation; + public bool OneLineBlock; + public int StartLine; + + public void Indent(IndentationSettings set) + { + Indent(set, set.IndentString); + } + + public void Indent(IndentationSettings set, string str) + { + OuterIndent = InnerIndent; + InnerIndent += str; + Continuation = false; + OneLineBlock = false; + LastWord = ""; + } + } + + StringBuilder wordBuilder; + Stack blocks; // blocks contains all blocks outside of the current + Block block; // block is the current block + + bool inString = false; + bool inChar = false; + bool verbatim = false; + bool escape = false; + + bool lineComment = false; + bool blockComment = false; + + char lastRealChar = ' '; // last non-comment char + + public void Reformat(IDocumentAccessor doc, IndentationSettings set) + { + Init(); + + while (doc.Next()) { + Step(doc, set); + } + } + + public void Init() + { + wordBuilder = new StringBuilder(); + blocks = new Stack(); + block = new Block(); + block.InnerIndent = ""; + block.OuterIndent = ""; + block.Bracket = '{'; + block.Continuation = false; + block.LastWord = ""; + block.OneLineBlock = false; + block.StartLine = 0; + + inString = false; + inChar = false; + verbatim = false; + escape = false; + + lineComment = false; + blockComment = false; + + lastRealChar = ' '; // last non-comment char + } + + public void Step(IDocumentAccessor doc, IndentationSettings set) + { + string line = doc.Text.TrimStart(); + + StringBuilder indent = new StringBuilder(); + if (line.Length == 0) { + // Special threatment for empty lines: + if (blockComment || (inString && verbatim)) + return; + indent.Append(block.InnerIndent); + if (block.OneLineBlock) + indent.Append(set.IndentString); + if (block.Continuation) + indent.Append(set.IndentString); + if (doc.Text != indent.ToString()) + doc.Text = indent.ToString(); + return; + } + + if (TrimEnd(doc)) + line = doc.Text.TrimStart(); + + Block oldBlock = block; + bool startInComment = blockComment; + bool startInString = (inString && verbatim); + + #region Parse char by char + lineComment = false; + inChar = false; + escape = false; + if (!verbatim) inString = false; + + lastRealChar = '\n'; + + char lastchar = ' '; + char c = ' '; + char nextchar = line[0]; + for (int i = 0; i < line.Length; i++) { + if (lineComment) break; // cancel parsing current line + + lastchar = c; + c = nextchar; + if (i + 1 < line.Length) + nextchar = line[i + 1]; + else + nextchar = '\n'; + + if (escape) { + escape = false; + continue; + } + + #region Check for comment/string chars + switch (c) { + case '/': + if (blockComment && lastchar == '*') + blockComment = false; + if (!inString && !inChar) { + if (!blockComment && nextchar == '/') + lineComment = true; + if (!lineComment && nextchar == '*') + blockComment = true; + } + break; + case '#': + if (!(inChar || blockComment || inString)) + lineComment = true; + break; + case '"': + if (!(inChar || lineComment || blockComment)) { + inString = !inString; + if (!inString && verbatim) { + if (nextchar == '"') { + escape = true; // skip escaped quote + inString = true; + } else { + verbatim = false; + } + } else if (inString && lastchar == '@') { + verbatim = true; + } + } + break; + case '\'': + if (!(inString || lineComment || blockComment)) { + inChar = !inChar; + } + break; + case '\\': + if ((inString && !verbatim) || inChar) + escape = true; // skip next character + break; + } + #endregion + + if (lineComment || blockComment || inString || inChar) { + if (wordBuilder.Length > 0) + block.LastWord = wordBuilder.ToString(); + wordBuilder.Length = 0; + continue; + } + + if (!Char.IsWhiteSpace(c) && c != '[' && c != '/') { + if (block.Bracket == '{') + block.Continuation = true; + } + + if (Char.IsLetterOrDigit(c)) { + wordBuilder.Append(c); + } else { + if (wordBuilder.Length > 0) + block.LastWord = wordBuilder.ToString(); + wordBuilder.Length = 0; + } + + #region Push/Pop the blocks + switch (c) { + case '{': + block.OneLineBlock = false; + blocks.Push(block); + block.StartLine = doc.LineNumber; + if (block.LastWord == "switch") + block.Indent(set, set.IndentString + set.IndentString); + else + block.Indent(set); + block.Bracket = '{'; + break; + case '}': + while (block.Bracket != '{') { + if (blocks.Count == 0) break; + block = (Block)blocks.Pop(); + } + if (blocks.Count == 0) break; + block = (Block)blocks.Pop(); + block.Continuation = false; + block.OneLineBlock = false; + break; + case '(': + case '[': + blocks.Push(block); + if (block.StartLine == doc.LineNumber) + block.InnerIndent = block.OuterIndent; + else + block.StartLine = doc.LineNumber; + block.Indent(set, + (oldBlock.OneLineBlock ? set.IndentString : "") + + (oldBlock.Continuation ? set.IndentString : "") + + new String(' ', i + 1)); + block.Bracket = c; + break; + case ')': + if (blocks.Count == 0) break; + if (block.Bracket == '(') { + block = (Block)blocks.Pop(); + if (IsSingleStatementKeyword(block.LastWord)) + block.Continuation = false; + } + break; + case ']': + if (blocks.Count == 0) break; + if (block.Bracket == '[') + block = (Block)blocks.Pop(); + break; + case ';': + case ',': + block.Continuation = false; + block.OneLineBlock = false; + break; + case ':': + if (block.LastWord == "case" || line.StartsWith("case ") || line.StartsWith(block.LastWord + ":")) { + block.Continuation = false; + block.OneLineBlock = false; + } + break; + } + + if (!Char.IsWhiteSpace(c)) { + // register this char as last char + lastRealChar = c; + } + #endregion + } + #endregion + + if (wordBuilder.Length > 0) + block.LastWord = wordBuilder.ToString(); + wordBuilder.Length = 0; + + if (startInString) return; + if (startInComment && line[0] != '*') return; + if (doc.Text.StartsWith("//\t")) + return; + + if (line[0] == '}') { + indent.Append(oldBlock.OuterIndent); + oldBlock.OneLineBlock = false; + oldBlock.Continuation = false; + } else { + indent.Append(oldBlock.InnerIndent); + } + + if (indent.Length > 0 && oldBlock.Bracket == '(' && line[0] == ')') { + indent.Remove(indent.Length - 1, 1); + } else if (indent.Length > 0 && oldBlock.Bracket == '[' && line[0] == ']') { + indent.Remove(indent.Length - 1, 1); + } + + if (line[0] == ':') { + oldBlock.Continuation = true; + } else if (lastRealChar == ':' && indent.Length >= set.IndentString.Length) { + if (block.LastWord == "case" || line.StartsWith("case ") || line.StartsWith(block.LastWord + ":")) + indent.Remove(indent.Length - set.IndentString.Length, set.IndentString.Length); + } else if (lastRealChar == ')') { + if (IsSingleStatementKeyword(block.LastWord)) { + block.OneLineBlock = true; + } + } else if (block.LastWord == "else" && lastRealChar == 'e') { + block.OneLineBlock = true; + block.Continuation = false; + } + + if (doc.ReadOnly) { + // We can't change the current line, but we should accept the existing + // indentation if possible (so if the current statement is not a multiline + // statement). + if (!oldBlock.Continuation && !oldBlock.OneLineBlock && + oldBlock.StartLine == block.StartLine && + block.StartLine < doc.LineNumber && lastRealChar != ':') { + // use indent StringBuilder to get the indentation of the current line + indent.Length = 0; + line = doc.Text; // get untrimmed line + for (int i = 0; i < line.Length; ++i) { + if (!Char.IsWhiteSpace(line[i])) + break; + indent.Append(line[i]); + } + block.InnerIndent = indent.ToString(); + } + return; + } + + if (line[0] != '{') { + if (line[0] != ')' && oldBlock.Continuation && oldBlock.Bracket == '{') + indent.Append(set.IndentString); + if (oldBlock.OneLineBlock) + indent.Append(set.IndentString); + } + + // this is only for blockcomment lines starting with *, + // all others keep their old indentation + if (startInComment) + indent.Append(' '); + + if (indent.Length != (doc.Text.Length - line.Length) || + !doc.Text.StartsWith(indent.ToString()) || + Char.IsWhiteSpace(doc.Text[indent.Length])) + { + doc.Text = indent.ToString() + line; + } + } + + bool IsSingleStatementKeyword(string keyword) { + switch (keyword) { + case "if": + case "for": + case "while": + case "do": + case "foreach": + case "using": + case "lock": + return true; + default: + return false; + } + } + + bool TrimEnd(IDocumentAccessor doc) + { + string line = doc.Text; + if (!Char.IsWhiteSpace(line[line.Length - 1])) return false; + + // one space after an empty comment is allowed + if (line.EndsWith("// ")) + return false; + + doc.Text = line.TrimEnd(); + return true; + } + } +} diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/ApplicationSettings.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/ApplicationSettings.cs new file mode 100644 index 0000000000..50193e5d51 --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/ApplicationSettings.cs @@ -0,0 +1,82 @@ +using System; +using System.Drawing; +using System.IO; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Internal.ExternalTool; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Project; + +namespace CSharpBinding.OptionPanels +{ + public class ApplicationSettings : AbstractOptionPanel + { + CSharpProject project; + + public ApplicationSettings() + { + } + + public override void LoadPanelContents() + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.ApplicationSettings.xfrm")); + this.project = (CSharpProject)((Properties)CustomizationObject).Get("Project"); + + ConnectBrowseButton("applicationIconBrowseButton", "applicationIconComboBox", "${res:SharpDevelop.FileFilter.Icons}|*.ico|${res:SharpDevelop.FileFilter.AllFiles}|*.*"); + + // TODO: Suitable file filter. + ConnectBrowseButton("win32ResourceFileBrowseButton", "win32ResourceFileComboBox"); + + Get("assemblyName").Text = project.AssemblyName; + Get("assemblyName").TextChanged += new EventHandler(RefreshOutputNameTextBox); + + Get("rootNamespace").Text = project.RootNamespace; + + Get("outputType").Items.Add(StringParser.Parse("${res:Dialog.Options.PrjOptions.Configuration.CompileTarget.Exe}")); + Get("outputType").Items.Add(StringParser.Parse("${res:Dialog.Options.PrjOptions.Configuration.CompileTarget.WinExe}")); + Get("outputType").Items.Add(StringParser.Parse("${res:Dialog.Options.PrjOptions.Configuration.CompileTarget.Library}")); + Get("outputType").Items.Add(StringParser.Parse("${res:Dialog.Options.PrjOptions.Configuration.CompileTarget.Module}")); + + Get("outputType").SelectedIndex = (int)project.OutputType; + Get("outputType").SelectedIndexChanged += new EventHandler(RefreshOutputNameTextBox); + + Get("startupObject").Text = project.StartupObject; + + Get("applicationIcon").Text = project.ApplicationIcon; + Get("applicationIcon").TextChanged += new EventHandler(ApplicationIconComboBoxTextChanged); + + Get("win32ResourceFile").Text = project.Win32Resource; + Get("projectFolder").Text = project.Directory; + Get("projectFile").Text = Path.GetFileName(project.FileName); + + RefreshOutputNameTextBox(null, EventArgs.Empty); + } + + public override bool StorePanelContents() + { + project.AssemblyName = Get("assemblyName").Text; + project.RootNamespace = Get("rootNamespace").Text; + project.OutputType = (OutputType)Get("outputType").SelectedIndex; + Console.WriteLine("Set output type to : " + project.OutputType); + project.StartupObject = Get("startupObject").Text; + project.ApplicationIcon = Get("applicationIcon").Text; + project.Win32Resource = Get("win32ResourceFile").Text; + project.Name = Path.GetFileNameWithoutExtension(Get("projectFile").Text); + return true; + } + + void RefreshOutputNameTextBox(object sender, EventArgs e) + { + Get("outputName").Text = Get("assemblyName").Text + MSBuildProject.GetExtension((OutputType)Get("outputType").SelectedIndex); + } + + void ApplicationIconComboBoxTextChanged(object sender, EventArgs e) + { + string applicationIcon = Get("applicationIcon").Text; + if (File.Exists(applicationIcon)) { + Get("applicationIcon").Image = Image.FromFile(applicationIcon); + } + } + } +} diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildEvents.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildEvents.cs new file mode 100644 index 0000000000..b706225025 --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildEvents.cs @@ -0,0 +1,44 @@ +using System; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Internal.ExternalTool; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; + +namespace CSharpBinding.OptionPanels +{ + public class BuildEvents : AbstractOptionPanel + { + CSharpProject project; + + public override void LoadPanelContents() + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.BuildEvents.xfrm")); + ConnectBrowseButton("preBuildEventBrowseButton", + "preBuildEventTextBox", + "${res:SharpDevelop.FileFilter.AllFiles}|*.*"); + ConnectBrowseButton("postBuildEventBrowseButton", + "postBuildEventTextBox", + "${res:SharpDevelop.FileFilter.AllFiles}|*.*"); + + this.project = (CSharpProject)((Properties)CustomizationObject).Get("Project"); + + Get("preBuildEvent").Text = project.PreBuildEvent; + Get("postBuildEvent").Text = project.PostBuildEvent; + + Get("runPostBuildEvent").Items.Add("Always"); + Get("runPostBuildEvent").Items.Add("On successful build"); + Get("runPostBuildEvent").Items.Add("When the build updates the project output"); + + Get("runPostBuildEvent").SelectedIndex = (int)project.RunPostBuildEvent; + } + + public override bool StorePanelContents() + { + project.PreBuildEvent = Get("preBuildEvent").Text; + project.PostBuildEvent = Get("postBuildEvent").Text; + project.RunPostBuildEvent = (RunPostBuildEvent)Get("runPostBuildEvent").SelectedIndex; + return true; + } + } +} diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptions.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptions.cs new file mode 100644 index 0000000000..9f91f008e2 --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/OptionPanels/BuildOptions.cs @@ -0,0 +1,148 @@ +using System; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Internal.ExternalTool; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Gui.XmlForms; + +namespace CSharpBinding.OptionPanels +{ + public class BuildOptions : AbstractOptionPanel + { + CSharpProject project; + + public BuildOptions() + { + } + + void ShowAdvancedOptions(object sender, EventArgs e) + { + using (AdvancedBuildOptionsDialog advancedBuildOptionsDialog = new AdvancedBuildOptionsDialog(project)) { + advancedBuildOptionsDialog.ShowDialog(WorkbenchSingleton.MainForm); + } + } + string Config = "Debug"; + string Platform = "AnyCPU"; + + public override void LoadPanelContents() + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.BuildOptions.xfrm")); + this.project = (CSharpProject)((Properties)CustomizationObject).Get("Project"); + + ConnectBrowseFolder("outputPathBrowseButton", "outputPathTextBox", "${res:Dialog.Options.PrjOptions.Configuration.FolderBrowserDescription}"); + Get
      + protected override int SmartIndentLine(TextArea textArea, int lineNr) + { + + doCasing = PropertyService.Get("VBBinding.TextEditor.EnableCasing", true); + IDocument document = textArea.Document; + if (lineNr <= 0) + return AutoIndentLine(textArea, lineNr); + LineSegment lineAbove = document.GetLineSegment(lineNr - 1); + string lineAboveText = document.GetText(lineAbove.Offset, lineAbove.Length).Trim(); + + LineSegment curLine = document.GetLineSegment(lineNr); + string oldLineText = document.GetText(curLine.Offset, curLine.Length); + string curLineText = oldLineText.Trim(); + + // remove comments + string texttoreplace = Regex.Replace(lineAboveText, "'.*$", "", RegexOptions.Singleline).Trim(); + // remove string content + foreach (Match match in Regex.Matches(texttoreplace, "\"[^\"]*?\"")) { + texttoreplace = texttoreplace.Remove(match.Index, match.Length).Insert(match.Index, new String('-', match.Length)); + } + + string curLineReplace = Regex.Replace(curLineText, "'.*$", "", RegexOptions.Singleline).Trim(); + // remove string content + foreach (Match match in Regex.Matches(curLineReplace, "\"[^\"]*?\"")) { + curLineReplace = curLineReplace.Remove(match.Index, match.Length).Insert(match.Index, new String('-', match.Length)); + } + + StringBuilder b = new StringBuilder(GetIndentation(textArea, lineNr - 1)); + + string indentString = Tab.GetIndentationString(document); + + if (texttoreplace.IndexOf(':') > 0) + texttoreplace = texttoreplace.Substring(0, texttoreplace.IndexOf(':')).TrimEnd(); + + bool matched = false; + foreach (VBStatement statement in statements) { + if (statement.IndentPlus == 0) continue; + if (Regex.IsMatch(curLineReplace, statement.EndRegex, RegexOptions.IgnoreCase)) { + for (int i = 0; i < statement.IndentPlus; ++i) { + RemoveIndent(b); + } + if (doCasing && !statement.EndStatement.EndsWith(" ")) + curLineText = statement.EndStatement; + matched = true; + } + if (Regex.IsMatch(texttoreplace, statement.StartRegex, RegexOptions.IgnoreCase)) { + for (int i = 0; i < statement.IndentPlus; ++i) { + b.Append(indentString); + } + matched = true; + } + if (matched) + break; + } + + if (lineNr >= 2) { + if (texttoreplace.EndsWith("_")) { + // Line continuation + char secondLastChar = ' '; + for (int i = texttoreplace.Length - 2; i >= 0; --i) { + secondLastChar = texttoreplace[i]; + if (!Char.IsWhiteSpace(secondLastChar)) + break; + } + if (secondLastChar != '>') { + // is not end of attribute + LineSegment line2Above = document.GetLineSegment(lineNr - 2); + string lineAboveText2 = document.GetText(line2Above.Offset, line2Above.Length).Trim(); + lineAboveText2 = Regex.Replace(lineAboveText2, "'.*$", "", RegexOptions.Singleline).Trim(); + if (!lineAboveText2.EndsWith("_")) { + b.Append(indentString); + } + } + } else { + LineSegment line2Above = document.GetLineSegment(lineNr - 2); + string lineAboveText2 = document.GetText(line2Above.Offset, line2Above.Length).Trim(); + lineAboveText2 = StripComment(lineAboveText2); + if (lineAboveText2.EndsWith("_")) { + char secondLastChar = ' '; + for (int i = texttoreplace.Length - 2; i >= 0; --i) { + secondLastChar = texttoreplace[i]; + if (!Char.IsWhiteSpace(secondLastChar)) + break; + } + if (secondLastChar != '>') + RemoveIndent(b); + } + } + } + + if (IsElseConstruct(curLineText)) + RemoveIndent(b); + + if (IsElseConstruct(lineAboveText)) + b.Append(indentString); + + int indentLength = b.Length; + b.Append(curLineText); + if (b.ToString() != oldLineText) + textArea.Document.Replace(curLine.Offset, curLine.Length, b.ToString()); + return indentLength; + } + + bool IsElseConstruct(string line) + { + string t = StripComment(line).ToLower(); + if (t.StartsWith("case ")) return true; + if (t == "else" || t.StartsWith("elseif ")) return true; + if (t == "catch" || t.StartsWith("catch ")) return true; + if (t == "finally") return true; + + return false; + } + + string StripComment(string text) + { + return Regex.Replace(text, "'.*$", "", RegexOptions.Singleline).Trim(); + } + + void RemoveIndent(StringBuilder b) + { + if (b.Length == 0) return; + if (b[b.Length - 1] == '\t') { + b.Remove(b.Length - 1, 1); + } else { + for (int j = 0; j < 4; ++j) { + if (b.Length == 0) return; + if (b[b.Length - 1] != ' ') + break; + b.Remove(b.Length - 1, 1); + } + } + } + + public override int FormatLine(TextArea textArea, int lineNr, int cursorOffset, char ch) + { + + doCasing = PropertyService.Get("VBBinding.TextEditor.EnableCasing", true); + doInsertion = PropertyService.Get("VBBinding.TextEditor.EnableEndConstructs", true); + + if (lineNr > 0) { + LineSegment curLine = textArea.Document.GetLineSegment(lineNr); + LineSegment lineAbove = lineNr > 0 ? textArea.Document.GetLineSegment(lineNr - 1) : null; + + string curLineText = textArea.Document.GetText(curLine.Offset, curLine.Length); + string lineAboveText = textArea.Document.GetText(lineAbove.Offset, lineAbove.Length); + + if (ch == '\n' && lineAboveText != null) { + int undoCount = 1; + + // remove comments + string texttoreplace = Regex.Replace(lineAboveText, "'.*$", "", RegexOptions.Singleline); + // remove string content + MatchCollection strmatches = Regex.Matches(texttoreplace, "\"[^\"]*?\"", RegexOptions.Singleline); + foreach (Match match in strmatches) { + texttoreplace = texttoreplace.Remove(match.Index, match.Length).Insert(match.Index, new String('-', match.Length)); + } + + if (doCasing) { + foreach (string keyword in keywords) { + string regex = "(?:\\W|^)(" + keyword + ")(?:\\W|$)"; + MatchCollection matches = Regex.Matches(texttoreplace, regex, RegexOptions.IgnoreCase | RegexOptions.Singleline); + foreach (Match match in matches) { + textArea.Document.Replace(lineAbove.Offset + match.Groups[1].Index, match.Groups[1].Length, keyword); + ++undoCount; + } + } + } + + if (doInsertion) { + foreach (VBStatement statement in statements) { + if (Regex.IsMatch(texttoreplace.Trim(), statement.StartRegex, RegexOptions.IgnoreCase)) { + string indentation = GetIndentation(textArea, lineNr - 1); + if (isEndStatementNeeded(textArea, statement, lineNr)) { + textArea.Document.Insert(textArea.Caret.Offset, "\n" + indentation + statement.EndStatement); + ++undoCount; + } + for (int i = 0; i < statement.IndentPlus; i++) { + indentation += Tab.GetIndentationString(textArea.Document); + } + + textArea.Document.Replace(curLine.Offset, curLine.Length, indentation + curLineText.Trim()); + textArea.Document.UndoStack.UndoLast(undoCount + 1); + return indentation.Length; + } + } + } + + + if (IsInString(lineAboveText)) { + if (IsFinishedString(curLineText)) { + textArea.Document.Insert(lineAbove.Offset + lineAbove.Length, + "\" & _"); + curLine = textArea.Document.GetLineSegment(lineNr); + textArea.Document.Insert(curLine.Offset, "\""); + + if (IsElseConstruct(lineAboveText)) + SmartIndentLine(textArea, lineNr - 1); + int result = SmartIndentLine(textArea, lineNr) + 1; + textArea.Document.UndoStack.UndoLast(undoCount + 3); + return result; + } else { + textArea.Document.Insert(lineAbove.Offset + lineAbove.Length, + "\""); + if (IsElseConstruct(lineAboveText)) + SmartIndentLine(textArea, lineNr - 1); + int result = SmartIndentLine(textArea, lineNr); + textArea.Document.UndoStack.UndoLast(undoCount + 2); + return result; + } + } else { + string indent = GetIndentation(textArea, lineNr - 1); + if (indent.Length > 0) { + string newLineText = indent + TextUtilities.GetLineAsString(textArea.Document, lineNr).Trim(); + curLine = textArea.Document.GetLineSegment(lineNr); + textArea.Document.Replace(curLine.Offset, curLine.Length, newLineText); + ++undoCount; + } + if (IsElseConstruct(lineAboveText)) + SmartIndentLine(textArea, lineNr - 1); + textArea.Document.UndoStack.UndoLast(undoCount); + return indent.Length; + } + } + } + return 0; + } + + bool IsInString(string start) + { + bool inString = false; + for (int i = 0; i < start.Length; i++) { + if (start[i] == '"') + inString = !inString; + if (!inString && start[i] == '\'') + return false; + } + return inString; + } + bool IsFinishedString(string end) + { + bool inString = true; + for (int i = 0; i < end.Length; i++) { + if (end[i] == '"') + inString = !inString; + if (!inString && end[i] == '\'') + break; + } + return !inString; + } + + bool isEndStatementNeeded(TextArea textArea, VBStatement statement, int lineNr) + { + int count = 0; + + for (int i = 0; i < textArea.Document.TotalNumberOfLines; i++) { + LineSegment line = textArea.Document.GetLineSegment(i); + string lineText = textArea.Document.GetText(line.Offset, line.Length).Trim(); + + if (lineText.StartsWith("'")) { + continue; + } + + if (Regex.IsMatch(lineText, statement.StartRegex, RegexOptions.IgnoreCase)) { + count++; + } else if (Regex.IsMatch(lineText, statement.EndRegex, RegexOptions.IgnoreCase)) { + count--; + } + } + return count > 0; + } + + class VBStatement + { + public string StartRegex = ""; + public string EndRegex = ""; + public string EndStatement = ""; + + public int IndentPlus = 0; + + public VBStatement() + { + } + + public VBStatement(string startRegex, string endRegex, string endStatement, int indentPlus) + { + StartRegex = startRegex; + EndRegex = endRegex; + EndStatement = endStatement; + IndentPlus = indentPlus; + } + } + + + #region SearchBracket + public override int SearchBracketBackward(IDocument document, int offset, char openBracket, char closingBracket) + { + bool inString = false; + char ch; + int brackets = -1; + for (int i = offset; i > 0; --i) { + ch = document.GetCharAt(i); + if (ch == openBracket && !inString) { + ++brackets; + if (brackets == 0) return i; + } else if (ch == closingBracket && !inString) { + --brackets; + } else if (ch == '"') { + inString = !inString; + } else if (ch == '\n') { + int lineStart = ScanLineStart(document, i); + if (lineStart >= 0) { // line could have a comment + inString = false; + for (int j = lineStart; j < i; ++j) { + ch = document.GetCharAt(j); + if (ch == '"') inString = !inString; + if (ch == '\'' && !inString) { + // comment found! + // Skip searching in the comment: + i = j; + break; + } + } + } + inString = false; + } + } + return -1; + } + + static int ScanLineStart(IDocument document, int offset) + { + bool hasComment = false; + for (int i = offset - 1; i > 0; --i) { + char ch = document.GetCharAt(i); + if (ch == '\n') { + if (!hasComment) return -1; + return i + 1; + } else if (ch == '\'') { + hasComment = true; + } + } + return 0; + } + + public override int SearchBracketForward(IDocument document, int offset, char openBracket, char closingBracket) + { + bool inString = false; + bool inComment = false; + int brackets = 1; + for (int i = offset; i < document.TextLength; ++i) { + char ch = document.GetCharAt(i); + if (ch == '\n') { + inString = false; + inComment = false; + } + if (inComment) continue; + if (ch == '"') inString = !inString; + if (inString) continue; + if (ch == '\'') { + inComment = true; + } else if (ch == openBracket) { + ++brackets; + } else if (ch == closingBracket) { + --brackets; + if (brackets == 0) return i; + } + } + return -1; + } + #endregion + } +} diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/CodeGenerationPanel.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/CodeGenerationPanel.cs new file mode 100644 index 0000000000..cb0c7060ef --- /dev/null +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/CodeGenerationPanel.cs @@ -0,0 +1,78 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Drawing; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Internal.ExternalTool; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace VBBinding +{ + public class CodeGenerationPanel : AbstractOptionPanel + { + VBCompilerParameters compilerParameters = null; + + + static + + public override bool ReceiveDialogMessage(DialogMessage message) + { + if (message == DialogMessage.OK) { + if (compilerParameters == null) { + return true; + } + + + + compilerParameters.DefineSymbols = ControlDictionary["symbolsTextBox"].Text; + compilerParameters.MainClass = ControlDictionary["mainClassTextBox"].Text; + compilerParameters.Imports = ControlDictionary["importsTextBox"].Text; + compilerParameters.RootNamespace = ControlDictionary["RootNamespaceTextBox"].Text; + + compilerParameters.Debugmode = ((CheckBox)ControlDictionary["generateDebugInformationCheckBox"]).Checked; + compilerParameters.Optimize = ((CheckBox)ControlDictionary["enableOptimizationCheckBox"]).Checked; + compilerParameters.GenerateOverflowChecks = ((CheckBox)ControlDictionary["generateOverflowChecksCheckBox"]).Checked; + compilerParameters.TreatWarningsAsErrors = ((CheckBox)ControlDictionary["warningsAsErrorsCheckBox"]).Checked; + + compilerParameters.OptionExplicit = ((CheckBox)ControlDictionary["optionExplicitCheckBox"]).Checked ; + compilerParameters.OptionStrict = ((CheckBox)ControlDictionary["optionStrictCheckBox"]).Checked; + } + return true; + } + + void SetValues(object sender, EventArgs e) + { + this.compilerParameters = (VBCompilerParameters)((Properties)CustomizationObject).Get("Config"); + + ControlDictionary["symbolsTextBox"].Text = compilerParameters.DefineSymbols; + ControlDictionary["mainClassTextBox"].Text = compilerParameters.MainClass; + ControlDictionary["importsTextBox"].Text = compilerParameters.Imports; + ControlDictionary["RootNamespaceTextBox"].Text = compilerParameters.RootNamespace; + + + ((CheckBox)ControlDictionary["generateDebugInformationCheckBox"]).Checked = compilerParameters.Debugmode; + ((CheckBox)ControlDictionary["enableOptimizationCheckBox"]).Checked = compilerParameters.Optimize; + ((CheckBox)ControlDictionary["generateOverflowChecksCheckBox"]).Checked = compilerParameters.GenerateOverflowChecks; + ((CheckBox)ControlDictionary["warningsAsErrorsCheckBox"]).Checked = compilerParameters.TreatWarningsAsErrors; + + ((CheckBox)ControlDictionary["optionExplicitCheckBox"]).Checked = compilerParameters.OptionExplicit; + ((CheckBox)ControlDictionary["optionStrictCheckBox"]).Checked = compilerParameters.OptionStrict; + } + + static + public CodeGenerationPanel() : base(PropertyService.DataDirectory + @"\resources\panels\ProjectOptions\VBNetCodeGenerationPanel.xfrm") + { + CustomizationObjectChanged += new EventHandler(SetValues); + + } + } +} diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/GuiMessageRecipient.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/GuiMessageRecipient.cs new file mode 100644 index 0000000000..e1b76419b0 --- /dev/null +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/GuiMessageRecipient.cs @@ -0,0 +1,66 @@ +// +// +// +// +// +// + +using System; +using System.Windows.Forms; + +namespace VBBinding +{ + [Serializable()] + class GuiMessageRecipient : IMessageRecipient + { + class StatusForm : Form + { + Label statusLabel; + + public StatusForm() + { + this.Text = "VB.DOC status"; + this.ControlBox = false; + this.StartPosition = FormStartPosition.CenterScreen; + this.ShowInTaskbar = false; + + this.Size = new System.Drawing.Size(400, 50); + + statusLabel = new Label(); + statusLabel.Dock = DockStyle.Fill; + statusLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + Controls.Add(statusLabel); + } + + public void Status(string statusMessage) + { + statusLabel.Text = statusMessage; + Application.DoEvents(); + } + } + + StatusForm messageForm; + + public GuiMessageRecipient() + { + messageForm = new StatusForm(); + messageForm.Show(); + } + + public void Finished() + { + messageForm.Close(); + } + + public void DisplayStatusMessage(string message) + { + messageForm.Status(message); + } + + public void DisplayErrorMessage(string message) + { + // message doesn't work in this app domain + System.Windows.Forms.MessageBox.Show(message); + } + } +} diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/OutputOptionsPanel.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/OutputOptionsPanel.cs new file mode 100644 index 0000000000..e80795ef6d --- /dev/null +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/OutputOptionsPanel.cs @@ -0,0 +1,161 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Drawing; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Internal.ExternalTool; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace VBBinding +{ + public class OutputOptionsPanel : AbstractOptionPanel + { + VBCompilerParameters compilerParameters; + static + + + public override bool ReceiveDialogMessage(DialogMessage message) + { + if (message == DialogMessage.OK) { + if (compilerParameters == null) { + return true; + } + + + if (!FileUtility.IsValidFileName(ControlDictionary["assemblyNameTextBox"].Text)) { + MessageBox.Show("Invalid assembly name specified", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1); + return false; + } + if (!FileUtility.IsValidFileName(ControlDictionary["outputDirectoryTextBox"].Text)) { + MessageBox.Show("Invalid output directory specified", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1); + return false; + } + + if (ControlDictionary["win32IconTextBox"].Text.Length > 0) { + if (!FileUtility.IsValidFileName(ControlDictionary["win32IconTextBox"].Text)) { + MessageBox.Show("Invalid Win32Icon specified", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1); + return false; + } + if (!File.Exists(ControlDictionary["win32IconTextBox"].Text)) { + MessageBox.Show("Win32Icon doesn't exists", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1); + return false; + } + } + + compilerParameters.CompileTarget = (CompileTarget)((ComboBox)ControlDictionary["compileTargetComboBox"]).SelectedIndex; + compilerParameters.OutputAssembly = ControlDictionary["assemblyNameTextBox"].Text; + compilerParameters.OutputDirectory = ControlDictionary["outputDirectoryTextBox"].Text; + compilerParameters.CommandLineParameters = ControlDictionary["parametersTextBox"].Text; + compilerParameters.ExecuteBeforeBuild = ControlDictionary["executeBeforeTextBox"].Text; + compilerParameters.ExecuteAfterBuild = ControlDictionary["executeAfterTextBox"].Text; + compilerParameters.ExecuteScript = ControlDictionary["executeScriptTextBox"].Text; + compilerParameters.Win32Icon = ControlDictionary["win32IconTextBox"].Text; + compilerParameters.ExecuteBeforeBuildArguments = ControlDictionary["executeBeforeArgumentsTextBox"].Text; + compilerParameters.ExecuteAfterBuildArguments = ControlDictionary["executeAfterArgumentsTextBox"].Text; + + compilerParameters.PauseConsoleOutput = ((CheckBox)ControlDictionary["pauseConsoleOutputCheckBox"]).Checked; + } + return true; + } + + void SetValues(object sender, EventArgs e) + { + this.compilerParameters = (VBCompilerParameters)((Properties)CustomizationObject).Get("Config"); + + ((ComboBox)ControlDictionary["compileTargetComboBox"]).SelectedIndex = (int)compilerParameters.CompileTarget; + ControlDictionary["win32IconTextBox"].Text = compilerParameters.Win32Icon; + ControlDictionary["assemblyNameTextBox"].Text = compilerParameters.OutputAssembly; + ControlDictionary["outputDirectoryTextBox"].Text = compilerParameters.OutputDirectory; + ControlDictionary["parametersTextBox"].Text = compilerParameters.CommandLineParameters; + ControlDictionary["executeScriptTextBox"].Text = compilerParameters.ExecuteScript; + ControlDictionary["executeBeforeTextBox"].Text = compilerParameters.ExecuteBeforeBuild; + ControlDictionary["executeAfterTextBox"].Text = compilerParameters.ExecuteAfterBuild; + ControlDictionary["executeBeforeArgumentsTextBox"].Text = compilerParameters.ExecuteBeforeBuildArguments; + ControlDictionary["executeAfterArgumentsTextBox"].Text = compilerParameters.ExecuteAfterBuildArguments; + + ((CheckBox)ControlDictionary["pauseConsoleOutputCheckBox"]).Checked = compilerParameters.PauseConsoleOutput; + } + + void SelectFolder(object sender, EventArgs e) + { + FolderDialog fdiag = new FolderDialog(); + + if (fdiag.DisplayDialog("${res:Dialog.Options.PrjOptions.Configuration.FolderBrowserDescription}") == DialogResult.OK) { + ControlDictionary["outputDirectoryTextBox"].Text = fdiag.Path; + } + } + + void SelectFile2(object sender, EventArgs e) + { + OpenFileDialog fdiag = new OpenFileDialog(); + fdiag.Filter = StringParser.Parse("${res:SharpDevelop.FileFilter.AllFiles}|*.*"); + fdiag.Multiselect = false; + + if(fdiag.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) { + ControlDictionary["executeBeforeTextBox"].Text = fdiag.FileName; + } + } + + void SelectFile3(object sender, EventArgs e) + { + OpenFileDialog fdiag = new OpenFileDialog(); + fdiag.Filter = StringParser.Parse("${res:SharpDevelop.FileFilter.AllFiles}|*.*"); + fdiag.Multiselect = false; + + if(fdiag.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) { + ControlDictionary["executeAfterTextBox"].Text = fdiag.FileName; + } + } + void SelectFile4(object sender, EventArgs e) + { + OpenFileDialog fdiag = new OpenFileDialog(); + fdiag.Filter = StringParser.Parse("${res:SharpDevelop.FileFilter.AllFiles}|*.*"); + fdiag.Multiselect = false; + + if(fdiag.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) { + ControlDictionary["executeScriptTextBox"].Text = fdiag.FileName; + } + } + void SelectWin32Icon(object sender, EventArgs e) + { + using (OpenFileDialog fdiag = new OpenFileDialog()) { + fdiag.AddExtension = true; + fdiag.Filter = StringParser.Parse("${res:SharpDevelop.FileFilter.Icons}|*.ico|${res:SharpDevelop.FileFilter.AllFiles}|*.*"); + fdiag.Multiselect = false; + fdiag.CheckFileExists = true; + + if (fdiag.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) { + ControlDictionary["win32IconTextBox"].Text = fdiag.FileName; + } + } + } + + static + public OutputOptionsPanel() : base(PropertyService.DataDirectory + @"\resources\panels\ProjectOptions\OutputPanel.xfrm") + { + CustomizationObjectChanged += new EventHandler(SetValues); + ControlDictionary["browseButton"].Click += new EventHandler(SelectFolder); + ControlDictionary["browseButton2"].Click += new EventHandler(SelectFile2); + ControlDictionary["browseButton3"].Click += new EventHandler(SelectFile3); + ControlDictionary["browseButton4"].Click += new EventHandler(SelectFile4); + ControlDictionary["browseWin32IconButton"].Click += new EventHandler(SelectWin32Icon); + + + ((ComboBox)ControlDictionary["compileTargetComboBox"]).Items.Add(ResourceService.GetString("Dialog.Options.PrjOptions.Configuration.CompileTarget.Exe")); + ((ComboBox)ControlDictionary["compileTargetComboBox"]).Items.Add(ResourceService.GetString("Dialog.Options.PrjOptions.Configuration.CompileTarget.WinExe")); + ((ComboBox)ControlDictionary["compileTargetComboBox"]).Items.Add(ResourceService.GetString("Dialog.Options.PrjOptions.Configuration.CompileTarget.Library")); + ((ComboBox)ControlDictionary["compileTargetComboBox"]).Items.Add(ResourceService.GetString("Dialog.Options.PrjOptions.Configuration.CompileTarget.Module")); + + } + } + +} diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/TextEditorOptionsPanel.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/TextEditorOptionsPanel.cs new file mode 100644 index 0000000000..31b80e6459 --- /dev/null +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/TextEditorOptionsPanel.cs @@ -0,0 +1,38 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Drawing; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Internal.ExternalTool; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace VBBinding +{ + public class TextEditorOptionsPanel : AbstractOptionPanel + { + public override void LoadPanelContents() + { + SetupFromXml(Path.Combine(PropertyService.DataDirectory, + @"resources\panels\VBSpecificTextEditorOptions.xfrm")); + ((CheckBox)ControlDictionary["enableEndConstructsCheckBox"]).Checked = PropertyService.Get("VBBinding.TextEditor.EnableEndConstructs", true); + ((CheckBox)ControlDictionary["enableCasingCheckBox"]).Checked = PropertyService.Get("VBBinding.TextEditor.EnableCasing", true); + } + + public override bool StorePanelContents() + { + PropertyService.Set("VBBinding.TextEditor.EnableEndConstructs", ((CheckBox)ControlDictionary["enableEndConstructsCheckBox"]).Checked); + PropertyService.Set("VBBinding.TextEditor.EnableCasing", ((CheckBox)ControlDictionary["enableCasingCheckBox"]).Checked); + + return true; + } + } +} diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/VBCompilerPanel.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/VBCompilerPanel.cs new file mode 100644 index 0000000000..ab2d5f4c81 --- /dev/null +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/VBCompilerPanel.cs @@ -0,0 +1,47 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Drawing; +using System.Collections; +using System.ComponentModel; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; + +namespace VBBinding +{ + public class VBCompilerPanel : AbstractOptionPanel + { + VBCompilerParameters config = null; + + public override void LoadPanelContents() + { + SetupFromXml(Path.Combine(PropertyService.DataDirectory, + @"resources\panels\VBCompilerPanel.xfrm")); + + this.config = (VBCompilerParameters)((Properties)CustomizationObject).Get("Config"); + + + ((ComboBox)ControlDictionary["compilerVersionComboBox"]).Items.Add("Standard"); + foreach (string runtime in FileUtility.GetAvaiableRuntimeVersions()) { + ((ComboBox)ControlDictionary["compilerVersionComboBox"]).Items.Add(runtime); + } + + ((ComboBox)ControlDictionary["compilerVersionComboBox"]).Text = config.VBCompilerVersion.Length == 0 ? "Standard" : config.VBCompilerVersion; + } + + public override bool StorePanelContents() + { + config.VBCompilerVersion = ControlDictionary["compilerVersionComboBox"].Text; + return true; + } + } +} diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/VBDocConfigurationPanel.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/VBDocConfigurationPanel.cs new file mode 100644 index 0000000000..cace4332ef --- /dev/null +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Gui/VBDocConfigurationPanel.cs @@ -0,0 +1,88 @@ +// +// +// +// +// +// + +using System; +using System.Drawing; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Internal.ExternalTool; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace VBBinding +{ + public class VBDOCConfigurationPanel : AbstractOptionPanel + { + VBCompilerParameters compilerParameters = null; + VBProject project = null; + + static + static + + /// + /// Returns if the filename will be parsed when running VB.DOC. + /// + public static bool IsFileIncluded(string filename, VBProject project) + { + VBCompilerParameters compilerparameters = (VBCompilerParameters)project.ActiveConfiguration; + return Array.IndexOf(compilerparameters.VBDOCFiles, filename) == -1; + } + + + public VBDOCConfigurationPanel() : base(PropertyService.DataDirectory + @"\resources\panels\ProjectOptions\VBDOCConfigurationPanel.xfrm") + { + CustomizationObjectChanged += new EventHandler(SetValues); + ControlDictionary["BrowseOutputFileButton"].Click += new EventHandler(BrowseOutputFileButton_Click); + } + + private void BrowseOutputFileButton_Click(object sender, EventArgs e) { + SaveFileDialog dialog = new SaveFileDialog(); + dialog.Filter = "XML files (*.xml)|*.xml"; + if(dialog.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) { + ((TextBox)ControlDictionary["OutputFileTextBox"]).Text = dialog.FileName; + } + } + + public override bool ReceiveDialogMessage(DialogMessage message) + { + if (message == DialogMessage.OK) { + if (compilerParameters == null) { + return true; + } + + compilerParameters.VBDOCOutputFile = ((TextBox)ControlDictionary["OutputFileTextBox"]).Text; + compilerParameters.VBDOCCommentPrefix = ((TextBox)ControlDictionary["CommentPrefixTextBox"]).Text; + + string[] files = new string[((CheckedListBox)ControlDictionary["FileListBox"]).Items.Count - ((CheckedListBox)ControlDictionary["FileListBox"]).CheckedIndices.Count]; + int count = 0; + for(int index = 0; index < ((CheckedListBox)ControlDictionary["FileListBox"]).Items.Count; index++) { + if(((CheckedListBox)ControlDictionary["FileListBox"]).GetItemChecked(index) == false) { + files[count] = (string)((CheckedListBox)ControlDictionary["FileListBox"]).Items[index]; + count++; + } + } + compilerParameters.VBDOCFiles = files; + } + return true; + } + + void SetValues(object sender, EventArgs e) + { + this.compilerParameters = (VBCompilerParameters)((Properties)CustomizationObject).Get("Config"); + project = (VBProject)((Properties)CustomizationObject).Get("Project"); + + ((TextBox)ControlDictionary["OutputFileTextBox"]).Text = compilerParameters.VBDOCOutputFile; + ((TextBox)ControlDictionary["CommentPrefixTextBox"]). Text = compilerParameters.VBDOCCommentPrefix; + + foreach(ProjectFile pfile in project.ProjectFiles) { + bool included = IsFileIncluded(pfile.Name, project); + ((CheckedListBox)ControlDictionary["FileListBox"]).Items.Add(pfile.Name, included); + } + } + } +} diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/ExpressionFinder.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/ExpressionFinder.cs new file mode 100644 index 0000000000..6736a77716 --- /dev/null +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/ExpressionFinder.cs @@ -0,0 +1,371 @@ +using System; +using System.Text; +using ICSharpCode.SharpDevelop.Dom; + +namespace VBBinding.Parser +{ + /// + /// Description of ExpressionFinder. + /// + public class ExpressionFinder : IExpressionFinder + { + public string FindExpression(string inText, int offset) + { + this.text = FilterComments(inText, ref offset); + this.text = text; + this.offset = this.lastAccept = offset; + this.state = START; + if (this.text == null) { + return null; + } + while (state != ERROR) { + ReadNextToken(); + //Console.WriteLine("cur state {0} got token {1}/{3} going to {2}", GetStateName(state), GetTokenName(curTokenType), GetStateName(stateTable[state, curTokenType]), curTokenType); + state = stateTable[state, curTokenType]; + + if (state == ACCEPT || state == ACCEPT2) { + lastAccept = this.offset; + } + if (state == ACCEPTNOMORE) { + return this.text.Substring(this.offset + 1, offset - this.offset); + } + } + return this.text.Substring(this.lastAccept + 1, offset - this.lastAccept); + } + + #region Comment Filter and 'inside string watcher' + int initialOffset; + public string FilterComments(string text, ref int offset) + { + this.initialOffset = offset; + StringBuilder outText = new StringBuilder(); + int curOffset = 0; + while (curOffset <= initialOffset) { + char ch = text[curOffset]; + + switch (ch) { + case '@': + if (curOffset + 1 < text.Length && text[curOffset + 1] == '"') { + outText.Append(text[curOffset++]); // @ + outText.Append(text[curOffset++]); // " + if (!ReadVerbatimString(outText, text, ref curOffset)) { + return null; + } + }else{ + outText.Append(ch); + ++curOffset; + } + break; + case '"': + outText.Append(ch); + curOffset++; + if (!ReadString(outText, text, ref curOffset)) { + return null; + } + break; + case '\'': + offset -= 1; + curOffset += 1; + if (!ReadToEOL(text, ref curOffset, ref offset)) { + return null; + } + break; + default: + outText.Append(ch); + ++curOffset; + break; + } + } + + return outText.ToString(); + } + + bool ReadToEOL(string text, ref int curOffset, ref int offset) + { + while (curOffset <= initialOffset) { + char ch = text[curOffset++]; + --offset; + if (ch == '\n') { + return true; + } + } + return false; + } + + bool ReadString(StringBuilder outText, string text, ref int curOffset) + { + while (curOffset <= initialOffset) { + char ch = text[curOffset++]; + outText.Append(ch); + if (ch == '"') { + return true; + } + } + return false; + } + + bool ReadVerbatimString(StringBuilder outText, string text, ref int curOffset) + { + while (curOffset <= initialOffset) { + char ch = text[curOffset++]; + outText.Append(ch); + if (ch == '"') { + if (curOffset < text.Length && text[curOffset] == '"') { + outText.Append(text[curOffset++]); + } else { + return true; + } + } + } + return false; + } + + bool ReadMultiLineComment(string text, ref int curOffset, ref int offset) + { + while (curOffset <= initialOffset) { + char ch = text[curOffset++]; + --offset; + if (ch == '*') { + if (curOffset < text.Length && text[curOffset] == '/') { + ++curOffset; + --offset; + return true; + } + } + } + return false; + } + #endregion + + #region mini backward lexer + string text; + int offset; + + char GetNext() + { + if (offset >= 0) { + return text[offset--]; + } + return '\0'; + } + + char Peek() + { + if (offset >= 0) { + return text[offset]; + } + return '\0'; + } + + void UnGet() + { + ++offset; + } + + // tokens for our lexer + static int Err = 0; + static int Dot = 1; + static int StrLit = 2; + static int Ident = 3; + static int New = 4; +// static int Bracket = 5; + static int Parent = 6; + static int Curly = 7; + static int Using = 8; + int curTokenType; + + readonly static string[] tokenStateName = new string[] { + "Err", "Dot", "StrLit", "Ident", "New", "Bracket", "Paren", "Curly", "Using" + }; + string GetTokenName(int state) + { + return tokenStateName[state]; + } + + void ReadNextToken() + { + char ch = GetNext(); + + curTokenType = Err; + if (ch == '\0' || ch == '\n' || ch == '\r') { + return; + } + while (Char.IsWhiteSpace(ch)) { + ch = GetNext(); + if (ch == '\n' || ch == '\r') { + return; + } + } + + switch (ch) { + case '}': + if (ReadBracket('{', '}')) { + curTokenType = Curly; + } + break; + case ')': + if (ReadBracket('(', ')')) { + curTokenType = Parent; + } + break; + case ']': + if (ReadBracket('[', ']')) { + curTokenType = Ident; + } + break; + case '.': + curTokenType = Dot; + break; + case '\'': + case '"': + if (ReadStringLiteral(ch)) { + curTokenType = StrLit; + } + break; + default: + if (IsIdentifierPart(ch)) { + string ident = ReadIdentifier(ch); + if (ident != null) { + switch (ident.ToLower()) { + case "new": + curTokenType = New; + break; + case "imports": + curTokenType = Using; + break; + default: + curTokenType = Ident; + break; + } + } + } + break; + } + } + + bool ReadStringLiteral(char litStart) + { + while (true) { + char ch = GetNext(); + if (ch == '\0') { + return false; + } + if (ch == litStart) { + if (Peek() == '@' && litStart == '"') { + GetNext(); + } + return true; + } + } + } + + bool ReadBracket(char openBracket, char closingBracket) + { + int curlyBraceLevel = 0; + int squareBracketLevel = 0; + int parenthesisLevel = 0; + switch (openBracket) { + case '(': + parenthesisLevel++; + break; + case '[': + squareBracketLevel++; + break; + case '{': + curlyBraceLevel++; + break; + } + + while (parenthesisLevel != 0 || squareBracketLevel != 0 || curlyBraceLevel != 0) { + char ch = GetNext(); + if (ch == '\0') { + return false; + } + switch (ch) { + case '(': + parenthesisLevel--; + break; + case '[': + squareBracketLevel--; + break; + case '{': + curlyBraceLevel--; + break; + case ')': + parenthesisLevel++; + break; + case ']': + squareBracketLevel++; + break; + case '}': + curlyBraceLevel++; + break; + } + } + return true; + } + + string ReadIdentifier(char ch) + { + string identifier = ch.ToString(); + while (IsIdentifierPart(Peek())) { + identifier = GetNext() + identifier; + } + return identifier; + } + + bool IsIdentifierPart(char ch) + { + return Char.IsLetterOrDigit(ch) || ch == '_'; + } + #endregion + + #region finite state machine + readonly static int ERROR = 0; + readonly static int START = 1; + readonly static int DOT = 2; + readonly static int MORE = 3; + readonly static int CURLY = 4; + readonly static int CURLY2 = 5; + readonly static int CURLY3 = 6; + + readonly static int ACCEPT = 7; + readonly static int ACCEPTNOMORE = 8; + readonly static int ACCEPT2 = 9; + + readonly static string[] stateName = new string[] { + "ERROR", + "START", + "DOT", + "MORE", + "CURLY", + "CURLY2", + "CURLY3", + "ACCEPT", + "ACCEPTNOMORE", + "ACCEPT2" + }; + + string GetStateName(int state) + { + return stateName[state]; + } + + int state = 0; + int lastAccept = 0; + static int[,] stateTable = new int[,] { + // Err, Dot, Str, ID, New, Brk, Par, Cur, Using + /*ERROR*/ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR}, + /*START*/ { ERROR, DOT, ACCEPT, ACCEPT, ERROR, MORE, ACCEPT2, CURLY, ACCEPTNOMORE}, + /*DOT*/ { ERROR, ERROR, ACCEPT, ACCEPT, ERROR, MORE, ACCEPT, CURLY, ERROR}, + /*MORE*/ { ERROR, ERROR, ACCEPT, ACCEPT, ERROR, MORE, ACCEPT2, CURLY, ERROR}, + /*CURLY*/ { ERROR, ERROR, ERROR, ERROR, ERROR, CURLY2, ERROR, ERROR, ERROR}, + /*CURLY2*/ { ERROR, ERROR, ERROR, CURLY3, ERROR, ERROR, ERROR, ERROR, ERROR}, + /*CURLY3*/ { ERROR, ERROR, ERROR, ERROR, ACCEPTNOMORE, ERROR, ERROR, ERROR, ERROR}, + /*ACCEPT*/ { ERROR, MORE, ERROR, ERROR, ACCEPT, ERROR, ERROR, ERROR, ACCEPTNOMORE}, + /*ACCEPTNOMORE*/ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR}, + /*ACCEPT2*/ { ERROR, MORE, ERROR, ACCEPT, ACCEPT, ERROR, ERROR, ERROR, ERROR}, + }; + #endregion + } +} diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/Parser.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/Parser.cs new file mode 100644 index 0000000000..b1cc58baf6 --- /dev/null +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/Parser.cs @@ -0,0 +1,127 @@ +// +// +// +// +// +// +using System; +using System.IO; +using System.Collections; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Dom; +using ICSharpCode.NRefactory.Parser; +using ICSharpCode.SharpDevelop.Dom.NRefactoryResolver; + +namespace VBBinding.Parser +{ + public class TParser : ICSharpCode.SharpDevelop.Dom.IParser + { + ///IParser Interface + string[] lexerTags; + + public string[] LexerTags { + get { + return lexerTags; + } + set { + lexerTags = value; + } + } + public IExpressionFinder ExpressionFinder { + get { + return new ExpressionFinder(); + } + } + public bool CanParse(string fileName) + { + return Path.GetExtension(fileName).ToUpper() == ".VB"; + } + public bool CanParse(IProject project) + { + return project.ProjectType == "VBNET"; + } + + void RetrieveRegions(ICompilationUnit cu, SpecialTracker tracker) + { + for (int i = 0; i < tracker.CurrentSpecials.Count; ++i) { + PreProcessingDirective directive = tracker.CurrentSpecials[i] as PreProcessingDirective; + if (directive != null) { + if (directive.Cmd.ToLower() == "#region") { + int deep = 1; + for (int j = i + 1; j < tracker.CurrentSpecials.Count; ++j) { + PreProcessingDirective nextDirective = tracker.CurrentSpecials[j] as PreProcessingDirective; + if(nextDirective != null) { + switch (nextDirective.Cmd.ToLower()) { + case "#region": + ++deep; + break; + case "#end": + if (nextDirective.Arg.ToLower() == "region") { + --deep; + if (deep == 0) { + cu.FoldingRegions.Add(new FoldingRegion(directive.Arg.Trim('"'), new DefaultRegion(directive.Start, nextDirective.End))); + goto end; + } + } + break; + } + } + } + end: ; + } + } + } + } + + public ICompilationUnitBase Parse(string fileName) + { + ICSharpCode.NRefactory.Parser.IParser p = ICSharpCode.NRefactory.Parser.ParserFactory.CreateParser(fileName); + p.Lexer.SpecialCommentTags = lexerTags; + p.Parse(); + + NRefactoryASTConvertVisitor visitor = new NRefactoryASTConvertVisitor(); + visitor.Visit(p.CompilationUnit, null); + visitor.Cu.FileName = fileName; + visitor.Cu.ErrorsDuringCompile = p.Errors.count > 0; + + RetrieveRegions(visitor.Cu, p.Lexer.SpecialTracker); + AddCommentTags(visitor.Cu, p.Lexer.TagComments); + return visitor.Cu; + } + + public ICompilationUnitBase Parse(string fileName, string fileContent) + { + ICSharpCode.NRefactory.Parser.IParser p = ICSharpCode.NRefactory.Parser.ParserFactory.CreateParser(ICSharpCode.NRefactory.Parser.SupportedLanguages.VBNet, new StringReader(fileContent)); + p.Lexer.SpecialCommentTags = lexerTags; + p.Parse(); + + NRefactoryASTConvertVisitor visitor = new NRefactoryASTConvertVisitor(); + visitor.Visit(p.CompilationUnit, null); + visitor.Cu.FileName = fileName; + visitor.Cu.ErrorsDuringCompile = p.Errors.count > 0; + visitor.Cu.Tag = p.CompilationUnit; + + RetrieveRegions(visitor.Cu, p.Lexer.SpecialTracker); + AddCommentTags(visitor.Cu, p.Lexer.TagComments); + return visitor.Cu; + } + + void AddCommentTags(ICompilationUnit cu, ArrayList tagComments) + { + foreach (ICSharpCode.NRefactory.Parser.TagComment tagComment in tagComments) { + DefaultRegion tagRegion = new DefaultRegion(tagComment.StartPosition.Y, tagComment.StartPosition.X); + ICSharpCode.SharpDevelop.Dom.Tag tag = new ICSharpCode.SharpDevelop.Dom.Tag(tagComment.Tag, tagRegion); + tag.CommentString = tagComment.CommentText; + cu.TagComments.Add(tag); + } + } + + public IResolver CreateResolver() + { + return new ICSharpCode.SharpDevelop.Dom.NRefactoryResolver.NRefactoryResolver(ICSharpCode.NRefactory.Parser.SupportedLanguages.VBNet); + } + + ///////// IParser Interface END + } +} diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBCompilerParameters.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBCompilerParameters.cs new file mode 100644 index 0000000000..81321d8ae2 --- /dev/null +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBCompilerParameters.cs @@ -0,0 +1,279 @@ +// +// +// +// +// +// + +using System; +using System.Xml; +using System.Diagnostics; +using System.ComponentModel; + +using ICSharpCode.SharpDevelop.Internal.Project; + +namespace VBBinding { + + public enum CompileTarget + { + Exe, + WinExe, + Library, + Module + }; + + /// + /// This class handles project specific compiler parameters + /// + public class VBCompilerParameters : AbstractProjectConfiguration + { + [XmlNodeName("CodeGeneration")] + class CodeGeneration + { + [XmlAttribute("compilerversion")] + public string vbCompilerVersion = String.Empty; + + [XmlAttribute("includedebuginformation")] + public bool debugmode = true; + + [XmlAttribute("optimize")] + public bool optimize = true; + + [XmlAttribute("generateoverflowchecks")] + public bool generateOverflowChecks = true; + + [XmlAttribute("rootnamespace")] + public string rootnamespace = String.Empty; + + [XmlAttribute("mainclass")] + public string mainclass = null; + + [XmlAttribute("target")] + public CompileTarget compiletarget = CompileTarget.Exe; + + [XmlAttribute("definesymbols")] + public string definesymbols = String.Empty; + + [XmlAttribute("optionexplicit")] + public bool optionExplicit = true; + + [XmlAttribute("optionstrict")] + public bool optionStrict = false; + + [ConvertToRelativePathAttribute()] + [XmlAttribute("win32Icon")] + public string win32Icon = String.Empty; + + [XmlAttribute("imports")] + public string imports = String.Empty; + } + + [XmlNodeName("Execution")] + class Execution + { + [XmlAttribute("consolepause")] + public bool pauseconsoleoutput = true; + + [XmlAttribute("commandlineparameters")] + public string commandLineParameters = String.Empty; + + } + + [XmlNodeName("VBDOC")] + class VBDOC + { + [XmlAttribute("outputfile")] + [ConvertToRelativePathAttribute()] + public string outputfile = String.Empty; + + [XmlAttribute("filestoparse")] + public string filestoparse = String.Empty; + + [XmlAttribute("commentprefix")] + public string commentprefix = "'"; + } + + CodeGeneration codeGeneration = new CodeGeneration(); + VBDOC vbdoc = new VBDOC(); + Execution execution = new Execution(); + + [Browsable(false)] + public string VBCompilerVersion + { + get { + return codeGeneration.vbCompilerVersion; + } + set { + codeGeneration.vbCompilerVersion = value; + } + } + + public string CommandLineParameters + { + get { + return execution.commandLineParameters; + } + set { + execution.commandLineParameters = value; + } + } + public bool GenerateOverflowChecks + { + get { + return codeGeneration.generateOverflowChecks; + } + set { + codeGeneration.generateOverflowChecks = value; + } + } + + public string Imports + { + get { + return codeGeneration.imports; + } + set { + codeGeneration.imports = value; + } + } + + public string Win32Icon + { + get { + return codeGeneration.win32Icon; + } + set { + codeGeneration.win32Icon = value; + } + } + + public string RootNamespace + { + get { + return codeGeneration.rootnamespace; + } + set { + codeGeneration.rootnamespace = value; + } + } + + public string DefineSymbols + { + get { + return codeGeneration.definesymbols; + } + set { + codeGeneration.definesymbols = value; + } + } + + public bool PauseConsoleOutput + { + get { + return execution.pauseconsoleoutput; + } + set { + execution.pauseconsoleoutput = value; + } + } + + public bool Debugmode + { + get { + return codeGeneration.debugmode; + } + set { + codeGeneration.debugmode = value; + } + } + + public bool Optimize + { + get { + return codeGeneration.optimize; + } + set { + codeGeneration.optimize = value; + } + } + + public string MainClass + { + get { + return codeGeneration.mainclass; + } + set { + codeGeneration.mainclass = value; + } + } + + public CompileTarget CompileTarget + { + get { + return codeGeneration.compiletarget; + } + set { + codeGeneration.compiletarget = value; + } + } + + public bool OptionExplicit + { + get { + return codeGeneration.optionExplicit; + } + set { + codeGeneration.optionExplicit = value; + } + } + + public bool OptionStrict + { + get { + return codeGeneration.optionStrict; + } + set { + codeGeneration.optionStrict = value; + } + } + + public string VBDOCOutputFile + { + get { + return vbdoc.outputfile; + } + set { + vbdoc.outputfile = value; + } + } + + public string[] VBDOCFiles + { + get { + return vbdoc.filestoparse.Split(';'); + } + set { + vbdoc.filestoparse = System.String.Join(";", value); + } + } + + public string VBDOCCommentPrefix + { + get { + return vbdoc.commentprefix; + } + set { + vbdoc.commentprefix = value; + } + } + + public VBCompilerParameters() + { + } + + public VBCompilerParameters(string name) + { + this.name = name; + } + } +} diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBProject.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBProject.cs new file mode 100644 index 0000000000..10defddb7d --- /dev/null +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBProject.cs @@ -0,0 +1,74 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Collections; +using System.Diagnostics; +using System.ComponentModel; +using System.Xml; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Internal.Templates; + +namespace VBBinding +{ + /// + /// This class describes a VB.NET project and it compilation options. + /// + public class VBProject : AbstractProject + { + public override string ProjectType { + get { + return VBLanguageBinding.LanguageName; + } + } + + public override IConfiguration CreateConfiguration() + { + return new VBCompilerParameters(); + } + + public VBProject() + { + } + + public VBProject(ProjectCreateInformation info, XmlElement projectOptions) + { + if (info != null) { + Name = info.ProjectName; + + VBCompilerParameters debug = (VBCompilerParameters)CreateConfiguration("Debug"); + debug.Optimize = false; + Configurations.Add(debug); + + VBCompilerParameters release = (VBCompilerParameters)CreateConfiguration("Release"); + debug.Optimize = true; + release.Debugmode = false; + release.GenerateOverflowChecks = false; + release.TreatWarningsAsErrors = false; + Configurations.Add(release); + + XmlElement el = projectOptions; + + foreach (VBCompilerParameters parameter in Configurations) { + parameter.OutputDirectory = info.BinPath + Path.DirectorySeparatorChar + parameter.Name; + parameter.OutputAssembly = Name; + + if (el != null) { + if (el.Attributes["Target"] != null) { + parameter.CompileTarget = (CompileTarget)Enum.Parse(typeof(CompileTarget), el.Attributes["Target"].InnerText); + } + if (el.Attributes["PauseConsoleOutput"] != null) { + parameter.PauseConsoleOutput = Boolean.Parse(el.Attributes["PauseConsoleOutput"].InnerText); + } + } + } + } + } + } +} diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBAmbience.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBAmbience.cs new file mode 100644 index 0000000000..d730b4131f --- /dev/null +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBAmbience.cs @@ -0,0 +1,570 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.Text; + +using ICSharpCode.SharpDevelop.Dom; +using ICSharpCode.Core; + +namespace ICSharpCode.Core +{ + public class VBAmbience : AbstractAmbience + { + static string[,] typeConversionList = new string[,] { + {"System.String", "String"}, + {"System.Single", "Single"}, + {"System.Int16", "Short"}, + {"System.Void", "Void"}, + {"System.Object", "Object"}, + {"System.Int64", "Long"}, + {"System.Int32", "Integer"}, + {"System.Double", "Double"}, + {"System.Char", "Char"}, + {"System.Boolean", "Boolean"}, + {"System.Byte", "Byte"}, + {"System.Decimal", "Decimal"}, + {"System.DateTime", "Date"}, + }; + + static Hashtable typeConversionTable = new Hashtable(); + + static VBAmbience() + { + for (int i = 0; i < typeConversionList.GetLength(0); ++i) { + typeConversionTable[typeConversionList[i, 0]] = typeConversionList[i, 1]; + } + } + + string GetModifier(IDecoration decoration) + { + StringBuilder builder = new StringBuilder(); + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (decoration.IsStatic) { + builder.Append("Shared "); + } + if (decoration.IsAbstract) { + builder.Append("MustOverride "); + } else if (decoration.IsFinal) { + builder.Append("NotOverridable "); + } else if (decoration.IsVirtual) { + builder.Append("Overridable "); + } else if (decoration.IsOverride) { + builder.Append("Overrides "); + } else if (decoration.IsNew) { + builder.Append("Shadows "); + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + return builder.ToString(); + } + + public override string Convert(ModifierEnum modifier) + { + StringBuilder builder = new StringBuilder(); + if (ShowAccessibility) { + if ((modifier & ModifierEnum.Public) == ModifierEnum.Public) { + builder.Append("Public"); + } else if ((modifier & ModifierEnum.Private) == ModifierEnum.Private) { + builder.Append("Private"); + } else if ((modifier & (ModifierEnum.Protected | ModifierEnum.Internal)) == (ModifierEnum.Protected | ModifierEnum.Internal)) { + builder.Append("Protected Friend"); + } else if ((modifier & ModifierEnum.ProtectedOrInternal) == ModifierEnum.ProtectedOrInternal) { + builder.Append("Protected Friend"); + } else if ((modifier & ModifierEnum.Internal) == ModifierEnum.Internal) { + builder.Append("Friend"); + } else if ((modifier & ModifierEnum.Protected) == ModifierEnum.Protected) { + builder.Append("Protected"); + } + builder.Append(' '); + } + return builder.ToString(); + } + + public override string Convert(IClass c) + { + StringBuilder builder = new StringBuilder(); + + builder.Append(Convert(c.Modifiers)); + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (ShowModifiers) { + if (c.IsSealed) { + if (c.ClassType == ClassType.Class) { + builder.Append("NotInheritable "); + } + } else if (c.IsAbstract && c.ClassType != ClassType.Interface) { + builder.Append("MustInherit "); + } + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + switch (c.ClassType) { + case ClassType.Delegate: + builder.Append("Delegate "); + if (ShowReturnType) { + foreach (IMethod m in c.Methods) { + if (m.Name != "Invoke") { + continue; + } + + if (m.ReturnType == null || m.ReturnType.FullyQualifiedName == "System.Void") { + builder.Append("Sub"); + } else { + builder.Append("Function"); + } + } + } + break; + case ClassType.Class: + builder.Append("Class"); + break; + case ClassType.Struct: + builder.Append("Structure"); + break; + case ClassType.Interface: + builder.Append("Interface"); + break; + case ClassType.Enum: + builder.Append("Enum"); + break; + } + builder.Append(' '); + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (UseFullyQualifiedMemberNames) { + builder.Append(c.FullyQualifiedName); + } else { + builder.Append(c.Name); + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (c.ClassType == ClassType.Delegate) { + builder.Append("("); + if (IncludeHTMLMarkup) builder.Append("
      "); + + foreach (IMethod m in c.Methods) { + if (m.Name != "Invoke") continue; + + for (int i = 0; i < m.Parameters.Count; ++i) { + if (IncludeHTMLMarkup) builder.Append("   "); + + builder.Append(Convert(m.Parameters[i])); + if (i + 1 < m.Parameters.Count) builder.Append(", "); + + if (IncludeHTMLMarkup) builder.Append("
      "); + } + } + + builder.Append(")"); + + foreach (IMethod m in c.Methods) { + if (m.Name != "Invoke") continue; + + if (m.ReturnType == null || m.ReturnType.FullyQualifiedName == "System.Void") { + } else { + if (ShowReturnType) { + builder.Append(" As "); + builder.Append(Convert(m.ReturnType)); + } + } + } + + } else if (ShowInheritanceList) { + if (c.BaseTypes.Count > 0) { + builder.Append(" Inherits "); + for (int i = 0; i < c.BaseTypes.Count; ++i) { + builder.Append(c.BaseTypes[i]); + if (i + 1 < c.BaseTypes.Count) { + builder.Append(", "); + } + } + } + } + + return builder.ToString(); + } + + public override string ConvertEnd(IClass c) + { + StringBuilder builder = new StringBuilder(); + + builder.Append("End "); + + switch (c.ClassType) { + case ClassType.Delegate: + builder.Append("Delegate"); + break; + case ClassType.Class: + builder.Append("Class"); + break; + case ClassType.Struct: + builder.Append("Structure"); + break; + case ClassType.Interface: + builder.Append("Interface"); + break; + case ClassType.Enum: + builder.Append("Enum"); + break; + } + + return builder.ToString(); + } + + public override string Convert(IField field) + { + StringBuilder builder = new StringBuilder(); + + builder.Append(Convert(field.Modifiers)); + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (ShowModifiers) { + if (field.IsStatic && field.IsLiteral) { + builder.Append("Const "); + } else if (field.IsStatic) { + builder.Append("Shared "); + } + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + builder.Append(""); + } + + if (UseFullyQualifiedMemberNames) { + builder.Append(field.FullyQualifiedName); + } else { + builder.Append(field.Name); + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (field.ReturnType != null && ShowReturnType) { + builder.Append(" As "); + builder.Append(Convert(field.ReturnType)); + } + + return builder.ToString(); + } + + public override string Convert(IProperty property) + { + StringBuilder builder = new StringBuilder(); + + builder.Append(Convert(property.Modifiers)); + + if (ShowModifiers) { + builder.Append(GetModifier(property)); + } + + if (property.CanGet && !property.CanSet) { + builder.Append("ReadOnly "); + } + + if (property.CanSet && !property.CanGet) { + builder.Append("WriteOnly "); + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (UseFullyQualifiedMemberNames) { + builder.Append(property.FullyQualifiedName); + } else { + builder.Append(property.Name); + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (property.Parameters.Count > 0) { + builder.Append("("); + if (IncludeHTMLMarkup) builder.Append("
      "); + + for (int i = 0; i < property.Parameters.Count; ++i) { + if (IncludeHTMLMarkup) builder.Append("   "); + builder.Append(Convert(property.Parameters[i])); + if (i + 1 < property.Parameters.Count) { + builder.Append(", "); + } + if (IncludeHTMLMarkup) builder.Append("
      "); + } + + builder.Append(')'); + } + + if (property.ReturnType != null && ShowReturnType) { + builder.Append(" As "); + builder.Append(Convert(property.ReturnType)); + } + + return builder.ToString(); + } + + public override string Convert(IEvent e) + { + StringBuilder builder = new StringBuilder(); + + builder.Append(Convert(e.Modifiers)); + + if (ShowModifiers) { + builder.Append(GetModifier(e)); + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (UseFullyQualifiedMemberNames) { + builder.Append(e.FullyQualifiedName); + } else { + builder.Append(e.Name); + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (e.ReturnType != null && ShowReturnType) { + builder.Append(" As "); + builder.Append(Convert(e.ReturnType)); + } + + return builder.ToString(); + } + + public override string Convert(IIndexer m) + { + StringBuilder builder = new StringBuilder(); + builder.Append(Convert(m.Modifiers)); + + if (ShowModifiers) { + if (m.IsStatic) { + builder.Append("Shared "); + } + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (UseFullyQualifiedMemberNames) { + builder.Append(m.FullyQualifiedName); + } else { + builder.Append(m.Name); + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + builder.Append("Item("); + if (IncludeHTMLMarkup) builder.Append("
      "); + + for (int i = 0; i < m.Parameters.Count; ++i) { + if (IncludeHTMLMarkup) builder.Append("   "); + builder.Append(Convert(m.Parameters[i])); + if (i + 1 < m.Parameters.Count) { + builder.Append(", "); + } + if (IncludeHTMLMarkup) builder.Append("
      "); + } + + builder.Append(")"); + + if (m.ReturnType != null && ShowReturnType) { + builder.Append(" As "); + builder.Append(Convert(m.ReturnType)); + } + + return builder.ToString(); + } + + public override string Convert(IMethod m) + { + StringBuilder builder = new StringBuilder(); + builder.Append(Convert(m.Modifiers)); + + if (ShowModifiers) { + builder.Append(GetModifier(m)); + } + if (ShowReturnType) { + if (m.ReturnType == null || m.ReturnType.FullyQualifiedName == "System.Void") { + builder.Append("Sub "); + } else { + builder.Append("Function "); + } + } + + string dispName = UseFullyQualifiedMemberNames ? m.FullyQualifiedName : m.Name; + if (m.Name == "ctor" || m.Name == "cctor" || m.Name == "#ctor" || m.Name == "#cctor" || m.IsConstructor) { + dispName = "New"; + } + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + builder.Append(dispName); + + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + builder.Append("("); + if (IncludeHTMLMarkup) builder.Append("
      "); + + for (int i = 0; i < m.Parameters.Count; ++i) { + if (IncludeHTMLMarkup) builder.Append("   "); + builder.Append(Convert(m.Parameters[i])); + if (i + 1 < m.Parameters.Count) { + builder.Append(", "); + } + if (IncludeHTMLMarkup) builder.Append("
      "); + } + + builder.Append(')'); + + if (ShowReturnType && m.ReturnType != null && m.ReturnType.FullyQualifiedName != "System.Void") { + builder.Append(" As "); + builder.Append(Convert(m.ReturnType)); + } + + return builder.ToString(); + } + + public override string ConvertEnd(IMethod m) + { + if (m.ReturnType == null || m.ReturnType.FullyQualifiedName == "System.Void") { + return "End Sub"; + } else { + return "End Function"; + } + } + + public override string Convert(IReturnType returnType) + { + if (returnType == null) { + return String.Empty; + } + StringBuilder builder = new StringBuilder(); + + bool linkSet = false; +// TODO: #Assembly dependance: + +// if (UseLinkArrayList) { +// SharpAssemblyReturnType ret = returnType as SharpAssemblyReturnType; +// if (ret != null) { +// if (ret.UnderlyingClass != null) { +// builder.Append(""); +// linkSet = true; +// } +// } +// } + + if (returnType.FullyQualifiedName != null && typeConversionTable[returnType.FullyQualifiedName] != null) { + builder.Append(typeConversionTable[returnType.FullyQualifiedName].ToString()); + } else { + builder.Append(UseFullyQualifiedNames ? returnType.FullyQualifiedName : returnType.Name); + } + + if (linkSet) { + builder.Append(""); + } + + for (int i = 0; i < returnType.PointerNestingLevel; ++i) { + builder.Append('*'); + } + + for (int i = 0; i < returnType.ArrayCount; ++i) { + builder.Append('('); + for (int j = 1; j < returnType.ArrayDimensions[i]; ++j) { + builder.Append(','); + } + builder.Append(')'); + } + + return builder.ToString(); + } + + public override string Convert(IParameter param) + { + StringBuilder builder = new StringBuilder(); + if (ShowParameterNames) { + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + if (param.IsRef || param.IsOut) { + builder.Append("ByRef "); + } else if (param.IsParams) { + builder.Append("ByVal ParamArray "); + } else { + builder.Append("ByVal "); + } + if (IncludeHTMLMarkup) { + builder.Append(""); + } + + + builder.Append(param.Name); + builder.Append(" As "); + } + + builder.Append(Convert(param.ReturnType)); + + return builder.ToString(); + } + + public override string WrapAttribute(string attribute) + { + return "<" + attribute + ">"; + } + + public override string WrapComment(string comment) + { + return "' " + comment; + } + + public override string GetIntrinsicTypeName(string dotNetTypeName) + { + if (typeConversionTable[dotNetTypeName] != null) { + return (string)typeConversionTable[dotNetTypeName]; + } + return dotNetTypeName; + } + } + +} diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBBindingCompilerServices.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBBindingCompilerServices.cs new file mode 100644 index 0000000000..6a48fa95b3 --- /dev/null +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBBindingCompilerServices.cs @@ -0,0 +1,308 @@ +// +// +// +// +// +// + +using System; +using System.Text; +using System.Collections; +using System.IO; +using System.Diagnostics; +using System.CodeDom.Compiler; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Gui; + +namespace VBBinding { + + /// + /// This class controls the compilation of VB.net files and VB.net projects + /// + public class VBBindingCompilerServices + { + + PropertyService PropertyService = (PropertyService)ServiceManager.Services.GetService(typeof(PropertyService)); + + public string GetCompiledOutputName(string fileName) + { + return Path.ChangeExtension(fileName, ".exe"); + } + + public string GetCompiledOutputName(IProject project) + { + VBProject p = (VBProject)project; + VBCompilerParameters compilerparameters = (VBCompilerParameters)p.ActiveConfiguration; + return FileUtility.GetDirectoryNameWithSeparator(compilerparameters.OutputDirectory) + compilerparameters.OutputAssembly + (compilerparameters.CompileTarget == CompileTarget.Library ? ".dll" : ".exe"); + } + + public bool CanCompile(string fileName) + { + return Path.GetExtension(fileName) == ".vb"; + } + + string GetCompilerName(string compilerVersion) + { + string runtimeDirectory = Path.Combine(FileUtility.NETFrameworkInstallRoot, compilerVersion); + if (compilerVersion.Length == 0 || compilerVersion == "Standard" || !Directory.Exists(runtimeDirectory)) { + runtimeDirectory = System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory(); + } + return '"' + Path.Combine(runtimeDirectory, "vbc.exe") + '"'; + } + + string GenerateOptions(VBCompilerParameters compilerparameters, string outputFileName) + { + StringBuilder sb = new StringBuilder(); + + sb.Append("\"/out:");sb.Append(outputFileName);sb.Append('"');sb.Append(Environment.NewLine); + + sb.Append("/nologo");sb.Append(Environment.NewLine); + sb.Append("/utf8output");sb.Append(Environment.NewLine); + + if (compilerparameters.Debugmode) { + sb.Append("/debug+");sb.Append(Environment.NewLine); + sb.Append("/debug:full");sb.Append(Environment.NewLine); + } + + if (compilerparameters.Optimize) { + sb.Append("/optimize");sb.Append(Environment.NewLine); + } + + if (compilerparameters.OptionStrict) { + sb.Append("/optionstrict+");sb.Append(Environment.NewLine); + } + + if (compilerparameters.OptionExplicit) { + sb.Append("/optionexplicit+");sb.Append(Environment.NewLine); + } else { + sb.Append("/optionexplicit-");sb.Append(Environment.NewLine); + } + + if (compilerparameters.Win32Icon != null && compilerparameters.Win32Icon.Length > 0 && File.Exists(compilerparameters.Win32Icon)) { + sb.Append("/win32icon:");sb.Append('"');sb.Append(compilerparameters.Win32Icon);sb.Append('"');sb.Append(Environment.NewLine); + } + + if (compilerparameters.RootNamespace!= null && compilerparameters.RootNamespace.Length > 0) { + sb.Append("/rootnamespace:");sb.Append('"');sb.Append(compilerparameters.RootNamespace);sb.Append('"');sb.Append(Environment.NewLine); + } + + if (compilerparameters.DefineSymbols.Length > 0) { + sb.Append("/define:");sb.Append('"');sb.Append(compilerparameters.DefineSymbols);sb.Append('"');sb.Append(Environment.NewLine); + } + + if (compilerparameters.MainClass != null && compilerparameters.MainClass.Length > 0) { + sb.Append("/main:");sb.Append(compilerparameters.MainClass);sb.Append(Environment.NewLine); + } + + if(compilerparameters.Imports.Length > 0) { + sb.Append("/imports:");sb.Append(compilerparameters.Imports);sb.Append(Environment.NewLine); + } + + switch (compilerparameters.CompileTarget) { + case CompileTarget.Exe: + sb.Append("/target:exe"); + break; + case CompileTarget.WinExe: + sb.Append("/target:winexe"); + break; + case CompileTarget.Library: + sb.Append("/target:library"); + break; + case CompileTarget.Module: + sb.Append("/target:module"); + break; + default: + throw new NotSupportedException("unknwon compile target:" + compilerparameters.CompileTarget); + } + sb.Append(Environment.NewLine); + return sb.ToString(); + } + + public ICompilerResult CompileFile(string filename) + { + string output = ""; + string error = ""; + string exe = Path.ChangeExtension(filename, ".exe"); + VBCompilerParameters compilerparameters = new VBCompilerParameters(); + string stdResponseFileName = PropertyService.DataDirectory + Path.DirectorySeparatorChar + "vb.rsp"; + + string responseFileName = Path.GetTempFileName(); + + StreamWriter writer = new StreamWriter(responseFileName); + writer.WriteLine(GenerateOptions(compilerparameters, exe)); + writer.WriteLine('"' + filename + '"'); + writer.Close(); + + string compilerName = GetCompilerName(compilerparameters.VBCompilerVersion); + string outstr = compilerName + " \"@" + responseFileName + "\" \"@" + stdResponseFileName + "\""; + + TempFileCollection tf = new TempFileCollection (); + Executor.ExecWaitWithCapture(outstr, tf, ref output, ref error); + + ICompilerResult result = ParseOutput(tf, output); + + File.Delete(responseFileName); + File.Delete(output); + File.Delete(error); + WriteManifestFile(exe); + return result; + } + + public ICompilerResult CompileProject(IProject project) + { + VBProject p = (VBProject)project; + VBCompilerParameters compilerparameters = (VBCompilerParameters)p.ActiveConfiguration; + string exe = FileUtility.GetDirectoryNameWithSeparator(compilerparameters.OutputDirectory) + compilerparameters.OutputAssembly + (compilerparameters.CompileTarget == CompileTarget.Library ? ".dll" : ".exe"); + string responseFileName = Path.GetTempFileName(); + string stdResponseFileName = PropertyService.DataDirectory + Path.DirectorySeparatorChar + "vb.rsp"; + + foreach (ProjectFile finfo in project.ProjectFiles) { + if (Path.GetFileName(finfo.Name).ToLower() == "app.config") { + try { + File.Copy(finfo.Name, exe + ".config", true); + } catch (Exception ex) { + + MessageService.ShowError(ex); + } + break; + } + } + + StreamWriter writer = new StreamWriter(responseFileName); + writer.WriteLine(GenerateOptions(compilerparameters, exe)); + + foreach (ProjectReference lib in p.ProjectReferences) { + string fileName = lib.GetReferencedFileName(p); + writer.WriteLine("\"/r:" + fileName + "\""); + } + + // write source files and embedded resources + foreach (ProjectFile finfo in p.ProjectFiles) { + if (finfo.Subtype != Subtype.Directory) { + switch (finfo.BuildAction) { + case BuildAction.Compile: + writer.WriteLine('"' + finfo.Name + '"'); + break; + + case BuildAction.EmbedAsResource: + writer.WriteLine("\"/res:" + finfo.Name + "\""); + break; + } + } + } + + TempFileCollection tf = new TempFileCollection (); + writer.Close(); + + string output = ""; + string error = ""; + string compilerName = GetCompilerName(compilerparameters.VBCompilerVersion); + string outstr = compilerName + " \"@" + responseFileName + "\" \"@" + stdResponseFileName + "\""; + + Executor.ExecWaitWithCapture(outstr, tf, ref output, ref error); + ICompilerResult result = ParseOutput(tf, output); + project.CopyReferencesToOutputPath(false); + + File.Delete(responseFileName); + File.Delete(output); + File.Delete(error); + if (compilerparameters.CompileTarget != CompileTarget.Library) { + WriteManifestFile(exe); + } + return result; + } + + // code duplication: see C# backend : CSharpBindingCompilerManager + void WriteManifestFile(string fileName) + { + string manifestFile = fileName + ".manifest"; + if (File.Exists(manifestFile)) { + return; + } + StreamWriter sw = new StreamWriter(manifestFile); + sw.WriteLine(""); + sw.WriteLine(""); + sw.WriteLine(""); + sw.WriteLine(" "); + sw.WriteLine(" "); + sw.WriteLine(" "); + sw.WriteLine(" "); + sw.WriteLine(" "); + sw.WriteLine(""); + sw.Close(); + } + + ICompilerResult ParseOutput(TempFileCollection tf, string file) + { + StringBuilder compilerOutput = new StringBuilder(); + + StreamReader sr = File.OpenText(file); + + // skip fist whitespace line + sr.ReadLine(); + + CompilerResults cr = new CompilerResults(tf); + + while (true) { + string next = sr.ReadLine(); + compilerOutput.Append(next);compilerOutput.Append(Environment.NewLine); + if (next == null) { + break; + } + CompilerError error = new CompilerError(); + + int index = next.IndexOf(": "); + if (index < 0) { + continue; + } + + string description = null; + string errorwarning = null; + string location = null; + + string s1 = next.Substring(0, index); + string s2 = next.Substring(index + 2); + index = s2.IndexOf(": "); + + if (index == -1) { + errorwarning = s1; + description = s2; + } else { + location = s1; + s1 = s2.Substring(0, index); + s2 = s2.Substring(index + 2); + errorwarning = s1; + description = s2; + } + + if (location != null) { + int idx1 = location.LastIndexOf('('); + int idx2 = location.LastIndexOf(')'); + if (idx1 >= 0 && idx2 >= 0) { + string filename = location.Substring(0, idx1); + error.Line = Int32.Parse(location.Substring(idx1 + 1, idx2 - idx1 - 1)); + error.FileName = Path.GetFullPath(filename.Trim()); // + "\\" + Path.GetFileName(filename); + } + } + + string[] what = errorwarning.Split(' '); + error.IsWarning = what[0] == "warning"; + error.ErrorNumber = what[what.Length - 1]; + + error.ErrorText = description; + + cr.Errors.Add(error); + } + sr.Close(); + return new DefaultCompilerResult(cr, compilerOutput.ToString()); + } + } +} diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBBindingExecutionServices.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBBindingExecutionServices.cs new file mode 100644 index 0000000000..ab8bc30f27 --- /dev/null +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBBindingExecutionServices.cs @@ -0,0 +1,81 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Diagnostics; +using System.Collections; +using System.Reflection; +using System.Resources; +using System.Windows.Forms; +using System.Xml; +using System.CodeDom.Compiler; +using System.Threading; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace VBBinding +{ + /// + /// This class controls the compilation of C Sharp files and C Sharp projects + /// + public class VBBindingExecutionServices + { + + public void Execute(string filename, bool debug) + { + string exe = Path.ChangeExtension(filename, ".exe"); + DebuggerService DebuggerService = (DebuggerService)ServiceManager.Services.GetService(typeof(DebuggerService)); + if (debug) { + DebuggerService.Start(exe, Path.GetDirectoryName(exe), ""); + } else { + ProcessStartInfo psi = new ProcessStartInfo(Environment.GetEnvironmentVariable("ComSpec"), "/c " + "\"" + exe + "\"" + " & pause"); + psi.WorkingDirectory = Path.GetDirectoryName(exe); + psi.UseShellExecute = false; + + DebuggerService.StartWithoutDebugging(psi); + } + } + + public void Execute(IProject project, bool debug) + { + VBCompilerParameters parameters = (VBCompilerParameters)project.ActiveConfiguration; + + + string directory = FileUtility.GetDirectoryNameWithSeparator(parameters.OutputDirectory); + string exe = parameters.OutputAssembly + ".exe"; + string args = parameters.CommandLineParameters; + + ProcessStartInfo psi; +// bool customStartup = false; + if (parameters.CompileTarget != CompileTarget.WinExe && parameters.PauseConsoleOutput && !debug) { +// customStartup = true; + psi = new ProcessStartInfo(Environment.GetEnvironmentVariable("ComSpec"), "/c \"" + directory + exe + "\" " + args + " & pause"); + } else { + if (parameters.CompileTarget == CompileTarget.Library) { + + MessageService.ShowError("${res:BackendBindings.ExecutionManager.CantExecuteDLLError}"); + return; + } + + psi = new ProcessStartInfo(directory + exe); + psi.Arguments = args; + } + + psi.WorkingDirectory = Path.GetDirectoryName(directory); + psi.UseShellExecute = false; + DebuggerService DebuggerService = (DebuggerService)ServiceManager.Services.GetService(typeof(DebuggerService)); + if (debug /*&& !customStartup*/) { + DebuggerService.Start(Path.Combine(directory, exe), directory, args); + } else { + DebuggerService.StartWithoutDebugging(psi); + } + } + } +} diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBDOCCommand.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBDOCCommand.cs new file mode 100644 index 0000000000..6f7618c9ca --- /dev/null +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBDOCCommand.cs @@ -0,0 +1,98 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Collections; +using System.Collections.Specialized; +using System.Windows.Forms; +using System.Reflection; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop; +using ICSharpCode.SharpDevelop.Internal.Project; + +namespace VBBinding +{ + //// + /// Provides functions to run VB.DOC and to read the configuration of VB.DOC. + /// + public class VBDOCCommand : AbstractMenuCommand + { + /// + /// Runs VB.DOC for the given project + /// + public override void Run() + { + IProjectService projectService = (IProjectService)ICSharpCode.Core.ServiceManager.Services.GetService(typeof(IProjectService)); + VBProject project = (VBProject)projectService.CurrentSelectedProject; + VBCompilerParameters compilerParameters = (VBCompilerParameters)project.ActiveConfiguration; + + Options options = new Options(); + string extension = compilerParameters.CompileTarget == CompileTarget.Exe ? ".dll" : ".exe"; + options.AssemblyFile = Path.Combine(compilerParameters.OutputDirectory, compilerParameters.OutputAssembly) + extension; + + ArrayList files = new ArrayList(); + foreach(ProjectFile file in project.ProjectFiles) { + if(VBDOCConfigurationPanel.IsFileIncluded(file.Name, project)) { + files.Add(file.Name); + } + } + + options.Files = (string[])files.ToArray(typeof(string)); + options.GlobalImports = compilerParameters.Imports.Split(','); + options.OutputXML = compilerParameters.VBDOCOutputFile; + options.Prefix = compilerParameters.VBDOCCommentPrefix; + options.RootNamespace = compilerParameters.RootNamespace; + + ArrayList referenceDirs = new ArrayList(); + string mainDirectory = Path.GetDirectoryName(options.AssemblyFile); + + foreach(ProjectReference projectFile in project.ProjectReferences) { + if(projectFile.ReferenceType == ReferenceType.Assembly) { + string referenceDir = Path.GetDirectoryName(projectFile.Reference); + if(referenceDir.ToLower() != mainDirectory.ToLower() && referenceDirs.Contains(referenceDir) == false) { + referenceDirs.Add(referenceDir); + } + } + } + + StringCollection errors = options.Validate(); + + if(errors.Count > 0) { + string message = ""; + foreach(string description in errors) { + message += description + "\n"; + } + MessageBox.Show(message, "Invalid VB.DOC options", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + + VBDOCRunner runner = new VBDOCRunner(); + AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(resolve); + GuiMessageRecipient messageRecipient = new GuiMessageRecipient(); + + try { + runner.RunVBDOC(options, messageRecipient); + } catch(Exception ex) { + MessageBox.Show("Documentation generation failed:\n" + ex.Message); + } finally { + messageRecipient.Finished(); + AppDomain.CurrentDomain.AssemblyResolve -= new ResolveEventHandler(resolve); + } + + } + + Assembly resolve(object sender, ResolveEventArgs e) + { + if(e.Name.StartsWith("CommentExtractor")) { + return Assembly.GetAssembly(typeof(VBDOCRunner)); + } + return null; + } + } +} diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBLanguageBinding.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBLanguageBinding.cs new file mode 100644 index 0000000000..2501f28e77 --- /dev/null +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBLanguageBinding.cs @@ -0,0 +1,86 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Collections; +using System.Diagnostics; +using System.Windows.Forms; +using System.Xml; + +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Internal.Templates; + +namespace VBBinding +{ + public class VBLanguageBinding : ILanguageBinding + { + public const string LanguageName = "VBNET"; + + VBBindingCompilerServices compilerServices = new VBBindingCompilerServices(); + VBBindingExecutionServices executionServices = new VBBindingExecutionServices(); + + public string Language { + get { + return LanguageName; + } + } + + public void Execute(string filename, bool debug) + { + Debug.Assert(executionServices != null); + executionServices.Execute(filename, debug); + } + + public void Execute(IProject project, bool debug) + { + Debug.Assert(executionServices != null); + executionServices.Execute(project, debug); + } + + public string GetCompiledOutputName(string fileName) + { + Debug.Assert(compilerServices != null); + return compilerServices.GetCompiledOutputName(fileName); + } + + public string GetCompiledOutputName(IProject project) + { + Debug.Assert(compilerServices != null); + return compilerServices.GetCompiledOutputName(project); + } + + public bool CanCompile(string fileName) + { + Debug.Assert(compilerServices != null); + return compilerServices.CanCompile(fileName); + } + + public ICompilerResult CompileFile(string fileName) + { + Debug.Assert(compilerServices != null); + return compilerServices.CompileFile(fileName); + } + + public ICompilerResult CompileProject(IProject project) + { + Debug.Assert(compilerServices != null); + return compilerServices.CompileProject(project); + } + + public ICompilerResult RecompileProject(IProject project) + { + return CompileProject(project); + } + + public IProject CreateProject(ProjectCreateInformation info, XmlElement projectOptions) + { + return new VBProject(info, projectOptions); + } + } +} diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj b/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj new file mode 100644 index 0000000000..27cce051fb --- /dev/null +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj @@ -0,0 +1,83 @@ + + + Debug + AnyCPU + 8.0.40607 + 2.0 + {6b2fd2d9-5550-49f9-ad75-bbc1cd2ae698} + NewProject + VBNetBinding + Library + 4 + False + False + OnSuccessfulBuild + + + True + True + True + True + ..\..\..\..\..\AddIns\AddIns\BackendBindings\VBNetBinding\ + False + + + True + True + True + True + ..\..\..\..\..\AddIns\AddIns\BackendBindings\VBNetBinding\ + False + + + + + + + + + ..\..\..\..\..\bin\ICSharpCode.Core.dll + False + + + ..\..\..\..\..\bin\ICSharpCode.TextEditor.dll + False + + + ..\..\..\..\..\bin\ICSharpCode.XmlForms.dll + False + + + ..\..\..\..\..\bin\SharpDevelop.Base.dll + False + + + ..\..\..\..\..\bin\ICSharpCode.NRefactory.dll + False + + + ..\..\..\..\..\AddIns\AddIns\BackendBindings\VBNetBinding\CommentExtractor.dll + True + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj.user b/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj.user new file mode 100644 index 0000000000..f4a96146fe --- /dev/null +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj.user @@ -0,0 +1,8 @@ + + + ..\..\..\..\bin\SharpDevelop.exe + + + ..\..\..\..\bin\SharpDevelop.exe + + \ No newline at end of file diff --git a/src/AddIns/BackendBindings/VBNetBinding/RequiredLibraries/CommentExtractor.dll b/src/AddIns/BackendBindings/VBNetBinding/RequiredLibraries/CommentExtractor.dll new file mode 100644 index 0000000000000000000000000000000000000000..2d92af90fdde23d5ec4ff86195f046c718488576 GIT binary patch literal 53248 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%0DI^2s184!nNf4tQHSs^Ko3Kt)i6 zHkgVk=oWHNk6;?53aKlcP@@#bDu6^|3$3^%RuM_~AsPgP&|p#tpj}1r2cZVyyaxJ) z6klc5uZDta@TZgnwJ5;Y;6g-K#|HOfIH*F<2PGlkrsO;d*Qh}sbnXk);2$%nfyhix znrNY3Y6^n>*bEESf@-WHig6P9;4M*T9z5R?+j|4?7Xn>HY+;nz@`Z@a8X}Ah-VT70 zWDxjqZGG@AVBjeN_k;Qm=!1`d=SVQ2hH3+$P>}7YHV{EygZI=1U?3X!ps^QFQZ$Nx z%#%Wark~?(D&$DM2wNmKr_}gigFMo2q9iu>CZRRZyb7g9Yt>jV5{<&}-h^`AjMhd& zwJMDgx_Dm`N-Z}Ix@c9fFgExevSiozgKCHv$^E3n8VX98kB_*1Z15xEL?8TE!^p&j z0zrYX!-x4B8Yd&2lrjXD9O5}b^PqN8Fd7@Gr7ng@USz_tp>YHa>FDkzY78Bdv^4BK zg_?{FHAE|e5sIMyp^3~Zi1Q;jG?mF_Na{Ik-$V1b|H%cIdP9@t|4cPm7SEBH(D+~x ztUori5G165Q>f*kIkBO61js&MIc!to0?-5|M-X!ey2rm64s(hY1u@q)QQb{Yn+{F~ zSCKHR5+FRl+-yyV#yq7DtqRe2!ERF+hHBIxyB~*XWOGVWlI*jZxucdybYhSqTXMx0 z3PFroj5Tx|LI##oQ-f|W9_Tq#5DcO)8p3}n@v0Wu0IH}Yhsr}Zm?G=Pti{-*LSZx+ z8``7~og&9K!{(hrPZ*0ZMf%X0WYw4v7{VS&-w%438gNp3oYWvvrvxV=M9VBi28~ed z*qO1R{t?K)2xJe42f^UbrVxS*1^xINz~3JH4PtCCcQ8~+eGpy}s)D+rv5Az#N9qi^ zs8u7u04UKxG#U*0ImX1qR2C43rQCZ1%_K&KdVqsf`1aV)KFmk5>We`Y8@eo18!SO} zB@}}sXF}grHyAnTTohnTdUdomh=BkXm}k@uCBO^_d7d%RKFq{oDj@<)111FPwJIos zK?Qr5!JBw2mK6#(jpsmcAU3og)1`*iAaan;6$S%<_ajvkO9p({LWw&3{4ahYVMl*9 zu_o2slWt1PoIZV4Vk$*AC|3GJ>Bc3^t*e(N@Iw&kg!59F7>C~_w%%sMD{t~ABk*JB zXq4N%?Llf?etu5rgq0Zgl84M0XtiPJUR392OJ%lT%?0I3Bl)(-6`rs~u;r)i`6F#%C}( zana`i|DXRwCgA5>{ufNJ!{-m-ij}sbRwVE{)7bUn6<_OU-iFf)ouBD5fm>UTQaTr8 zaVDc{CwVSn0&$!F1vKgdPx*_3kuBZEH1vF4{x=)vZs-7~4*Ja&y3ETz>cG_-I9h^} ziae9h$%ig!=o~rXB9wVloHpn}w-@JS`+AFbOyF-N|7MKM7hQf&>>wGnN(uA#ZS85cdxprb$Pn`9)d%Eu9OU(oI1@PF#F8Mhex z{1a`RjDM-lhZgbXC$~a%`yek#(uI?J4m7J!V&Y*>KV(esMInAn1~uqGnS4iL7E)84 z99dTrEW_Qd9C5mIp<4oKjYdVFj=<@kv@17jNa|F{PJFJ5~oQvd(} literal 0 HcmV?d00001 diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Resources/WixBinding.addin b/src/AddIns/BackendBindings/WixBinding/Project/Resources/WixBinding.addin new file mode 100644 index 0000000000..a82af83af1 --- /dev/null +++ b/src/AddIns/BackendBindings/WixBinding/Project/Resources/WixBinding.addin @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/AssemblyInfo.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/AssemblyInfo.cs new file mode 100644 index 0000000000..bf61b90709 --- /dev/null +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/AssemblyInfo.cs @@ -0,0 +1,32 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following +// attributes. +// +// change them to the information which is associated with the assembly +// you compile. + +[assembly: AssemblyTitle("Wix Binding")] +[assembly: AssemblyDescription("Wix installer binding for #develop")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("www.icsharpcode.net")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("(c) 2004 Mike Krueger")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has following format : +// +// Major.Minor.Build.Revision +// +// You can specify all values by your own or you can build default build and revision +// numbers with the '*' character (the default): + +[assembly: AssemblyVersion("2.0.0.1")] + +// The following attributes specify the key for the sign of your assembly. See the +// .NET Framework documentation for more information about signing. +// This is not required, if you don't want signing let these attributes like they're. +[assembly: AssemblyDelaySign(false)] +[assembly: AssemblyKeyFile("")] diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/CompilerParametersPanel.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/CompilerParametersPanel.cs new file mode 100644 index 0000000000..9d5cadc0da --- /dev/null +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/CompilerParametersPanel.cs @@ -0,0 +1,39 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Drawing; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Internal.ExternalTool; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace ICSharpCode.WixBinding +{ + public class CompilerParametersPanel : AbstractOptionPanel + { + WixCompilerParameters compilerParameters = null; + + public override void LoadPanelContents() + { + this.compilerParameters = (WixCompilerParameters)((Properties)CustomizationObject).Get("Config"); + + System.Windows.Forms.PropertyGrid grid = new System.Windows.Forms.PropertyGrid(); + grid.Dock = DockStyle.Fill; + grid.SelectedObject = compilerParameters; + Controls.Add(grid); + } + + public override bool StorePanelContents() + { + return true; + } + } +} diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/LinkerParametersPanel.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/LinkerParametersPanel.cs new file mode 100644 index 0000000000..ce40c8ba78 --- /dev/null +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/LinkerParametersPanel.cs @@ -0,0 +1,39 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Drawing; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Internal.ExternalTool; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace ICSharpCode.WixBinding +{ + public class LinkerParametersPanel : AbstractOptionPanel + { + WixCompilerParameters compilerParameters = null; + + public override void LoadPanelContents() + { + this.compilerParameters = (WixCompilerParameters)((Properties)CustomizationObject).Get("Config"); + + System.Windows.Forms.PropertyGrid grid = new System.Windows.Forms.PropertyGrid(); + grid.Dock = DockStyle.Fill; + grid.SelectedObject = compilerParameters; + Controls.Add(grid); + } + + public override bool StorePanelContents() + { + return true; + } + } +} diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/Project/WixCompilerParameters.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/Project/WixCompilerParameters.cs new file mode 100644 index 0000000000..19a4c7067e --- /dev/null +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/Project/WixCompilerParameters.cs @@ -0,0 +1,31 @@ +// +// +// +// +// +// + +using System; +using System.Xml; +using System.Diagnostics; +using System.ComponentModel; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Internal.Project; + +namespace ICSharpCode.WixBinding +{ + /// + /// This class handles project specific compiler parameters + /// + public class WixCompilerParameters : AbstractProjectConfiguration + { + + public WixCompilerParameters() + { + } + public WixCompilerParameters(string name) + { + this.name = name; + } + } +} diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/Project/WixProject.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/Project/WixProject.cs new file mode 100644 index 0000000000..435bf91583 --- /dev/null +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/Project/WixProject.cs @@ -0,0 +1,51 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Collections; +using System.Diagnostics; +using System.ComponentModel; +using System.Xml; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Internal.Templates; + +namespace ICSharpCode.WixBinding +{ + public class WixProject : AbstractProject + { + public override string ProjectType { + get { + return WixLanguageBinding.LanguageName; + } + } + + public WixProject() + { + } + + public override IConfiguration CreateConfiguration() + { + return new WixCompilerParameters(); + } + + public WixProject(ProjectCreateInformation info, XmlElement projectOptions) + { + if (info != null) { + Name = info.ProjectName; + Configurations.Add(CreateConfiguration("Debug")); + Configurations.Add(CreateConfiguration("Release")); + foreach (WixCompilerParameters parameter in Configurations) { + parameter.OutputDirectory = info.BinPath + Path.DirectorySeparatorChar + parameter.Name; + parameter.OutputAssembly = Name; + } + + } + } + } +} diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/WixCompilerManager.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/WixCompilerManager.cs new file mode 100644 index 0000000000..fc2f8e2c24 --- /dev/null +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/WixCompilerManager.cs @@ -0,0 +1,220 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.IO; +using System.Diagnostics; +using System.Text; +using System.Text.RegularExpressions; +using System.CodeDom.Compiler; +using System.Windows.Forms; + +using ICSharpCode.Core; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Gui; + +namespace ICSharpCode.WixBinding +{ + /// + /// Description of WixCompilerManager. + /// + public class WixCompilerManager + { + + + public string GetCompiledOutputName(string fileName) + { + return Path.ChangeExtension(fileName, ".msi"); + } + + public string GetCompiledOutputName(IProject project) + { + WixProject p = (WixProject)project; + WixCompilerParameters compilerparameters = (WixCompilerParameters)p.ActiveConfiguration; + string exe = FileUtility.GetDirectoryNameWithSeparator(compilerparameters.OutputDirectory) + compilerparameters.OutputAssembly + ".msi"; + return exe; + } + + public bool CanCompile(string fileName) + { + return Path.GetExtension(fileName).ToUpper() == ".WXS"; + } + + ICompilerResult Compile(WixCompilerParameters compilerparameters, string[] fileNames) + { + string output = String.Empty; + string error = String.Empty; + + string responseFileName = Path.GetTempFileName(); + + StreamWriter writer = new StreamWriter(responseFileName); + + + writer.WriteLine("-dDATADIR=\"" + PropertyService.DataDirectory + "\""); + foreach (string fileName in fileNames) { + writer.WriteLine("\"" + Path.GetFullPath(fileName) + "\""); + } + + string wixobj = Path.GetFullPath(FileUtility.GetDirectoryNameWithSeparator(compilerparameters.OutputDirectory) + compilerparameters.OutputAssembly + ".wixobj"); + writer.WriteLine("-out \"" + wixobj + "\""); + + writer.Close(); + + string compilerName = GetCompilerName(); + string outstr = compilerName + " \"@" + responseFileName + "\""; + + TempFileCollection tf = new TempFileCollection(); + Executor.ExecWaitWithCapture(outstr, Path.GetFullPath(compilerparameters.OutputDirectory), tf, ref output, ref error); + + ICompilerResult result = ParseOutput(tf, output); + + Console.WriteLine(result.CompilerOutput); + File.Delete(responseFileName); + File.Delete(output); + File.Delete(error); + return result; + } + + ICompilerResult Link(WixCompilerParameters compilerparameters, string[] fileNames) + { + string output = String.Empty; + string error = String.Empty; + + string responseFileName = Path.GetTempFileName(); + + StreamWriter writer = new StreamWriter(responseFileName); + + string wixobj = Path.GetFullPath(FileUtility.GetDirectoryNameWithSeparator(compilerparameters.OutputDirectory) + compilerparameters.OutputAssembly + ".wixobj"); + writer.WriteLine("\"" + wixobj + "\""); + string exe = Path.ChangeExtension(wixobj, ".msi"); + writer.WriteLine("-out \"" + exe + "\""); + writer.Close(); + + string linkerName = GetLinkerName(); + string outstr = linkerName + " \"@" + responseFileName + "\""; + Console.WriteLine(Path.GetFullPath(compilerparameters.OutputDirectory)); + TempFileCollection tf = new TempFileCollection(); + Executor.ExecWaitWithCapture(outstr, Path.GetFullPath(compilerparameters.OutputDirectory), tf, ref output, ref error); + + ICompilerResult result = ParseOutput(tf, output); + + File.Delete(responseFileName); + File.Delete(output); + File.Delete(error); + return result; + } + + public ICompilerResult CompileFile(string fileName, WixCompilerParameters compilerparameters) + { + compilerparameters.OutputDirectory = Path.GetDirectoryName(fileName); + compilerparameters.OutputAssembly = Path.GetFileNameWithoutExtension(fileName); + + ICompilerResult result = Compile(compilerparameters, new string[] { fileName }); + if (result.CompilerResults.Errors.Count > 0) { + return result; + } + ICompilerResult linkResult = Link(compilerparameters, new string[] { fileName }); + return new DefaultCompilerResult(linkResult.CompilerResults, result.CompilerOutput + linkResult.CompilerOutput); + } + + public ICompilerResult CompileProject(IProject project) + { + WixProject p = (WixProject)project; + WixCompilerParameters compilerparameters = (WixCompilerParameters)p.ActiveConfiguration; + + ArrayList fileNames = new ArrayList(); + + foreach (ProjectFile finfo in p.ProjectFiles) { + if (finfo.Subtype != Subtype.Directory) { + switch (finfo.BuildAction) { + case BuildAction.Compile: + fileNames.Add(finfo.Name); + break; +// case BuildAction.EmbedAsResource: +// writer.WriteLine("\"/res:" + finfo.Name + "\""); +// break; + } + } + } + + ICompilerResult result = Compile(compilerparameters, (string[])fileNames.ToArray(typeof(string))); + if (result.CompilerResults.Errors.Count > 0) { + return result; + } + return Link(compilerparameters, (string[])fileNames.ToArray(typeof(string))); + } + + string GetCompilerName() + { + return Path.Combine(Path.Combine(Application.StartupPath, "wix"), "candle.exe"); + } + + string GetLinkerName() + { + return Path.Combine(Path.Combine(Application.StartupPath, "wix"), "light.exe"); + } + + ICompilerResult ParseOutput(TempFileCollection tf, string file) + { + StringBuilder compilerOutput = new StringBuilder(); + + StreamReader sr = File.OpenText(file); + + // skip fist whitespace line + sr.ReadLine(); + + CompilerResults cr = new CompilerResults(tf); + +// // we have 2 formats for the error output the csc gives : +// Regex normalError = new Regex(@"(?.*)\((?\d+),(?\d+)\):\s+(?\w+)\s+(?[\d\w]+):\s+(?.*)", RegexOptions.Compiled); +// Regex generalError = new Regex(@"(?.+)\s+(?[\d\w]+):\s+(?.*)", RegexOptions.Compiled); +// + while (true) { + string curLine = sr.ReadLine(); + compilerOutput.Append(curLine); + compilerOutput.Append('\n'); + if (curLine == null) { + break; + } +// curLine = curLine.Trim(); +// if (curLine.Length == 0) { +// continue; +// } +// +// CompilerError error = new CompilerError(); +// +// // try to match standard errors +// Match match = normalError.Match(curLine); +// if (match.Success) { +// error.Column = Int32.Parse(match.Result("${column}")); +// error.Line = Int32.Parse(match.Result("${line}")); +// error.FileName = Path.GetFullPath(match.Result("${file}")); +// error.IsWarning = match.Result("${error}") == "warning"; +// error.ErrorNumber = match.Result("${number}"); +// error.ErrorText = match.Result("${message}"); +// } else { +// match = generalError.Match(curLine); // try to match general csc errors +// if (match.Success) { +// error.IsWarning = match.Result("${error}") == "warning"; +// error.ErrorNumber = match.Result("${number}"); +// error.ErrorText = match.Result("${message}"); +// } else { // give up and skip the line +// continue; +//// error.IsWarning = false; +//// error.ErrorText = curLine; +// } +// } +// +// cr.Errors.Add(error); + } + sr.Close(); + return new DefaultCompilerResult(cr, compilerOutput.ToString()); + } + } +} diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/WixExecutionManager.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/WixExecutionManager.cs new file mode 100644 index 0000000000..5e2ce9f371 --- /dev/null +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/WixExecutionManager.cs @@ -0,0 +1,56 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Diagnostics; +using System.Collections; +using System.Reflection; +using System.Resources; +using System.Windows.Forms; +using System.Xml; +using System.CodeDom.Compiler; +using System.Threading; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace ICSharpCode.WixBinding +{ + /// + /// This class describes the main functionalaty of a language codon + /// + public class WixExecutionManager + { + public void Execute(string filename, bool debug) + { + string exe = Path.ChangeExtension(filename, ".msi"); + ProcessStartInfo psi = new ProcessStartInfo("\"" + exe + "\""); + psi.WorkingDirectory = Path.GetDirectoryName(exe); + psi.UseShellExecute = true; + + DebuggerService DebuggerService = (DebuggerService)ServiceManager.Services.GetService(typeof(DebuggerService)); + DebuggerService.StartWithoutDebugging(psi); + } + + public void Execute(IProject project, bool debug) + { + WixCompilerParameters parameters = (WixCompilerParameters)project.ActiveConfiguration; + + + string exe = Path.GetFullPath(Path.Combine(parameters.OutputDirectory, parameters.OutputAssembly) + ".msi"); + Console.WriteLine("EXE: " + exe); + ProcessStartInfo psi = new ProcessStartInfo("\"" + exe + "\""); + psi.WorkingDirectory = Path.GetDirectoryName(exe); + psi.UseShellExecute = true; + + DebuggerService DebuggerService = (DebuggerService)ServiceManager.Services.GetService(typeof(DebuggerService)); + DebuggerService.StartWithoutDebugging(psi); + } + } +} diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/WixLanguageBinding.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/WixLanguageBinding.cs new file mode 100644 index 0000000000..2b32119662 --- /dev/null +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/WixLanguageBinding.cs @@ -0,0 +1,92 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Diagnostics; +using System.Collections; +using System.Reflection; +using System.Resources; +using System.Windows.Forms; +using System.Xml; +using System.CodeDom.Compiler; +using System.Threading; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Internal.Templates; +using ICSharpCode.SharpDevelop.Gui; + +namespace ICSharpCode.WixBinding +{ + public class WixLanguageBinding : ILanguageBinding + { + public const string LanguageName = "WIX"; + + WixExecutionManager executionManager = new WixExecutionManager(); + WixCompilerManager compilerManager = new WixCompilerManager(); + + public string Language { + get { + return LanguageName; + } + } + + public void Execute(string filename, bool debug) + { + Debug.Assert(executionManager != null); + executionManager.Execute(filename, debug); + } + + public void Execute(IProject project, bool debug) + { + Debug.Assert(executionManager != null); + executionManager.Execute(project, debug); + } + + public string GetCompiledOutputName(string fileName) + { + Debug.Assert(compilerManager != null); + return compilerManager.GetCompiledOutputName(fileName); + } + + public string GetCompiledOutputName(IProject project) + { + Debug.Assert(compilerManager != null); + return compilerManager.GetCompiledOutputName(project); + } + + public bool CanCompile(string fileName) + { + Debug.Assert(compilerManager != null); + return compilerManager.CanCompile(fileName); + } + + public ICompilerResult CompileFile(string fileName) + { + Debug.Assert(compilerManager != null); + WixCompilerParameters param = new WixCompilerParameters(); + param.OutputAssembly = Path.ChangeExtension(fileName, ".msi"); + return compilerManager.CompileFile(fileName, param); + } + + public ICompilerResult CompileProject(IProject project) + { + Debug.Assert(compilerManager != null); + return compilerManager.CompileProject(project); + } + + public ICompilerResult RecompileProject(IProject project) + { + return CompileProject(project); + } + + public IProject CreateProject(ProjectCreateInformation info, XmlElement projectOptions) + { + return new WixProject(info, projectOptions); + } + } +} diff --git a/src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj b/src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj new file mode 100644 index 0000000000..7cd09212f4 --- /dev/null +++ b/src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj @@ -0,0 +1,70 @@ + + + Debug + AnyCPU + 8.0.40607 + 2.0 + {e1b288a2-08ee-4318-8bbb-8ab72c69e33e} + ICSharpCode.WixBinding + WixBinding + Library + 4 + False + False + OnSuccessfulBuild + + + True + True + True + True + ..\..\..\..\..\AddIns\AddIns\BackendBindings\WixBinding\ + True + + + True + True + True + True + ..\..\..\..\..\AddIns\AddIns\BackendBindings\WixBinding\ + False + + + + + + + + + ..\..\..\..\..\bin\ICSharpCode.Core.dll + False + + + ..\..\..\..\..\bin\ICSharpCode.TextEditor.dll + False + + + ..\..\..\..\..\bin\ICSharpCode.XmlForms.dll + False + + + ..\..\..\..\..\bin\SharpDevelop.Base.dll + True + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj.user b/src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj.user new file mode 100644 index 0000000000..be2479913f --- /dev/null +++ b/src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj.user @@ -0,0 +1,6 @@ + + + ..\..\..\..\bin\SharpDevelop.exe + + + \ No newline at end of file diff --git a/src/AddIns/DisplayBindings/AssemblyScout/Project/Resources/AssemblyScout.addin b/src/AddIns/DisplayBindings/AssemblyScout/Project/Resources/AssemblyScout.addin new file mode 100644 index 0000000000..ffe02bb0c6 --- /dev/null +++ b/src/AddIns/DisplayBindings/AssemblyScout/Project/Resources/AssemblyScout.addin @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/AddIns/DisplayBindings/AssemblyScout/Project/Resources/AssemblyScoutOptions.xfrm b/src/AddIns/DisplayBindings/AssemblyScout/Project/Resources/AssemblyScoutOptions.xfrm new file mode 100644 index 0000000000..0fc2a4ccf6 --- /dev/null +++ b/src/AddIns/DisplayBindings/AssemblyScout/Project/Resources/AssemblyScoutOptions.xfrm @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyInfo.cs b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyInfo.cs new file mode 100644 index 0000000000..2ff1ec1ff0 --- /dev/null +++ b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyInfo.cs @@ -0,0 +1,29 @@ +// +// +// +// +// +// + +using System.Reflection; +using System.Runtime.CompilerServices; + +[assembly: AssemblyTitle("Objectbrowser for SharpDevelop")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("")] + +// the current contributor comes first in the copyright, the former second +// and so on :) +// SharpDevelop IS OUR project not MINE :) +// Mike +[assembly: AssemblyCopyright("Georg Brandl, Markus Palme, Mike Krüger")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +[assembly: AssemblyVersion("2.0.0.1")] + +[assembly: AssemblyDelaySign(false)] +[assembly: AssemblyKeyFile("")] +[assembly: AssemblyKeyName("")] diff --git a/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyScoutBinding.cs b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyScoutBinding.cs new file mode 100644 index 0000000000..013bb2d35a --- /dev/null +++ b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyScoutBinding.cs @@ -0,0 +1,51 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Collections; +using System.Resources; +using System.Windows.Forms; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Gui; +using UI = WeifenLuo.WinFormsUI; + +namespace ICSharpCode.SharpDevelop.AddIns.AssemblyScout +{ + /////////////////////////////////////////// + // AssemblyScoutBinding class + /////////////////////////////////////////// + public class AssemblyScoutBinding : IDisplayBinding + { + public bool CanCreateContentForFile(string fileName) + { + return Path.GetExtension(fileName).ToUpper() == ".DLL" || + Path.GetExtension(fileName).ToUpper() == ".EXE"; + } + + public bool CanCreateContentForLanguage(string language) + { + return false; + } + + + public IViewContent CreateContentForFile(string fileName) + { + AssemblyScoutViewContent wrapper = new AssemblyScoutViewContent(); + wrapper.Load(fileName); + return wrapper; + } + + public IViewContent CreateContentForLanguage(string language, string content) + { + return null; + } + } + +} diff --git a/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyScoutCommand.cs b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyScoutCommand.cs new file mode 100644 index 0000000000..43b61fe066 --- /dev/null +++ b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyScoutCommand.cs @@ -0,0 +1,25 @@ +// +// +// +// +// +// + +using System; +using ICSharpCode.SharpDevelop.Gui; + +namespace ICSharpCode.SharpDevelop.AddIns.AssemblyScout +{ + public class AssemblyScoutCommand : AbstractMenuCommand + { + + public override void Run() { + AssemblyScoutViewContent vw; + vw = new AssemblyScoutViewContent(); + vw.LoadStdAssemblies(); + vw.LoadRefAssemblies(); + WorkbenchSingleton.Workbench.ShowView(vw); + } + + } +} diff --git a/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyScoutCommands.cs b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyScoutCommands.cs new file mode 100644 index 0000000000..a30ef7ef13 --- /dev/null +++ b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyScoutCommands.cs @@ -0,0 +1,84 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Collections; +using System.Resources; +using System.Windows.Forms; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Commands; + +using ICSharpCode.SharpDevelop.AddIns.AssemblyScout; + +namespace ICSharpCode.SharpDevelop.AddIns.AssemblyScout.Commands +{ + public class LoadAssemblyCommand : AssemblyScoutCommand + { + public override void Run() + { + AssemblyScoutViewContent vc = GetViewContent(); + if (vc == null) return; + + vc.Tree.LoadAssembly(null, null); + } + } + + public class LoadRefAssembliesCommand : AssemblyScoutCommand + { + public override void Run() + { + AssemblyScoutViewContent vc = GetViewContent(); + if (vc == null) return; + + vc.LoadRefAssemblies(); + } + + } + + public class LoadStdAssembliesCommand : AssemblyScoutCommand + { + public override void Run() + { + AssemblyScoutViewContent vc = GetViewContent(); + if (vc == null) return; + + vc.LoadStdAssemblies(); + } + + } + + public class BackCommand : AssemblyScoutCommand + { + public override void Run() + { + AssemblyScoutViewContent vc = GetViewContent(); + if (vc == null) return; + + vc.Tree.GoBack(); + } + + } + + public class AssemblyScoutCommand : AbstractMenuCommand + { + protected AssemblyScoutViewContent GetViewContent() + { + IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; + + return (window.ViewContent as AssemblyScoutViewContent); + } + + public override void Run() + { + + } + } +} diff --git a/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyScoutOptionPanel.cs b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyScoutOptionPanel.cs new file mode 100644 index 0000000000..7d209dee58 --- /dev/null +++ b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyScoutOptionPanel.cs @@ -0,0 +1,71 @@ +// +// +// +// +// +// + +using System; +using System.Diagnostics; +using System.Reflection; +using System.IO; +using System.Drawing; +using System.Collections; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Internal.ExternalTool; +using ICSharpCode.Core; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; + +namespace ICSharpCode.SharpDevelop.AddIns.AssemblyScout +{ + public class AssemblyScoutOptionPanel : AbstractOptionPanel + { + Control[] combos = new Control[] {}; + + public override void LoadPanelContents() + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("AssemblyScoutOptions.xfrm")); + + combos = new Control[] { + ControlDictionary["privateTypesBox"], + ControlDictionary["internalTypesBox"], + ControlDictionary["privateMembersBox"], + ControlDictionary["internalMembersBox"] + }; + + foreach(ComboBox combo in combos) { + Debug.Assert(combo != null); + combo.Items.Add(StringParser.Parse("${res:Dialog.Options.IDEOptions.AssemblyScout.Show}")); + combo.Items.Add(StringParser.Parse("${res:Dialog.Options.IDEOptions.AssemblyScout.GreyOut}")); + combo.Items.Add(StringParser.Parse("${res:Dialog.Options.IDEOptions.AssemblyScout.Hide}")); + + combo.SelectedIndex = PropertyService.Get("AddIns.AssemblyScout." + combo.Name, 1); + } + + ((CheckBox)ControlDictionary["showReturnTypesBox"]).Checked + = PropertyService.Get("AddIns.AssemblyScout.ShowReturnTypes", true); + ((CheckBox)ControlDictionary["showResourcePreviewBox"]).Checked + = PropertyService.Get("AddIns.AssemblyScout.ShowResPreview", true); + ((CheckBox)ControlDictionary["showSpecialMethodsBox"]).Checked + = PropertyService.Get("AddIns.AssemblyScout.ShowSpecialMethods", true); + } + + public override bool StorePanelContents() + { + PropertyService.Set("AddIns.AssemblyScout.ShowReturnTypes", ((CheckBox)ControlDictionary["showReturnTypesBox"]).Checked); + PropertyService.Set("AddIns.AssemblyScout.ShowResPreview", ((CheckBox)ControlDictionary["showResourcePreviewBox"]).Checked); + PropertyService.Set("AddIns.AssemblyScout.ShowSpecialMethods", ((CheckBox)ControlDictionary["showSpecialMethodsBox"]).Checked); + + foreach(ComboBox combo in combos) { + PropertyService.Set("AddIns.AssemblyScout." + combo.Name, combo.SelectedIndex); + } + + return true; + } + } +} diff --git a/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyScoutViewContent.cs b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyScoutViewContent.cs new file mode 100644 index 0000000000..96492da1c0 --- /dev/null +++ b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyScoutViewContent.cs @@ -0,0 +1,306 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Collections; +using System.Resources; +using System.Windows.Forms; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; +using ICSharpCode.Core; +using ICSharpCode.Core; +using UI = WeifenLuo.WinFormsUI; + +namespace ICSharpCode.SharpDevelop.AddIns.AssemblyScout +{ + /////////////////////////////////////////// + // AssemblyScoutViewContent Class + /////////////////////////////////////////// + public class AssemblyScoutViewContent : AbstractViewContent + { + public ResourceService ress = (ResourceService)ServiceManager.Services.GetService(typeof(ResourceService)); + + public UI.DockPanel leftTabs, rightTabs; + Control control = null; + AssemblyTree tree = null; + + public override Control Control { + get { + return control; + } + } + + public AssemblyTree Tree { + get { + return tree; + } + } + + string untitledName = ""; + public override string UntitledName { + get { + return untitledName; + } + set { + untitledName = value; + } + } + +// public override string TitleName { +// get { +// return filename; +// } +// set { +// filename = value; +// OnTitleNameChanged(null); +// } +// } + + public override string TabPageText { + get { + return "Assemblies"; + } + } + + public override bool IsDirty { + get { + return false; + } + set { + } + } + + public override bool IsViewOnly { + get { + return true; + } + } + + IWorkbenchWindow workbenchWindow; + public override IWorkbenchWindow WorkbenchWindow { + get { + return workbenchWindow; + } + set { + workbenchWindow = value; + if (FileName == "") { + workbenchWindow.Title = ress.GetString("ObjectBrowser.AssemblyScout"); + } else { + workbenchWindow.Title = FileName; + } + } + } + + public override void RedrawContent() + { + } + + public override void Dispose() + { + try { + foreach(Control ctl in Control.Controls) { + ctl.Dispose(); + } + } catch { + return; + } + } + + public void SaveFile() + { + } + + public bool CanCreateContentForFile(string fileName) + { + return Path.GetExtension(fileName) == ".dll" || Path.GetExtension(fileName) == ".exe"; + } + + public bool CanCreateContentForLanguage(string language) + { + return false; + } + + + public IViewContent CreateContentForFile(string fileName) + { + Load(fileName); + return this; + } + + public void Undo() + { + } + + public void Redo() + { + } + + public IViewContent CreateContentForLanguage(string language, string content) + { + return null; + } + + public override void Save() + { + } + + public override void Save(string filename) + { + } + + public override void Load(string filename) + { + tree.LoadFile(filename); + this.FileName = filename; + this.TitleName = Path.GetFileName(filename); + } + + + + public AssemblyScoutViewContent() + { + Panel panel = new Panel(); + panel.Dock = DockStyle.Fill; + + leftTabs = new UI.DockPanel(); + leftTabs.Dock = DockStyle.Left; + leftTabs.Width = 400; + leftTabs.AllowDrop = false; + leftTabs.AllowRedocking = false; + + AssemblyTree assemblyTree = new AssemblyTree(this); + this.tree = assemblyTree; + + UI.DockContent treeviewpage = new UI.DockContent(); + treeviewpage.Text = ress.GetString("ObjectBrowser.Tree"); + treeviewpage.Icon = ResourceService.GetIcon("Icons.16x16.Class"); + treeviewpage.DockPadding.All = 8; + treeviewpage.Controls.Add(assemblyTree); + treeviewpage.DockableAreas = UI.DockAreas.Document; + treeviewpage.CloseButton = false; + treeviewpage.Show(leftTabs); + + UI.DockContent indexviewpage = new UI.DockContent(); + indexviewpage.Text = ress.GetString("ObjectBrowser.Search"); + indexviewpage.Icon = ResourceService.GetIcon("Icons.16x16.FindIcon"); + SearchPanel SearchPanel = new SearchPanel(assemblyTree); + SearchPanel.ParentDisplayInfo = this; + indexviewpage.DockPadding.All = 8; + indexviewpage.Controls.Add(SearchPanel); + indexviewpage.DockableAreas = UI.DockAreas.Document; + indexviewpage.CloseButton = false; + indexviewpage.Show(leftTabs); + + Splitter vsplitter = new Splitter(); + vsplitter.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + + vsplitter.Location = new System.Drawing.Point(0, 200); + vsplitter.TabIndex = 5; + vsplitter.TabStop = false; + vsplitter.Size = new System.Drawing.Size(3, 273); + vsplitter.Dock = DockStyle.Left; + + + rightTabs = new UI.DockPanel(); + rightTabs.Dock = DockStyle.Fill; + rightTabs.AllowDrop = false; + rightTabs.AllowRedocking = false; + + UI.DockContent memberpage = new UI.DockContent(); + memberpage.Text = ress.GetString("ObjectBrowser.Info"); + memberpage.Icon = ResourceService.GetIcon("Icons.16x16.Information"); + memberpage.DockPadding.All = 8; + memberpage.Controls.Add(new InfoView(assemblyTree)); + memberpage.DockableAreas = UI.DockAreas.Document; + memberpage.CloseButton = false; + memberpage.Show(rightTabs); + + UI.DockContent ildasmviewpage = new UI.DockContent(); + ildasmviewpage.Text = ress.GetString("ObjectBrowser.Disasm"); + ildasmviewpage.Icon = ResourceService.GetIcon("Icons.16x16.ILDasm"); + ildasmviewpage.DockPadding.All = 8; + ildasmviewpage.Controls.Add(new ILDasmView(assemblyTree)); + ildasmviewpage.DockableAreas = UI.DockAreas.Document; + ildasmviewpage.CloseButton = false; + ildasmviewpage.Show(rightTabs); + + UI.DockContent sourceviewpage = new UI.DockContent(); + sourceviewpage.Text = ress.GetString("ObjectBrowser.Source"); + sourceviewpage.Icon = ResourceService.GetIcon("Icons.16x16.TextFileIcon"); + sourceviewpage.DockPadding.All = 8; + sourceviewpage.Controls.Add(new SourceView(assemblyTree)); + sourceviewpage.DockableAreas = UI.DockAreas.Document; + sourceviewpage.CloseButton = false; + sourceviewpage.Show(rightTabs); + + UI.DockContent xmlviewpage = new UI.DockContent(); + xmlviewpage.Text = ress.GetString("ObjectBrowser.XML"); + xmlviewpage.Icon = ResourceService.GetIcon("Icons.16x16.XMLFileIcon"); + xmlviewpage.DockPadding.All = 8; + xmlviewpage.Controls.Add(new XmlView(assemblyTree)); + xmlviewpage.DockableAreas = UI.DockAreas.Document; + xmlviewpage.CloseButton = false; + xmlviewpage.Show(rightTabs); + + UI.DockContent extproppage = new UI.DockContent(); + extproppage.Text = ress.GetString("ObjectBrowser.Extended"); + extproppage.Icon = ResourceService.GetIcon("Icons.16x16.Property"); + extproppage.DockPadding.All = 8; + extproppage.Controls.Add(new ExtendedPropsPanel(assemblyTree)); + extproppage.DockableAreas = UI.DockAreas.Document; + extproppage.CloseButton = false; + extproppage.Show(rightTabs); + + panel.Controls.Add(rightTabs); + panel.Controls.Add(vsplitter); + panel.Controls.Add(leftTabs); + + treeviewpage.Activate(); + memberpage.Activate(); + + this.control = panel; + this.TitleName = ress.GetString("ObjectBrowser.AssemblyScout"); + } + + public void LoadStdAssemblies() { + //try { + tree.AddAssembly(SA.SharpAssembly.Load("mscorlib")); + tree.AddAssembly(SA.SharpAssembly.Load("System")); + tree.AddAssembly(SA.SharpAssembly.Load("System.Xml")); + tree.AddAssembly(SA.SharpAssembly.Load("System.Windows.Forms")); + tree.AddAssembly(SA.SharpAssembly.Load("System.Drawing")); + tree.AddAssembly(SA.SharpAssembly.Load("System.Data")); + tree.AddAssembly(SA.SharpAssembly.Load("System.Design")); + tree.AddAssembly(SA.SharpAssembly.Load("System.Web")); + //} catch {} + } + + public void LoadRefAssemblies() { + IProjectService projectService = (IProjectService)ServiceManager.Services.GetService(typeof(IProjectService)); + try { + if (projectService.CurrentSelectedProject == null) return; + foreach(ProjectReference pr in projectService.CurrentSelectedProject.ProjectReferences) { + if (pr.ReferenceType == ReferenceType.Project || pr.ReferenceType == ReferenceType.Typelib) continue; + if (!tree.IsAssemblyLoaded(pr.GetReferencedFileName(null))) { + try { + tree.LoadFile(pr.GetReferencedFileName(null)); + } catch (Exception) { + //MessageBox.Show("Object Browser error:\nError loading assembly " + pr.GetReferencedFileName(null) + ".", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); + } + } + } + } catch (Exception) {} + + } + + + } +} diff --git a/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyTree.cs b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyTree.cs new file mode 100644 index 0000000000..04216f4998 --- /dev/null +++ b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/AssemblyTree.cs @@ -0,0 +1,657 @@ +// +// +// +// +// +// + +using System; +using System.Xml; +using System.Collections; +using System.IO; +using System.Drawing; +using System.Drawing.Printing; +using System.Windows.Forms; +using System.Threading; +using System.Resources; +using System.Text; + +using Microsoft.Win32; +using System.Diagnostics; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Internal.Project.Collections; +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Internal.ExternalTool; + +namespace ICSharpCode.SharpDevelop.AddIns.AssemblyScout +{ + public class AssemblyTree : TreeView + { + static AmbienceService AmbienceService = (AmbienceService)ServiceManager.Services.GetService(typeof(AmbienceService)); + public static IAmbience CurrentAmbience = AmbienceService.CurrentAmbience; + + public ResourceService ress = (ResourceService)ServiceManager.Services.GetService(typeof(ResourceService)); + + ArrayList assemblies = new ArrayList(); + AssemblyScoutViewContent _parent; + PropertyService propSvc; + + public ShowOptions showInternalTypes, showInternalMembers; + public ShowOptions showPrivateTypes, showPrivateMembers; + + public bool showSpecial = false; + + MenuItem mnuBack; + MenuItem mnuLoadAsm, mnuLoadStd, mnuLoadRef; + //MenuItem mnuShowPrivTypes, mnuShowIntTypes; + //MenuItem mnuShowPrivMem, mnuShowIntMem, mnuShowSpecial; + MenuItem mnuRemAsm, mnuCopyTree, mnuSaveRes, mnuJump, mnuOpenRef, mnuDisAsm; + + Stack history = new Stack(); + bool histback = false; + + AssemblyTreeNode selnode; + + public event EventHandler Changed; + + public AssemblyTree(AssemblyScoutViewContent parent) : base() + { + if (Changed != null) {} // only to prevent these pesky compiler warning :) M.K. + + Dock = DockStyle.Fill; + + string resPrefix = "ObjectBrowser.Menu."; + + + propSvc = (PropertyService)ServiceManager.Services.GetService(typeof(PropertyService)); + + this.ImageList = ClassBrowserIconService.ImageList; + + LabelEdit = false; + HotTracking = false; + AllowDrop = true; + HideSelection = false; + //Sorted = true; + + mnuBack = new MenuItem(ress.GetString(resPrefix + "GoBack"), new EventHandler(Back)); + mnuLoadAsm = new MenuItem(ress.GetString(resPrefix + "LoadAssembly"), new EventHandler(LoadAssembly)); + mnuLoadStd = new MenuItem(ress.GetString(resPrefix + "LoadStd"), new EventHandler(LoadStdAssemblies)); + mnuLoadRef = new MenuItem(ress.GetString(resPrefix + "LoadRef"), new EventHandler(LoadRefAssemblies)); + //mnuShowPrivTypes = new MenuItem(ress.GetString(resPrefix + "ShowPrivTypes"), new EventHandler(ShowPrivTypesEvt)); + //mnuShowIntTypes = new MenuItem(ress.GetString(resPrefix + "ShowIntTypes"), new EventHandler(ShowIntTypesEvt)); + //mnuShowPrivMem = new MenuItem(ress.GetString(resPrefix + "ShowPrivMem"), new EventHandler(ShowPrivMemEvt)); + //mnuShowIntMem = new MenuItem(ress.GetString(resPrefix + "ShowIntMem"), new EventHandler(ShowIntMemEvt)); + //mnuShowSpecial = new MenuItem(ress.GetString(resPrefix + "ShowSpecial"), new EventHandler(ShowSpecialEvt)); + mnuRemAsm = new MenuItem(ress.GetString(resPrefix + "RemoveAsm"), new EventHandler(RemoveAssembly)); + mnuCopyTree = new MenuItem(ress.GetString(resPrefix + "CopyTree"), new EventHandler(CopyAssemblyTree)); + mnuSaveRes = new MenuItem(ress.GetString(resPrefix + "SaveRes"), new EventHandler(SaveCurrentResource)); + mnuJump = new MenuItem(ress.GetString(resPrefix + "JumpType"), new EventHandler(JumpLink)); + mnuOpenRef = new MenuItem(ress.GetString(resPrefix + "OpenRef"), new EventHandler(OpenReference)); + mnuDisAsm = new MenuItem(ress.GetString(resPrefix + "DisasmToFile"), new EventHandler(DisAssembly)); + + ContextMenu = new ContextMenu(new MenuItem[] { + mnuBack, + new MenuItem("-"), + mnuLoadAsm, + mnuLoadStd, + mnuLoadRef, + new MenuItem("-"), + // mnuShowPrivTypes, + // mnuShowIntTypes, + // new MenuItem("-"), + // mnuShowPrivMem, + // mnuShowIntMem, + // mnuShowSpecial, + // new MenuItem("-"), + mnuRemAsm, + mnuCopyTree, + mnuSaveRes, + mnuJump, + mnuOpenRef, + mnuDisAsm + }); + + showPrivateTypes = (ShowOptions)propSvc.Get("AddIns.AssemblyScout.privateTypesBox", 1); + showInternalTypes = (ShowOptions)propSvc.Get("AddIns.AssemblyScout.internalTypesBox", 1); + showPrivateMembers = (ShowOptions)propSvc.Get("AddIns.AssemblyScout.privateMembersBox", 1); + showInternalMembers = (ShowOptions)propSvc.Get("AddIns.AssemblyScout.internalMembersBox", 1); + showSpecial = propSvc.Get("AddIns.AssemblyScout.ShowSpecialMethods", false); + + _parent = parent; + } + + public ArrayList Assemblies { + get { + return assemblies; + } + } + + public PrintDocument PrintDocument { + get { + return null; + } + } + + public bool WriteProtected { + get { + return false; + } + set { + } + } + + public void LoadFile(string fileName) + { + AddAssembly(SA.SharpAssembly.LoadFrom(fileName)); + } + + public bool IsAssemblyLoaded(string filename) + { + try { + foreach(SA.SharpAssembly asm in assemblies) { + if (asm.Location == filename) return true; + } + } catch { + } + return false; + } + + public void SaveFile(string filename) + { + } + + public void AddAssembly(SA.SharpAssembly assembly) + { + try { + if (IsAssemblyLoaded(assembly.Location)) return; + + assemblies.Add(assembly); + + TreeNode node = new FolderNode(System.IO.Path.GetFileNameWithoutExtension(assembly.Location), assembly, NodeType.Assembly, 0, 1); + Nodes.Add(node); + PopulateTree((AssemblyTreeNode)node); + } catch (Exception e) { + MessageBox.Show("Could not load assembly: " + e.ToString()); + } + } + + public void RePopulateTreeView() + { + foreach (AssemblyTreeNode node in Nodes) { + node.Populate(showPrivateTypes, showInternalTypes); + PopulateTree(node); + } + } + + public void PopulateTree(AssemblyTreeNode parentnode) + { + if (!parentnode.Populated) + parentnode.Populate(showPrivateTypes, showInternalTypes); + + foreach (AssemblyTreeNode node in parentnode.Nodes) { + if (!node.Populated) { + node.Populate(showPrivateTypes, showInternalTypes); + } + PopulateTree(node); + } + } + + public void GoToMember(IMember member) + { + string paramtext = ""; + + TypeNode typenode = GetTypeNode((SA.SharpAssembly)member.DeclaringType.DeclaredIn, member.DeclaringType.Namespace, member.DeclaringType.FullyQualifiedName); + if (typenode == null) return; + + bool isEnum = false; + if (member.DeclaringType != null && member.DeclaringType.ClassType == ClassType.Enum) isEnum = true; + + paramtext = MemberNode.GetShortMemberName(member, isEnum); + + if (!typenode.MembersPopulated) { + typenode.PopulateMembers(showPrivateMembers, showInternalMembers, showSpecial); + } + + TreeNode foundnode = typenode.GetNodeFromChildren(paramtext); + if (foundnode == null) return; + + foundnode.EnsureVisible(); + SelectedNode = foundnode; + } + + public void GoToNamespace(SA.SharpAssembly asm, string name) + { + foreach (AssemblyTreeNode node in Nodes) { + SA.SharpAssembly assembly = (SA.SharpAssembly)node.Attribute; + if (asm.FullName == assembly.FullName) { + + // curnode contains Filename node + AssemblyTreeNode curnode = (AssemblyTreeNode)node.GetNodeFromChildren(Path.GetFileName(assembly.Location)); + + TreeNode tnode = curnode.GetNodeFromChildren(name); // get namespace node + if (tnode == null) return; + tnode.EnsureVisible(); + SelectedNode = tnode; + return; + } + } + + // execute if assembly containing the type is not loaded + AddAssembly(asm); + GoToNamespace(asm, name); + } + + private TypeNode GetTypeNode(SA.SharpAssembly targetAssembly, string Namespace, string FullName) + { + foreach (AssemblyTreeNode node in Nodes) { + SA.SharpAssembly assembly = (SA.SharpAssembly)node.Attribute; + if (targetAssembly.FullName == assembly.FullName) { + + // curnode contains Filename node + AssemblyTreeNode curnode = (AssemblyTreeNode)node.GetNodeFromChildren(Path.GetFileName(assembly.Location)); + + TreeNode path; + + if (Namespace == null || Namespace == "") { + path = curnode; + } else { + TreeNode tnode = curnode.GetNodeFromChildren(Namespace); // get namespace node + if (tnode == null) { + return null; // TODO : returns null if the tree isn't up to date. + } else { + path = tnode; + } + } + + string nodename = FullName.Substring(Namespace.Length + 1); + + TreeNode foundnode = node.GetNodeFromCollection(path.Nodes, nodename); + return (TypeNode)foundnode; + } + } + + // execute if assembly containing the type is not loaded + AddAssembly(targetAssembly); + return GetTypeNode(targetAssembly, Namespace, FullName); + + } + + public void GoToType(IClass type) + { + AssemblyTreeNode node = GetTypeNode((SA.SharpAssembly)type.DeclaredIn, type.Namespace, type.FullyQualifiedName); + if (node == null) { + Console.WriteLine("No node for type found"); + return; + } + + node.EnsureVisible(); + SelectedNode = node; + } + + public void GoToType(IReturnType type) + { + AssemblyTreeNode node = GetTypeNode((SA.SharpAssembly)type.DeclaredIn, type.Namespace, type.FullyQualifiedName); + if (node == null) return; + + node.EnsureVisible(); + SelectedNode = node; + } + + protected override void OnDoubleClick(EventArgs e) + { + AssemblyTreeNode rn = (AssemblyTreeNode)SelectedNode; + if (rn == null) + return; + switch (rn.Type) { + + case NodeType.Link: // clicked on link, jump to link. + if (rn.Attribute is Type) { + GoToType((IClass)rn.Attribute); + } + break; + + case NodeType.Reference: // clicked on assembly reference, open assembly + // check if the assembly is open + RefNodeAttribute attr = (RefNodeAttribute)rn.Attribute; + OpenAssemblyByName(attr); + break; + } + } + + public void OpenAssemblyByName(RefNodeAttribute attr) + { + foreach (AssemblyTreeNode node in Nodes) { + if (node.Type == NodeType.Assembly) { + if (attr.RefName.FullName == ((SA.SharpAssembly)node.Attribute).FullName) { // if yes, return + node.EnsureVisible(); + SelectedNode = node; + return; + } + } + } + try { + AddAssembly(SA.SharpAssembly.Load(attr.RefName.FullName, System.IO.Path.GetDirectoryName(attr.Assembly.Location))); + OpenAssemblyByName(attr); + } catch(Exception ex) { + MessageBox.Show(String.Format(ress.GetString("ObjectBrowser.LoadError"), attr.RefName.Name, ex.Message), ress.GetString("Global.ErrorText"), MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + } + + protected override void OnBeforeCollapse(TreeViewCancelEventArgs e) + { + base.OnBeforeCollapse(e); + ((AssemblyTreeNode)e.Node).OnCollapse(); + } + + protected override void OnBeforeExpand(TreeViewCancelEventArgs e) + { + base.OnBeforeExpand(e); + + AssemblyTreeNode rn = (AssemblyTreeNode)e.Node; + if (!rn.Populated) + rn.Populate(showPrivateTypes, showInternalTypes); + + if (e.Node is TypeNode) { + TypeNode tn = e.Node as TypeNode; + + if (!tn.MembersPopulated) + tn.PopulateMembers(showPrivateMembers, showInternalMembers, showSpecial); + } + + ((AssemblyTreeNode)e.Node).OnExpand(); + } + + protected override void OnMouseDown(MouseEventArgs ev) + { + base.OnMouseDown(ev); + + AssemblyTreeNode node = GetNodeAt(ev.X, ev.Y) as AssemblyTreeNode; + if (node != null) { + if (ev.Button == MouseButtons.Right) histback = true; + SelectedNode = node; + histback = false; + mnuRemAsm.Visible = (node.Type == NodeType.Assembly); + mnuDisAsm.Visible = (node.Type == NodeType.Assembly); + mnuCopyTree.Visible = (node.Type == NodeType.Library); + mnuSaveRes.Visible = (node.Type == NodeType.Resource); + mnuJump.Visible = (node.Type == NodeType.Link); + mnuOpenRef.Visible = (node.Type == NodeType.Reference); + selnode = node; + } else { + mnuRemAsm.Visible = false; + mnuDisAsm.Visible = false; + mnuCopyTree.Visible = false; + mnuSaveRes.Visible = false; + mnuJump.Visible = false; + mnuOpenRef.Visible = false; + selnode = null; + } + + } + + public void LoadAssembly(object sender, EventArgs e) + { + using (SelectReferenceDialog selDialog = new SelectReferenceDialog(new TempProject())) { + if (selDialog.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) { + + foreach (ProjectReference refInfo in selDialog.ReferenceInformations) { + if (refInfo.ReferenceType == ReferenceType.Typelib) continue; + if (refInfo.ReferenceType == ReferenceType.Project) continue; + + if (!IsAssemblyLoaded(refInfo.GetReferencedFileName(null))) { + try { + LoadFile(refInfo.GetReferencedFileName(null)); + } catch (Exception) {} + } + } + } + } + } + + void LoadStdAssemblies(object sender, EventArgs e) + { + _parent.LoadStdAssemblies(); + } + + void LoadRefAssemblies(object sender, EventArgs e) + { + _parent.LoadRefAssemblies(); + } + /* + void ShowPrivTypesEvt(object sender, EventArgs e) + { + showPrivateTypes = !showPrivateTypes; + propSvc.Set("ObjectBrowser.ShowPrivTypes", showPrivateTypes); + mnuShowPrivTypes.Checked = showPrivateTypes; + RePopulateTreeView(); + } + + void ShowIntTypesEvt(object sender, EventArgs e) + { + showInternalTypes = !showInternalTypes; + propSvc.Set("ObjectBrowser.ShowIntTypes", showInternalTypes); + mnuShowIntTypes.Checked = showInternalTypes; + RePopulateTreeView(); + } + + void ShowPrivMemEvt(object sender, EventArgs e) + { + showPrivateMembers = !showPrivateMembers; + propSvc.Set("ObjectBrowser.ShowPrivMembers", showPrivateMembers); + mnuShowPrivMem.Checked = showPrivateMembers; + RePopulateTreeView(); + } + + void ShowIntMemEvt(object sender, EventArgs e) + { + showInternalMembers = !showInternalMembers; + propSvc.Set("ObjectBrowser.ShowIntMembers", showInternalMembers); + mnuShowIntMem.Checked = showInternalMembers; + RePopulateTreeView(); + } + + void ShowSpecialEvt(object sender, EventArgs e) + { + showSpecial = !showSpecial; + propSvc.Set("ObjectBrowser.ShowSpecialMethods", showSpecial); + mnuShowSpecial.Checked = showSpecial; + RePopulateTreeView(); + } + */ + + public void RemoveAssembly(object sender, EventArgs e) + { + if (selnode == null) return; + if (selnode.Type != NodeType.Assembly) return; + + assemblies.Remove((SA.SharpAssembly)selnode.Attribute); + selnode.Remove(); + } + + public void CopyAssemblyTree(object sender, EventArgs e) + { + if (selnode == null) return; + if (selnode.Type != NodeType.Library) return; + + StringBuilder stb = new StringBuilder(); + + stb.Append(selnode.Text + "\n"); + GetSubNodeText(selnode, stb, 1); + + Clipboard.SetDataObject(stb.ToString(), true); + + } + + private static void GetSubNodeText(TreeNode node, StringBuilder build, int indentLevel) { + foreach (TreeNode tn in node.Nodes) { + build.Append('\t', indentLevel); + build.Append(tn.Text + "\n"); + GetSubNodeText(tn, build, indentLevel + 1); + } + } + + + + public void DisAssembly(object sender, EventArgs e) + { + if (selnode == null) return; + if (selnode.Type != NodeType.Assembly) return; + + SA.SharpAssembly asm = (SA.SharpAssembly)selnode.Attribute; + + SaveFileDialog sdialog = new SaveFileDialog(); + sdialog.AddExtension = true; + sdialog.FileName = asm.Name; + sdialog.Filter = "IL files (*.il)|*.il"; + sdialog.DefaultExt = ".il"; + sdialog.InitialDirectory = Path.GetDirectoryName(asm.Location); + + DialogResult dr = sdialog.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm); + sdialog.Dispose(); + if(dr != DialogResult.OK) return; + + try { + string args = '"' + asm.Location + "\" /NOBAR /OUT=\"" + sdialog.FileName + "\" /ALL "; + RegistryKey regKey = Registry.LocalMachine.CreateSubKey("SOFTWARE\\Microsoft\\.NETFramework"); + string cmd = (string)regKey.GetValue("sdkInstallRoot"); + if (cmd == null) cmd = (string)regKey.GetValue("sdkInstallRootv1.1"); + ProcessStartInfo psi = new ProcessStartInfo(FileUtility.GetDirectoryNameWithSeparator(cmd) + + "bin\\ildasm.exe", args); + + psi.RedirectStandardError = true; + psi.RedirectStandardOutput = true; + psi.RedirectStandardInput = true; + psi.UseShellExecute = false; + psi.CreateNoWindow = true; + + Process process = Process.Start(psi); + string output = process.StandardOutput.ReadToEnd(); + process.WaitForExit(); + + MessageBox.Show(String.Format(ress.GetString("ObjectBrowser.ILDasmOutput"), output)); + } catch(Exception ex) { + MessageBox.Show(String.Format(ress.GetString("ObjectBrowser.ILDasmError"), ex.ToString())); + } + } + + public void SaveCurrentResource(object sender, EventArgs e) + { + if (selnode == null) return; + if (selnode.Type != NodeType.Resource) return; + + SA.SharpAssembly asm = (SA.SharpAssembly)selnode.Attribute; + SaveResource(asm, selnode.Text); + + } + + public void SaveResource(SA.SharpAssembly asm, string name) + { + SaveFileDialog sdialog = new SaveFileDialog(); + sdialog.AddExtension = true; + sdialog.FileName = name; + sdialog.Filter = ress.GetString("ObjectBrowser.Filters.Binary") + "|*.*"; + sdialog.DefaultExt = ".bin"; + + DialogResult dr = sdialog.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm); + sdialog.Dispose(); + if(dr != DialogResult.OK) return; + + try { + byte[] res = asm.GetManifestResource(name); + FileStream fstr = new FileStream(sdialog.FileName, FileMode.Create); + BinaryWriter wr = new BinaryWriter(fstr); + wr.Write(res); + fstr.Close(); + } catch { + } + + } + + public void JumpLink(object sender, EventArgs e) + { + if (selnode == null) return; + if (selnode.Type != NodeType.Link) return; + + OnDoubleClick(e); + } + + public void OpenReference(object sender, EventArgs e) + { + if (selnode == null) return; + if (selnode.Type != NodeType.Reference) return; + + OnDoubleClick(e); + } + + void Back(object sender, EventArgs e) + { + if (history.Count == 0) return; + try { + histback = true; + TreeNode selnode = history.Pop() as TreeNode; + if (selnode != null) { + selnode.EnsureVisible(); + SelectedNode = selnode; + } + } finally { + histback = false; + } + } + + protected override void OnBeforeSelect(TreeViewCancelEventArgs ev) + { + base.OnBeforeSelect(ev); + if (!histback) { + // HACK : stack is cleared if too much elements + if (history.Count >= 100) history.Clear(); + history.Push(SelectedNode); + } + } + + public void GoBack() + { + try { + Back(mnuBack, new EventArgs()); + } catch {} + } + + public class RefNodeAttribute + { + public SA.SharpAssembly Assembly; + public SA.SharpAssemblyName RefName; + + public RefNodeAttribute(SA.SharpAssembly asm, SA.SharpAssemblyName name) + { + Assembly = asm; + RefName = name; + } + } + + protected override void OnMouseUp(System.Windows.Forms.MouseEventArgs e) + { + base.OnMouseUp(e); + + if (e.Button == MouseButtons.XButton1) { + GoBack(); + } + } + + } + + public class TreeNodeComparer : IComparer + { + public int Compare(object x, object y) + { + return String.Compare(((TreeNode)x).Text, ((TreeNode)y).Text); + } + } + + public enum ShowOptions + { + Show = 0, + GreyOut = 1, + Hide = 2 + } +} diff --git a/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/ExtendedPropPanel.cs b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/ExtendedPropPanel.cs new file mode 100644 index 0000000000..f01499d16b --- /dev/null +++ b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/ExtendedPropPanel.cs @@ -0,0 +1,201 @@ +// created on 11.12.2002 at 16:10 +using System; +using System.Windows.Forms; +using System.Drawing; +using System.Reflection; + +namespace ICSharpCode.SharpDevelop.AddIns.AssemblyScout { + + public class ExtendedPropsPanel : System.Windows.Forms.Panel + { + PropertyViewer props; + AssemblyTree _tree; + + public ExtendedPropsPanel(AssemblyTree tree) + { + _tree = tree; + _tree.AfterSelect += new TreeViewEventHandler(SelectNode); + + InitializeComponents(); + } + + void InitializeComponents() + { + Dock = DockStyle.Fill; + + props = new PropertyViewer(_tree); + props.Size = new Size(Width, Height); + props.Dock = DockStyle.Fill; + props.BackClick += new EventHandler(back_click); + + Controls.Add(props); + } + + void back_click(object sender, EventArgs e) + { + try { + _tree.GoBack(); + } catch {} + } + + void SelectNode(object sender, TreeViewEventArgs e) + { + AssemblyTreeNode node = (AssemblyTreeNode)e.Node; + object toShow = node.Attribute; + + switch(node.Type) { + case NodeType.Assembly: + case NodeType.Library: + case NodeType.Reference: + case NodeType.Module: + case NodeType.Link: + case NodeType.Type: + case NodeType.Constructor: + case NodeType.Event: + case NodeType.Field: + case NodeType.Method: + case NodeType.Property: + break; + case NodeType.Resource: + case NodeType.Folder: + case NodeType.Namespace: + case NodeType.SubTypes: + case NodeType.SuperTypes: + toShow = null; + break; + default: + toShow = null; + break; + } + props.ShowObject(toShow, node.Text, node.Type.ToString()); + } + } + + public class PropertyViewer : System.Windows.Forms.UserControl + { + ListView list = new ListView(); + GradientLabel cap = new GradientLabel(); + Label typ = new Label(); + LinkLabel back = new LinkLabel(); + ColumnHeader namecol; + ColumnHeader valuecol; + + AssemblyTree tree; + + public event EventHandler BackClick; + + private System.ComponentModel.Container components = null; + + public PropertyViewer(AssemblyTree _tree) + { + tree = _tree; + InitializeComponent(); + + } + + protected override void Dispose( bool disposing ) + { + if( disposing ) + { + if(components != null) + { + components.Dispose(); + } + } + base.Dispose( disposing ); + } + + private void InitializeComponent() + { + cap.Location = new Point(0, 0); + cap.Size = new Size(Width, 32); + cap.Text = tree.ress.GetString("ObjectBrowser.Welcome"); + cap.Font = new Font("Tahoma", 14); + cap.BackColor = SystemColors.ControlLight; + cap.TextAlign = ContentAlignment.MiddleLeft; + cap.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right; + + string backt = tree.ress.GetString("ObjectBrowser.Back"); + back.Size = new Size(40, 16); + back.Location = new Point(Width - back.Width, 44); + back.Text = backt; + back.TextAlign = ContentAlignment.TopRight; + back.Anchor = AnchorStyles.Top | AnchorStyles.Right; + back.Links.Add(0, backt.Length); + back.LinkClicked += new LinkLabelLinkClickedEventHandler(back_click); + + typ.Location = new Point(0, 44); + typ.Size = new Size(Width - back.Width, 16); + typ.Font = new Font(Font, FontStyle.Bold); + typ.Text = tree.ress.GetString("ObjectBrowser.WelcomeText"); + typ.TextAlign = ContentAlignment.TopLeft; + typ.Anchor = cap.Anchor; + + list.Location = new Point(0, 72); + list.Size = new Size(Width, Height - list.Top); + list.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom; + list.FullRowSelect = true; + list.GridLines = true; + list.View = View.Details; + + namecol = new ColumnHeader(); + namecol.Text = tree.ress.GetString("ObjectBrowser.Props.Property"); + namecol.Width = 120; + + valuecol = new ColumnHeader(); + valuecol.Text = tree.ress.GetString("ObjectBrowser.Props.Value"); + valuecol.Width = 300; + + list.Columns.Add(namecol); + list.Columns.Add(valuecol); + + Controls.AddRange(new System.Windows.Forms.Control[] {cap, typ, list, back}); + } + + public void ShowObject(object obj, string title, string subtitle) + { + cap.Text = title; + typ.Text = subtitle; + list.Items.Clear(); + + if (obj == null) + { + return; + } + + SetProps(obj); + + } + + void SetProps(object o) + { + Type type = o.GetType(); + PropertyInfo[] pi = type.GetProperties(); + + for(int i=0; i < pi.Length; ++i) + { + object ret = null; + try + { + ret = type.InvokeMember(pi[i].Name, BindingFlags.GetProperty, null, o, new object [] {}); + + AddItem(pi[i].Name, (ret == null) ? "" : ret.ToString()); + } + catch + { + } + } + } + + void AddItem(string name, string val) + { + list.Items.Add(new ListViewItem(new string[] {name, val})); + } + + void back_click(object sender, LinkLabelLinkClickedEventArgs ev) + { + BackClick(this, EventArgs.Empty); + } + + } +} diff --git a/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/ILDasmView.cs b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/ILDasmView.cs new file mode 100644 index 0000000000..9b6bcd553a --- /dev/null +++ b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/ILDasmView.cs @@ -0,0 +1,138 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.IO; +using System.Diagnostics; +using System.Drawing.Printing; +using System.Windows.Forms; +using System.Drawing; +using ICSharpCode.Core; +using Microsoft.Win32; + +using ICSharpCode.SharpDevelop.Dom; + +namespace ICSharpCode.SharpDevelop.AddIns.AssemblyScout +{ + public class ILDasmView : UserControl + { + CheckBox chk = new CheckBox(); + RichTextBox tb = new RichTextBox(); + AssemblyTree tree; + + public ILDasmView(AssemblyTree tree) + { + this.tree = tree; + + Dock = DockStyle.Fill; + + tb.Location = new Point(0, 24); + tb.Size = new Size(Width, Height - 24); + tb.Font = new System.Drawing.Font("Courier New", 10); + tb.ScrollBars = RichTextBoxScrollBars.Both; + tb.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom; + + tb.WordWrap = false; + tb.ReadOnly = true; + + chk.Location = new Point(0, 0); + chk.Size = new Size(250, 16); + chk.Text = tree.ress.GetString("ObjectBrowser.ILDasm.Enable"); + chk.FlatStyle = FlatStyle.System; + + chk.CheckedChanged += new EventHandler(Check); + Check(null, null); + + Controls.Add(tb); + Controls.Add(chk); + + tree.AfterSelect += new TreeViewEventHandler(SelectNode); + } + + void Check(object sender, EventArgs e) + { + if(chk.Checked) { + tb.BackColor = SystemColors.Window; + } else { + tb.BackColor = SystemColors.Control; + tb.Text = ""; + } + } + + void SelectNode(object sender, TreeViewEventArgs e) + { + if (!chk.Checked) return; + + AssemblyTreeNode node = (AssemblyTreeNode)e.Node; + + SA.SharpAssembly assembly = null; + string item = " /item="; + + if (node.Attribute is SA.SharpAssembly) { + assembly = (SA.SharpAssembly)node.Attribute; + } else if (node.Attribute is IClass) { + IClass type = (IClass)node.Attribute; + item += type.FullyQualifiedName; + assembly = (SA.SharpAssembly)type.DeclaredIn; + } else if (node.Attribute is IMethod) { + IMethod method = (IMethod)node.Attribute; + item += method.DeclaringType.FullyQualifiedName + "::" + method.Name; + assembly = (SA.SharpAssembly)method.DeclaringType.DeclaredIn; + } else { + tb.Text = tree.ress.GetString("ObjectBrowser.ILDasm.NoView"); + return; + } + tb.Text = GetILDASMOutput(assembly, item).Replace("\n", "\r\n"); + } + + + + private string GetILDASMOutput(SA.SharpAssembly assembly, string item) + { + try { + string args = '"' + assembly.Location + '"' + item + " /NOBAR /TEXT"; + RegistryKey regKey = Registry.LocalMachine.CreateSubKey("SOFTWARE\\Microsoft\\.NETFramework"); + string cmd = (string)regKey.GetValue("sdkInstallRoot"); + if (cmd == null) cmd = (string)regKey.GetValue("sdkInstallRootv1.1"); + ProcessStartInfo psi = new ProcessStartInfo(FileUtility.GetDirectoryNameWithSeparator(cmd) + + "bin\\ildasm.exe", args); + + psi.RedirectStandardError = true; + psi.RedirectStandardOutput = true; + psi.RedirectStandardInput = true; + psi.UseShellExecute = false; + psi.CreateNoWindow = true; + + Process process = Process.Start(psi); + string output = process.StandardOutput.ReadToEnd(); + process.WaitForExit(); + + int cutpos = output.IndexOf(".namespace"); + + if (cutpos != -1) { + return output.Substring(cutpos); + } + + cutpos = output.IndexOf(".class"); + if (cutpos != -1) { + return output.Substring(cutpos); + } + + cutpos = output.IndexOf(".method"); + if (cutpos != -1) { + return output.Substring(cutpos); + } + + return output; + } catch (Exception) { + return tree.ress.GetString("ObjectBrowser.ILDasm.NotInstalled"); + } + } + + } +} diff --git a/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/InfoView.cs b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/InfoView.cs new file mode 100644 index 0000000000..786b42903e --- /dev/null +++ b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/InfoView.cs @@ -0,0 +1,815 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.IO; +using System.Diagnostics; +using System.Drawing.Printing; +using System.Windows.Forms; +using System.Drawing; +using System.Drawing.Imaging; +using System.Drawing.Drawing2D; +using System.Xml; +using System.Text; +using System.Text.RegularExpressions; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Dom; +using ICSharpCode.Core; + +namespace ICSharpCode.SharpDevelop.AddIns.AssemblyScout +{ + public class InfoView : UserControl + { + GradientLabel cap = new GradientLabel(); + Label typ = new Label(); + LinkLabel back = new LinkLabel(); + + WebBrowser ht = new WebBrowser(); + Panel pan = new Panel(); + + AssemblyTree tree; + IParserService ParserService; + IAmbience ambience; + PropertyService PropertyService; + + ArrayList references = new ArrayList(); + string cssPath; + string imgPath; + string resPath; + + public InfoView(AssemblyTree tree) + { + + + PropertyService = (PropertyService)ServiceManager.Services.GetService(typeof(PropertyService)); + + ambience = AmbienceService.CurrentAmbience; + + this.tree = tree; + + imgPath = Path.Combine(PropertyService.ConfigDirectory, "tempPicture.png"); + cssPath = Path.Combine(PropertyService.ConfigDirectory, "tempStylesheet.css"); + resPath = Path.Combine(PropertyService.ConfigDirectory, "tempResource"); + + Color col = SystemColors.Control; + string color = "#" + col.R.ToString("X") + col.G.ToString("X") + col.B.ToString("X"); + + StreamWriter sw = new StreamWriter(cssPath, false); + sw.Write(@"body { margin: 0px; border: 0px; overflow: hidden; padding: 0px; + background-color: " + color + @"; + background-image: url(" + imgPath + @"); + background-position: bottom right; + background-repeat: no-repeat } + + p { font: 8pt Tahoma } + div { margin: 0px; width: 100% } + p.bottomline { font: 8pt Tahoma; border-bottom: 1px solid black; margin-bottom: 3px } + p.docmargin { font: 8pt Tahoma; margin-top: 0px; margin-bottom: 0px; padding-left: 8px; padding-right: 8px; padding-bottom: 3px; border-bottom: 1px solid black } + + a { font: 8pt Tahoma; text-decoration: none; color: blue} + a:visited { color: blue } + a:active { color: blue } + a:hover { color: red; text-decoration: underline }"); + sw.Close(); + + cap.Location = new Point(0, 0); + cap.Size = new Size(Width, 32); + cap.Text = tree.ress.GetString("ObjectBrowser.Welcome"); + cap.Font = new Font("Tahoma", 14); + cap.BackColor = SystemColors.ControlLight; + cap.TextAlign = ContentAlignment.MiddleLeft; + cap.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right; + + string backt = tree.ress.GetString("ObjectBrowser.Back"); + back.Size = new Size(40, 16); + back.Location = new Point(Width - back.Width, 44); + back.Text = backt; + back.TextAlign = ContentAlignment.TopRight; + back.Anchor = AnchorStyles.Top | AnchorStyles.Right; + back.Links.Add(0, backt.Length); + back.LinkClicked += new LinkLabelLinkClickedEventHandler(back_click); + + typ.Location = new Point(0, 44); + typ.Size = new Size(Width - back.Width, 16); + typ.Font = new Font(Font, FontStyle.Bold); + typ.Text = tree.ress.GetString("ObjectBrowser.WelcomeText"); + typ.TextAlign = ContentAlignment.TopLeft; + typ.Anchor = cap.Anchor; + + ht = new WebBrowser(); + //ht.Size = new Size(20, 20); + //ht.Location = new Point(20, 20); + ht.Navigating += new WebBrowserNavigatingEventHandler (HtmlControlBeforeNavigate); + CreateImage(ResourceService.GetIcon("Icons.16x16.Class").ToBitmap()); +// TODO: StyleSheet +// ht.CascadingStyleSheet = cssPath; + string html = RenderHead() + tree.ress.GetString("ObjectBrowser.Info.SelectNode") + RenderFoot(); + ht.DocumentText = html; + + pan.Location = new Point(0, 72); + pan.DockPadding.Left = 10; + pan.DockPadding.Bottom = 75; + pan.Size = new Size(Width, Height - ht.Top); + pan.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom; + pan.Controls.Add(ht); + + ht.Dock = DockStyle.Fill; + + Controls.AddRange(new Control[] { + cap, typ, back, pan + }); + + Dock = DockStyle.Fill; + tree.AfterSelect += new TreeViewEventHandler(SelectNode); + + ParserService = (IParserService)ServiceManager.Services.GetService(typeof(IParserService)); + } + + ~InfoView() { + System.IO.File.Delete(imgPath); + System.IO.File.Delete(cssPath); + } + + void HtmlControlBeforeNavigate(object sender, WebBrowserNavigatingEventArgs e) + { + e.Cancel = true; + + try { + string url = e.Url; + int refnr = Int32.Parse(url.Substring(5, url.Length - 6)); + object obj = references[refnr]; + + if (obj is IClass) { + // Go To Type + tree.GoToType((IClass)obj); + // try { + // tree.SelectedNode.Expand(); + // } catch {} + } else if (obj is AssemblyTree.RefNodeAttribute) { + // Open Assembly Reference + tree.OpenAssemblyByName((AssemblyTree.RefNodeAttribute)obj); + } else if (obj is SaveResLink) { + SaveResLink link = (SaveResLink)obj; + tree.SaveResource(link.Asm, link.Name); + } else if (obj is NamespaceLink) { + NamespaceLink ns = (NamespaceLink)obj; + tree.GoToNamespace(ns.Asm, ns.Name); + } + + } catch { + + MessageService.ShowError("Something failed following this link."); + } + } + + string RenderHead() + { + return "

      "; + } + + string RenderFoot() + { + return "

      "; + } + + void SelectNode(object sender, TreeViewEventArgs e) + { + AssemblyTreeNode node = (AssemblyTreeNode)e.Node; + cap.Text = node.Text; + typ.Text = node.Type.ToString(); + + references.Clear(); + + ambience.LinkArrayList = references; + ambience.ConversionFlags = ConversionFlags.AssemblyScoutDefaults; + + CreateImage(tree.ImageList.Images[node.ImageIndex]); + ht.Cursor = Cursors.Default; + StringBuilder htmlSB = new StringBuilder(RenderHead()); + + try { + + switch(node.Type) { + case NodeType.Assembly: + htmlSB.Append(GetAssemblyInfo((SA.SharpAssembly)node.Attribute)); + break; + case NodeType.Library: + htmlSB.Append(GetLibInfo((SA.SharpAssembly)node.Attribute)); + break; + case NodeType.Reference: + htmlSB.Append(GetRefInfo((AssemblyTree.RefNodeAttribute)node.Attribute)); + break; + case NodeType.Resource: + htmlSB.Append(GetResInfo((SA.SharpAssembly)node.Attribute, node.Text)); + break; + case NodeType.SingleResource: + htmlSB.Append(GetSingleResInfo(node.Attribute, node.Text)); + break; + case NodeType.Folder: + htmlSB.Append(GetFolderInfo(node.Text)); + break; + case NodeType.Namespace: + htmlSB.Append(GetNSInfo((SA.SharpAssembly)node.Attribute)); + break; + case NodeType.SubTypes: + htmlSB.Append(GetSubInfo()); + break; + case NodeType.SuperTypes: + htmlSB.Append(GetSuperInfo()); + break; + case NodeType.Link: + htmlSB.Append(GetLinkInfo((IClass)node.Attribute)); + break; + case NodeType.Type: + htmlSB.Append(GetTypeInfo((IClass)node.Attribute)); + break; + case NodeType.Event: + htmlSB.Append(GetEventInfo((IEvent)node.Attribute)); + break; + case NodeType.Field: + htmlSB.Append(GetFieldInfo((IField)node.Attribute)); + break; + case NodeType.Constructor: + case NodeType.Method: + htmlSB.Append(GetMethodInfo((IMethod)node.Attribute)); + break; + case NodeType.Property: + htmlSB.Append(GetPropInfo((IProperty)node.Attribute)); + break; + default: + break; + } + } catch(Exception ex) { + htmlSB.Append("

      " + tree.ress.GetString("ObjectBrowser.Info.CollectError") + "

      " + ex.ToString().Replace("\n", "
      ")); + } + + htmlSB.Append(RenderFoot()); + + ht.DocumentText = htmlSB.ToString(); + } + + string GetLinkInfo(IClass type) + { + StringBuilder text = new StringBuilder(ln(references.Add(type), RT("GotoType"))); + text.Append("

      "); + text.Append(RT("LinkedType")); + text.Append(" "); + text.Append(GetInAsm((SA.SharpAssembly)type.DeclaredIn)); + return text.ToString(); + } + + string GetSubInfo() + { + return RT("SubInfo"); + } + + string GetSuperInfo() + { + return RT("SuperInfo"); + } + + string GetNSInfo(SA.SharpAssembly asm) + { + return GetInAsm(asm); + } + + string GetFolderInfo(string folder) + { + if (folder == tree.ress.GetString("ObjectBrowser.Nodes.Resources")) + return RT("ResFInfo"); + else if (folder == tree.ress.GetString("ObjectBrowser.Nodes.References")) + return RT("RefFInfo"); + else if (folder == tree.ress.GetString("ObjectBrowser.Nodes.Modules")) + return RT("ModFInfo"); + else + return RT("NoInfo"); + } + + string GetLibInfo(SA.SharpAssembly asm) + { + return String.Concat(RT("LibInfo"), "

      ", GetInAsm(asm)); + } + + string GetRefInfo(AssemblyTree.RefNodeAttribute asn) + { + string text = String.Format(RT("RefInfo"), asn.RefName.Name, asn.RefName.FullName, asn.RefName.Version.ToString(), ""); + return String.Concat(text, ln(references.Add(asn), RT("OpenRef"))); + } + + string GetResInfo(SA.SharpAssembly asm, string name) + { + long size = 0; + try { + size = asm.GetManifestResourceSize(name); + } catch {} + + StringBuilder text = new StringBuilder(String.Format(RT("ResInfo"), name, size)); + text.Append(GetInAsm(asm)); + + text.Append("

      "); + text.Append(ln(references.Add(new SaveResLink(asm, name)), RT("SaveRes"))); + + if (PropertyService.Get("AddIns.AssemblyScout.ShowResPreview", true) == false) { + return text.ToString(); + } + + try { + if (name.ToLower().EndsWith(".bmp") || name.ToLower().EndsWith(".gif") + || name.ToLower().EndsWith(".png") || name.ToLower().EndsWith(".jpg")) { + byte[] res = asm.GetManifestResource(name); + FileStream fstr = new FileStream(resPath, FileMode.Create); + BinaryWriter wr = new BinaryWriter(fstr); + wr.Write(res); + fstr.Close(); + + text.Append("

      Preview:

      "); + text.Append(""); + } + if (name.ToLower().EndsWith(".tif")) { + byte[] res = asm.GetManifestResource(name); + Image tifImg = Image.FromStream(new MemoryStream(res)); + tifImg.Save(resPath, ImageFormat.Bmp); + + text.Append("

      Preview:

      "); + text.Append(""); + } + if (name.ToLower().EndsWith(".ico")) { + byte[] res = asm.GetManifestResource(name); + Icon icon = new Icon(new MemoryStream(res)); + using (Bitmap b = new Bitmap(icon.Width, icon.Height)) { + Graphics g = Graphics.FromImage(b); + g.FillRectangle(SystemBrushes.Control, 0, 0, b.Width, b.Height); + g.DrawIcon(icon, 0, 0); + + b.Save(resPath, System.Drawing.Imaging.ImageFormat.Png); + } + text.Append("

      Preview:

      "); + text.Append(""); + } + if (name.ToLower().EndsWith(".cur")) { + byte[] res = asm.GetManifestResource(name); + Cursor cursor = new Cursor(new MemoryStream(res)); + + using (Bitmap b = new Bitmap(cursor.Size.Width, cursor.Size.Height)) { + Graphics g = Graphics.FromImage(b); + g.FillRectangle(SystemBrushes.Control, 0, 0, b.Width, b.Height); + cursor.Draw(g, new Rectangle(0, 0, 32, 32)); + + b.Save(resPath, System.Drawing.Imaging.ImageFormat.Png); + } + + text.Append("

      Preview:

      "); + text.Append(""); + } + if (name.ToLower().EndsWith(".txt") || name.ToLower().EndsWith(".xml") || + name.ToLower().EndsWith(".xsd") || name.ToLower().EndsWith(".htm") || + name.ToLower().EndsWith(".html") || name.ToLower().EndsWith(".xshd") || + name.ToLower().EndsWith(".xsl") || name.ToLower().EndsWith(".txt")) { + byte[] res = asm.GetManifestResource(name); + string utf = System.Text.UTF8Encoding.UTF8.GetString(res); + + text.Append("

      Preview:
      "); + text.Append(""); + } + } catch {} + + return text.ToString(); + } + + string GetSingleResInfo(object singleRes, string name) + { + int len = name.Length; + if (name.LastIndexOf(":") != -1) len = name.LastIndexOf(":"); + StringBuilder ret = new StringBuilder("Name: "); + ret.Append(name.Substring(0, len)); + ret.Append("

      "); + + if (singleRes != null) { + ret.Append("Type: "); + ret.Append(singleRes.GetType().Name); + ret.Append("

      "); + ret.Append("Value:
      "); + ret.Append(singleRes.ToString()); + } + + return ret.ToString(); + } + + string GetAssemblyInfo(SA.SharpAssembly asm) + { + string text = String.Format(RT("AsmInfo"), + asm.Name, asm.FullName, asm.GetAssemblyName().Version.ToString(), + asm.Location, asm.FromGAC); + return text + GetCustomAttribs(asm); + } + + string GetEventInfo(IEvent info) + { + StringBuilder ret = new StringBuilder(ambience.Convert(info)); + + ret.Append("

      "); + ret.Append(RT("Attributes")); + ret.Append("
      "); + ret.Append(GetCustomAttribs(info)); + + IClass c = ParserService.GetClass(info.DeclaringType.FullyQualifiedName.Replace("+", ".")); + if(c == null) goto noDoc; + foreach(IEvent e in c.Events) { + if(e.Name == info.Name) { + if (e.Documentation == null || e.Documentation == "") continue; + ret.Append("

      "); + ret.Append(RT("Documentation")); + ret.Append("

      "); + ret.Append(GetDocumentation(e.Documentation)); + ret.Append("

      "); + break; + } + } + + noDoc: + + ret.Append("
      "); + ret.Append(GetInType(info.DeclaringType)); + ret.Append("

      "); + ret.Append(GetInAsm((SA.SharpAssembly)info.DeclaringType.DeclaredIn)); + + return ret.ToString(); + } + + string GetFieldInfo(IField info) + { + StringBuilder ret = new StringBuilder(ambience.Convert(info)); + + if (info is SharpAssemblyField) { + SharpAssemblyField saField = info as SharpAssemblyField; + if (saField.InitialValue != null) { + ret.Append(" = "); + ret.Append(saField.InitialValue.ToString()); + } + } + + ret.Append("

      "); + ret.Append(RT("Attributes")); + ret.Append("
      "); + ret.Append(GetCustomAttribs(info)); + + IClass c = ParserService.GetClass(info.DeclaringType.FullyQualifiedName.Replace("+", ".")); + if(c == null) goto noDoc; + foreach(IField f in c.Fields) { + if(f.Name == info.Name) { + if (f.Documentation == null || f.Documentation == "") continue; + ret.Append("

      "); + ret.Append(RT("Documentation")); + ret.Append("

      "); + ret.Append(GetDocumentation(f.Documentation)); + ret.Append("

      "); + break; + } + } + + noDoc: + + ret.Append("
      "); + ret.Append(GetInType(info.DeclaringType)); + ret.Append("

      "); + ret.Append(GetInAsm((SA.SharpAssembly)info.DeclaringType.DeclaredIn)); + + return ret.ToString(); + } + + string GetMethodInfo(IMethod info) + { + StringBuilder ret = new StringBuilder(ambience.Convert(info)); + + ret.Append("

      "); + ret.Append(RT("Attributes")); + ret.Append("
      "); + ret.Append(GetCustomAttribs(info)); + + IClass c = ParserService.GetClass(info.DeclaringType.FullyQualifiedName.Replace("+", ".")); + if(c == null) goto noDoc; + foreach(IMethod cc in c.Methods) { + if (cc.Name == info.Name) { + if (cc.Documentation == null || cc.Documentation == "") continue; + ret.Append("

      "); + ret.Append(RT("Documentation")); + ret.Append("

      "); + ret.Append(GetDocumentation(cc.Documentation)); + ret.Append("

      "); + break; + } + } + + noDoc: + + ret.Append("
      "); + ret.Append(GetInType(info.DeclaringType)); + ret.Append("

      "); + ret.Append(GetInAsm((SA.SharpAssembly)info.DeclaringType.DeclaredIn)); + + return ret.ToString(); + } + + string GetPropInfo(IProperty info) + { + StringBuilder ret = new StringBuilder(ambience.Convert(info)); + + ret.Append("

      "); + ret.Append(RT("Attributes")); + ret.Append("
      "); + ret.Append(GetCustomAttribs(info)); + + IClass c = ParserService.GetClass(info.DeclaringType.FullyQualifiedName.Replace("+", ".")); + if(c == null) goto noDoc; + foreach(IProperty p in c.Properties) { + if(p.Name == info.Name) { + if (p.Documentation == null || p.Documentation == "") continue; + ret.Append("

      "); + ret.Append(RT("Documentation")); + ret.Append("

      "); + ret.Append(GetDocumentation(p.Documentation)); + ret.Append("

      "); + break; + } + } + + noDoc: + + ret.Append("
      "); + ret.Append(GetInType(info.DeclaringType)); + ret.Append("

      "); + ret.Append(GetInAsm((SA.SharpAssembly)info.DeclaringType.DeclaredIn)); + + return ret.ToString(); + } + + string GetTypeInfo(IClass type) + { + StringBuilder t = new StringBuilder(ambience.Convert(type)); + + t.Append("

      "); + t.Append(RT("BaseTypes")); + t.Append("
      "); + t.Append(GetBaseTypes(type as SharpAssemblyClass)); + + t.Append("
      "); + t.Append(RT("Attributes")); + t.Append("
      "); + t.Append(GetCustomAttribs(type)); + + IClass c = ParserService.GetClass(type.FullyQualifiedName.Replace("+", ".")); + if (c == null) goto noDoc; + if (c.Documentation == null || c.Documentation == "") goto noDoc; + t.Append("

      "); + t.Append(RT("Documentation")); + t.Append("

      "); + t.Append(GetDocumentation(c.Documentation)); + t.Append("

      "); + + noDoc: + + if (type.Namespace == null || type.Namespace == "") goto inAsm; + t.Append("
      "); + t.Append(GetInNS((SA.SharpAssembly)type.DeclaredIn, type.Namespace)); + + inAsm: + t.Append("

      "); + t.Append(GetInAsm((SA.SharpAssembly)type.DeclaredIn)); + + return t.ToString(); + } + + string GetCustomAttribs(SA.SharpAssembly assembly) + { + return GetCustomAttribs(SharpAssemblyAttribute.GetAssemblyAttributes(assembly)); + } + + string GetCustomAttribs(IClass type) + { + if (type.Attributes.Count == 0) return ""; + return GetCustomAttribs(type.Attributes[0].Attributes); + } + + string GetCustomAttribs(IMember member) + { + if (member.Attributes.Count == 0) return ""; + return GetCustomAttribs(member.Attributes[0].Attributes); + } + + string GetCustomAttribs(AttributeCollection ca) + { + StringBuilder text = new StringBuilder(); + try { + foreach(SharpAssemblyAttribute obj in ca) { + text.Append(ln(references.Add(obj.AttributeType), obj.Name)); + text.Append(obj.ToString().Substring(obj.Name.Length)); + text.Append("
      "); + + } + } catch { + return "An error occured while looking for attributes.
      "; + } + return text.ToString(); + } + + string GetBaseTypes(SharpAssemblyClass type) + { + if (type == null || type.BaseTypeCollection.Count == 0) { + return String.Empty; + } + + StringBuilder text = new StringBuilder(); + + foreach (SharpAssemblyClass basetype in type.BaseTypeCollection) { + text.Append(ln(references.Add(basetype), basetype.FullyQualifiedName)); + text.Append("
      "); + } + + return text.ToString(); + } + + string GetInAsm(SA.SharpAssembly asm) + { + StringBuilder text = new StringBuilder(RT("ContainedIn")); + text.Append(" "); + text.Append(ln(references.Add(new AssemblyTree.RefNodeAttribute(asm, asm.GetAssemblyName())), asm.Name)); + return text.ToString(); + } + + string GetInNS(SA.SharpAssembly asm, string ns) + { + return String.Concat(RT("Namespace"), + " ", + ln(references.Add(new NamespaceLink(asm, ns)), ns)); + } + + string GetInType(IClass type) + { + return String.Concat(RT("Type"), + " ", + ln(references.Add(type), type.FullyQualifiedName)); + } + + void back_click(object sender, LinkLabelLinkClickedEventArgs ev) + { + try { + tree.GoBack(); + } catch {} + } + + class SaveResLink + { + public SA.SharpAssembly Asm; + public string Name; + public SaveResLink(SA.SharpAssembly asm, string name) + { + Asm = asm; + Name = name; + } + } + + class NamespaceLink + { + public SA.SharpAssembly Asm; + public string Name; + public NamespaceLink(SA.SharpAssembly asm, string name) + { + Asm = asm; + Name = name; + } + } + + readonly static Regex whitespace = new Regex(@"\s+"); + public string GetDocumentation(string doc) + { + StringReader reader = new StringReader(String.Concat("", doc, "")); + XmlTextReader xml = new XmlTextReader(reader); + StringBuilder ret = new StringBuilder(); + + try { + xml.Read(); + do { + if (xml.NodeType == XmlNodeType.Element) { + string elname = xml.Name.ToLower(); + if (elname == "remarks") { + ret.Append(String.Concat("", RTD("Remarks"), "
      ")); + } else if (elname == "example") { + ret.Append(String.Concat("", RTD("Example"), "
      ")); + } else if (elname == "exception") { + ret.Append(String.Concat("", RTD("Exception"), " ", GetCref(xml["cref"]), ":
      ")); + } else if (elname == "returns") { + ret.Append(String.Concat("", RTD("Returns"), " ")); + } else if (elname == "see") { + ret.Append(String.Concat(GetCref(xml["cref"]), xml["langword"])); + } else if (elname == "seealso") { + ret.Append(String.Concat("", RTD("SeeAlso"), " ", GetCref(xml["cref"]), xml["langword"])); + } else if (elname == "paramref") { + ret.Append(String.Concat("", xml["name"], "")); + } else if (elname == "param") { + ret.Append(String.Concat("", xml["name"].Trim(), ": ")); + } else if (elname == "value") { + ret.Append(String.Concat("", RTD("Value"), " ")); + } else if (elname == "summary") { + ret.Append(String.Concat("", RTD("Summary"), " ")); + } + } else if (xml.NodeType == XmlNodeType.EndElement) { + string elname = xml.Name.ToLower(); + if (elname == "para" || elname == "param") { + ret.Append("
      "); + } + if (elname == "exception") { + ret.Append("
      "); + } + } else if (xml.NodeType == XmlNodeType.Text) { + ret.Append(whitespace.Replace(xml.Value, " ")); + } + } while(xml.Read()); + } catch { + return doc; + } + return ret.ToString(); + } + + string GetCref(string cref) + { + if (cref == null) { + return String.Empty; + } + if (cref.Length < 2) { + return cref; + } + if (cref.Substring(1, 1) == ":") { + return String.Concat("", cref.Substring(2, cref.Length - 2), ""); + } + return String.Concat("", cref, ""); + } + + string RT(string ResName) + { + return tree.ress.GetString(String.Concat("ObjectBrowser.Info.", ResName)); + } + + string RTD(string ResName) + { + return tree.ress.GetString(String.Concat("ObjectBrowser.Info.Doc.", ResName)); + } + + string ln(int rnr, string text) + { + return String.Concat("", text, ""); + } + + bool CreateImage(Image pv) + { + try { + using (Bitmap b = new Bitmap(170, 170, PixelFormat.Format24bppRgb)) { + Graphics g = Graphics.FromImage(b); + g.FillRectangle(SystemBrushes.Control, 0, 0, 170, 170); + g.InterpolationMode = InterpolationMode.NearestNeighbor; + + g.DrawImage(pv, 5, 5, 160, 160); + using (Brush brush = new SolidBrush(Color.FromArgb(220, SystemColors.Control))) { + g.FillRectangle(brush, 0, 0, 170, 170); + } + g.Dispose(); + + b.Save(imgPath, System.Drawing.Imaging.ImageFormat.Png); + } + return true; + } catch { return false; } + } + + } + + public class GradientLabel : Label + { + protected override void OnPaintBackground(PaintEventArgs pe) + { + base.OnPaintBackground(pe); + Graphics g = pe.Graphics; + g.FillRectangle(SystemBrushes.Control, pe.ClipRectangle); + using (Brush brush = new LinearGradientBrush(new Point(0, 0), new Point(Width, Height), + SystemColors.ControlLightLight, + SystemColors.Control)) { + g.FillRectangle(brush, new Rectangle(0, 0, Width, Height)); + } + } + } + +} diff --git a/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/AssemblyTreeNode.cs b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/AssemblyTreeNode.cs new file mode 100644 index 0000000000..09fc61e208 --- /dev/null +++ b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/AssemblyTreeNode.cs @@ -0,0 +1,261 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.Windows.Forms; +using System.Drawing; + +using ICSharpCode.Core; +using ICSharpCode.Core; + +using ICSharpCode.SharpDevelop.Dom; +using SA = ICSharpCode.SharpAssembly.Assembly; + +namespace ICSharpCode.SharpDevelop.AddIns.AssemblyScout +{ + public enum NodeType { + Folder, + Resource, + Assembly, + Library, + Namespace, + Type, + Constructor, + Method, + Field, + Property, + SubTypes, + SuperTypes, + Reference, + Event, + Link, + Module, + SingleResource, + } + + public class AssemblyTreeNode : TreeNode + { + protected const int CLASSINDEX = 14; + protected const int STRUCTINDEX = CLASSINDEX + 1 * 4; + protected const int INTERFACEINDEX = CLASSINDEX + 2 * 4; + protected const int ENUMINDEX = CLASSINDEX + 3 * 4; + protected const int METHODINDEX = CLASSINDEX + 4 * 4; + protected const int PROPERTYINDEX = CLASSINDEX + 5 * 4; + protected const int FIELDINDEX = CLASSINDEX + 6 * 4; + protected const int DELEGATEINDEX = CLASSINDEX + 7 * 4; + + protected NodeType type; + protected string name; + protected object attribute; + + protected bool populated = false; + + public static ResourceService ress = (ResourceService)ServiceManager.Services.GetService(typeof(ResourceService)); + + public NodeType Type { + get { + return type; + } + set { + type = value; + } + } + + public object Attribute { + get { + return attribute; + } + } + + public bool Populated { + get { + return populated; + } + } + + public string Name { + get { + return name; + } + set { + name = value; + } + } + + public AssemblyTreeNode(string name, object attribute, NodeType type) : base(name) + { + this.attribute = attribute; + this.type = type; + this.name = name; + + SetIcon(); + } + + + protected virtual void SetIcon() + { + + + switch (type) { + case NodeType.Link: + break; + + case NodeType.Resource: + case NodeType.SingleResource: // TODO : single res icon + ImageIndex = SelectedImageIndex = 11; + break; + + case NodeType.Reference: + ImageIndex = SelectedImageIndex = 8; + break; + + case NodeType.Module: + ImageIndex = SelectedImageIndex = 46; + break; + + case NodeType.SubTypes: + ImageIndex = SelectedImageIndex = 4; + break; + + case NodeType.SuperTypes: + ImageIndex = SelectedImageIndex = 5; + break; + + default: + throw new Exception("ReflectionFolderNode.SetIcon : unknown ReflectionNodeType " + type.ToString()); + } + } + + public virtual void Populate(ShowOptions Private, ShowOptions Internal) + { + switch (type) { + case NodeType.Assembly: + PopulateAssembly((SA.SharpAssembly)attribute, this); + break; + + case NodeType.Library: + PopulateLibrary((SA.SharpAssembly)attribute, this, Private, Internal); + break; + } + populated = true; + } + + public AssemblyTreeNode GetNodeFromChildren(string title) + { + foreach (AssemblyTreeNode node in this.Nodes) { + if (node.Text == title) { + return node; + } + } + return null; + } + + public AssemblyTreeNode GetNodeFromCollection(TreeNodeCollection collection, string title) + { + foreach (AssemblyTreeNode node in collection) + if (node.Text == title) { + return node; + } + return null; + } + + void PopulateLibrary(SA.SharpAssembly assembly, TreeNode parentnode, ShowOptions Private, ShowOptions Internal) + { + parentnode.Nodes.Clear(); + IClass[] types = new IClass[0]; + + try { + types = SharpAssemblyClass.GetAssemblyTypes(assembly); + } catch { + MessageBox.Show(ress.GetString("ObjectBrowser.ErrorLoadingTypes"), ress.GetString("Global.WarningText"), MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + + ArrayList nodes = new ArrayList(); + ArrayList namespaces = new ArrayList(); + ArrayList namespacenames = new ArrayList(); + TreeNodeComparer comp = new TreeNodeComparer(); + + foreach (IClass type in types) { + if(type.FullyQualifiedName.IndexOf("PrivateImplementationDetails") != -1) continue; + if(type.IsInternal && Internal == ShowOptions.Hide) continue; + if(type.IsPrivate && Private == ShowOptions.Hide) continue; + + TypeNode typenode = new TypeNode(GetShortTypeName(type.FullyQualifiedName), type); + if ((type.IsInternal && Internal == ShowOptions.GreyOut) || + (type.IsPrivate && Private == ShowOptions.GreyOut)) { + typenode.ForeColor = SystemColors.GrayText; + } + nodes.Add(typenode); + if (type.Namespace != null && type.Namespace != "") { + if (!namespacenames.Contains(type.Namespace)) { + namespaces.Add(new FolderNode(type.Namespace, assembly, NodeType.Namespace, 3, 3)); + namespacenames.Add(type.Namespace); + } + } + } + nodes.Sort(comp); + namespaces.Sort(comp); + foreach (TreeNode tn in namespaces) { + parentnode.Nodes.Add(tn); + } + foreach (TreeNode tn in nodes) { + IClass type = (IClass)((AssemblyTreeNode)tn).Attribute; + if (type.Namespace != null && type.Namespace != "") { + GetNodeFromCollection(parentnode.Nodes, type.Namespace).Nodes.Add(tn); + } else { + parentnode.Nodes.Add(tn); + } + } + } + + string GetShortTypeName(string typename) + { + if (typename == null) return ""; + int lastIndex; + + lastIndex = typename.LastIndexOf('.'); + + if (lastIndex < 0) { + return typename; + } else { + return typename.Substring(lastIndex + 1); + } + + } + + void PopulateAssembly(SA.SharpAssembly assembly, TreeNode parentnode) + { + parentnode.Nodes.Clear(); + + TreeNode node = new FolderNode(System.IO.Path.GetFileName(assembly.Location), assembly, NodeType.Library, 2, 2); + parentnode.Nodes.Add(node); + + FolderNode resourcefolder = new FolderNode(ress.GetString("ObjectBrowser.Nodes.Resources"), assembly, NodeType.Folder, 6, 7); + string[] resources = assembly.GetManifestResourceNames(); + foreach (string resource in resources) { + resourcefolder.Nodes.Add(new ResourceNode(resource, assembly, true)); + } + parentnode.Nodes.Add(resourcefolder); + + FolderNode referencefolder = new FolderNode(ress.GetString("ObjectBrowser.Nodes.References"), assembly, NodeType.Folder, 9, 10); + SA.SharpAssemblyName[] references = assembly.GetReferencedAssemblies(); + foreach (SA.SharpAssemblyName name in references) { + referencefolder.Nodes.Add(new AssemblyTreeNode(name.Name, new AssemblyTree.RefNodeAttribute(assembly, name), NodeType.Reference)); + } + parentnode.Nodes.Add(referencefolder); + } + + public virtual void OnExpand() + { + } + + public virtual void OnCollapse() + { + } + } +} diff --git a/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/FolderNode.cs b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/FolderNode.cs new file mode 100644 index 0000000000..bade71df14 --- /dev/null +++ b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/FolderNode.cs @@ -0,0 +1,42 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.Windows.Forms; + +namespace ICSharpCode.SharpDevelop.AddIns.AssemblyScout +{ + public class FolderNode : AssemblyTreeNode + { + int openindex; + int closeindex; + + public FolderNode(string name, object attribute, NodeType type,int openindex, int closeindex) : + base(name, attribute, type) + { + this.openindex = openindex; + this.closeindex = closeindex; + OnCollapse(); + } + + protected override void SetIcon() + { + OnCollapse(); + } + + public override void OnExpand() + { + ImageIndex = SelectedImageIndex = closeindex; + } + + public override void OnCollapse() + { + ImageIndex = SelectedImageIndex = openindex; + } + } +} diff --git a/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/MemberNode.cs b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/MemberNode.cs new file mode 100644 index 0000000000..3c5a0dd70d --- /dev/null +++ b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/MemberNode.cs @@ -0,0 +1,178 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.Windows.Forms; +using System.Drawing; + +using ICSharpCode.Core; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Dom; + +namespace ICSharpCode.SharpDevelop.AddIns.AssemblyScout +{ + public class MemberNode : AssemblyTreeNode + { + bool special = false; + bool isEnum = false; + + public MemberNode(IMethod methodinfo2) : base ("", methodinfo2, NodeType.Method) + { + SetNodeName(); + } + + public MemberNode(IProperty prop, bool Special) : base ("", prop, NodeType.Property) + { + SetNodeName(); + if(special = Special) CreateSpecialNodes(prop); + } + + public MemberNode(IEvent evt, bool Special) : base ("", evt, NodeType.Event) + { + SetNodeName(); + if(special = Special) CreateSpecialNodes(evt); + } + + public MemberNode(IField fld, bool IsEnum) : base ("", fld, NodeType.Field) + { + isEnum = IsEnum; + SetNodeName(); + } + + void SetNodeName() + { + if (attribute == null) { + Text = "no name"; + return; + } + + Text = GetShortMemberName((IMember)attribute, isEnum); + if (Text.EndsWith("[static]")) { + this.NodeFont = new Font("Tahoma", 8, FontStyle.Italic); + } + } + + void CreateSpecialNodes(IProperty prop) + { + IMethod getm = prop.GetterMethod; + IMethod setm = prop.SetterMethod; + + if (getm != null) + Nodes.Add(new MethodNode(getm)); + if (setm != null) + Nodes.Add(new MethodNode(setm)); + } + + void CreateSpecialNodes(IEvent evt) + { + IMethod addm = evt.AddMethod; + IMethod raisem = evt.RaiseMethod; + IMethod removem = evt.RemoveMethod; + + if (addm != null) + Nodes.Add(new MethodNode(addm)); + if (raisem != null) + Nodes.Add(new MethodNode(raisem)); + if (removem != null) + Nodes.Add(new MethodNode(removem)); + } + + protected override void SetIcon() + { + + + if (attribute == null) + return; + switch (type) { + case NodeType.Method: + IMethod methodinfo = (IMethod)attribute; + ImageIndex = SelectedImageIndex = ClassBrowserIconService.GetIcon(methodinfo); + break; + + case NodeType.Event: + IEvent eventinfo = (IEvent)attribute; + ImageIndex = SelectedImageIndex = ClassBrowserIconService.GetIcon(eventinfo); + break; + + case NodeType.Property: + IProperty propertyinfo = (IProperty)attribute; + ImageIndex = SelectedImageIndex = ClassBrowserIconService.GetIcon(propertyinfo); + break; + + case NodeType.Field: + IField fieldinfo = (IField)attribute; + ImageIndex = SelectedImageIndex = ClassBrowserIconService.GetIcon(fieldinfo); + break; + + } + } + + static + + public static string GetShortMemberName(IMember mi, bool IsEnum) { + string ret = ""; + + ret = mi.Name; + + try { + + bool dispReturn = PropertyService.Get("AddIns.AssemblyScout.ShowReturnTypes", true); + + if (mi is IMethod) { + IMethod mii = mi as IMethod; + + if (mii.IsConstructor) { + dispReturn = false; + ret = mi.DeclaringType.Name; + } + + ret += GetParams(mii.Parameters, true); + + } else if (mi is IProperty) { + IProperty ppi = mi as IProperty; + + ret += GetParams(ppi.Parameters, false); + } + + if (dispReturn && !IsEnum) ret += " : " + GetNestedName(AssemblyTree.CurrentAmbience.GetIntrinsicTypeName(mi.ReturnType.FullyQualifiedName)); + + if (mi.IsStatic && !IsEnum) ret += " [static]"; + + if (IsEnum && mi is SharpAssemblyField) { + SharpAssemblyField saField = mi as SharpAssemblyField; + if (saField.InitialValue != null) { + ret += " = " + saField.InitialValue.ToString(); + } + } + + } catch { + Console.WriteLine("GetShortMemberName: Error"); + } + + return ret; + } + + public static string GetParams(ParameterCollection piarr, bool IncludeBrackets) { + string param = ""; + foreach(IParameter pi in piarr) { + param += GetNestedName(AssemblyTree.CurrentAmbience.GetIntrinsicTypeName(pi.ReturnType.FullyQualifiedName)) + ", "; + } + if (param.Length > 0) param = param.Substring(0, param.Length - 2); + if (param != "" || IncludeBrackets) param = "(" + param + ")"; + return param; + } + + public static string GetNestedName(string name) { + int i = name.LastIndexOf("."); + if (i == -1) return name; + return name.Substring(i + 1); + } + + + } +} diff --git a/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/MethodNode.cs b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/MethodNode.cs new file mode 100644 index 0000000000..b63e9a04b3 --- /dev/null +++ b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/MethodNode.cs @@ -0,0 +1,43 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Dom; +using ICSharpCode.Core; + +namespace ICSharpCode.SharpDevelop.AddIns.AssemblyScout +{ + public class MethodNode : AssemblyTreeNode + { + public MethodNode(IMethod methodinfo2) : base ("", methodinfo2, NodeType.Method) + { + if (attribute == null) { + Text = "no name"; + return; + } + Text = MemberNode.GetShortMemberName((IMethod)attribute, false); + } + + protected override void SetIcon() + { + if (attribute == null) + return; + IMethod methodinfo = (IMethod)attribute; + + if (methodinfo.IsPrivate) { // private + ImageIndex = SelectedImageIndex = METHODINDEX + 3; + } else + if (methodinfo.IsProtected) { // protected + ImageIndex = SelectedImageIndex = METHODINDEX + 2; + } + ImageIndex = SelectedImageIndex = METHODINDEX; + } + } +} diff --git a/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/ResourceNode.cs b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/ResourceNode.cs new file mode 100644 index 0000000000..0c82fa7652 --- /dev/null +++ b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/ResourceNode.cs @@ -0,0 +1,59 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Collections; +using System.Resources; +using System.Windows.Forms; + +using ICSharpCode.Core; +using ICSharpCode.Core; + +using ICSharpCode.SharpDevelop.Dom; + +namespace ICSharpCode.SharpDevelop.AddIns.AssemblyScout +{ + public class ResourceNode : AssemblyTreeNode + { + bool isTopLevel; + + public ResourceNode(string name, object attribute, bool isTopLevel) + : base(name, attribute, isTopLevel ? NodeType.Resource : NodeType.SingleResource) + { + this.isTopLevel = isTopLevel; + } + + public override void Populate(ShowOptions Private, ShowOptions Internal) + { + if (name.ToLower().EndsWith(".resources")) { + SA.SharpAssembly assembly = (SA.SharpAssembly)attribute; + byte[] res = assembly.GetManifestResource(name); + ResourceReader resreader = new ResourceReader(new MemoryStream(res)); + + IDictionaryEnumerator en = resreader.GetEnumerator(); + + ArrayList newNodes = new ArrayList(); + + while (en.MoveNext()) { + string nodename = (string)en.Key; + if (en.Value != null) nodename += " : " + en.Value.GetType().Name; + newNodes.Add(new ResourceNode(nodename, en.Value, false)); + } + resreader.Close(); + + newNodes.Sort(new TreeNodeComparer()); + foreach (ResourceNode resnode in newNodes) { + Nodes.Add(resnode); + } + } + populated = true; + } + + + } +} diff --git a/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/TypeNode.cs b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/TypeNode.cs new file mode 100644 index 0000000000..84172c2edf --- /dev/null +++ b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/Nodes/TypeNode.cs @@ -0,0 +1,149 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.Windows.Forms; +using System.Drawing; + +using ICSharpCode.Core; +using ICSharpCode.Core; + +using ICSharpCode.SharpDevelop.Dom; + +namespace ICSharpCode.SharpDevelop.AddIns.AssemblyScout +{ + public class TypeNode : AssemblyTreeNode + { + public bool MembersPopulated; + + public TypeNode(string name, IClass type) : base (name, type, NodeType.Type) + { + } + + protected override void SetIcon() + { + + ImageIndex = SelectedImageIndex = ClassBrowserIconService.GetIcon((IClass)attribute); + } + + public override void Populate(ShowOptions Private, ShowOptions Internal) + { + IClass type = attribute as IClass; + + Nodes.Clear(); + + + + AssemblyTreeNode supertype = new AssemblyTreeNode(ress.GetString("ObjectBrowser.Nodes.SuperTypes"), type, NodeType.SuperTypes); + Nodes.Add(supertype); + + SharpAssemblyClass sharptype = type as SharpAssemblyClass; + if (sharptype == null) goto nobase; + + AddBaseTypes(sharptype, supertype, ClassBrowserIconService); + + // TODO: SubTypes is not implemented + // Nodes.Add(new ReflectionNode("SubTypes", type, ReflectionNodeType.SubTypes)); + + nobase: + + populated = true; + } + + private void AddBaseTypes(SharpAssemblyClass type, AssemblyTreeNode node, ClassBrowserIconsService ClassBrowserIconService) + { + foreach (SharpAssemblyClass rettype in type.BaseTypeCollection) { + AssemblyTreeNode basetype = new AssemblyTreeNode(rettype.Name, rettype, NodeType.Link); + basetype.ImageIndex = basetype.SelectedImageIndex = ClassBrowserIconService.GetIcon(rettype); + node.Nodes.Add(basetype); + AddBaseTypes(rettype, basetype, ClassBrowserIconService); + } + } + + public void PopulateMembers(ShowOptions Private, ShowOptions Internal, bool Special) + { + IClass type = (IClass)attribute; + ArrayList nodes = new ArrayList(); + TreeNodeComparer comp = new TreeNodeComparer(); + + nodes.Clear(); + foreach (IMethod info in type.Methods) { + if (Private == ShowOptions.Hide && info.IsPrivate) continue; + if (Internal == ShowOptions.Hide && info.IsInternal) continue; + if (!info.IsConstructor && info.IsSpecialName) continue; + + MemberNode node = new MemberNode(info); + if ((info.IsInternal && Internal == ShowOptions.GreyOut) || + (info.IsPrivate && Private == ShowOptions.GreyOut)) { + node.ForeColor = SystemColors.GrayText; + } + + nodes.Add(node); + } + nodes.Sort(comp); + foreach (AssemblyTreeNode tn in nodes) { + Nodes.Add(tn); + } + + nodes.Clear(); + foreach (IProperty info in type.Properties) { + if (Private == ShowOptions.Hide && info.IsPrivate) continue; + if (Internal == ShowOptions.Hide && info.IsInternal) continue; + + MemberNode node = new MemberNode(info, Special); + if ((info.IsInternal && Internal == ShowOptions.GreyOut) || + (info.IsPrivate && Private == ShowOptions.GreyOut)) { + node.ForeColor = SystemColors.GrayText; + } + nodes.Add(node); + } + nodes.Sort(comp); + foreach (AssemblyTreeNode tn in nodes) { + Nodes.Add(tn); + } + + nodes.Clear(); + foreach (IField info in type.Fields) { + if (Private == ShowOptions.Hide && info.IsPrivate) continue; + if (Internal == ShowOptions.Hide && info.IsInternal) continue; + if (info.IsSpecialName) continue; + + MemberNode node = new MemberNode(info, type.ClassType == ClassType.Enum); + if ((info.IsInternal && Internal == ShowOptions.GreyOut) || + (info.IsPrivate && Private == ShowOptions.GreyOut)) { + node.ForeColor = SystemColors.GrayText; + } + nodes.Add(node); + } + nodes.Sort(comp); + foreach (AssemblyTreeNode tn in nodes) { + Nodes.Add(tn); + } + + nodes.Clear(); + foreach (IEvent info in type.Events) { + if (Private == ShowOptions.Hide && info.IsPrivate) continue; + if (Internal == ShowOptions.Hide && info.IsInternal) continue; + + MemberNode node = new MemberNode(info, Special); + if ((info.IsInternal && Internal == ShowOptions.GreyOut) || + (info.IsPrivate && Private == ShowOptions.GreyOut)) { + node.ForeColor = SystemColors.GrayText; + } + nodes.Add(node); + } + nodes.Sort(comp); + foreach (AssemblyTreeNode tn in nodes) { + Nodes.Add(tn); + } + + MembersPopulated = true; + } + + } +} diff --git a/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/SearchPanel.cs b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/SearchPanel.cs new file mode 100644 index 0000000000..c0089a914a --- /dev/null +++ b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/SearchPanel.cs @@ -0,0 +1,263 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.IO; +using System.Drawing; +using System.Drawing.Printing; +using System.Windows.Forms; +using System.Threading; +using System.Resources; + +using ICSharpCode.Core; +using ICSharpCode.Core; + +using ICSharpCode.SharpDevelop.Dom; +using SA = ICSharpCode.SharpAssembly.Assembly; + +namespace ICSharpCode.SharpDevelop.AddIns.AssemblyScout +{ + public class SearchPanel : UserControl + { + System.Windows.Forms.Label searchfor = new System.Windows.Forms.Label(); + System.Windows.Forms.Label foundcount = new System.Windows.Forms.Label(); + TextBox searchstringbox = new TextBox(); + ListView itemsfound = new ListView(); + Button button = new Button(); + ComboBox searchtypes = new ComboBox(); + + AssemblyTree tree; + AssemblyScoutViewContent _parent; + + public SearchPanel(AssemblyTree tree) + { + Dock = DockStyle.Fill; + + this.tree = tree; + + searchfor.Text = tree.ress.GetString("ObjectBrowser.Search.SearchFor"); + searchfor.Location = new Point(0, 0); + searchfor.Size = new Size(70, 12); + searchfor.Anchor = AnchorStyles.Top | AnchorStyles.Left; + searchfor.FlatStyle = FlatStyle.System; + + foundcount.Text = "0 " + tree.ress.GetString("ObjectBrowser.Search.ItemsFound"); + foundcount.Location = new Point(searchfor.Width + 5, 0); + foundcount.Size = new Size(Width - searchfor.Width - 5, searchfor.Height); + foundcount.TextAlign = ContentAlignment.TopRight; + foundcount.Anchor = AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Left; + foundcount.FlatStyle = FlatStyle.System; + + searchstringbox.Location = new Point(0, 17); + searchstringbox.Width = Width; + searchstringbox.Height = 30; + searchstringbox.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; + searchstringbox.KeyUp += new KeyEventHandler(searchbox_keyup); + + button.Location = new Point(Width - 52, 44); + button.Size = new Size(52, 21); + button.Text = tree.ress.GetString("ObjectBrowser.Search.Search"); + button.Anchor = AnchorStyles.Top | AnchorStyles.Right; + button.Click += new EventHandler(DoSearch); + button.FlatStyle = FlatStyle.System; + + searchtypes.Location = new Point(0, 44); + searchtypes.Width = Width - 60; + searchtypes.Height = 30; + searchtypes.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; + searchtypes.DropDownStyle = ComboBoxStyle.DropDownList; + searchtypes.Items.Add(tree.ress.GetString("ObjectBrowser.Search.TypesAndMembers")); + searchtypes.Items.Add(tree.ress.GetString("ObjectBrowser.Search.TypesOnly")); + searchtypes.SelectedIndex = 0; + + itemsfound.Location = new Point(0, 71); + itemsfound.Width = Width; + itemsfound.FullRowSelect = true; + itemsfound.MultiSelect = false; + itemsfound.Height = Height - 71; + itemsfound.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom; + itemsfound.View = View.Details; + itemsfound.SmallImageList = tree.ImageList; + + itemsfound.Columns.Add(tree.ress.GetString("ObjectBrowser.Search.Name"), 160, HorizontalAlignment.Left); + itemsfound.Columns.Add(tree.ress.GetString("ObjectBrowser.Search.Type"), 70, HorizontalAlignment.Left); + itemsfound.Columns.Add("Namespace", 125, HorizontalAlignment.Left); + itemsfound.Columns.Add("Assembly", 75, HorizontalAlignment.Left); + itemsfound.DoubleClick += new EventHandler(SelectItem); + + Controls.Add(button); + Controls.Add(searchfor); + Controls.Add(foundcount); + Controls.Add(searchstringbox); + Controls.Add(itemsfound); + Controls.Add(searchtypes); + } + + public AssemblyScoutViewContent ParentDisplayInfo { + get { + return _parent; + } + set { + _parent = value; + } + } + + void SelectItem(object sender, EventArgs e) + { + if (itemsfound.SelectedItems.Count != 1) + return; + + if(itemsfound.SelectedItems[0] is TypeItem) { + TypeItem item = (TypeItem)itemsfound.SelectedItems[0]; + tree.GoToType(item.type); + + } else if (itemsfound.SelectedItems[0] is MemberItem) { + MemberItem member = (MemberItem)itemsfound.SelectedItems[0]; + tree.GoToMember(member.member); + } + + //ParentDisplayInfo.leftTabs.ActiveDocument = + ParentDisplayInfo.leftTabs.Documents[0].Activate(); + } + + class TypeItem : ListViewItem { + public IClass type; + public TypeItem(string Namespace, IClass type, Color forecolor) : + base (new string[] {type.Name, GetType(type), Namespace, ((SA.SharpAssembly)type.DeclaredIn).Name}) + { + this.type = type; + this.ImageIndex = ((ClassBrowserIconsService)ServiceManager.Services.GetService(typeof(ClassBrowserIconsService))).GetIcon(type); + this.ForeColor = forecolor; + } + + private static string GetType(IClass type) { + if(type.ClassType == ClassType.Enum) { + return "Enum"; + } else if(type.ClassType == ClassType.Interface) { + return "Interface"; + } else if(type.ClassType == ClassType.Struct) { + return "Structure"; + } else { + return "Class"; + } + } + } + + + class MemberItem : ListViewItem { + public IMember member; + + public MemberItem(string Namespace, IMember member, Color forecolor) : + base (new string[] {member.DeclaringType.Name + "." + member.Name, GetType(member), Namespace, ((SA.SharpAssembly)member.DeclaringType.DeclaredIn).Name}) + { + this.ForeColor = forecolor; + this.member = member; + if(member is IMethod) { + this.ImageIndex = ((ClassBrowserIconsService)ServiceManager.Services.GetService(typeof(ClassBrowserIconsService))).GetIcon(member as IMethod); + } else if(member is IField) { + this.ImageIndex = ((ClassBrowserIconsService)ServiceManager.Services.GetService(typeof(ClassBrowserIconsService))).GetIcon(member as IField); + } else if(member is IProperty) { + this.ImageIndex = ((ClassBrowserIconsService)ServiceManager.Services.GetService(typeof(ClassBrowserIconsService))).GetIcon(member as IProperty); + } else if(member is IEvent) { + this.ImageIndex = ((ClassBrowserIconsService)ServiceManager.Services.GetService(typeof(ClassBrowserIconsService))).GetIcon(member as IEvent); + } + } + + private static string GetType(IMember member) { + if(member is IMethod) { + if ((member as IMethod).IsConstructor) return "Constructor"; + return "Method"; + } else if(member is IField) { + return "Field"; + } else if(member is IProperty) { + return "Property"; + } else if(member is IEvent) { + return "Event"; + } else { + return "unknown"; + } + } + } + + void searchbox_keyup(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Return) + DoSearch(sender, new EventArgs()); + } + + void DoSearch(object sender, EventArgs e) + { + bool searchMembers = (searchtypes.SelectedIndex == 0); + + if(searchstringbox.Text == "") return; + string searchfor = searchstringbox.Text.ToLower(); + + itemsfound.Items.Clear(); + itemsfound.BeginUpdate(); + + foreach (AssemblyTreeNode tn in tree.Nodes) { // assembly nodes + SA.SharpAssembly assembly = (SA.SharpAssembly)tn.Attribute; + foreach (AssemblyTreeNode libnode in tn.Nodes) { + if (libnode.Type != NodeType.Library) continue; + foreach (AssemblyTreeNode nsnode in libnode.Nodes) { + if (nsnode.Type == NodeType.Type) { + ProcessType("", searchfor, searchMembers, (IClass)nsnode.Attribute, nsnode.ForeColor); + continue; + } + foreach (AssemblyTreeNode typenode in nsnode.Nodes) { + ProcessType(nsnode.Text, searchfor, searchMembers, (IClass)typenode.Attribute, nsnode.ForeColor); + } + } + } + } + + itemsfound.EndUpdate(); + foundcount.Text = itemsfound.Items.Count.ToString() + " " + tree.ress.GetString("ObjectBrowser.Search.ItemsFound"); + } + + void ProcessType(string Namespace, string searchfor, bool searchMembers, IClass type, Color nodecolor) + { + if (type.Name.ToLower().IndexOf(searchfor) >= 0) { + itemsfound.Items.Add(new TypeItem(Namespace, type, nodecolor)); + } + + if (!searchMembers) return; + + //if (!type.MembersLoaded) type.LoadMembers(); + + foreach (IMethod method in type.Methods) + ProcessMember(Namespace, method, searchfor); + foreach (IProperty prop in type.Properties) + ProcessMember(Namespace, prop, searchfor); + foreach (IField field in type.Fields) + ProcessMember(Namespace, field, searchfor); + foreach (IEvent evt in type.Events) + ProcessMember(Namespace, evt, searchfor); + } + + private void ProcessMember(string Namespace, IMember member, string searchfor) + { + if(member is IMethod) { + if (member.IsSpecialName) return; + } + + if(member.IsPrivate && (tree.showPrivateMembers == ShowOptions.Hide)) return; + if(member.IsInternal && (tree.showInternalMembers == ShowOptions.Hide)) return; + + if(member.Name.ToLower().IndexOf(searchfor) >= 0) { + Color color = SystemColors.WindowText; + if ((member.IsInternal && tree.showInternalMembers == ShowOptions.GreyOut) || + (member.IsPrivate && tree.showPrivateMembers == ShowOptions.GreyOut)) { + color = SystemColors.GrayText; + } + itemsfound.Items.Add(new MemberItem(Namespace, member, color)); + } + } + + } +} diff --git a/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/SourceView.cs b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/SourceView.cs new file mode 100644 index 0000000000..cd1947a541 --- /dev/null +++ b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/SourceView.cs @@ -0,0 +1,229 @@ +// +// +// +// +// +// + +using System; +using System.Text; +using System.Collections; +using System.IO; +using System.Drawing; +using System.Drawing.Printing; +using System.Windows.Forms; +using ICSharpCode.Core; + +namespace ICSharpCode.SharpDevelop.AddIns.AssemblyScout +{ + public class SourceView : UserControl + { + RichTextBox rtb; + CheckBox chk; + + AssemblyTree tree; + IAmbience ambience; + + void CopyEvent(object sender, EventArgs e) + { + Clipboard.SetDataObject(new DataObject(DataFormats.Text, rtb.Text)); + } + + public SourceView(AssemblyTree tree) + { + rtb = new RichTextBox(); + rtb.ReadOnly = true; + + + + + ambience = AmbienceService.CurrentAmbience; + + rtb.Font = ResourceService.LoadFont("Courier New", 10); + + this.tree = tree; + + Dock = DockStyle.Fill; + + tree.AfterSelect += new TreeViewEventHandler(SelectNode); + + rtb.Location = new Point(0, 24); + rtb.Size = new Size(Width, Height - 24); + rtb.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom; + + rtb.ContextMenu = new ContextMenu(new MenuItem[] { + new MenuItem("Copy", new EventHandler(CopyEvent)) + }); + + chk = new CheckBox(); + chk.Location = new Point(0, 0); + chk.Size = new Size(250, 16); + chk.Text = tree.ress.GetString("ObjectBrowser.SourceView.Enable"); + chk.FlatStyle = FlatStyle.System; + chk.CheckedChanged += new EventHandler(Check); + Check(null, null); + + Controls.Add(rtb); + Controls.Add(chk); + } + + + void Check(object sender, EventArgs e) + { + if(chk.Checked) { + rtb.BackColor = SystemColors.Window; + } else { + rtb.BackColor = SystemColors.Control; + rtb.Text = ""; + } + } + + string GetAttributes(int indent, IMember member) + { + if (member.Attributes.Count == 0) { + return String.Empty; + } + return GetAttributes(indent, member.Attributes[0].Attributes); + } + + string GetAttributes(int indent, IClass type) + { + if (type.Attributes.Count == 0) { + return String.Empty; + } + return GetAttributes(indent, type.Attributes[0].Attributes); + } + + string GetAttributes(int indent, SA.SharpAssembly assembly) + { + return GetAttributes(indent, SharpAssemblyAttribute.GetAssemblyAttributes(assembly)); + } + + string GetAttributes(int indent, AttributeCollection ca) + { + StringBuilder text = new StringBuilder(); + try { + foreach(SharpAssemblyAttribute obj in ca) { + string attrString = obj.ToString(); + text.Append(ambience.WrapAttribute(attrString)); + text.Append('\n'); + } + } catch { + } + return text.ToString(); + } + + string GetTypeInfo(IClass type) + { + StringBuilder rt = new StringBuilder(); + { + string attr2 = GetAttributes(0, (SA.SharpAssembly)type.DeclaredIn); + rt.Append(ambience.WrapComment("assembly attributes\n") + attr2 + "\n" + ambience.WrapComment("declaration\n")); + } + string attr = GetAttributes(0, type); + rt.Append(attr); + rt.Append(ambience.Convert(type)); + rt.Append("\n"); + + if (type.ClassType != ClassType.Enum) { + + rt.Append("\t" + ambience.WrapComment("events\n")); + + foreach (IField fieldinfo in type.Fields) { + rt.Append(GetAttributes(1, fieldinfo)); + rt.Append("\t" + ambience.Convert(fieldinfo) + "\n"); + } + + rt.Append("\t" + ambience.WrapComment("methods\n")); + + foreach (IMethod methodinfo in type.Methods) { + if (methodinfo.IsSpecialName) { + continue; + } + ambience.ConversionFlags |= ConversionFlags.ShowReturnType; + rt.Append(GetAttributes(1, methodinfo)); + rt.Append("\t" + ambience.Convert(methodinfo)); + if (type.ClassType == ClassType.Interface) + rt.Append("\n\n"); + else { + rt.Append("\n\t\t" + ambience.WrapComment("TODO") + "\n\t" + ambience.ConvertEnd(methodinfo) + "\n\n"); + } + } + + rt.Append("\t" + ambience.WrapComment("properties\n")); + + foreach (IProperty propertyinfo in type.Properties) { + rt.Append(GetAttributes(1, propertyinfo)); + rt.Append("\t" + ambience.Convert(propertyinfo) + "\n"); + } + + rt.Append("\t" + ambience.WrapComment("events\n")); + + foreach (IEvent eventinfo in type.Events) { + rt.Append(GetAttributes(1, eventinfo)); + rt.Append("\t" + ambience.Convert(eventinfo) + "\n"); + } + } else { // Enum + foreach (IField fieldinfo in type.Fields) { + if (fieldinfo.IsLiteral) { + attr = GetAttributes(1, fieldinfo); + rt.Append(attr); + rt.Append("\t" + fieldinfo.Name); + + if (fieldinfo is SharpAssemblyField) { + SharpAssemblyField saField = fieldinfo as SharpAssemblyField; + if (saField.InitialValue != null) { + rt.Append(" = " + saField.InitialValue.ToString()); + } + } + + rt.Append(",\n"); + } + } + } + + rt.Append(ambience.ConvertEnd(type)); + + return rt.ToString(); + } + + string GenNodeSource(AssemblyTreeNode node) + { + if (node.Attribute is IClass) { + ambience.ConversionFlags = ConversionFlags.All | ConversionFlags.QualifiedNamesOnlyForReturnTypes | ConversionFlags.IncludeBodies; + /* + if (node.Attribute is SharpAssemblyClass) { + if (!(node.Attribute as SharpAssemblyClass).MembersLoaded) (node.Attribute as SharpAssemblyClass).LoadMembers(); + } + */ + return GetTypeInfo((IClass)node.Attribute); + } else { + switch (node.Type) { + case NodeType.Namespace: + StringBuilder nsContents = new StringBuilder("namespace " + node.Text + "\n{\n"); + foreach (AssemblyTreeNode childNode in node.Nodes) { + nsContents.Append(GenNodeSource(childNode)); + nsContents.Append("\n"); + } + + nsContents.Append("\n}"); + return nsContents.ToString(); + default: + return tree.ress.GetString("ObjectBrowser.SourceView.NoView"); + } + } +// return String.Empty; + } + + void SelectNode(object sender, TreeViewEventArgs e) + { + if(!chk.Checked) return; + + AssemblyTreeNode node = (AssemblyTreeNode)e.Node; + + rtb.Text = GenNodeSource(node);; + } + + } + +} diff --git a/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/TempProject.cs b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/TempProject.cs new file mode 100644 index 0000000000..63981616e8 --- /dev/null +++ b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/TempProject.cs @@ -0,0 +1,135 @@ +// +// +// +// +// +// + +using System; +using System.Drawing; +using System.Collections; +using System.ComponentModel; +using System.Windows.Forms; +using System.Data; +using System.Reflection; +using System.Diagnostics; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; +using ICSharpCode.Core; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Internal.Project.Collections; +using UI = WeifenLuo.WinFormsUI; + +namespace ICSharpCode.SharpDevelop.AddIns.AssemblyScout +{ + internal class TempProject : IProject + { + public string ProjectType { + get { return ""; } + } + + public string BaseDirectory { + get { return System.IO.Path.GetTempPath(); } + } + + public bool IsDirty { + get { return false; } + set {} + } + + public string Name { + get { return "Temp"; } + set {} + } + + public string StandardNamespace { + get { return "Temp"; } + set {} + } + + public string Description { + get { return ""; } + set {} + } + + public IConfiguration ActiveConfiguration { + get { return null; } + set {} + } + + public IConfiguration GetConfiguration(int index) { + return null; + } + + public void AddConfiguration(IConfiguration c) + { + } + + public void RemoveConfiguration(IConfiguration c) + { + } + + public ConfigurationCollection Configurations + { + get { return null; } + } + + public ProjectFileCollection ProjectFiles { + get { return null; } + } + + public ProjectReferenceCollection ProjectReferences { + get { return new ProjectReferenceCollection(); } + } + + public NewFileSearch NewFileSearch { + get { return 0; } + set {} + } + + public bool EnableViewState { + get { return false; } + set {} + } + + public string GetParseableFileContent(string fileContent) + { + return String.Empty; + } + public DeployInformation DeployInformation { + get { return null; } + } + + public bool IsCompileable(string fileName) { return false; } + + public void LoadProject(string fileName) { } + + public void SaveProject(string fileName) { } + public void CopyReferencesToOutputPath(bool b) {} + public void CopyReferencesToPath(string destination, bool force){} + public void CopyReferencesToPath(string destination, bool force, ArrayList alreadyCopiedReferences) {} + public bool IsFileInProject(string fileName) { return false; } + + public IConfiguration CreateConfiguration(string name) { return null; } + + public IConfiguration CreateConfiguration() { return null; } + public IConfiguration CloneConfiguration(IConfiguration configuration) { return null; } + + protected virtual void OnNameChanged(EventArgs e) + { + if (NameChanged != null) { + NameChanged(this, e); + } + } + + public event EventHandler NameChanged; + + public void Dispose() + { + // nothing to do here + } + } +} diff --git a/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/XmlView.cs b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/XmlView.cs new file mode 100644 index 0000000000..af116b9774 --- /dev/null +++ b/src/AddIns/DisplayBindings/AssemblyScout/Project/Src/XmlView.cs @@ -0,0 +1,239 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.IO; +using System.Xml; +using System.Drawing; +using System.Windows.Forms; + +using SA = ICSharpCode.SharpAssembly.Assembly; +using ICSharpCode.SharpDevelop.Dom; + +namespace ICSharpCode.SharpDevelop.AddIns.AssemblyScout +{ + public class XmlView : UserControl + { + private Button saveButton = new Button(); + private CheckBox exportEvents = new CheckBox(); + private CheckBox exportFields = new CheckBox(); + private CheckBox exportMethods = new CheckBox(); + private CheckBox exportProperties = new CheckBox(); + private Label captionLabel = new Label(); + + private AssemblyTreeNode SelectedNode; + private XmlTextWriter writer; + + AssemblyTree tree; + + public XmlView(AssemblyTree _tree) + { + tree = _tree; + + captionLabel.Location = new Point(5, 0); + captionLabel.Text = tree.ress.GetString("ObjectBrowser.XML.Desc"); + captionLabel.Size = new Size(300, 25); + captionLabel.FlatStyle = FlatStyle.System; + + exportEvents.Location = new Point(15, 40); + exportEvents.Text = tree.ress.GetString("ObjectBrowser.XML.ExpEvt"); + exportEvents.Checked = true; + exportEvents.Width = 300; + exportEvents.FlatStyle = FlatStyle.System; + + exportFields.Location = new Point(15, 65); + exportFields.Text = tree.ress.GetString("ObjectBrowser.XML.ExpFld"); + exportFields.Checked = true; + exportFields.Width = 300; + exportFields.FlatStyle = FlatStyle.System; + + exportMethods.Location = new Point(15, 90); + exportMethods.Text = tree.ress.GetString("ObjectBrowser.XML.ExpMeth"); + exportMethods.Checked = true; + exportMethods.Width = 300; + exportMethods.FlatStyle = FlatStyle.System; + + exportProperties.Location = new Point(15, 115); + exportProperties.Width = 300; + exportProperties.Text = tree.ress.GetString("ObjectBrowser.XML.ExpProp"); + exportProperties.Checked = true; + exportProperties.FlatStyle = FlatStyle.System; + + saveButton.Text = tree.ress.GetString("ObjectBrowser.XML.Save"); + saveButton.Location = new Point(5, 160); + saveButton.Enabled = false; + saveButton.Click += new EventHandler(saveButton_Clicked); + saveButton.FlatStyle = FlatStyle.System; + + Dock = DockStyle.Fill; + Controls.AddRange(new Control[] { + captionLabel, + saveButton, + exportEvents, + exportFields, + exportMethods, + exportProperties}); + + tree.AfterSelect += new TreeViewEventHandler(SelectNode); + } + + void saveButton_Clicked(object sender, System.EventArgs e) { + + SaveFileDialog fdialog = new SaveFileDialog(); + fdialog.Filter = tree.ress.GetString("ObjectBrowser.Filters.XML") + "|*.xml"; + DialogResult result = fdialog.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm); + + if(result != DialogResult.Cancel) { + + if (SelectedNode.Attribute is IClass) { + writeStart(fdialog.FileName, ((SelectedNode.Attribute as IClass).DeclaredIn as SA.SharpAssembly).FullName); + exportClass((IClass)SelectedNode.Attribute); + } else if (SelectedNode.Attribute is SA.SharpAssembly) { + writeStart(fdialog.FileName, ((SA.SharpAssembly)SelectedNode.Attribute).FullName); + foreach (SharpAssemblyClass type in SharpAssemblyClass.GetAssemblyTypes((SA.SharpAssembly)SelectedNode.Attribute)) { + if(type.ToString().IndexOf("PrivateImplementationDetails") == -1) { + exportClass(type); + } + } + } + writeEnd(); + } + } + + string GetScope(IDecoration type) + { + string retval; + + if (type.IsPublic) + retval = "Public"; + else if (type.IsPrivate) + retval = "Private"; + else if (type.IsProtectedOrInternal) + retval = "ProtectedOrInternal"; + else if (type.IsProtectedAndInternal) + retval = "Protected Internal"; + else if (type.IsProtected) + retval = "Protected"; + else + retval = "Internal"; + return retval; + } + + void writeStart(string filename, string assemblyname) { + try { + writer = new XmlTextWriter(filename ,new System.Text.ASCIIEncoding()); + } catch (Exception e) { + System.Windows.Forms.MessageBox.Show(e.Message); + return; + } + + writer.Formatting = Formatting.Indented; + writer.Indentation = 3; + + writer.WriteRaw(""); + writer.WriteRaw(""); + + writer.WriteStartElement("assembly"); + writer.WriteAttributeString("name", assemblyname); + } + + void writeEnd() { + writer.WriteEndElement(); + writer.Flush(); + writer.Close(); + writer = null; + } + + void exportClass(IClass type) { + writer.WriteStartElement("class"); + writer.WriteAttributeString("name", type.Name); + writer.WriteAttributeString("scope", GetScope(type)); + writer.WriteAttributeString("namespace", type.Namespace); + + // events + if(exportEvents.Checked) { + writer.WriteStartElement("events"); + foreach(IEvent event_ in type.Events) { + if(event_.DeclaringType == type) { + writer.WriteStartElement("event"); + writer.WriteAttributeString("name", event_.Name); + writer.WriteEndElement(); + } + } + writer.WriteEndElement(); + } + + // fields + if(exportFields.Checked) { + writer.WriteStartElement("fields"); + foreach(IField field in type.Fields) { + if(field.DeclaringType == type) { + writer.WriteStartElement("field"); + writer.WriteAttributeString("name", field.Name); + writer.WriteAttributeString("type", field.ReturnType.ToString()); + writer.WriteAttributeString("scope", GetScope(field)); + writer.WriteEndElement(); + } + } + writer.WriteEndElement(); + } + + // methods + if(exportMethods.Checked) { + writer.WriteStartElement("methods"); + foreach(IMethod method in type.Methods) { + if(! method.IsSpecialName) { + if(method.DeclaringType == type) { + + writer.WriteStartElement("method"); + writer.WriteAttributeString("name", method.Name); + writer.WriteAttributeString("scope", GetScope(method)); + writer.WriteAttributeString("type", method.ReturnType.ToString()); + + WriteParameters(writer, method); + writer.WriteEndElement(); + } + } + } + writer.WriteEndElement(); + } + + // properties + if(exportProperties.Checked) { + writer.WriteStartElement("properties"); + foreach(IProperty property in type.Properties) { + if(property.DeclaringType == type) { + writer.WriteStartElement("property"); + writer.WriteAttributeString("name", property.Name); + writer.WriteAttributeString("type", property.ReturnType.ToString()); + writer.WriteEndElement(); + } + } + writer.WriteEndElement(); + } + writer.WriteEndElement(); + } + + void WriteParameters(XmlTextWriter writer, IMethod member) { + foreach(IParameter param in member.Parameters) { + writer.WriteStartElement("param"); + writer.WriteAttributeString("name", param.Name); + writer.WriteAttributeString("type", param.ReturnType.ToString()); + writer.WriteEndElement(); + } + } + + void SelectNode(object sender, TreeViewEventArgs e) + { + SelectedNode = (AssemblyTreeNode)e.Node; + saveButton.Enabled = (SelectedNode.Attribute is IClass || SelectedNode.Attribute is SA.SharpAssembly); + } + + } + +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Configuration/AssemblyInfo.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Configuration/AssemblyInfo.cs new file mode 100644 index 0000000000..74af048452 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Configuration/AssemblyInfo.cs @@ -0,0 +1,38 @@ +// +// +// +// +// +// +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following +// attributes. +// +// change them to the information which is associated with the assembly +// you compile. + +[assembly: AssemblyTitle("SharpDevelopFormDesigner")] +[assembly: AssemblyDescription("A Windows.Forms designer implementation")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("IC#Code")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("(c) 2002-2003 by Mike Krueger")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has following format : +// +// Major.Minor.Build.Revision +// +// You can specify all values by your own or you can build default build and revision +// numbers with the '*' character (the default): + +[assembly: AssemblyVersion("2.0.0.1")] + +// The following attributes specify the key for the sign of your assembly. See the +// .NET Framework documentation for more information about signing. +// This is not required, if you don't want signing let these attributes like they're. +[assembly: AssemblyDelaySign(false)] +[assembly: AssemblyKeyFile("")] diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/FormDesigner.addin b/src/AddIns/DisplayBindings/FormDesigner/Project/FormDesigner.addin new file mode 100644 index 0000000000..ad8e51f1c2 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/FormDesigner.addin @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/FormDesigner.csproj b/src/AddIns/DisplayBindings/FormDesigner/Project/FormDesigner.csproj new file mode 100644 index 0000000000..f8ee5d5662 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/FormDesigner.csproj @@ -0,0 +1,139 @@ + + + Debug + AnyCPU + 8.0.41115 + 2.0 + {7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} + FormDesigner + Library + 4 + False + False + OnSuccessfulBuild + Library + + + True + True + False + True + ..\..\..\..\..\AddIns\AddIns\DisplayBindings\FormDesigner\ + True + + + True + True + False + True + ..\..\..\..\..\AddIns\AddIns\DisplayBindings\FormDesigner\ + False + + + + + + + + + + + + + + + + + + + + + + + + + + + Form + + + Form + + + + Form + + + + UserControl + + + Form + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} + ICSharpCode.TextEditor + False + + + {3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} + NRefactory + False + + + {2748AD25-9C63-4E12-877B-4DCE96FBED54} + ICSharpCode.SharpDevelop + False + + + {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} + ICSharpCode.Core + False + + + + + + + + + True + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/FormDesigner.csproj.user b/src/AddIns/DisplayBindings/FormDesigner/Project/FormDesigner.csproj.user new file mode 100644 index 0000000000..96135953c3 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/FormDesigner.csproj.user @@ -0,0 +1,13 @@ + + + ..\..\..\..\..\bin\SharpDevelop.exe + + + ..\..\..\..\..\bin\SharpDevelop.exe + + + 8.0.41115 + ShowAllFiles + 0 + + \ No newline at end of file diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Resources/AddSidebarComponentsDialog.xfrm b/src/AddIns/DisplayBindings/FormDesigner/Project/Resources/AddSidebarComponentsDialog.xfrm new file mode 100644 index 0000000000..91f574c41b --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Resources/AddSidebarComponentsDialog.xfrm @@ -0,0 +1,379 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Resources/ConfigureSidebarDialog.xfrm b/src/AddIns/DisplayBindings/FormDesigner/Project/Resources/ConfigureSidebarDialog.xfrm new file mode 100644 index 0000000000..f63b040a6e --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Resources/ConfigureSidebarDialog.xfrm @@ -0,0 +1,289 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Resources/RenameSidebarCategoryDialog.xfrm b/src/AddIns/DisplayBindings/FormDesigner/Project/Resources/RenameSidebarCategoryDialog.xfrm new file mode 100644 index 0000000000..aab4076de9 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Resources/RenameSidebarCategoryDialog.xfrm @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Resources/WindowsFormsGridOptions.xfrm b/src/AddIns/DisplayBindings/FormDesigner/Project/Resources/WindowsFormsGridOptions.xfrm new file mode 100644 index 0000000000..86ce5a1b19 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Resources/WindowsFormsGridOptions.xfrm @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/Commands/FormCommands.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/Commands/FormCommands.cs new file mode 100644 index 0000000000..1a1a7f12c3 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/Commands/FormCommands.cs @@ -0,0 +1,500 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Threading; +using System.Drawing; +using System.Drawing.Printing; +using System.Collections; +using System.ComponentModel; +using System.Windows.Forms; +using System.Windows.Forms.Design; +using System.Diagnostics; +using System.Text; +using System.ComponentModel.Design; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.TextEditor.Document; +using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor; +using ICSharpCode.TextEditor; + +using ICSharpCode.FormDesigner; + +namespace ICSharpCode.SharpDevelop.FormEditor.Commands +{ + ///

      + /// This is the base class for all designer menu commands + /// + public abstract class AbstractFormDesignerCommand : AbstractMenuCommand + { + public abstract CommandID CommandID { + get; + } + + protected virtual bool CanExecuteCommand(IDesignerHost host) + { + return true; + } + + FormDesignerViewContent FormDesigner { + get { + IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; + if (window == null) { + return null; + } + return window.ActiveViewContent as FormDesignerViewContent; + } + } + public override void Run() + { + + try { + FormDesignerViewContent formDesigner = FormDesigner; + if (formDesigner != null && CanExecuteCommand(formDesigner.Host)) { + IMenuCommandService menuCommandService = (IMenuCommandService)formDesigner.Host.GetService(typeof(IMenuCommandService)); + menuCommandService.GlobalInvoke(CommandID); + } + } catch (Exception e) { + Console.WriteLine("Got Exception {0}", e); + } + } + } + + public class ViewCode : AbstractMenuCommand + { + FormDesignerViewContent FormDesigner { + get { + IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; + if (window == null) { + return null; + } + return window.ActiveViewContent as FormDesignerViewContent; + } + } + public override void Run() + { + IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; + if (window == null) { + return; + } + + FormDesignerViewContent formDesigner = FormDesigner; + if (formDesigner != null) { + formDesigner.ShowSourceCode(); + + } + } + } + + public class ShowProperties : AbstractMenuCommand + { + public override void Run() + { + PadDescriptor padContent = WorkbenchSingleton.Workbench.GetPad(typeof(ICSharpCode.SharpDevelop.Gui.PropertyPad)); + if (padContent != null) { + padContent.BringPadToFront(); + } + } + } + + public class DesignerVerbSubmenuBuilder : ISubmenuBuilder + { + public ToolStripItem[] BuildSubmenu(Codon codon, object owner) + { + IMenuCommandService menuCommandService = (IMenuCommandService)owner; + + ArrayList items = new ArrayList(); + + foreach (DesignerVerb verb in menuCommandService.Verbs) { + items.Add(new ContextMenuCommand(verb)); + } + + // add separator at the end of custom designer verbs + if (items.Count > 0) { + items.Add(new MenuSeparator()); + } + + return (ToolStripItem[])items.ToArray(typeof(ToolStripItem)); + } + + class ContextMenuCommand : ICSharpCode.Core.MenuCommand + { + DesignerVerb verb; + + public ContextMenuCommand(DesignerVerb verb) : base(verb.Text) + { + this.Enabled = verb.Enabled; +// this.Checked = verb.Checked; + + this.verb = verb; + Click += new EventHandler(InvokeCommand); + } + + void InvokeCommand(object sender, EventArgs e) + { + try { + verb.Invoke(); + } catch (Exception ex) { + Console.WriteLine("Got Exception {0}", ex); + } + } + } + } + +#region Align Commands + public class AlignToGrid : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.AlignToGrid; + } + } + } + + public class AlignLeft : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.AlignLeft; + } + } + } + + public class AlignRight : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.AlignRight; + } + } + } + + public class AlignTop : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.AlignTop; + } + } + } + + public class AlignBottom : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.AlignBottom; + } + } + } + + public class AlignHorizontalCenters : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.AlignHorizontalCenters; + } + } + } + + public class AlignVerticalCenters : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.AlignVerticalCenters; + } + } + } +#endregion + +#region Make Same Size Commands + public class SizeToGrid : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.SizeToGrid; + } + } + } + + public class SizeToControl : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.SizeToControl; + } + } + } + + public class SizeToControlHeight : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.SizeToControlHeight; + } + } + } + + public class SizeToControlWidth : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.SizeToControlWidth; + } + } + } +#endregion + +#region Horizontal Spacing Commands + public class HorizSpaceMakeEqual : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.HorizSpaceMakeEqual; + } + } + + protected override bool CanExecuteCommand(IDesignerHost host) + { + ISelectionService selectionService = (ISelectionService)host.GetService(typeof(ISelectionService)); + return selectionService.SelectionCount > 1; + } + } + + public class HorizSpaceIncrease : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.HorizSpaceIncrease; + } + } + } + + public class HorizSpaceDecrease : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.HorizSpaceDecrease; + } + } + } + + public class HorizSpaceConcatenate : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.HorizSpaceConcatenate; + } + } + } +#endregion + +#region Vertical Spacing Commands + public class VertSpaceMakeEqual : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.VertSpaceMakeEqual; + } + } + + protected override bool CanExecuteCommand(IDesignerHost host) + { + ISelectionService selectionService = (ISelectionService)host.GetService(typeof(ISelectionService)); + return selectionService.SelectionCount > 1; + } + + } + + public class VertSpaceIncrease : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.VertSpaceIncrease; + } + } + } + + public class VertSpaceDecrease : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.VertSpaceDecrease; + } + } + } + + public class VertSpaceConcatenate : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.VertSpaceConcatenate; + } + } + } +#endregion + +#region Center Commands + public class CenterHorizontally : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.CenterHorizontally; + } + } + } + public class CenterVertically : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.CenterVertically; + } + } + } +#endregion + +#region Order Commands + public class SendToBack : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.SendToBack; + } + } + } + + public class BringToFront : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.BringToFront; + } + } + } +#endregion + +#region Tray Commands + + public class LineUpIcons : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.LineupIcons; + } + } + } + + public class ShowLargeIcons : AbstractCheckableMenuCommand + { + FormDesignerViewContent FormDesigner { + get { + IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; + if (window == null) { + return null; + } + return window.ActiveViewContent as FormDesignerViewContent; + } + } + public override bool IsChecked { + get { + ComponentTray tray = Tray; + if (tray != null) { + return tray.ShowLargeIcons; + } + return false; + } + set { + ComponentTray tray = Tray; + if (tray != null) { + tray.ShowLargeIcons = value; + } + } + } + ComponentTray Tray { + get { + FormDesignerViewContent formDesigner = FormDesigner; + if (formDesigner != null) { + return formDesigner.Host.GetService(typeof(ComponentTray)) as ComponentTray; + } + return null; + + } + } + public override void Run() + { + } + } +#endregion + +#region Global Commands + public class LockControls : AbstractFormDesignerCommand + { + public override CommandID CommandID { + get { + return StandardCommands.LockControls; + } + } + } + + /// + /// Displays the tab order mode. + /// + public class ViewTabOrder : AbstractCheckableMenuCommand + { + public override bool IsChecked { + get { + IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; + if (window == null) { + return false; + } + + FormDesignerViewContent formDesigner = FormDesigner; + if (formDesigner != null) { + return formDesigner.IsTabOrderMode; + } + return false; + } + set { + SetTabOrder(value); + } + } + FormDesignerViewContent FormDesigner { + get { + IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; + if (window == null) { + return null; + } + return window.ActiveViewContent as FormDesignerViewContent; + } + } + + void SetTabOrder(bool show) + { + IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; + if (window == null) { + return; + } + + FormDesignerViewContent formDesigner = FormDesigner; + if (formDesigner != null) { + if (show) { + formDesigner.ShowTabOrder(); + } else { + formDesigner.HideTabOrder(); + } + } + } + + public override void Run() + { + SetTabOrder(!IsChecked); + } + } +#endregion + +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/Commands/SideBarCommands.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/Commands/SideBarCommands.cs new file mode 100644 index 0000000000..8a1b4ab6f1 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/Commands/SideBarCommands.cs @@ -0,0 +1,48 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Collections; +using System.Drawing; +using System.Drawing.Design; +using System.Reflection; +using System.Windows.Forms; +using System.Windows.Forms.Design; +using System.Drawing.Printing; +using System.ComponentModel; +using System.ComponentModel.Design; +using System.ComponentModel.Design.Serialization; +using System.Xml; + +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop; +using ICSharpCode.SharpDevelop.Internal.Undo; +using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor; + +using ICSharpCode.FormDesigner.Services; +using ICSharpCode.FormDesigner.Gui; +using ICSharpCode.Core; + +using System.CodeDom; +using System.CodeDom.Compiler; + +using Microsoft.CSharp; +using Microsoft.VisualBasic; + +namespace ICSharpCode.FormDesigner +{ + public class CustomizeSideBar : AbstractMenuCommand + { + public override void Run() + { + ConfigureSideBarDialog configureSideBarDialog = new ConfigureSideBarDialog(); + configureSideBarDialog.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm); + ToolboxProvider.ReloadSideTabs(true); + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/CSharpDesignerGenerator.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/CSharpDesignerGenerator.cs new file mode 100644 index 0000000000..7d23206f85 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/CSharpDesignerGenerator.cs @@ -0,0 +1,268 @@ +// +// +// +// +// +// + +using System; +using System.Text; +using System.Text.RegularExpressions; +using System.IO; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using System.Drawing; +using System.Drawing.Design; +using System.Reflection; +using System.Windows.Forms; +using System.Drawing.Printing; +using System.ComponentModel; +using System.ComponentModel.Design; +using System.ComponentModel.Design.Serialization; +using System.Xml; + +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Dom; +using ICSharpCode.SharpDevelop.Project; +using ICSharpCode.SharpDevelop.Internal.Undo; +using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor; + +using ICSharpCode.Core; +using ICSharpCode.FormDesigner.Services; +using ICSharpCode.TextEditor; +using ICSharpCode.TextEditor.Document; + +using ICSharpCode.NRefactory.Parser; +using ICSharpCode.NRefactory.Parser.AST; +using ICSharpCode.NRefactory.PrettyPrinter; + +using System.CodeDom; +using System.CodeDom.Compiler; + +using Microsoft.CSharp; +using Microsoft.VisualBasic; + +namespace ICSharpCode.FormDesigner +{ + public class CSharpDesignerGenerator : IDesignerGenerator + { + IClass c; + IMethod initializeComponents; + + FormDesignerViewContent viewContent; + bool failedDesignerInitialize = false; + + public void Attach(FormDesignerViewContent viewContent) + { + this.viewContent = viewContent; + IComponentChangeService componentChangeService = (IComponentChangeService)viewContent.DesignSurface.GetService(typeof(IComponentChangeService)); + componentChangeService.ComponentAdded += new ComponentEventHandler(ComponentAdded); + componentChangeService.ComponentRename += new ComponentRenameEventHandler(ComponentRenamed); + componentChangeService.ComponentRemoving += new ComponentEventHandler(ComponentRemoved); + } + + void ComponentRemoved(object sender, ComponentEventArgs e) + { + try { + Reparse(viewContent.Document.TextContent); + foreach (IField field in c.Fields) { + if (field.Name == e.Component.Site.Name) { + int startOffset = viewContent.Document.PositionToOffset(new Point(0, field.Region.BeginLine - 1)); + int endOffset = viewContent.Document.PositionToOffset(new Point(0, field.Region.EndLine)); + viewContent.Document.Remove(startOffset, endOffset - startOffset); + } + } + } catch (Exception ex) { + Console.WriteLine(ex); + } + } + + void ComponentAdded(object sender, ComponentEventArgs e) + { + try { + if (initializeComponents == null) { + Reparse(viewContent.Document.TextContent); + } + int endOffset = viewContent.Document.PositionToOffset(new Point(0, initializeComponents.BodyRegion.EndLine)); + viewContent.Document.Insert(endOffset, "\t\tprivate " + e.Component.GetType() + " " + e.Component.Site.Name + ";" + Environment.NewLine); + } catch (Exception ex) { + Console.WriteLine(ex); + } + } + + void ComponentRenamed(object sender, ComponentRenameEventArgs e) + { + Reparse(viewContent.Document.TextContent); + foreach (IField field in c.Fields) { + if (field.Name == e.OldName) { + int startOffset = viewContent.Document.PositionToOffset(new Point(0, field.Region.BeginLine - 1)); + int endOffset = viewContent.Document.PositionToOffset(new Point(0, field.Region.EndLine)); + viewContent.Document.Replace(startOffset, endOffset - startOffset, "\t\tprivate " + e.Component.GetType() + " " + e.NewName + ";" + Environment.NewLine); + } + } + } + + public void MergeFormChanges() + { + + // generate file and get initialize components string + StringWriter writer = new StringWriter(); + new CodeDOMGenerator(viewContent.Host, new Microsoft.CSharp.CSharpCodeProvider()).ConvertContentDefinition(writer); + string statements = writer.ToString(); + + Reparse(viewContent.Document.TextContent); + + int startOffset = viewContent.Document.PositionToOffset(new Point(0, initializeComponents.BodyRegion.BeginLine + 1)); + int endOffset = viewContent.Document.PositionToOffset(new Point(0, initializeComponents.BodyRegion.EndLine - 1)); + + viewContent.Document.Replace(startOffset, endOffset - startOffset, statements); + } + + protected void Reparse(string content) + { + // get new initialize components + ParseInformation info = ParserService.ParseFile(viewContent.FileName, content, false, true); + ICompilationUnit cu = (ICompilationUnit)info.BestCompilationUnit; + foreach (IClass c in cu.Classes) { + if (FormDesignerSecondaryDisplayBinding.BaseClassIsFormOrControl(c)) { + initializeComponents = GetInitializeComponents(c); + if (initializeComponents != null) { + this.c = c; + break; + } + } + } + } + + IMethod GetInitializeComponents(IClass c) + { + foreach (IMethod method in c.Methods) { + if ((method.Name == "InitializeComponents" || method.Name == "InitializeComponent") && method.Parameters.Count == 0) { + return method; + } + } + return null; + } + #region BLA + + protected static string GenerateParams(EventDescriptor edesc, bool paramNames) + { + System.Type type = edesc.EventType; + MethodInfo mInfo = type.GetMethod("Invoke"); + string param = ""; + IAmbience csa = null; + try { + csa = (IAmbience)AddInTree.GetTreeNode("/SharpDevelop/Workbench/Ambiences").BuildChildItem("CSharp", typeof(IAmbience)); + } catch {} + + for (int i = 0; i < mInfo.GetParameters().Length; ++i) { + ParameterInfo pInfo = mInfo.GetParameters()[i]; + + string typeStr = pInfo.ParameterType.ToString(); + if (csa != null) { + typeStr = csa.GetIntrinsicTypeName(typeStr); + } + param += typeStr; + if (paramNames == true) { + param += " "; + param += pInfo.Name; + } + if (i + 1 < mInfo.GetParameters().Length) { + param += ", "; + } + } + return param; + } + + /// + /// If found return true and int as position + /// + /// + /// + /// + public bool InsertComponentEvent(IComponent component, EventDescriptor edesc, string eventMethodName, string body, out int position) + { + if (this.failedDesignerInitialize) { + position = 0; + return false; + } + + Reparse(viewContent.Document.TextContent); + + foreach (IMethod method in c.Methods) { + if (method.Name == eventMethodName) { + position = method.Region.BeginLine + 1; + return true; + } + } + MergeFormChanges(); + Reparse(viewContent.Document.TextContent); + + position = c.Region.EndLine + 1; + + int offset = viewContent.Document.GetLineSegment(c.Region.EndLine - 1).Offset; + + string param = GenerateParams(edesc, true); + + string text = "void " + eventMethodName + "(" + param + ")\n" + + "{\n" + body + + "\n}\n\n"; + viewContent.Document.Insert(offset, text); + viewContent.Document.FormattingStrategy.IndentLines(viewContent.TextEditorControl.ActiveTextAreaControl.TextArea, c.Region.EndLine - 1, c.Region.EndLine + 3); + + return false; + } + #endregion + + public ICollection GetCompatibleMethods(EventDescriptor edesc) + { + Reparse(viewContent.Document.TextContent); + ArrayList compatibleMethods = new ArrayList(); + MethodInfo methodInfo = edesc.EventType.GetMethod("Invoke"); + foreach (IMethod method in c.Methods) { + if (method.Parameters.Count == methodInfo.GetParameters().Length) { + bool found = true; + for (int i = 0; i < methodInfo.GetParameters().Length; ++i) { + ParameterInfo pInfo = methodInfo.GetParameters()[i]; + IParameter p = method.Parameters[i]; + if (p.ReturnType.FullyQualifiedName != pInfo.ParameterType.ToString()) { + found = false; + break; + } + } + if (found) { + compatibleMethods.Add(method.Name); + } + } + } + + return compatibleMethods; + } + + public ICollection GetCompatibleMethods(EventInfo edesc) + { + Reparse(viewContent.Document.TextContent); + ArrayList compatibleMethods = new ArrayList(); + MethodInfo methodInfo = edesc.GetAddMethod(); + ParameterInfo pInfo = methodInfo.GetParameters()[0]; + string eventName = pInfo.ParameterType.ToString().Replace("EventHandler", "EventArgs"); + + foreach (IMethod method in c.Methods) { + if (method.Parameters.Count == 2) { + bool found = true; + + IParameter p = method.Parameters[1]; + if (p.ReturnType.FullyQualifiedName != eventName) { + found = false; + } + if (found) { + compatibleMethods.Add(method.Name); + } + } + } + + return compatibleMethods; + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/CodeDOMGenerator.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/CodeDOMGenerator.cs new file mode 100644 index 0000000000..a801a562de --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/CodeDOMGenerator.cs @@ -0,0 +1,81 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Xml; +using System.Collections; +using System.Drawing; +using System.Reflection; +using System.Windows.Forms; +using System.ComponentModel; +using System.ComponentModel.Design; +using System.ComponentModel.Design.Serialization; +using System.Text; +using System.Text.RegularExpressions; + +using System.CodeDom; +using System.CodeDom.Compiler; + +using Microsoft.CSharp; +using Microsoft.VisualBasic; +using ICSharpCode.Core; +using ICSharpCode.FormDesigner.Services; + + +namespace ICSharpCode.FormDesigner +{ + /// + /// This class is able to generate a CodeDOM definition out of a XML file. + /// + public class CodeDOMGenerator + { + IDesignerHost host; + CodeDomProvider codeProvider; + + CodeDOMGeneratorUtility codeDOMGeneratorUtility = new CodeDOMGeneratorUtility(); + + public CodeDOMGenerator(IDesignerHost host, CodeDomProvider codeProvider) + { + this.host = host; + this.codeProvider = codeProvider; + } + + public void ConvertContentDefinition(TextWriter writer) + { + DesignerSerializationManager serializationManager = (DesignerSerializationManager )host.GetService(typeof(IDesignerSerializationManager)); + IDisposable session = serializationManager.CreateSession(); + DesignerResourceService designerResourceService = (DesignerResourceService)host.GetService(typeof(System.ComponentModel.Design.IResourceService)); + designerResourceService.SerializationStarted(true); + + CodeDomSerializer rootSerializer = (CodeDomSerializer)serializationManager.GetSerializer(host.RootComponent.GetType(), typeof(CodeDomSerializer)); + + if (rootSerializer == null) { + throw new Exception("No root serializer found"); + } + + ICollection statements = rootSerializer.Serialize(serializationManager, host.RootComponent) as ICollection; + codeDOMGeneratorUtility.CreateCodeGeneratorOptions.IndentString = "\t\t"; + + foreach (CodeStatement statement in statements) { + if (!(statement is CodeVariableDeclarationStatement)) { + try { + codeProvider.GenerateCodeFromStatement(statement, + writer, + codeDOMGeneratorUtility.CreateCodeGeneratorOptions); + } catch (Exception e) { + codeProvider.GenerateCodeFromStatement(new CodeCommentStatement("TODO: Error while generating statement : " + e.Message), + writer, + codeDOMGeneratorUtility.CreateCodeGeneratorOptions); + } + } + } + designerResourceService.SerializationEnded(true); + session.Dispose(); + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/IDesignerGenerator.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/IDesignerGenerator.cs new file mode 100644 index 0000000000..1222577151 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/IDesignerGenerator.cs @@ -0,0 +1,56 @@ +// +// +// +// +// +// + +using System; +using System.Text; +using System.Text.RegularExpressions; +using System.IO; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using System.Drawing; +using System.Drawing.Design; +using System.Reflection; +using System.Windows.Forms; +using System.Drawing.Printing; +using System.ComponentModel; +using System.ComponentModel.Design; +using System.ComponentModel.Design.Serialization; +using System.Xml; + +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Dom; +using ICSharpCode.SharpDevelop.Project; +using ICSharpCode.SharpDevelop.Internal.Undo; +using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor; + +using ICSharpCode.Core; +using ICSharpCode.FormDesigner.Services; +using ICSharpCode.TextEditor; +using ICSharpCode.TextEditor.Document; + +using ICSharpCode.NRefactory.Parser; +using ICSharpCode.NRefactory.Parser.AST; +using ICSharpCode.NRefactory.PrettyPrinter; + +using System.CodeDom; +using System.CodeDom.Compiler; + +using Microsoft.CSharp; +using Microsoft.VisualBasic; + +namespace ICSharpCode.FormDesigner +{ + public interface IDesignerGenerator + { + void Attach(FormDesignerViewContent viewContent); + void MergeFormChanges(); + bool InsertComponentEvent(IComponent component, EventDescriptor edesc, string eventMethodName, string body, out int position); + ICollection GetCompatibleMethods(EventDescriptor edesc); + ICollection GetCompatibleMethods(EventInfo edesc); + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/XmlDesignerGenerator.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/XmlDesignerGenerator.cs new file mode 100644 index 0000000000..d300bca6fe --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/XmlDesignerGenerator.cs @@ -0,0 +1,195 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Xml; +using System.Collections; +using System.Drawing; +using System.Reflection; +using System.Windows.Forms; +using System.ComponentModel; +using System.ComponentModel.Design; +using System.Text; +using System.Text.RegularExpressions; + +namespace ICSharpCode.FormDesigner +{ + public class XmlDesignerGenerator : IDesignerGenerator + { + FormDesignerViewContent viewContent; + + public void Attach(FormDesignerViewContent viewContent) + { + this.viewContent = viewContent; + IComponentChangeService componentChangeService = (IComponentChangeService)viewContent.DesignSurface.GetService(typeof(IComponentChangeService)); + componentChangeService.ComponentChanged += new ComponentChangedEventHandler(ComponentChanged); + + } + void ComponentChanged(object sender, ComponentChangedEventArgs e) + { + viewContent.IsDirty = true; + } + public void MergeFormChanges() + { + StringWriter writer = new StringWriter(); + XmlElement el = GetElementFor(new XmlDocument(), viewContent.Host); + + XmlDocument doc = new XmlDocument(); + doc.LoadXml("<" + el.Name + " version=\"1.0\"/>"); + + foreach (XmlNode node in el.ChildNodes) { + doc.DocumentElement.AppendChild(doc.ImportNode(node, true)); + } + doc.Save(writer); + viewContent.Document.TextContent = writer.ToString(); + } + public bool InsertComponentEvent(IComponent component, EventDescriptor edesc, string eventMethodName, string body, out int position) + { + position = 0; + return false; + } + + public ICollection GetCompatibleMethods(EventDescriptor edesc) + { + return new object[] {}; + } + public ICollection GetCompatibleMethods(EventInfo edesc) + { + return new object[] {}; + } + + public XmlElement GetElementFor(XmlDocument doc, object o) + { + if (doc == null) { + throw new ArgumentNullException("doc"); + } + + if (o == null) { + throw new ArgumentNullException("o"); + } + + try { + XmlElement el = doc.CreateElement(o.GetType().FullName); + PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(o); + + Control ctrl = o as Control; + bool nameInserted = false; + if (ctrl != null) { + XmlElement childEl = doc.CreateElement("Name"); + XmlAttribute valueAttribute = doc.CreateAttribute("value"); + valueAttribute.InnerText = ctrl.Name; + childEl.Attributes.Append(valueAttribute); + el.AppendChild(childEl); + nameInserted = true; + } + + // add collections as last child elements in the xml (because it is better + // to set the properties first and then add items to controls (looks nicer + // in XML and CODE)) + ArrayList childNodes = new ArrayList(); + + // the Controls collection should be generated as the last + // element because properties like 'anchor' in the child elements + // must be applied after the size has set. + foreach (PropertyDescriptor pd in properties) { +// if (!pd.ShouldSerializeValue(o)) { +// continue; +// } + if (pd.Name == "Name" && nameInserted) { + continue; + } + if (pd.Name == "DataBindings" || + // TabControl duplicate TabPages Workaround (TabPages got inserted twice : In Controls and in TabPages) + (o.GetType().FullName == "System.Windows.Forms.TabControl" && pd.Name == "Controls")) { + continue; + } + + XmlElement childEl = null; + if (pd.Name == "Size" && ctrl != null && (ctrl is UserControl || ctrl is Form)) { + childEl = doc.CreateElement("ClientSize"); + childEl.SetAttribute("value", ctrl.ClientSize.ToString()); + childNodes.Insert(0, childEl); + continue; + } + childEl = doc.CreateElement(pd.Name); + + object propertyValue = null; + try { + propertyValue = pd.GetValue(o); + } catch (Exception e) { + Console.WriteLine(e); + continue; + } + + // lists are other than normal properties + if (propertyValue is IList && !(ctrl is PropertyGrid)) { + foreach (object listObject in (IList)propertyValue) { + XmlElement newEl = GetElementFor(doc, listObject); + if (newEl != null) { + childEl.AppendChild(newEl); + } + } + + // only insert lists that contain elements (no empty lists!) + if (childEl.ChildNodes.Count > 0) { + childNodes.Add(childEl); + } + } else if (pd.ShouldSerializeValue(o) && pd.IsBrowsable) { + XmlAttribute valueAttribute = doc.CreateAttribute("value"); + if (propertyValue is Font) { + Font f = (Font)propertyValue; + propertyValue = new Font(f.FontFamily, (float)Math.Round(f.Size)); + } + + valueAttribute.InnerText = propertyValue == null ? null : propertyValue.ToString(); + childEl.Attributes.Append(valueAttribute); + childNodes.Insert(0, childEl); + } + } + + foreach (XmlElement childEl in childNodes) { + el.AppendChild(childEl); + } + + // fallback to ToString, if no members can be generated (for example + // handling System.String) + if (el.ChildNodes.Count == 0) { + XmlAttribute valueAttribute = doc.CreateAttribute("value"); + valueAttribute.InnerText = o.ToString(); + el.Attributes.Append(valueAttribute); + } + + return el; + } catch (Exception e) { + Console.WriteLine(e.ToString()); + } + return null; + } + + public XmlElement GetElementFor(XmlDocument doc, IDesignerHost host) + { + XmlElement componentsElement = doc.CreateElement("Components"); + + XmlAttribute versionAttribute = doc.CreateAttribute("version"); + versionAttribute.InnerText = "1.0"; + componentsElement.Attributes.Append(versionAttribute); + + // insert root element + componentsElement.AppendChild(GetElementFor(doc, host.RootComponent)); + + // insert any non gui (=tray components) + foreach (IComponent component in host.Container.Components) { + if (!(component is Control)) { + componentsElement.AppendChild(GetElementFor(doc, component)); + } + } + + return componentsElement; + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerLoader/NRefactoryDesignerLoader.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerLoader/NRefactoryDesignerLoader.cs new file mode 100644 index 0000000000..1ccbafd85e --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerLoader/NRefactoryDesignerLoader.cs @@ -0,0 +1,142 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.IO; +using System.ComponentModel.Design; +using System.CodeDom; +using System.CodeDom.Compiler; +using System.ComponentModel.Design.Serialization; +using System.Windows.Forms; +using System.Windows.Forms.Design; + + +using ICSharpCode.TextEditor; +using ICSharpCode.TextEditor.Document; + +using ICSharpCode.FormDesigner.Services; +using ICSharpCode.NRefactory.Parser; +using ICSharpCode.NRefactory.Parser.AST; +using ICSharpCode.NRefactory.PrettyPrinter; + +namespace ICSharpCode.FormDesigner +{ + public class DefaultMemberRelationshipService : MemberRelationshipService + { + public override bool SupportsRelationship(MemberRelationship source, MemberRelationship relationship) + { + return true; + } + protected override MemberRelationship GetRelationship(MemberRelationship source) + { + return base.GetRelationship(source); + } + } + + public class NRefactoryDesignerLoader : CodeDomDesignerLoader + { + bool loading = false; + IDesignerLoaderHost designerLoaderHost = null; + TypeResolutionService typeResolutionService = new TypeResolutionService(); + SupportedLanguages language; + Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider(); + + protected Hashtable resources = null; + bool isReloadNeeded = false; + + TextEditorControl textEditorControl; + + public string TextContent { + get { + return textEditorControl.Document.TextContent; + } + } + + public override bool Loading { + get { + return loading; + } + } + + public IDesignerLoaderHost DesignerLoaderHost { + get { + return designerLoaderHost; + } + } + + protected override CodeDomProvider CodeDomProvider { + get { + return provider; + } + } + + protected override ITypeResolutionService TypeResolutionService { + get { + return typeResolutionService; + } + } + + protected override bool IsReloadNeeded() + { + return isReloadNeeded | base.IsReloadNeeded(); + } + + public NRefactoryDesignerLoader(SupportedLanguages language, TextEditorControl textEditorControl) + { + this.language = language; + this.textEditorControl = textEditorControl; + } + + protected override CodeCompileUnit Parse() + { + isReloadNeeded = false; + ICSharpCode.NRefactory.Parser.IParser p = ICSharpCode.NRefactory.Parser.ParserFactory.CreateParser(language, new StringReader(TextContent)); + p.Parse(); + + CodeDOMVisitor visitor = new CodeDOMVisitor(); + visitor.Visit(p.CompilationUnit, null); + +// // output generated CodeDOM to the console : +// provider.GenerateCodeFromCompileUnit(visitor.codeCompileUnit, Console.Out, null); + + return visitor.codeCompileUnit; + } + + protected override void Write(CodeCompileUnit unit) + { + provider.GenerateCodeFromCompileUnit(unit, Console.Out, null); + } + +// public void Reload() +// { +// base.Reload(BasicDesignerLoader.ReloadFlags.Default); +// } +// public override void Flush() +// { +// base.Flush(); +// } + +// void InitializeExtendersForProject(IDesignerHost host) +// { +// IExtenderProviderService elsi = (IExtenderProviderService)host.GetService(typeof(IExtenderProviderService)); +// elsi.AddExtenderProvider(new ICSharpCode.FormDesigner.Util.NameExtender()); +// } + + public override void Dispose() + { + base.Dispose(); + if (this.resources != null) { + foreach (DesignerResourceService.ResourceStorage storage in this.resources.Values) { + storage.Dispose(); + } + resources.Clear(); + } + resources = null; + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerLoader/XmlDesignerLoader.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerLoader/XmlDesignerLoader.cs new file mode 100644 index 0000000000..a982176338 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerLoader/XmlDesignerLoader.cs @@ -0,0 +1,147 @@ +// +// +// +// +// +// + +using System; +using System.Text; +using System.Text.RegularExpressions; +using System.IO; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using System.Drawing; +using System.Drawing.Design; +using System.Reflection; +using System.Windows.Forms; +using System.Drawing.Printing; +using System.ComponentModel; +using System.ComponentModel.Design; +using System.ComponentModel.Design.Serialization; +using System.Xml; + + + +using ICSharpCode.TextEditor; +using ICSharpCode.TextEditor.Document; + +using ICSharpCode.FormDesigner.Services; +using ICSharpCode.NRefactory.Parser; +using ICSharpCode.NRefactory.Parser.AST; +using ICSharpCode.NRefactory.PrettyPrinter; +using ICSharpCode.SharpDevelop.Gui.XmlForms; + +namespace ICSharpCode.FormDesigner +{ + + public class XmlDesignerLoader : BasicDesignerLoader, IObjectCreator + { + TextEditorControl textEditorControl; + + public string TextContent { + get { + return textEditorControl.Document.TextContent; + } + } + public XmlDesignerLoader(TextEditorControl textEditorControl) + { + this.textEditorControl = textEditorControl; + } + + IDesignerLoaderHost host; + public override void BeginLoad(IDesignerLoaderHost host) + { + this.host = host; + host.AddService(typeof(INameCreationService), new NameCreationService(host)); + + base.BeginLoad(host); + } + + protected override void PerformLoad(IDesignerSerializationManager serializationManager) + { + XmlLoader loader = new XmlLoader(); + loader.ObjectCreator = this; + loader.CreateObjectFromXmlDefinition(TextContent); + } + + protected override void PerformFlush(IDesignerSerializationManager serializationManager) + { + } + + Type IObjectCreator.GetType(string name) + { + return host.GetType(name); + } + + object IObjectCreator.CreateObject(string name, XmlElement el) + { + string componentName = null; + + if (el != null) { + foreach (XmlNode childNode in el) { + if (childNode.Name == "Name") { + componentName = ((XmlElement)childNode).GetAttribute("value"); + break; + } + } + } + Console.WriteLine(componentName); + object newObject = host.CreateComponent(host.GetType(name), componentName); + + if (newObject is Control) { + ((Control)newObject).SuspendLayout(); + } + + return newObject; + } + + public class NameCreationService : INameCreationService + { + IDesignerHost host; + + public NameCreationService(IDesignerHost host) + { + this.host = host; + } + + public string CreateName(Type dataType) + { + return CreateName(host.Container, dataType); + } + + public string CreateName(IContainer container, Type dataType) + { + string name = Char.ToLower(dataType.Name[0]) + dataType.Name.Substring(1); + int number = 1; + while (container.Components[name + number.ToString()] != null) { + ++number; + } + return name + number.ToString(); + } + + public bool IsValidName(string name) + { + if (name == null || name.Length == 0 || !(Char.IsLetter(name[0]) || name[0] == '_')) { + return false; + } + + foreach (char ch in name) { + if (!Char.IsLetterOrDigit(ch) && ch != '_') { + return false; + } + } + + return true; + } + + public void ValidateName(string name) + { + if (!IsValidName(name)) { + throw new System.Exception("Invalid name " + name); + } + } + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/FormDesignerSecondaryDisplayBinding.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/FormDesignerSecondaryDisplayBinding.cs new file mode 100644 index 0000000000..485d534bc4 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/FormDesignerSecondaryDisplayBinding.cs @@ -0,0 +1,149 @@ +// +// +// +// +// +// + +using System; +using System.Text; +using System.Text.RegularExpressions; +using System.IO; +using System.Collections; +using System.Diagnostics; +using System.Drawing; +using System.Drawing.Design; +using System.Reflection; +using System.Windows.Forms; +using System.Drawing.Printing; +using System.ComponentModel; +using System.ComponentModel.Design; +using System.ComponentModel.Design.Serialization; +using System.Xml; + +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Project; +using ICSharpCode.SharpDevelop.Internal.Undo; +using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Dom; +using ICSharpCode.FormDesigner.Services; +using ICSharpCode.TextEditor; +using ICSharpCode.TextEditor.Document; + +using ICSharpCode.NRefactory.Parser; +using ICSharpCode.NRefactory.Parser.AST; +using ICSharpCode.NRefactory.PrettyPrinter; + +using System.CodeDom; +using System.CodeDom.Compiler; + +using Microsoft.CSharp; +using Microsoft.VisualBasic; + +namespace ICSharpCode.FormDesigner +{ + public class FormDesignerSecondaryDisplayBinding : ISecondaryDisplayBinding + { + IMethod GetInitializeComponents(IClass c) + { + foreach (IMethod method in c.Methods) { + if ((method.Name == "InitializeComponents" || method.Name == "InitializeComponent") && method.Parameters.Count == 0) { + return method; + } + } + return null; + } + + static Hashtable oldTypes = new Hashtable(); + + public static bool BaseClassIsFormOrControl(IClass c) + { + if (c == null || oldTypes.Contains(c.FullyQualifiedName)) { + oldTypes.Clear(); + return false; + } + oldTypes.Add(c.FullyQualifiedName, null); + + foreach (string baseType in c.BaseTypes) { + IClass type = ParserService.CurrentProjectContent.SearchType(baseType, c, c.Region != null ? c.Region.BeginLine : 0, c.Region != null ? c.Region.BeginColumn : 0); + string typeName = type != null ? type.FullyQualifiedName : baseType; + if (typeName == "System.Windows.Forms.Form" || + typeName == "System.Windows.Forms.UserControl" || + BaseClassIsFormOrControl(type)) { + oldTypes.Clear(); + return true; + } + } + oldTypes.Clear(); + return false; + } + + public bool CanAttachTo(IViewContent viewContent) + { + if (viewContent is ITextEditorControlProvider) { + ITextEditorControlProvider textAreaControlProvider = (ITextEditorControlProvider)viewContent; + string fileExtension = String.Empty; + string fileName = viewContent.IsUntitled ? viewContent.UntitledName : viewContent.FileName; + + try { + fileExtension = Path.GetExtension(fileName).ToLower(); + } catch (Exception e) { + Console.WriteLine(e); + } + + switch (fileExtension) { + case ".cs": + ParseInformation info = ParserService.ParseFile(fileName, textAreaControlProvider.TextEditorControl.Document.TextContent, false, true); + if (info != null) { + ICompilationUnit cu = (ICompilationUnit)info.BestCompilationUnit; + foreach (IClass c in cu.Classes) { + if (BaseClassIsFormOrControl(c)) { + IMethod method = GetInitializeComponents(c); + if (method == null) { + continue; + } + return true; + } + } + } + break; + case ".xfrm": + return true; + } + } + return false; + } + + public ISecondaryViewContent[] CreateSecondaryViewContent(IViewContent viewContent) + { + string fileExtension = String.Empty; + string fileName = viewContent.IsUntitled ? viewContent.UntitledName : viewContent.FileName; + + try { + fileExtension = Path.GetExtension(fileName).ToLower(); + } catch (Exception e) { + Console.WriteLine(e); + } + + if (!FormKeyHandler.inserted) { + FormKeyHandler.Insert(); + } + DesignerLoader loader = new NRefactoryDesignerLoader(SupportedLanguages.CSharp, ((ITextEditorControlProvider)viewContent).TextEditorControl); + IDesignerGenerator generator = new CSharpDesignerGenerator(); + + switch (fileExtension) { + case ".cs": + loader = new NRefactoryDesignerLoader(SupportedLanguages.CSharp, ((ITextEditorControlProvider)viewContent).TextEditorControl); + generator = new CSharpDesignerGenerator(); + break; + case ".xfrm": + loader = new XmlDesignerLoader(((ITextEditorControlProvider)viewContent).TextEditorControl); + generator = new XmlDesignerGenerator(); + break; + } + return new ISecondaryViewContent[] { new FormDesignerViewContent(viewContent, loader, generator) }; + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/FormDesignerViewContent.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/FormDesignerViewContent.cs new file mode 100644 index 0000000000..b768075142 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/FormDesignerViewContent.cs @@ -0,0 +1,443 @@ +// +// +// +// +// +// + +using System; +using System.Text; +using System.Text.RegularExpressions; +using System.IO; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using System.Drawing; +using System.Drawing.Design; +using System.Reflection; +using System.Windows.Forms; +using System.Drawing.Printing; +using System.ComponentModel; +using System.ComponentModel.Design; +using System.ComponentModel.Design.Serialization; +using System.Xml; + +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Project; +using ICSharpCode.SharpDevelop.Internal.Undo; +using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor; + +using ICSharpCode.Core; +using ICSharpCode.FormDesigner.Services; +using ICSharpCode.TextEditor; +using ICSharpCode.TextEditor.Document; + +using ICSharpCode.NRefactory.Parser; +using ICSharpCode.NRefactory.Parser.AST; +using ICSharpCode.NRefactory.PrettyPrinter; + +using System.CodeDom; +using System.CodeDom.Compiler; + +using Microsoft.CSharp; +using Microsoft.VisualBasic; + +namespace ICSharpCode.FormDesigner +{ + public class FormDesignerViewContent : AbstractViewContent, ISecondaryViewContent, IClipboardHandler, IUndoHandler + { + protected bool failedDesignerInitialize; + + protected IViewContent viewContent; + protected Hashtable resources = null; + + protected ITextEditorControlProvider textAreaControlProvider; + + protected string compilationErrors; + + Panel p = new Panel(); + DesignSurface designSurface; + + DesignerLoader loader; + IDesignerGenerator generator; + + public override string FileName { + get { + string fileName = textAreaControlProvider.TextEditorControl.FileName; + return fileName == null ? viewContent.UntitledName : fileName; + } + } + + public override Control Control { + get { + return p; + } + } + + public override bool IsDirty { + get { + if (viewContent == null) { + return false; + } + return viewContent.IsDirty; + } + set { + if (viewContent != null) { + viewContent.IsDirty = value; + } + } + } + + public DesignSurface DesignSurface { + get { + return designSurface; + } + } + + public TextEditorControl TextEditorControl { + get { + return textAreaControlProvider.TextEditorControl; + } + } + public IDocument Document { + get { + return TextEditorControl.Document; + } + } + + public IDesignerHost Host { + get { + return (IDesignerHost)designSurface.GetService(typeof(IDesignerHost)); + } + } + public FormDesignerViewContent(IViewContent viewContent, DesignerLoader loader, IDesignerGenerator generator) + { + this.loader = loader; + this.generator = generator; + p.BackColor = Color.White; + + this.viewContent = viewContent; + this.textAreaControlProvider = viewContent as ITextEditorControlProvider; + Reload(); + + DefaultServiceContainer serviceContainer = new DefaultServiceContainer(); + serviceContainer.AddService(typeof(System.Windows.Forms.Design.IUIService), new UIService()); + serviceContainer.AddService(typeof(System.Drawing.Design.IToolboxService), ToolboxProvider.ToolboxService); + + serviceContainer.AddService(typeof(System.ComponentModel.Design.IMenuCommandService), new ICSharpCode.FormDesigner.Services.MenuCommandService(p, serviceContainer)); + serviceContainer.AddService(typeof(IHelpService), new HelpService()); + serviceContainer.AddService(typeof(System.Drawing.Design.IPropertyValueUIService), new PropertyValueUIService()); + DesignerResourceService designerResourceService = new DesignerResourceService(this.resources); + serviceContainer.AddService(typeof(System.ComponentModel.Design.IResourceService), designerResourceService); + AmbientProperties ambientProperties = new AmbientProperties(); + serviceContainer.AddService(typeof(AmbientProperties), ambientProperties); + serviceContainer.AddService(typeof(ITypeResolutionService), ToolboxProvider.TypeResolutionService); + serviceContainer.AddService(typeof(System.ComponentModel.Design.IDesignerEventService), new DesignerEventService()); + serviceContainer.AddService(typeof(System.ComponentModel.Design.IDesignerOptionService), new ICSharpCode.FormDesigner.Services.DesignerOptionService()); + serviceContainer.AddService(typeof(MemberRelationshipService), new DefaultMemberRelationshipService()); + + + ICSharpCode.FormDesigner.Services.EventBindingService eventBindingService = new ICSharpCode.FormDesigner.Services.EventBindingService(); + serviceContainer.AddService(typeof(System.ComponentModel.Design.IEventBindingService), eventBindingService); + + designSurface = new DesignSurface(serviceContainer); + eventBindingService.ServiceProvider = designSurface; + designerResourceService.Host = Host; + + designSurface.BeginLoad(loader); + + designSurface.Flush(); + + ICSharpCode.SharpDevelop.Gui.PropertyPad.SetDesignerHost(Host); + + + generator.Attach(this); + } + + public override void Load(string fileName) + { + } + + public void Reload() + { + bool dirty = viewContent.IsDirty; +// TODO: +// loader.TextContent = Document.TextContent; + + try { + if (designSurface != null && p.Controls.Count == 0) { + Control designer = designSurface.View as Control; + designer.Dock = DockStyle.Fill; + p.Controls.Add(designer); + } + } catch (Exception e) { + Console.WriteLine(e); + } + } + + protected virtual void MergeFormChanges() + { + if (this.failedDesignerInitialize) { + return; + } + bool isDirty = IsDirty; + generator.MergeFormChanges(); + IsDirty = isDirty; + } + + + public void ShowSourceCode() + { + WorkbenchWindow.SwitchView(0); + } + + public void ShowSourceCode(int lineNumber) + { + ShowSourceCode(); + textAreaControlProvider.TextEditorControl.ActiveTextAreaControl.JumpTo(lineNumber, 255); + } + + public void ShowSourceCode(IComponent component, EventDescriptor edesc, string eventMethodName) + { + int position; + generator.InsertComponentEvent(component, edesc, eventMethodName, "", out position); + ShowSourceCode(position); + } + + public ICollection GetCompatibleMethods(EventDescriptor edesc) + { + return generator.GetCompatibleMethods(edesc); + } + + public ICollection GetCompatibleMethods(EventInfo edesc) + { + return generator.GetCompatibleMethods(edesc); + } + + public override void Selected() + { + Reload(); + } + + public override void Deselected() + { + if (!failedDesignerInitialize) { + MergeFormChanges(); + textAreaControlProvider.TextEditorControl.Refresh(); +// base.DeSelectMe(this, EventArgs.Empty); + } + +// DeselectAllComponents(); + } + + public void NotifyAfterSave(bool successful) + { +// //ifko: save the resources if there are any +// if (successful) { +// DesignerResourceService designerResourceService = (DesignerResourceService)designSurface.GetService(typeof(System.ComponentModel.Design.IResourceService)); +// if (designerResourceService != null) { +// designerResourceService.Save(); +// } +// } + } + + public void NotifyBeforeSave() + { + MergeFormChanges(); + } + + // AbstractViewContent members + protected override void OnWorkbenchWindowChanged(EventArgs e) + { + base.OnWorkbenchWindowChanged(e); + if (WorkbenchWindow != null) { + WorkbenchWindow.WindowSelected += new EventHandler(SelectMe); + WorkbenchWindow.WindowDeselected += new EventHandler(DeSelectMe); + } + } + protected void UpdateSelectableObjects() + { + PropertyPad.SetSelectableObjects(Host.Container.Components); + ISelectionService selectionService = (ISelectionService)Host.GetService(typeof(ISelectionService)); + if (selectionService != null) { + ICSharpCode.SharpDevelop.Gui.PropertyPad.SetDesignableObject(selectionService.PrimarySelection); + } + } + + public bool IsFormDesignerVisible = false; + protected virtual void SelectMe(object sender, EventArgs e) + { +// TODO: +// loader.TextContent = Document.TextContent; + IsFormDesignerVisible = true; + foreach(AxSideTab tab in ToolboxProvider.SideTabs) { + if (!SharpDevelopSideBar.SideBar.Tabs.Contains(tab)) { + SharpDevelopSideBar.SideBar.Tabs.Add(tab); + } + } + SharpDevelopSideBar.SideBar.Refresh(); + ICSharpCode.SharpDevelop.Gui.PropertyPad.SetDesignerHost(Host); + UpdateSelectableObjects(); + } + + protected virtual void DeSelectMe(object sender, EventArgs e) + { + IsFormDesignerVisible = false; + ICSharpCode.SharpDevelop.Gui.PropertyPad.SetDesignableObject(null); + ICSharpCode.SharpDevelop.Gui.PropertyPad.SetSelectableObjects(null); + foreach(AxSideTab tab in ToolboxProvider.SideTabs) { + if (!SharpDevelopSideBar.SideBar.Tabs.Contains(tab)) { + return; + } + SharpDevelopSideBar.SideBar.Tabs.Remove(tab); + } + SharpDevelopSideBar.SideBar.Refresh(); + ICSharpCode.SharpDevelop.Gui.PropertyPad.RemoveHost(Host); + } + + #region IUndoHandler impelementation + public bool EnableUndo { + get { + return true; + } + } + public bool EnableRedo { + get { + return true; + } + } + public virtual void Undo() + { + IMenuCommandService menuCommandService = (IMenuCommandService)designSurface.GetService(typeof(IMenuCommandService)); + menuCommandService.GlobalInvoke(StandardCommands.Undo); + } + + public virtual void Redo() + { + IMenuCommandService menuCommandService = (IMenuCommandService)designSurface.GetService(typeof(IMenuCommandService)); + menuCommandService.GlobalInvoke(StandardCommands.Redo); + } + #endregion + + #region IClipboardHandler implementation + public bool EnableCut { + get { + //ISelectionService selectionService = (ISelectionService)designSurface.GetService(typeof(ISelectionService)); + //return selectionService.SelectionCount >= 0 && selectionService.PrimarySelection != host.RootComponent; + IMenuCommandService menuCommandService = (IMenuCommandService)designSurface.GetService(typeof(IMenuCommandService)); + System.ComponentModel.Design.MenuCommand menuCommand = menuCommandService.FindCommand(StandardCommands.Cut); + if (menuCommand == null) { + return false; + } + int status = menuCommand.OleStatus; + return menuCommand.Enabled; + } + } + + public bool EnableCopy { + get { + //ISelectionService selectionService = (ISelectionService)designSurface.GetService(typeof(ISelectionService)); + //return selectionService.SelectionCount >= 0 && selectionService.PrimarySelection != host.RootComponent; + IMenuCommandService menuCommandService = (IMenuCommandService)designSurface.GetService(typeof(IMenuCommandService)); + System.ComponentModel.Design.MenuCommand menuCommand = menuCommandService.FindCommand(StandardCommands.Copy); + if (menuCommand == null) { + return false; + } + int status = menuCommand.OleStatus; + return menuCommand.Enabled; + } + } + + const string ComponentClipboardFormat = "CF_DESIGNERCOMPONENTS"; + public bool EnablePaste { + get { + IMenuCommandService menuCommandService = (IMenuCommandService)designSurface.GetService(typeof(IMenuCommandService)); + System.ComponentModel.Design.MenuCommand menuCommand = menuCommandService.FindCommand(StandardCommands.Paste); + if (menuCommand == null) { + return false; + } + int status = menuCommand.OleStatus; + return menuCommand.Enabled; + } + } + + public bool EnableDelete { + get { + IMenuCommandService menuCommandService = (IMenuCommandService)designSurface.GetService(typeof(IMenuCommandService)); + System.ComponentModel.Design.MenuCommand menuCommand = menuCommandService.FindCommand(StandardCommands.Delete); + if (menuCommand == null) { + return false; + } + int status = menuCommand.OleStatus; + return menuCommand.Enabled; + } + } + + public bool EnableSelectAll { + get { + return true; + } + } + + public void Cut() + { + IMenuCommandService menuCommandService = (IMenuCommandService)designSurface.GetService(typeof(IMenuCommandService)); + menuCommandService.GlobalInvoke(StandardCommands.Cut); + } + + public void Copy() + { + IMenuCommandService menuCommandService = (IMenuCommandService)designSurface.GetService(typeof(IMenuCommandService)); + menuCommandService.GlobalInvoke(StandardCommands.Copy); + } + + public void Paste() + { + IMenuCommandService menuCommandService = (IMenuCommandService)designSurface.GetService(typeof(IMenuCommandService)); + menuCommandService.GlobalInvoke(StandardCommands.Paste); + } + + public void Delete() + { + IMenuCommandService menuCommandService = (IMenuCommandService)designSurface.GetService(typeof(IMenuCommandService)); + menuCommandService.GlobalInvoke(StandardCommands.Delete); + } + + public void SelectAll() + { + IMenuCommandService menuCommandService = (IMenuCommandService)designSurface.GetService(typeof(IMenuCommandService)); + menuCommandService.GlobalInvoke(StandardCommands.SelectAll); + } + #endregion + + #region Tab Order Handling + bool tabOrderMode = false; + public virtual bool IsTabOrderMode { + get { + return tabOrderMode; + } + } + + public virtual void ShowTabOrder() + { + if (!IsTabOrderMode) { + IMenuCommandService menuCommandService = (IMenuCommandService)designSurface.GetService(typeof(IMenuCommandService)); + menuCommandService.GlobalInvoke(StandardCommands.TabOrder); + tabOrderMode = true; + } + } + + public virtual void HideTabOrder() + { + if (IsTabOrderMode) { + IMenuCommandService menuCommandService = (IMenuCommandService)designSurface.GetService(typeof(IMenuCommandService)); + menuCommandService.GlobalInvoke(StandardCommands.TabOrder); + tabOrderMode = false; + } + } + #endregion + } + + + +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/FormKeyHandler.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/FormKeyHandler.cs new file mode 100644 index 0000000000..387069f8f9 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/FormKeyHandler.cs @@ -0,0 +1,182 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Collections; +using System.Drawing; +using System.Drawing.Design; +using System.Reflection; +using System.Windows.Forms; +using System.Windows.Forms.Design; +using System.Drawing.Printing; +using System.ComponentModel; +using System.ComponentModel.Design; +using System.ComponentModel.Design.Serialization; +using System.Xml; + +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Project; +using ICSharpCode.SharpDevelop.Internal.Undo; +using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor; + + +using ICSharpCode.Core; +using ICSharpCode.FormDesigner.Services; + +using System.CodeDom; +using System.CodeDom.Compiler; + +using Microsoft.CSharp; +using Microsoft.VisualBasic; + +namespace ICSharpCode.FormDesigner +{ + public class FormKeyHandler : IMessageFilter + { + const int keyPressedMessage = 0x100; + const int leftMouseButtonDownMessage = 0x0202; + + Hashtable keyTable = new Hashtable(); + public static bool inserted = false; + public static void Insert() + { + inserted = true; + Application.AddMessageFilter(new FormKeyHandler()); + } + + public FormKeyHandler() + { + // normal keys + keyTable[Keys.Left] = new CommandWrapper(MenuCommands.KeyMoveLeft); + keyTable[Keys.Right] = new CommandWrapper(MenuCommands.KeyMoveRight); + keyTable[Keys.Up] = new CommandWrapper(MenuCommands.KeyMoveUp); + keyTable[Keys.Down] = new CommandWrapper(MenuCommands.KeyMoveDown); + keyTable[Keys.Tab] = new CommandWrapper(MenuCommands.KeySelectNext, false); + keyTable[Keys.Delete] = new CommandWrapper(MenuCommands.Delete, false); + keyTable[Keys.Back] = new CommandWrapper(MenuCommands.Delete, false); + + // shift modified keys + keyTable[Keys.Left | Keys.Shift] = new CommandWrapper(MenuCommands.KeySizeWidthDecrease); + keyTable[Keys.Right | Keys.Shift] = new CommandWrapper(MenuCommands.KeySizeWidthIncrease); + keyTable[Keys.Up | Keys.Shift] = new CommandWrapper(MenuCommands.KeySizeHeightDecrease); + keyTable[Keys.Down | Keys.Shift] = new CommandWrapper(MenuCommands.KeySizeHeightIncrease); + keyTable[Keys.Tab | Keys.Shift] = new CommandWrapper(MenuCommands.KeySelectPrevious, false); + keyTable[Keys.Delete| Keys.Shift] = new CommandWrapper(MenuCommands.Delete, false); + keyTable[Keys.Back| Keys.Shift] = new CommandWrapper(MenuCommands.Delete, false); + + // ctrl modified keys + keyTable[Keys.Left | Keys.Control] = new CommandWrapper(MenuCommands.KeyNudgeLeft); + keyTable[Keys.Right | Keys.Control] = new CommandWrapper(MenuCommands.KeyNudgeRight); + keyTable[Keys.Up | Keys.Control] = new CommandWrapper(MenuCommands.KeyNudgeUp); + keyTable[Keys.Down | Keys.Control] = new CommandWrapper(MenuCommands.KeyNudgeDown); + + // ctrl + shift modified keys + keyTable[Keys.Left | Keys.Control | Keys.Shift] = new CommandWrapper(MenuCommands.KeyNudgeWidthDecrease); + keyTable[Keys.Right | Keys.Control | Keys.Shift] = new CommandWrapper(MenuCommands.KeyNudgeWidthIncrease); + keyTable[Keys.Up | Keys.Control | Keys.Shift] = new CommandWrapper(MenuCommands.KeyNudgeHeightDecrease); + keyTable[Keys.Down | Keys.Control | Keys.Shift] = new CommandWrapper(MenuCommands.KeyNudgeHeightIncrease); + } + + public bool PreFilterMessage(ref Message m) + { + if (m.Msg != keyPressedMessage /*&& m.Msg != leftMouseButtonDownMessage*/) { + return false; + } + + if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow == null || + !WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ActiveViewContent.Control.ContainsFocus) { + return false; + } + + FormDesignerViewContent formDesigner = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ActiveViewContent as FormDesignerViewContent; + + if (formDesigner == null) { + return false; + } + + if (!formDesigner.IsFormDesignerVisible) { + return false; + } + +// if (AbstractMenuEditorControl.MenuEditorFocused) { +// return false; +// } + +// if (m.Msg == leftMouseButtonDownMessage) { +// if (formDesigner.IsTabOrderMode) { +// Point p = new Point(m.LParam.ToInt32()); +// Control c = Control.FromHandle(m.HWnd); +// try { +// if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift) { +// formDesigner.SetPrevTabIndex(c.PointToScreen(p)); +// } else { +// formDesigner.SetNextTabIndex(c.PointToScreen(p)); +// } +// } catch (Exception e) { +// Console.WriteLine(e); +// } +// } +// return false; +// } + + Keys keyPressed = (Keys)m.WParam.ToInt32() | Control.ModifierKeys; + if (keyPressed == Keys.F1) { + return false; + } + + if (keyPressed == Keys.Escape) { + formDesigner.HideTabOrder(); + return true; + } + + CommandWrapper commandWrapper = (CommandWrapper)keyTable[keyPressed]; + if (commandWrapper != null) { + IMenuCommandService menuCommandService = (IMenuCommandService)formDesigner.Host.GetService(typeof(IMenuCommandService)); + ISelectionService selectionService = (ISelectionService)formDesigner.Host.GetService(typeof(ISelectionService)); + ICollection components = selectionService.GetSelectedComponents(); + + menuCommandService.GlobalInvoke(commandWrapper.CommandID); + + if (commandWrapper.RestoreSelection) { + selectionService.SetSelectedComponents(components); + } + return true; + } + + return (System.Windows.Forms.Control.ModifierKeys & Keys.Alt) != Keys.Alt && + (System.Windows.Forms.Control.ModifierKeys & Keys.Control) != Keys.Control; + } + + class CommandWrapper + { + CommandID commandID; + bool restoreSelection; + + public CommandID CommandID { + get { + return commandID; + } + } + + public bool RestoreSelection { + get { + return restoreSelection; + } + } + + public CommandWrapper(CommandID commandID) : this(commandID, true) + { + } + public CommandWrapper(CommandID commandID, bool restoreSelection) + { + this.commandID = commandID; + this.restoreSelection = restoreSelection; + } + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/AddComponentsDialog.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/AddComponentsDialog.cs new file mode 100644 index 0000000000..8665c0bc38 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/AddComponentsDialog.cs @@ -0,0 +1,211 @@ +// created on 07.08.2003 at 13:46 +using System; +using System.IO; +using System.Drawing; +using System.Drawing.Design; +using System.ComponentModel; +using System.ComponentModel.Design; +using System.Collections; +using System.Text; +using System.Reflection; +using System.Windows.Forms; +using MSjogren.GacTool.FusionNative; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui.XmlForms; + +namespace ICSharpCode.FormDesigner.Gui +{ + public class AddComponentsDialog : BaseSharpDevelopForm + { + ArrayList selectedComponents; + + public ArrayList SelectedComponents { + get { + return selectedComponents; + } + } + + public AddComponentsDialog() + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.AddSidebarComponentsDialog.xfrm")); + + Icon = null; + PrintGACCache(); + + ControlDictionary["browseButton"].Click += new System.EventHandler(this.browseButtonClick); + ((ListView)ControlDictionary["gacListView"]).SelectedIndexChanged += new System.EventHandler(this.gacListViewSelectedIndexChanged); +// ((TextBox)ControlDictionary["fileNameTextBox"]).TextChanged += new System.EventHandler(this.fileNameTextBoxTextChanged); + ControlDictionary["okButton"].Click += new System.EventHandler(this.buttonClick); + ControlDictionary["loadButton"].Click += new System.EventHandler(this.loadButtonClick); + } + + void PrintGACCache() + { + IApplicationContext applicationContext = null; + IAssemblyEnum assemblyEnum = null; + IAssemblyName assemblyName = null; + + Fusion.CreateAssemblyEnum(out assemblyEnum, null, null, 2, 0); + + while (assemblyEnum.GetNextAssembly(out applicationContext, out assemblyName, 0) == 0) { + uint nChars = 0; + assemblyName.GetDisplayName(null, ref nChars, 0); + + StringBuilder sb = new StringBuilder((int)nChars); + assemblyName.GetDisplayName(sb, ref nChars, 0); + + string[] info = sb.ToString().Split(','); + + string name = info[0]; + string version = info[1].Substring(info[1].LastIndexOf('=') + 1); + + ListViewItem item = new ListViewItem(new string[] {name, version}); + item.Tag = sb.ToString(); + ((ListView)ControlDictionary["gacListView"]).Items.Add(item); + } + } + + void FillComponents(Assembly assembly, string loadPath) + { + ((ListView)ControlDictionary["componentListView"]).BeginUpdate(); + ((ListView)ControlDictionary["componentListView"]).Items.Clear(); + + if (assembly != null) { + Hashtable images = new Hashtable(); + ImageList il = new ImageList(); + // try to load res icon + string[] imgNames = assembly.GetManifestResourceNames(); + + foreach (string im in imgNames) { + try { + Bitmap b = new Bitmap(Image.FromStream(assembly.GetManifestResourceStream(im))); + b.MakeTransparent(); + images[im] = il.Images.Count; + il.Images.Add(b); + } catch {} + } + try { + Module[] ms = assembly.GetModules(false); + ((ListView)ControlDictionary["componentListView"]).SmallImageList = il; + foreach (Module m in ms) { + Type[] ts = m.GetTypes(); + foreach (Type t in ts) { + if (t.IsPublic && !t.IsAbstract) { + if (t.IsDefined(typeof(ToolboxItemFilterAttribute), true) || t.IsDefined(typeof(ToolboxItemAttribute), true) || typeof(System.ComponentModel.IComponent).IsAssignableFrom(t)) { + object[] attributes = t.GetCustomAttributes(false); + object[] filterAttrs = t.GetCustomAttributes(typeof(DesignTimeVisibleAttribute), true); + foreach (DesignTimeVisibleAttribute visibleAttr in filterAttrs) { + if (!visibleAttr.Visible) { + goto skip; + } + } + + if (images[t.FullName + ".bmp"] == null) { + if (t.IsDefined(typeof(ToolboxBitmapAttribute), false)) { + foreach (object attr in attributes) { + if (attr is ToolboxBitmapAttribute) { + ToolboxBitmapAttribute toolboxBitmapAttribute = (ToolboxBitmapAttribute)attr; + images[t.FullName + ".bmp"] = il.Images.Count; + Bitmap b = new Bitmap(toolboxBitmapAttribute.GetImage(t)); + b.MakeTransparent(); + il.Images.Add(b); + break; + } + } + } + } + + ListViewItem newItem = new ListViewItem(t.Name); + newItem.SubItems.Add(t.Namespace); + newItem.SubItems.Add(assembly.ToString()); + newItem.SubItems.Add(assembly.Location); + newItem.SubItems.Add(t.Namespace); + if (images[t.FullName + ".bmp"] != null) { + newItem.ImageIndex = (int)images[t.FullName + ".bmp"]; + } + newItem.Checked = true; + ToolComponent toolComponent = new ToolComponent(t.FullName, new ComponentAssembly(assembly.FullName, loadPath)); + toolComponent.IsEnabled = true; + newItem.Tag = toolComponent; + ((ListView)ControlDictionary["componentListView"]).Items.Add(newItem); + ToolboxItem item = new ToolboxItem(t); + skip:; + } + } + } + } + } catch (Exception e) { + Console.WriteLine("got exception : " + e.ToString()); + } + } + ((ListView)ControlDictionary["componentListView"]).EndUpdate(); + } + + /* changed this unexpected behaviour -- added a load button, G.B. + void fileNameTextBoxTextChanged(object sender, System.EventArgs e) + { + if (File.Exists(this.fileNameTextBox.Text)) { + try { + FillComponents(Assembly.LoadFrom(this.fileNameTextBox.Text)); + } catch (Exception ex) { + + MessageService.ShowError(ex); + } + } + } + */ + + void gacListViewSelectedIndexChanged(object sender, System.EventArgs e) + { + if (((ListView)ControlDictionary["gacListView"]).SelectedItems != null && ((ListView)ControlDictionary["gacListView"]).SelectedItems.Count == 1) { + string assemblyName = ((ListView)ControlDictionary["gacListView"]).SelectedItems[0].Tag.ToString(); + Assembly asm = Assembly.Load(assemblyName); + FillComponents(asm, null); + } else { + FillComponents(null, null); + } + } + + void loadButtonClick(object sender, System.EventArgs e) + { + if (!System.IO.File.Exists(ControlDictionary["fileNameTextBox"].Text)) { + MessageBox.Show("Please enter a valid file name.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + + try { + string assemblyFileName = ControlDictionary["fileNameTextBox"].Text; + Assembly asm = Assembly.LoadFrom(assemblyFileName); + FillComponents(asm, Path.GetDirectoryName(assemblyFileName)); + } catch { + MessageBox.Show("Please enter the file name of a valid .NET assembly.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); + FillComponents(null, null); + } + } + + void buttonClick(object sender, System.EventArgs e) + { + selectedComponents = new ArrayList(); + foreach (ListViewItem item in ((ListView)ControlDictionary["componentListView"]).Items) { + if (item.Checked) { + selectedComponents.Add((ToolComponent)item.Tag); + } + } + } + + void browseButtonClick(object sender, System.EventArgs e) + { + using (OpenFileDialog fdiag = new OpenFileDialog()) { + fdiag.AddExtension = true; + + fdiag.Filter = StringParser.Parse("${res:SharpDevelop.FileFilter.AssemblyFiles}|*.dll;*.exe|${res:SharpDevelop.FileFilter.AllFiles}|*.*"); + fdiag.Multiselect = false; + fdiag.CheckFileExists = true; + + if (fdiag.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) { + ControlDictionary["fileNameTextBox"].Text = fdiag.FileName; + } + } + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/AssemblyList.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/AssemblyList.cs new file mode 100644 index 0000000000..a812e2bcdc --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/AssemblyList.cs @@ -0,0 +1,144 @@ +// created on 26/01/2003 at 21:23 +using System; +using System.Windows.Forms; +using System.Text; +using ICSharpCode.Core; + +using MSjogren.GacTool.FusionNative; + +namespace ICSharpCode.FormDesigner.Gui +{ + public class AssemblyList : System.Windows.Forms.Form + { + private System.Windows.Forms.Button okButton; + private System.Windows.Forms.Button cancelButton; + private System.Windows.Forms.ColumnHeader createdObject1; + private System.Windows.Forms.ColumnHeader createdObject0; + private System.Windows.Forms.ListView listView; + + public AssemblyList() + { + InitializeComponents2(); + + + okButton.Text = ResourceService.GetString("Global.OKButtonText"); + cancelButton.Text = ResourceService.GetString("Global.CancelButtonText"); + + ColumnHeader referenceHeader; + + referenceHeader = listView.Columns[0]; + referenceHeader.Text = ResourceService.GetString("Dialog.SelectReferenceDialog.GacReferencePanel.ReferenceHeader"); + referenceHeader.Width = 160; + + referenceHeader = listView.Columns[1]; + referenceHeader.Text = ResourceService.GetString("Dialog.SelectReferenceDialog.GacReferencePanel.VersionHeader"); + referenceHeader.Width = 70; + + //ItemActivate += new EventHandler(AddReference); + PrintCache(); + } + + void InitializeComponents2() + { + // + // Set up generated class form + // + + + this.SuspendLayout(); + this.Name = "form"; + this.ShowInTaskbar = false; + this.Size = new System.Drawing.Size(352, 288); + this.MinimizeBox = false; + this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; + this.StartPosition = FormStartPosition.CenterParent; + this.TopMost = false; + this.MaximizeBox = false; + this.Icon = null; + this.Text = "Add Assembly";//ResourceService.GetString("Dialog.Options.FormDesigner.AddAssembly"); + + // + // Set up member listView + // + listView = new System.Windows.Forms.ListView(); + listView.Name = "listView"; + listView.Dock = System.Windows.Forms.DockStyle.Top; + listView.TabIndex = 3; + listView.View = System.Windows.Forms.View.Details; + listView.Size = new System.Drawing.Size(344, 216); + listView.CheckBoxes = true; + listView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + + // + // Set up member createdObject0 + // + createdObject0 = new System.Windows.Forms.ColumnHeader(); + createdObject0.Text = "reference"; + listView.Columns.Add(createdObject0); + + // + // Set up member createdObject1 + // + createdObject1 = new System.Windows.Forms.ColumnHeader(); + createdObject1.Text = "version"; + listView.Columns.Add(createdObject1); + this.Controls.Add(listView); + + // + // Set up member CancelButton + // + cancelButton = new System.Windows.Forms.Button(); + cancelButton.Name = "CancelButton"; + cancelButton.Location = new System.Drawing.Point(264, 224); + cancelButton.Text = "button2"; + cancelButton.TabIndex = 2; + cancelButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.Controls.Add(cancelButton); + + // + // Set up member okButton + // + okButton = new System.Windows.Forms.Button(); + okButton.Name = "okButton"; + okButton.Location = new System.Drawing.Point(184, 224); + okButton.Text = "button"; + okButton.TabIndex = 1; + okButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + okButton.DialogResult = System.Windows.Forms.DialogResult.OK; + this.Controls.Add(okButton); + this.ResumeLayout(false); + } + + void PrintCache() + { + IApplicationContext applicationContext = null; + IAssemblyEnum assemblyEnum = null; + IAssemblyName assemblyName = null; + + Fusion.CreateAssemblyEnum(out assemblyEnum, null, null, 2, 0); + + while (assemblyEnum.GetNextAssembly(out applicationContext, out assemblyName, 0) == 0) { + uint nChars = 0; + assemblyName.GetDisplayName(null, ref nChars, 0); + + StringBuilder sb = new StringBuilder((int)nChars); + assemblyName.GetDisplayName(sb, ref nChars, 0); + + string[] info = sb.ToString().Split(','); + + string aName = info[0]; + string aVersion = info[1].Substring(info[1].LastIndexOf('=') + 1); + ListViewItem item = new ListViewItem(new string[] {aName, aVersion}); + item.Tag = sb.ToString(); + listView.Items.Add(item); + } + } + + public ListView.CheckedListViewItemCollection GetCheckedItems() + { + return listView.CheckedItems; + } + + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/ComponentLibraryLoader.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/ComponentLibraryLoader.cs new file mode 100644 index 0000000000..499ecbeb46 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/ComponentLibraryLoader.cs @@ -0,0 +1,379 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Drawing; +using System.Reflection; +using System.Collections; +using System.Xml; + +namespace ICSharpCode.FormDesigner.Gui +{ + public class ToolComponent + { + string fullName; + string assemblyName; + string hintPath; + bool isEnabled = true; + + public string HintPath { + get { + return hintPath; + } + set { + hintPath = value; + } + } + + public string FullName { + get { + return fullName; + } + set { + fullName = value; + } + } + + public string Name { + get { + int idx = fullName.LastIndexOf('.'); + if (idx > 0) { + return fullName.Substring(idx + 1); + } + return fullName; + } + } + + public string Namespace { + get { + int idx = fullName.LastIndexOf('.'); + if (idx > 0) { + return fullName.Substring(0, idx); + } + return String.Empty; + } + } + + public bool IsEnabled { + get { + return isEnabled; + } + set { + isEnabled = value; + } + } + + string AssemblyFileNameWithoutPath { + get { + int idx = assemblyName.IndexOf(','); + + return assemblyName.Substring(0, idx) + ".dll"; + } + } + + public string AssemblyName { + get { + return assemblyName; + } + set { + assemblyName = value; + } + } + protected ToolComponent() + { + } + public ToolComponent(string fullName, ComponentAssembly assembly) + { + this.fullName = fullName; + this.assemblyName = assembly.Name; + this.hintPath = assembly.HintPath; + } + public string FileName { + get { + if (HintPath == null) { + return null; + } + return Path.Combine(HintPath, AssemblyFileNameWithoutPath); + } + } + + public Assembly LoadAssembly() + { + if (HintPath != null) { + return Assembly.LoadFrom(FileName); + } + return Assembly.Load(AssemblyName); + } + + public object Clone() + { + ToolComponent toolComponent = new ToolComponent(); + toolComponent.FullName = fullName; + toolComponent.AssemblyName = assemblyName; + toolComponent.IsEnabled = isEnabled; + return toolComponent; + } + } + + public class Category + { + string name; + bool isEnabled = true; + ArrayList components = new ArrayList(); + + public string Name { + get { + return name; + } + set { + name = value; + } + } + + public bool IsEnabled { + get { + return isEnabled; + } + set { + isEnabled = value; + } + } + + public ArrayList ToolComponents { + get { + return components; + } + } + + protected Category() + { + } + + public Category(string name) + { + this.name = name; + } + + public object Clone() + { + Category newCategory = new Category(); + newCategory.Name = name; + newCategory.IsEnabled = isEnabled; + foreach (ToolComponent toolComponent in components) { + newCategory.ToolComponents.Add(toolComponent.Clone()); + } + return newCategory; + } + } + + public class ComponentAssembly + { + string name; + string hintPath; + + public string Name { + get { + return name; + } + set { + name = value; + } + } + public string HintPath { + get { + return hintPath; + } + set { + hintPath = value; + } + } + public ComponentAssembly(string name) + { + this.name = name; + this.hintPath = null; + } + public ComponentAssembly(string name, string hintPath) + { + this.name = name; + this.hintPath = hintPath; + } + public override string ToString() + { + return name; + } + } + + public class ComponentLibraryLoader + { + static readonly string VERSION = "1.1.0"; + + ArrayList assemblies = new ArrayList(); + ArrayList categories = new ArrayList(); + + public ArrayList Categories { + get { + return categories; + } + set { + categories = value; + } + } + + public ArrayList CopyCategories() + { + ArrayList newCategories = new ArrayList(); + foreach (Category category in categories) { + newCategories.Add(category.Clone()); + } + return newCategories; + } + + + public bool LoadToolComponentLibrary(string fileName) + { + if (!File.Exists(fileName)) { + return false; + } + + try { + XmlDocument doc = new XmlDocument(); + doc.Load(fileName); + + if (doc.DocumentElement.Name != "SharpDevelopControlLibrary" || + doc.DocumentElement.Attributes["version"] == null || + doc.DocumentElement.Attributes["version"].InnerText != VERSION) { + return false; + } + + foreach (XmlNode node in doc.DocumentElement["Assemblies"].ChildNodes) { + if (node.Name == "Assembly") { + string assemblyName = node.Attributes["assembly"].InnerText; + if (node.Attributes["path"] != null) { + assemblies.Add(new ComponentAssembly(assemblyName, node.Attributes["path"].InnerText)); + } else { + assemblies.Add(new ComponentAssembly(assemblyName)); + } + } + } + + foreach (XmlNode node in doc.DocumentElement["Categories"].ChildNodes) { + if (node.Name == "Category") { + string name = node.Attributes["name"].InnerText; + Category newCategory = new Category(name); + foreach (XmlNode componentNode in node.ChildNodes) { + ToolComponent newToolComponent = new ToolComponent(componentNode.Attributes["class"].InnerText, + (ComponentAssembly)assemblies[Int32.Parse(componentNode.Attributes["assembly"].InnerText)]); + newCategory.ToolComponents.Add(newToolComponent); + } + categories.Add(newCategory); + } + } + } catch (Exception e) { + Console.WriteLine(e); + return false; + } + return true; + } + + public Bitmap GetIcon(ToolComponent component) + { + Assembly asm = component.LoadAssembly(); + Type type = asm.GetType(component.FullName); + Bitmap b = null; + if (type != null) { + object[] attributes = type.GetCustomAttributes(false); + foreach (object attr in attributes) { + if (attr is ToolboxBitmapAttribute) { + ToolboxBitmapAttribute toolboxBitmapAttribute = (ToolboxBitmapAttribute)attr; + b = new Bitmap(toolboxBitmapAttribute.GetImage(type)); + b.MakeTransparent(); + break; + } + } + } + if (b == null) { + try { + Stream imageStream = asm.GetManifestResourceStream(component.FullName + ".bmp"); + if (imageStream != null) { + b = new Bitmap(Image.FromStream(imageStream)); + b.MakeTransparent(); + } + } catch (Exception e) { + Console.WriteLine(e); + } + } + + // TODO: Maybe default icon needed ??!?! + return b; + } + + public ToolComponent GetToolComponent(string assemblyName) + { + foreach (Category category in categories) { + foreach (ToolComponent component in category.ToolComponents) { + if (component.AssemblyName == assemblyName) { + return component; + } + } + } + return null; + } + + public void SaveToolComponentLibrary(string fileName) + { + XmlDocument doc = new XmlDocument(); + doc.LoadXml(""); + Hashtable assemblyHashTable = new Hashtable(); + + XmlElement assemblyNode = doc.CreateElement("Assemblies"); + doc.DocumentElement.AppendChild(assemblyNode); + for (int i = 0; i < assemblies.Count; ++i) { + ComponentAssembly componentAssembly = (ComponentAssembly)assemblies[i]; + assemblyHashTable[componentAssembly.Name] = i; + + XmlElement newAssembly = doc.CreateElement("Assembly"); + + newAssembly.SetAttribute("assembly", componentAssembly.Name); + if (componentAssembly.HintPath != null) { + newAssembly.SetAttribute("path", componentAssembly.HintPath); + } + assemblyNode.AppendChild(newAssembly); + } + + XmlElement categoryNode = doc.CreateElement("Categories"); + doc.DocumentElement.AppendChild(categoryNode); + foreach (Category category in categories) { + XmlElement newCategory = doc.CreateElement("Category"); + newCategory.SetAttribute("name", category.Name); + newCategory.SetAttribute("enabled", category.IsEnabled.ToString()); + categoryNode.AppendChild(newCategory); + + foreach (ToolComponent component in category.ToolComponents) { + XmlElement newToolComponent = doc.CreateElement("ToolComponent"); + newToolComponent.SetAttribute("class", component.FullName); + + if (assemblyHashTable[component.AssemblyName] == null) { + XmlElement newAssembly = doc.CreateElement("Assembly"); + newAssembly.SetAttribute("assembly", component.AssemblyName); + if (component.HintPath != null) { + newAssembly.SetAttribute("path", component.HintPath); + } + + assemblyNode.AppendChild(newAssembly); + assemblyHashTable[component.AssemblyName] = assemblyHashTable.Values.Count; + } + + newToolComponent.SetAttribute("assembly", assemblyHashTable[component.AssemblyName].ToString()); + newToolComponent.SetAttribute("enabled", component.IsEnabled.ToString()); + newCategory.AppendChild(newToolComponent); + } + } + doc.Save(fileName); + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/ConfigureSideBarDialog.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/ConfigureSideBarDialog.cs new file mode 100644 index 0000000000..d131b56baa --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/ConfigureSideBarDialog.cs @@ -0,0 +1,189 @@ +// created on 07.08.2003 at 13:36 +using System; +using System.Drawing; +using System.Collections; +using System.Windows.Forms; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui.XmlForms; + +namespace ICSharpCode.FormDesigner.Gui +{ + public class ConfigureSideBarDialog : BaseSharpDevelopForm + { + ArrayList oldComponents; + + public ConfigureSideBarDialog() + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.ConfigureSidebarDialog.xfrm")); + + oldComponents = ToolboxProvider.ComponentLibraryLoader.CopyCategories(); + + FillCategories(); + categoryListViewSelectedIndexChanged(this, EventArgs.Empty); + componentListViewSelectedIndexChanged(this, EventArgs.Empty); + ControlDictionary["okButton"].Click += new System.EventHandler(this.okButtonClick); + ControlDictionary["newCategoryButton"].Click += new System.EventHandler(this.newCategoryButtonClick); + ControlDictionary["renameCategoryButton"].Click += new System.EventHandler(this.renameCategoryButtonClick); + ControlDictionary["removeCategoryButton"].Click += new System.EventHandler(this.removeCategoryButtonClick); + ControlDictionary["addComponentsButton"].Click += new System.EventHandler(this.button3Click); + ControlDictionary["removeComponentsButton"].Click += new System.EventHandler(this.removeComponentsButtonClick); + + ((ListView)ControlDictionary["categoryListView"]).SelectedIndexChanged += new System.EventHandler(this.categoryListViewSelectedIndexChanged); + ((ListView)ControlDictionary["componentListView"]).SelectedIndexChanged += new System.EventHandler(this.componentListViewSelectedIndexChanged); + } + + void FillCategories() + { + ((ListView)ControlDictionary["categoryListView"]).BeginUpdate(); + ((ListView)ControlDictionary["categoryListView"]).Items.Clear(); + foreach (Category category in ToolboxProvider.ComponentLibraryLoader.Categories) { + ListViewItem newItem = new ListViewItem(category.Name); + newItem.Checked = category.IsEnabled; + newItem.Tag = category; + ((ListView)ControlDictionary["categoryListView"]).Items.Add(newItem); + } + ((ListView)ControlDictionary["categoryListView"]).EndUpdate(); + } + + void FillComponents() + { + ((ListView)ControlDictionary["componentListView"]).ItemCheck -= new System.Windows.Forms.ItemCheckEventHandler(this.componentListViewItemCheck); + ((ListView)ControlDictionary["componentListView"]).BeginUpdate(); + ((ListView)ControlDictionary["componentListView"]).Items.Clear(); + ((ListView)ControlDictionary["componentListView"]).SmallImageList = new ImageList(); + + if (((ListView)ControlDictionary["categoryListView"]).SelectedItems != null && ((ListView)ControlDictionary["categoryListView"]).SelectedItems.Count == 1) { + Category category = (Category)((ListView)ControlDictionary["categoryListView"]).SelectedItems[0].Tag; + foreach (ToolComponent component in category.ToolComponents) { + Bitmap icon = null; + string loadError = null; + try { + icon = ToolboxProvider.ComponentLibraryLoader.GetIcon(component); + } catch (Exception e) { + + icon = IconService.GetBitmap("Icons.16x16.Warning"); + loadError = e.Message; + } + if (icon != null) { + ((ListView)ControlDictionary["componentListView"]).SmallImageList.Images.Add(icon); + } + + ListViewItem newItem = new ListViewItem(component.Name); + newItem.SubItems.Add(component.Namespace); + newItem.SubItems.Add(loadError != null ? loadError :component.AssemblyName); + + newItem.Checked = component.IsEnabled; + newItem.Tag = component; + newItem.ImageIndex = ((ListView)ControlDictionary["componentListView"]).SmallImageList.Images.Count - 1; + ((ListView)ControlDictionary["componentListView"]).Items.Add(newItem); + } + } + ((ListView)ControlDictionary["componentListView"]).EndUpdate(); + ((ListView)ControlDictionary["componentListView"]).ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(this.componentListViewItemCheck); + } + + // THIS METHOD IS MAINTAINED BY THE FORM DESIGNER + // DO NOT EDIT IT MANUALLY! YOUR CHANGES ARE LIKELY TO BE LOST + void categoryListViewSelectedIndexChanged(object sender, System.EventArgs e) + { + ControlDictionary["renameCategoryButton"].Enabled = ControlDictionary["addComponentsButton"].Enabled = CurrentCategory != null; + FillComponents(); + } + + Category CurrentCategory { + get { + if (((ListView)ControlDictionary["categoryListView"]).SelectedItems != null && ((ListView)ControlDictionary["categoryListView"]).SelectedItems.Count == 1) { + return (Category)((ListView)ControlDictionary["categoryListView"]).SelectedItems[0].Tag; + } + return null; + } + } + + void button3Click(object sender, System.EventArgs e) + { + AddComponentsDialog addComponentsDialog = new AddComponentsDialog(); + if (addComponentsDialog.ShowDialog(this) == DialogResult.OK) { + foreach (ToolComponent component in addComponentsDialog.SelectedComponents) { + CurrentCategory.ToolComponents.Add(component); + } + FillComponents(); + categoryListViewSelectedIndexChanged(this, EventArgs.Empty); + componentListViewSelectedIndexChanged(this, EventArgs.Empty); + } + } + + void newCategoryButtonClick(object sender, System.EventArgs e) + { + RenameCategoryDialog renameCategoryDialog = new RenameCategoryDialog(null, this); + if (renameCategoryDialog.ShowDialog(this) == DialogResult.OK) { + ToolboxProvider.ComponentLibraryLoader.Categories.Add(new Category(renameCategoryDialog.CategoryName)); + FillCategories(); + } + } + + void removeCategoryButtonClick(object sender, System.EventArgs e) + { + + if (MessageService.AskQuestion("${res:ICSharpCode.FormDesigner.Gui.ConfigureSideBarDialog.RemoveCategoryQuestion}")) { + categoryListViewSelectedIndexChanged(this, EventArgs.Empty); + ToolboxProvider.ComponentLibraryLoader.Categories.Remove(CurrentCategory); + FillCategories(); + FillComponents(); + categoryListViewSelectedIndexChanged(this, EventArgs.Empty); + componentListViewSelectedIndexChanged(this, EventArgs.Empty); + } + } + + void componentListViewSelectedIndexChanged(object sender, System.EventArgs e) + { + ControlDictionary["removeComponentsButton"].Enabled = ((ListView)ControlDictionary["componentListView"]).SelectedItems != null && ((ListView)ControlDictionary["componentListView"]).SelectedItems.Count > 0; + } + + void removeComponentsButtonClick(object sender, System.EventArgs e) + { + + if (MessageService.AskQuestion("${res:ICSharpCode.FormDesigner.Gui.ConfigureSideBarDialog.RemoveComponentsQuestion}")) { + foreach (ListViewItem item in ((ListView)ControlDictionary["componentListView"]).SelectedItems) { + CurrentCategory.ToolComponents.Remove((ToolComponent)item.Tag); + } + FillComponents(); + componentListViewSelectedIndexChanged(this, EventArgs.Empty); + } + } + + protected override void OnClosed(System.EventArgs e) + { + base.OnClosed(e); + if (oldComponents != null) { + ToolboxProvider.ComponentLibraryLoader.Categories = oldComponents; + } + } + + void renameCategoryButtonClick(object sender, System.EventArgs e) + { + RenameCategoryDialog renameCategoryDialog = new RenameCategoryDialog(this.CurrentCategory.Name, this); + if (renameCategoryDialog.ShowDialog(this) == DialogResult.OK) { + this.CurrentCategory.Name = renameCategoryDialog.CategoryName; + FillCategories(); + } + } + + void okButtonClick(object sender, System.EventArgs e) + { + oldComponents = null; + + foreach (ListViewItem item in ((ListView)ControlDictionary["categoryListView"]).Items) { + Category category = (Category)item.Tag; + category.IsEnabled = item.Checked; + } + + ToolboxProvider.SaveToolbox(); + } + + void componentListViewItemCheck(object sender, System.Windows.Forms.ItemCheckEventArgs e) + { + ToolComponent tc = (ToolComponent)((ListView)ControlDictionary["componentListView"]).Items[e.Index].Tag; + tc.IsEnabled = !tc.IsEnabled; + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/CustomComponentsSideTab.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/CustomComponentsSideTab.cs new file mode 100644 index 0000000000..e1bb140238 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/CustomComponentsSideTab.cs @@ -0,0 +1,197 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Windows.Forms; +using System.Reflection; +using System.Collections; +using System.Drawing; +using System.Drawing.Design; +using System.ComponentModel; +using System.ComponentModel.Design; +using System.ComponentModel.Design.Serialization; + +using System.Security.Policy; +using System.Runtime.Remoting; +using System.CodeDom; +using System.CodeDom.Compiler; +using System.Threading; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Project; +using ICSharpCode.FormDesigner.Services; + +namespace ICSharpCode.FormDesigner.Gui +{ + public class CustomComponentsSideTab : SideTabDesigner + { + ArrayList projectAssemblies = new ArrayList(); + ArrayList referencedAssemblies = new ArrayList(); + + static bool loadReferencedAssemblies = true; + + ///Load an assembly's controls + public CustomComponentsSideTab(AxSideBar sideTab, string name, IToolboxService toolboxService) : base(sideTab,name, toolboxService) + { + ScanProjectAssemblies(); + ProjectService.EndBuild += new EventHandler(RescanProjectAssemblies2); + ProjectService.SolutionLoaded += new SolutionEventHandler(RescanProjectAssemblies); + } + + public static bool LoadReferencedAssemblies { + get { + return loadReferencedAssemblies; + } + set { + loadReferencedAssemblies = value; + } + } + + string loadingPath = String.Empty; + + byte[] GetBytes(string fileName) + { + FileStream fs = File.OpenRead(fileName); + long size = fs.Length; + byte[] outArray = new byte[size]; + fs.Read(outArray, 0, (int)size); + fs.Close(); + return outArray; + } + + Assembly MyResolveEventHandler(object sender, ResolveEventArgs args) + { + string file = args.Name; + int idx = file.IndexOf(','); + if (idx >= 0) { + file = file.Substring(0, idx); + } + try { + if (File.Exists(loadingPath + file + ".exe")) { + return Assembly.Load(GetBytes(loadingPath + file + ".exe")); + } + if (File.Exists(loadingPath + file + ".dll")) { + return Assembly.Load(GetBytes(loadingPath + file + ".dll")); + } + } catch (Exception ex) { + Console.WriteLine("Can't load assembly : " + ex.ToString()); + } + return null; + } + +// public void ReloadProjectAssemblies(object sender, EventArgs e) +// { +// ScanProjectAssemblies(); +// AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler); +// try { +// Items.Clear(); +// AddDefaultItem(); +// foreach (string assemblyName in projectAssemblies) { +// if ((assemblyName.EndsWith("exe") || assemblyName.EndsWith("dll")) && File.Exists(assemblyName)) { +// loadingPath = Path.GetDirectoryName(assemblyName) + Path.DirectorySeparatorChar; +// try { +// if (loadReferencedAssemblies == true) { +// Assembly asm = Assembly.Load(Path.GetFileNameWithoutExtension(assemblyName)); +// BuildToolboxFromAssembly(asm); +// } +// } catch (Exception ex) { +// Console.WriteLine("Error loading Assembly " + assemblyName + " : " + ex.ToString()); +// } +// } +// } +// foreach (Assembly refAsm in referencedAssemblies) { +// try { +// BuildToolboxFromAssembly(refAsm); +// } catch (Exception ex) { +// Console.WriteLine("Error loading referenced Assembly " + refAsm + " : " + ex.ToString()); +// } +// } +// } catch (Exception ex) { +// Console.WriteLine("GOT EXCEPTION : " + ex.ToString()); +// } finally { +// AppDomain.CurrentDomain.AssemblyResolve -= new ResolveEventHandler(MyResolveEventHandler); +// } +// +// foreach (IViewContent content in WorkbenchSingleton.Workbench.ViewContentCollection) { +// FormDesignerDisplayBindingBase formDesigner = content.WorkbenchWindow.ActiveViewContent as FormDesignerDisplayBindingBase; +// if (formDesigner != null) { +// formDesigner.Control.Invoke(new ThreadStart(formDesigner.ReloadAndSelect), null); +// } +// } +// } + + Assembly LoadAssemblyFile(string assemblyName, bool nonLocking) + { + assemblyName = assemblyName.ToLower(); + if ((assemblyName.EndsWith("exe") || assemblyName.EndsWith("dll")) && File.Exists(assemblyName)) { + Assembly asm = nonLocking ? Assembly.Load(GetBytes(assemblyName)) : Assembly.LoadFrom(assemblyName); //Assembly.LoadFrom(assemblyName); + if (asm != null) { + BuildToolboxFromAssembly(asm); + } + return asm; + } + return null; + } + + void ScanProjectAssemblies() + { + projectAssemblies.Clear(); + referencedAssemblies.Clear(); + + AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler); + try { + + // custom user controls don't need custom images + loadImages = false; + ITypeResolutionService typeResolutionService = ToolboxProvider.TypeResolutionService; + if (ProjectService.OpenSolution != null) { + foreach (IProject project in ProjectService.OpenSolution.Projects) { + string assemblyName = project.OutputAssemblyFullPath; + projectAssemblies.Add(assemblyName); + loadingPath = Path.GetDirectoryName(assemblyName) + Path.DirectorySeparatorChar; + + LoadAssemblyFile(assemblyName, true); + if (loadReferencedAssemblies == true) { +// TODO: project system... +// foreach (ProjectReference reference in projectEntry.Project.ProjectReferences) { +// if (reference.ReferenceType != ReferenceType.Gac && reference.ReferenceType != ReferenceType.Project) { +// assemblyName = reference.GetReferencedFileName(projectEntry.Project); +// loadingPath = Path.GetDirectoryName(assemblyName) + Path.DirectorySeparatorChar; +// Assembly asm = LoadAssemblyFile(assemblyName, true); +// if (asm != null) { +// referencedAssemblies.Add(asm); +// } +// } +// } + } + } + } + } catch (Exception e) { + Console.WriteLine("Exception : " + e); + } finally { + AppDomain.CurrentDomain.AssemblyResolve -= new ResolveEventHandler(MyResolveEventHandler); + } + } + + void RescanProjectAssemblies2(object sender, EventArgs e) + { + RescanProjectAssemblies(sender, null); + } + + void RescanProjectAssemblies(object sender, SolutionEventArgs e) + { + projectAssemblies.Clear(); + referencedAssemblies.Clear(); + Items.Clear(); + AddDefaultItem(); + ScanProjectAssemblies(); + SharpDevelopSideBar.SideBar.Refresh(); + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/ICSharpCode.SharpDevelop.FormDesigner.Gui.AssemblyList.resources b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/ICSharpCode.SharpDevelop.FormDesigner.Gui.AssemblyList.resources new file mode 100644 index 0000000000000000000000000000000000000000..4e892e645f74a7d45a9b16ff50c89dee3f7790c7 GIT binary patch literal 188 zcmX?i>is@O1_p+CK&%;DSzMBus~417oL^d$oLUTL1*ImYq!#HYycEh^5;&$BhuGte_OHZagL&{1$M%_%7@O0~^PEiEZZ%+XN@ rC{4=AO!iK#49U+<&9hB1H%~N8HZ?P}G&V^!u&@NV5(WYs_W+py1_C`D literal 0 HcmV?d00001 diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/ICSharpCode.SharpDevelop.Gui.Dialogs.OptionPanels.ControlLibrariesPanel.resources b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/ICSharpCode.SharpDevelop.Gui.Dialogs.OptionPanels.ControlLibrariesPanel.resources new file mode 100644 index 0000000000000000000000000000000000000000..4e892e645f74a7d45a9b16ff50c89dee3f7790c7 GIT binary patch literal 188 zcmX?i>is@O1_p+CK&%;DSzMBus~417oL^d$oLUTL1*ImYq!#HYycEh^5;&$BhuGte_OHZagL&{1$M%_%7@O0~^PEiEZZ%+XN@ rC{4=AO!iK#49U+<&9hB1H%~N8HZ?P}G&V^!u&@NV5(WYs_W+py1_C`D literal 0 HcmV?d00001 diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/OptionPanels/GridOptions.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/OptionPanels/GridOptions.cs new file mode 100644 index 0000000000..d794058539 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/OptionPanels/GridOptions.cs @@ -0,0 +1,63 @@ +// +// +// +// +// +// +using System; +using System.IO; +using System.Collections; +using System.ComponentModel; +using System.Drawing; +using System.Windows.Forms; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Project; +using ICSharpCode.SharpDevelop.Gui; + + +namespace ICSharpCode.FormDesigner.Gui.OptionPanels +{ + public class GridOptionsPanel : AbstractOptionPanel + { + public override void LoadPanelContents() + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.WindowsFormsGridOptions.xfrm")); + + ControlDictionary["widthTextBox"].Text = PropertyService.Get("FormsDesigner.DesignerOptions.GridSizeWidth", 8).ToString(); + ControlDictionary["heightTextBox"].Text = PropertyService.Get("FormsDesigner.DesignerOptions.GridSizeHeight", 8).ToString(); + ((CheckBox)ControlDictionary["showGridCheckBox"]).Checked = PropertyService.Get("FormsDesigner.DesignerOptions.ShowGrid", true); + ((CheckBox)ControlDictionary["snapToGridCheckBox"]).Checked = PropertyService.Get("FormsDesigner.DesignerOptions.SnapToGrid", true); + ((CheckBox)ControlDictionary["sortAlphabeticalCheckBox"]).Checked = PropertyService.Get("FormsDesigner.DesignerOptions.PropertyGridSortAlphabetical", false); + } + + public override bool StorePanelContents() + { + int width = 0; + try { + width = Int32.Parse(ControlDictionary["widthTextBox"].Text); + } catch (Exception e) { + Console.WriteLine(e); + MessageService.ShowError("Forms Designer grid with is invalid"); + return false; + } + + int height = 0; + try { + height = Int32.Parse(ControlDictionary["heightTextBox"].Text); + } catch (Exception e) { + Console.WriteLine(e); + MessageService.ShowError("Forms Designer height with is invalid"); + return false; + } + + PropertyService.Set("FormsDesigner.DesignerOptions.GridSizeWidth", width); + PropertyService.Set("FormsDesigner.DesignerOptions.GridSizeHeight", height); + PropertyService.Set("FormsDesigner.DesignerOptions.ShowGrid", ((CheckBox)ControlDictionary["showGridCheckBox"]).Checked); + PropertyService.Set("FormsDesigner.DesignerOptions.SnapToGrid", ((CheckBox)ControlDictionary["snapToGridCheckBox"]).Checked); + PropertyService.Set("FormsDesigner.DesignerOptions.PropertyGridSortAlphabetical", ((CheckBox)ControlDictionary["sortAlphabeticalCheckBox"]).Checked); + + return true; + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/RenameCategoryDialog.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/RenameCategoryDialog.cs new file mode 100644 index 0000000000..c70feaca03 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/RenameCategoryDialog.cs @@ -0,0 +1,77 @@ +// created on 08.08.2003 at 13:02 +using System; +using System.Windows.Forms; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui.XmlForms; + +namespace ICSharpCode.FormDesigner.Gui +{ + public class RenameCategoryDialog : BaseSharpDevelopForm + { + string categoryName = String.Empty; + + public string CategoryName { + get { + return categoryName; + } + } + + public RenameCategoryDialog(string categoryName, Form owner) + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.RenameSidebarCategoryDialog.xfrm")); + + this.Owner = owner; + + + if (categoryName == null) { + ControlDictionary["categoryNameTextBox"].Text = "New Category"; + Text = StringParser.Parse("${res:ICSharpCode.FormDesigner.Gui.RenameCategoryDialog.NewCategoryDialogName}"); + } else { + this.categoryName = categoryName; + ControlDictionary["categoryNameTextBox"].Text = categoryName; + Text = StringParser.Parse("${res:ICSharpCode.FormDesigner.Gui.RenameCategoryDialog.RenameCategoryDialogName}"); + } + ControlDictionary["okButton"].Click += new EventHandler(okButtonClick); + } + + protected override void SetupXmlLoader() + { + xmlLoader.StringValueFilter = new SharpDevelopStringValueFilter(); + xmlLoader.PropertyValueCreator = new SharpDevelopPropertyValueCreator(); + xmlLoader.ObjectCreator = new SharpDevelopObjectCreator(); + } + + void ShowDuplicateErrorMessage() + { + + MessageService.ShowError("${res:ICSharpCode.FormDesigner.Gui.RenameCategoryDialog.DuplicateNameError}"); + } + + // THIS METHOD IS MAINTAINED BY THE FORM DESIGNER + // DO NOT EDIT IT MANUALLY! YOUR CHANGES ARE LIKELY TO BE LOST + void okButtonClick(object sender, System.EventArgs e) + { + if (categoryName != ControlDictionary["categoryNameTextBox"].Text) { + foreach (Category cat in ToolboxProvider.ComponentLibraryLoader.Categories) { + if (cat.Name == ControlDictionary["categoryNameTextBox"].Text) { + ShowDuplicateErrorMessage(); + return; + } + } + + foreach (AxSideTab tab in SharpDevelopSideBar.SideBar.Tabs) { + if (!(tab is SideTabDesigner) && !(tab is CustomComponentsSideTab)) { + if (tab.Name == ControlDictionary["categoryNameTextBox"].Text) { + ShowDuplicateErrorMessage(); + return; + } + } + } + + categoryName = ControlDictionary["categoryNameTextBox"].Text; + } + DialogResult = System.Windows.Forms.DialogResult.OK; + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/ShowTabOrder/ITabOrder.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/ShowTabOrder/ITabOrder.cs new file mode 100644 index 0000000000..134e0e2dfb --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/ShowTabOrder/ITabOrder.cs @@ -0,0 +1,44 @@ +// +// +// +// +// +// + +using System; +using System.Drawing; + +namespace ICSharpCode.FormDesigner +{ + /// + /// Interface defining the tab order mode.ning the tab order mode. + /// + public interface ITabOrder + { + /// + /// Checks if tab order mode is active + /// + bool IsTabOrderMode { get; } + + /// + /// Sets the next tab index if over a control. + /// + void SetNextTabIndex(Point p); + + /// + /// Sets the previous tab index if over a control. + /// + void SetPrevTabIndex(Point p); + + /// + /// Show tab order. + /// + void ShowTabOrder(); + + /// + /// Show tab order. + /// + void HideTabOrder(); + + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/ShowTabOrder/TabIndexControl.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/ShowTabOrder/TabIndexControl.cs new file mode 100644 index 0000000000..589f033be9 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/ShowTabOrder/TabIndexControl.cs @@ -0,0 +1,102 @@ +// +// +// +// +// +// + +using System; +using System.Diagnostics; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Collections; +using System.ComponentModel; +using System.ComponentModel.Design; +using System.Windows.Forms; +using System.Windows.Forms.Design; +using ICSharpCode.FormDesigner.Services; + +namespace ICSharpCode.FormDesigner +{ + /// + /// This class represents a visual feedback for the current tab index of a + /// form control. + /// + public class TabIndexControl : Control + { + static Color BACKCOLOR2 = Color.DarkViolet; // background color when changed + static Color BACKCOLOR = Color.DarkBlue; // normal background color + static Color TEXTCOLOR = Color.White; // text color + static Font TEXTFONT = new Font("Tahoma",8); // font for the tab index number text + static Size DEFSIZE = new Size(20, 20); // default (also minimum) size of the control + + protected Control associatedControl; // Associated form control + protected bool hasChanged = false; // indicates if tab index has changed. + + /// + /// Gets or sets that the tab index contro has changed the index + /// + public bool HasChanged { + get { + return hasChanged; + } + set { + hasChanged = value; + } + } + + public Control AssociatedControl { + get { + return associatedControl; + } + } + + /// + /// Creates a tab index control. + /// + public TabIndexControl(Control c) + { + associatedControl = c; + this.Size = DEFSIZE; + this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true); + c.LocationChanged += new EventHandler(SetLocation); + c.TabIndexChanged += new EventHandler(RepaintOnTabIndexChange); + SetLocation(this, EventArgs.Empty); + } + + void RepaintOnTabIndexChange(object sender, EventArgs e) + { + HasChanged = true; + Refresh(); + } + + void SetLocation(object sender, EventArgs e) + { + this.Left = associatedControl.Left; + this.Top = associatedControl.Top; + } + + /// + /// Drawing code to draw the tab index number above the associated control. + /// + protected override void OnPaint(PaintEventArgs pe) + { + Graphics g = pe.Graphics; + + string tabIndexAsString = associatedControl.TabIndex.ToString(); + Size sz = Size.Round(g.MeasureString( tabIndexAsString,TEXTFONT)); + + this.Width = (sz.Width < DEFSIZE.Width )? DEFSIZE.Width : sz.Width; + this.Height = DEFSIZE.Height; + Rectangle r = new Rectangle(0,0,this.Width,this.Height); + + Color bkColor = ( hasChanged )? BACKCOLOR2 : BACKCOLOR; + g.FillRectangle(new SolidBrush(bkColor),r); + + StringFormat sf = new StringFormat(); + sf.Alignment = StringAlignment.Center; + sf.LineAlignment = StringAlignment.Center; + g.DrawString(tabIndexAsString, TEXTFONT, new SolidBrush(TEXTCOLOR), r, sf); + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/SideTabDesigner.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/SideTabDesigner.cs new file mode 100644 index 0000000000..67a8a5b847 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/SideTabDesigner.cs @@ -0,0 +1,195 @@ +/* + * Module : FormDesigner + * + * Project : FormDesigner Loading Library Control. + * + * Source code altering : A1 + * + * Description : Creation of the SideTabDesigner which load controls from an assembly + * Use for FromDesigner. + * + * Denis ERCHOFF 22/01/2003 + */ + + +// Denis ERCHOFF 22/01/2003 BEGIN A1 + +using System; +using System.IO; +using System.Windows.Forms; +using System.Reflection; +using System.Collections; +using System.Drawing; +using System.Drawing.Design; +using System.ComponentModel; +using System.ComponentModel.Design; + +using ICSharpCode.Core; +using ICSharpCode.FormDesigner.Services; +using ICSharpCode.SharpDevelop.Gui; + +namespace ICSharpCode.FormDesigner.Gui +{ + public class SideTabDesigner : AxSideTab + { + protected bool loadImages = true; + IToolboxService toolboxService; + + public void CreatedUserControl() + { + InitializeComponents(); + } + + void InitializeComponents() + { + } + + protected SideTabDesigner(AxSideBar sideBar, string name, IToolboxService toolboxService) : base(sideBar, name) + { + this.toolboxService = toolboxService; + this.CanSaved = false; + + AddDefaultItem(); + } + + protected void AddDefaultItem() + { + this.Items.Add(new SideTabItemDesigner()); + //Event the user click on an another "control" itemin the current tab + this.ChoosedItemChanged += new EventHandler(SelectedTabItemChanged); + } + + ///Load an assembly's controls + public SideTabDesigner(AxSideBar sideBar, Category category, IToolboxService toolboxService) : this(sideBar, category.Name, toolboxService) + { + foreach (ToolComponent component in category.ToolComponents) { + if (component.IsEnabled) { + ToolboxItem toolboxItem = new ToolboxItem(); + toolboxItem.TypeName = component.FullName; + toolboxItem.Bitmap = ToolboxProvider.ComponentLibraryLoader.GetIcon(component); + toolboxItem.DisplayName = component.Name; + Assembly asm = component.LoadAssembly(); + toolboxItem.AssemblyName = asm.GetName(); + + this.Items.Add(new SideTabItemDesigner(toolboxItem)); + } + } + } + + protected void LoadAssembly(string assemblyName) + { + Assembly assembly = FindAssembly(assemblyName); + if (assembly == null) { + assembly = Assembly.Load(assemblyName); + } + + if (assembly != null) { + BuildToolboxFromAssembly(assembly); + } + } + + protected void BuildToolboxFromAssembly(Assembly assembly) + { + ArrayList toolboxItems = GetToolboxItemsFromAssembly(assembly); + foreach (ToolboxItem toolboxItem in toolboxItems) { + //adding the toolboxitem into the tab with his bitmap and caption + //loaded from the assembly + this.Items.Add(new SideTabItemDesigner(toolboxItem)); + } + } + + + protected Assembly FindAssembly(string assemblyName) + { + foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies()) { + if (assembly.GetName().Name == assemblyName) { + return assembly; + } + } + return null; + } + + protected ArrayList GetToolboxItemsFromAssembly(Assembly assembly) + { + ArrayList toolBoxItems = new ArrayList(); + + Hashtable images = new Hashtable(); + ImageList il = new ImageList(); + // try to load res icon + string[] imgNames = assembly.GetManifestResourceNames(); + + foreach (string im in imgNames) { + try { + Stream stream = assembly.GetManifestResourceStream(im); + if (stream != null) { + Bitmap b = new Bitmap(Image.FromStream(stream)); + b.MakeTransparent(); + images[im] = il.Images.Count; + il.Images.Add(b); + stream.Close(); + } + } catch (Exception e) { + Console.WriteLine(e); + } + } + Module[] ms = assembly.GetModules(false); + foreach (Module m in ms) { + + Type[] ts = m.GetTypes(); + foreach (Type t in ts) { + if (t.IsPublic && !t.IsAbstract) { + if (t.IsDefined(typeof(ToolboxItemFilterAttribute), true) || t.IsDefined(typeof(ToolboxItemAttribute), true) || t.IsDefined(typeof(DesignTimeVisibleAttribute), true) || typeof(System.ComponentModel.IComponent).IsAssignableFrom(t)) { + + object[] filterAttrs = t.GetCustomAttributes(typeof(DesignTimeVisibleAttribute), true); + foreach (DesignTimeVisibleAttribute visibleAttr in filterAttrs) { + if (!visibleAttr.Visible) { + goto skip; + } + } + string imageName = String.Concat(t.FullName, ".bmp"); + if (images[imageName] == null) { + object[] attributes = t.GetCustomAttributes(false); + if (t.IsDefined(typeof(ToolboxBitmapAttribute), false)) { + foreach (object attr in attributes) { + if (attr is ToolboxBitmapAttribute) { + ToolboxBitmapAttribute toolboxBitmapAttribute = (ToolboxBitmapAttribute)attr; + Bitmap b = new Bitmap(toolboxBitmapAttribute.GetImage(t)); + b.MakeTransparent(); + il.Images.Add(b); + images[imageName] =b; + break; + } + } + } + } + + ToolboxItem item = new ToolboxItem(t); + + if (images[imageName] != null) { + try { + item.Bitmap = (Bitmap)images[imageName]; + } catch (Exception ex) { + Console.WriteLine("Exception converting bitmap : " + images[imageName] + " : " + ex.ToString()); + } + } + toolBoxItems.Add(item); + + skip:; + } + } + } + } + return toolBoxItems; + } + + void SelectedTabItemChanged(object sender, EventArgs e) + { + AxSideTabItem item = (sender as AxSideTab).ChoosedItem; + if (item == null) { + toolboxService.SetSelectedToolboxItem(null); + } else { + toolboxService.SetSelectedToolboxItem(item.Tag as ToolboxItem); + } + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/SideTabItemDesigner.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/SideTabItemDesigner.cs new file mode 100644 index 0000000000..865ef7ce02 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Gui/SideTabItemDesigner.cs @@ -0,0 +1,78 @@ +/* + * Module : FormDesigner + * + * Project : FormDesigner Loading Library Control. + * + * Source code altering : A1 + * + * Description : création of the Tab item displayed into the AXSideTabDesigner control. + * the control's creator initialize the toolboxitem of the tab item + * + * Denis ERCHOFF 22/01/2003 + */ + + +// Denis ERCHOFF 22/01/2003 BEGIN A1 + +using System; +using System.Windows.Forms; +using System.Drawing.Design; +using System.Drawing; +using System.ComponentModel.Design; + +using ICSharpCode.Core; +using ICSharpCode.FormDesigner.Services; +using ICSharpCode.SharpDevelop.Gui; + +namespace ICSharpCode.FormDesigner.Gui +{ + public class SideTabItemDesigner : SharpDevelopSideTabItem + { + + public void CreatedUserControl() + { + InitializeComponents(); + } + + void InitializeComponents() + { + } + + ///create a tabitem from a toolboxitem. It init Icon and name from the tag + public SideTabItemDesigner(ToolboxItem tag) : base(tag.DisplayName, tag) + { + this.Icon = tag.Bitmap; + ReloadToolBox(); + } + + ///create a tabitem from a toolboxitem. It init Icon from the tag + public SideTabItemDesigner(string name, ToolboxItem tag) : base(name, tag) + { + this.Icon = tag.Bitmap; + ReloadToolBox(); + } + + ///create a default tabitem : a pointer icon with an empty toolboxitem + public SideTabItemDesigner() : base("Pointer") + { + + + + Bitmap pointerBitmap = new Bitmap(IconService.GetBitmap("Icons.16x16.FormsDesigner.PointerIcon"), 16, 16); +// ToolboxItem toolboxItemPointer = new ToolboxItem(); +// toolboxItemPointer.Bitmap = pointerBitmap; +// toolboxItemPointer.DisplayName = "Pointer"; + this.Icon = pointerBitmap; + this.Tag = null; //toolboxItemPointer; + ReloadToolBox(); + } + + ///it force to reload toolboxitem into the ToolboxService when the hostchange + public void ReloadToolBox() + { + if (this.Name != "Pointer") { + ToolboxProvider.ToolboxService.AddToolboxItem(this.Tag as ToolboxItem); + } + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/AbstractMenuEditorControl.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/AbstractMenuEditorControl.cs new file mode 100644 index 0000000000..a2336da6c2 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/AbstractMenuEditorControl.cs @@ -0,0 +1,641 @@ +//// +//// +//// +//// +//// +//// +// +//using System; +//using System.Diagnostics; +//using System.Drawing; +//using System.Drawing.Drawing2D; +//using System.Collections; +//using System.ComponentModel; +//using System.ComponentModel.Design; +//using System.Windows.Forms; +//using System.Windows.Forms.Design; +//using ICSharpCode.FormDesigner.Services; +// +//using System.Drawing.Design; +// +//namespace ICSharpCode.FormDesigner { +// +// public enum ItemSelection { +// Last, +// First, +// Next, +// Prev +// } +// +// public abstract class AbstractMenuEditorControl : Panel +// { +// protected Menu menu; +// protected SizeF[] menuItemSize; +// protected RectangleF[] menuItemAreas; +// +// protected RectangleF typeArea; +// protected SizeF typeSize; +// protected string typeAreaText = "Type here"; +// +// protected IDesignerHost host; +// protected ItemEditor itemEditor = null; +// +// protected Control rootControl; +// protected SubMenuEditorControl subMenuEditor = null; +// +// protected int oldSelectedItem = -1; +// protected int selectedItem = -1; +// protected int mouseOverItem = -1; +// protected bool isMouseOverLeftSpacing = false; +// +// protected bool isHorizontal = true; +// protected bool canEditMenuItems = true; +// protected bool drawMenuGlyphs = false; +// protected Size borderSize = new Size(0, 0); +// +// public static bool MenuEditorFocused = false; +// public bool iveTheFocus; +// +// public int SelectedItem { +// get { +// return this.selectedItem; +// } +// set { +// this.oldSelectedItem = selectedItem; +// if (selectedItem != value) { +// selectedItem = value; +// Refresh(); +// } +// ISelectionService selectionService = (ISelectionService)host.GetService(typeof(ISelectionService)); +// if (menu != null && selectedItem >= 0 && selectedItem < menu.MenuItems.Count) { +// selectionService.SetSelectedComponents(new object[] { menu.MenuItems[selectedItem] }); +// } else { +// selectionService.SetSelectedComponents(null); +// } +// } +// } +// +// protected override void OnGotFocus(EventArgs e) +// { +// base.OnGotFocus(e); +// MenuEditorFocused = true; +// iveTheFocus = true; +// Refresh(); +// } +// +// protected override void OnLostFocus(EventArgs e) +// { +// base.OnLostFocus(e); +// iveTheFocus = false; +//// SelectedItem = -1; +// Refresh(); +// } +// +// protected override Size DefaultSize { +// get { +// return new Size(320, System.Windows.Forms.SystemInformation.MenuHeight + 2); +// } +// } +// +// protected AbstractMenuEditorControl(IDesignerHost host, Menu menu) +// { +// this.host = host; +// this.menu = menu; +// rootControl = (Control)host.RootComponent; +// rootControl.Resize += new EventHandler(SetSize); +// SetSize(null, null); +// this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true); +// } +// +// public virtual void SetSize(object sender, EventArgs e) +// { +// int boundsLeftRightOffset = 0; +// int boundsTopOffset = 0; +// +// if (rootControl is Form) { +// Form f = (Form)rootControl; +// switch (f.FormBorderStyle) { +// case FormBorderStyle.Fixed3D: +// boundsLeftRightOffset = SystemInformation.Border3DSize.Width + SystemInformation.FixedFrameBorderSize.Width; +// break; +// +// case FormBorderStyle.FixedDialog: +// case FormBorderStyle.FixedSingle: +// case FormBorderStyle.FixedToolWindow: +// boundsLeftRightOffset = SystemInformation.FixedFrameBorderSize.Width; +// break; +// +// case FormBorderStyle.Sizable: +// case FormBorderStyle.SizableToolWindow: +// boundsLeftRightOffset = SystemInformation.FrameBorderSize.Width; +// break; +// } +// +// switch (f.FormBorderStyle) { +// case FormBorderStyle.Fixed3D: +// case FormBorderStyle.FixedDialog: +// case FormBorderStyle.FixedSingle: +// boundsTopOffset = SystemInformation.FixedFrameBorderSize.Height + SystemInformation.CaptionHeight; +// break; +// +// case FormBorderStyle.Sizable: +// boundsTopOffset = SystemInformation.FrameBorderSize.Height + SystemInformation.CaptionHeight; +// break; +// +// case FormBorderStyle.SizableToolWindow: +// boundsTopOffset = SystemInformation.FrameBorderSize.Height + SystemInformation.ToolWindowCaptionHeight; +// break; +// case FormBorderStyle.FixedToolWindow: +// boundsTopOffset = SystemInformation.FixedFrameBorderSize.Height + SystemInformation.ToolWindowCaptionHeight; +// break; +// } +// } +// +// SetBounds(rootControl.Bounds.Left + boundsLeftRightOffset, +// rootControl.Bounds.Top + boundsTopOffset, +// rootControl.Bounds.Width - boundsLeftRightOffset * 2, +// System.Windows.Forms.SystemInformation.MenuHeight + 2); +// Show(); +// } +// +// protected override void OnPaintBackground(System.Windows.Forms.PaintEventArgs pevent) +// { +// Graphics g = pevent.Graphics; +// g.FillRectangle(new SolidBrush(SystemColors.Menu), +// pevent.ClipRectangle.X, +// pevent.ClipRectangle.Y, +// pevent.ClipRectangle.Width, +// pevent.ClipRectangle.Height); +// } +// +// int GetLeftSpacing() +// { +// return drawMenuGlyphs ? SystemInformation.MenuHeight : 0; +// } +// int GetRightSpacing() +// { +// return drawMenuGlyphs ? SystemInformation.MenuHeight : 0; +// } +// int GetLeftRightSpacing() +// { +// return GetLeftSpacing() + GetRightSpacing(); +// } +// +// protected virtual void MeasureMenuItems() +// { +// Graphics g = null; +// try { +// g = base.CreateGraphics(); +// } catch (Exception e) { +// Console.WriteLine("Got exception : " + e.ToString()); +// return; +// } +// +// Font f = System.Windows.Forms.SystemInformation.MenuFont; +// +// menuItemAreas = new RectangleF[menu.MenuItems.Count]; +// +// float curX = 0; +// float curY = 0; +// float maxWidth = 0; +// menuItemSize = new SizeF[menu.MenuItems.Count]; +// for (int i = 0; i < menu.MenuItems.Count; ++i) { +// menuItemSize[i] = g.MeasureString(menu.MenuItems[i].Text + "min", f); +// menuItemSize[i].Height += 2; +// maxWidth = Math.Max(maxWidth, menuItemSize[i].Width + GetLeftRightSpacing()); +// } +// +// typeSize = g.MeasureString(typeAreaText, f); +// typeSize.Height += 2; +// maxWidth = Math.Max(maxWidth, typeSize.Width + GetLeftRightSpacing()); +// +// for (int i = 0; i < menu.MenuItems.Count; ++i) { +// menuItemAreas[i] = new RectangleF(curX + this.borderSize.Width, +// curY + this.borderSize.Height, +// isHorizontal ? menuItemSize[i].Width : maxWidth, +// SystemInformation.MenuHeight); +// +// if (this.isHorizontal) { +// curX += menuItemAreas[i].Width + 4; +// } else { +// curY += menuItemAreas[i].Height; +// } +// } +// +// typeArea = new RectangleF(curX + this.borderSize.Width, +// curY + this.borderSize.Height, +// isHorizontal ? typeSize.Width : maxWidth, +// SystemInformation.MenuHeight); +// +// g.Dispose(); +// } +// +// protected void DrawTypeHere(Graphics g, bool isSelected, bool isMouseOver) +// { +// int yOffset = (int)((typeArea.Height - typeSize.Height) / 2); +// +// if (isSelected && iveTheFocus) { +// DrawSelcectionRectangle(g, typeArea, isMouseOver, false, true); +// } else { +// g.FillRectangle(new SolidBrush(Color.White), +// (int)typeArea.X + 2, +// (int)typeArea.Y + yOffset, +// (int)typeArea.Width - 4, +// (int)typeSize.Height); +// +// g.DrawRectangle(new Pen(Color.Gray), +// (int)typeArea.X + 2, +// (int)typeArea.Y + yOffset, +// (int)typeArea.Width - 4, +// (int)typeSize.Height); +// } +// +// +// g.DrawString(typeAreaText, +// SystemInformation.MenuFont, +// SystemBrushes.InactiveBorder, +// (int)typeArea.X + this.GetLeftSpacing(), +// (int)typeArea.Y + yOffset); +// } +// +// protected void DrawSelcectionRectangle(Graphics g, RectangleF drawArea, bool isMouseOver, bool mouseOverLeft, bool alwaysSelectAll) +// { +// g.FillRectangle(SystemBrushes.Highlight, +// (int)drawArea.X + 2, +// (int)drawArea.Y + 2, +// (int)drawArea.Width - 3, +// (int)drawArea.Height - 3); +// +// if (isMouseOver) { +// if (mouseOverLeft) { +// g.DrawRectangle(new Pen(Color.White), +// (int)drawArea.X + 2, +// (int)drawArea.Y + 2, +// (int)this.GetLeftSpacing() - 3, +// (int)drawArea.Height - 3); +// } else { +// if (this.drawMenuGlyphs && !alwaysSelectAll) { +// g.DrawRectangle(new Pen(Color.White), +// (int)drawArea.X + this.GetLeftSpacing(), +// (int)drawArea.Y + 2, +// (int)drawArea.Width - 1 - this.GetLeftSpacing() - 1, +// (int)drawArea.Height - 3); +// } else { +// g.DrawRectangle(new Pen(Color.White), +// (int)drawArea.X + 2, +// (int)drawArea.Y + 2, +// (int)drawArea.Width - 3, +// (int)drawArea.Height - 3); +// } +// } +// } +// +// g.DrawRectangle(new Pen(new HatchBrush(HatchStyle.Percent50, SystemColors.Highlight, SystemColors.Menu)), +// (int)drawArea.X, +// (int)drawArea.Y, +// (int)drawArea.Width, +// (int)drawArea.Height); +// } +// +// protected void DrawItem(Graphics g, int i, bool isSelected, bool isMouseOver) +// { +// Brush drawBrush = SystemBrushes.ControlText; +// if (isSelected && iveTheFocus) { +// DrawSelcectionRectangle(g, menuItemAreas[i], isMouseOver, isMouseOverLeftSpacing, menu.MenuItems[i].MenuItems.Count > 0); +// drawBrush = SystemBrushes.HighlightText; +// } +// +// int yOffset = (int)((menuItemAreas[i].Height - menuItemSize[i].Height) / 2); +// g.DrawString(menu.MenuItems[i].Text, +// SystemInformation.MenuFont, +// drawBrush, +// (int)menuItemAreas[i].X + this.GetLeftSpacing(), +// (int)menuItemAreas[i].Y + yOffset + 1); +// +// if (drawMenuGlyphs) { +// int r = SystemInformation.MenuHeight; +// if (menu.MenuItems[i].Checked) { +// ControlPaint.DrawMenuGlyph(g, (int)menuItemAreas[i].X, +// (int)menuItemAreas[i].Y, +// r, r, MenuGlyph.Checkmark); +// } +// if (menu.MenuItems[i].MenuItems.Count > 0) { +// ControlPaint.DrawMenuGlyph(g, (int)(menuItemAreas[i].Right - r), +// (int)(menuItemAreas[i].Y), +// r, r, MenuGlyph.Arrow); +// } +// } +// } +// +// protected override void OnPaint(PaintEventArgs pe) +// { +// Graphics g = pe.Graphics; +// Font f = System.Windows.Forms.SystemInformation.MenuFont; +// +// MeasureMenuItems(); +// +// for (int i = 0; i < menu.MenuItems.Count; ++i) { +// DrawItem(g, i, this.selectedItem == i, i == mouseOverItem); +// } +// +// if (MenuEditorFocused) { +// DrawTypeHere(g, this.selectedItem == menu.MenuItems.Count, mouseOverItem == menu.MenuItems.Count); +// ShowSubMenuEditor(); +// } +// } +// +// public void CloseSubMenuEditor() +// { +// if (this.subMenuEditor != null) { +// try { +// subMenuEditor.Parent.Controls.Remove(subMenuEditor); +// } catch (Exception e) { +// Console.WriteLine(e); +// } +// subMenuEditor.Parent = null; +// try { +// this.subMenuEditor.Dispose(); +// this.subMenuEditor = null; +// } catch (Exception e) { +// Console.WriteLine(e); +// } +// } +// } +// +// protected override void Dispose(bool disposing) +// { +// base.Dispose(disposing); +// CloseSubMenuEditor(); +// } +// +// protected virtual void ShowSubMenuEditor() +// { +// if (this.selectedItem >= 0 && this.selectedItem < menu.MenuItems.Count) { +// if (menu.MenuItems[this.selectedItem].Checked) { +// CloseSubMenuEditor(); +// } else { +// if (subMenuEditor == null || subMenuEditor.menu != menu.MenuItems[this.selectedItem]) { +// SubMenuEditorControl panel = new SubMenuEditorControl(host, this, menu.MenuItems[this.selectedItem]); +// panel.Location = GetSubmenuLocation(this.selectedItem); +// rootControl.Parent.Controls.Add(panel); +// panel.BringToFront(); +// if (this.subMenuEditor != null) { +// CloseSubMenuEditor(); +// } +// this.subMenuEditor = panel; +// } +// } +// } else if (this.selectedItem == menu.MenuItems.Count) { +// CloseSubMenuEditor(); +// } +// } +// +// protected virtual Point GetSubmenuLocation(int menuIndex) +// { +// // implementation for a top leven menu +// RectangleF r; +// if (menuItemAreas == null || menuIndex >= menu.MenuItems.Count || menuIndex < 0) { +// r = typeArea; +// } else { +// r = menuItemAreas[menuIndex]; +// } +// +// return new Point((int)(Left + r.X), +// (int)(Top + SystemInformation.MenuHeight)); +// } +// +// int GetItemIndex(int x, int y) +// { +// if (menuItemAreas != null) { +// for (int i = 0; i < menuItemAreas.Length; ++i) { +// if (menuItemAreas[i].Contains(x, y)) { +// return i; +// } +// } +// } +// return -1; +// } +// +// protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e) +// { +// int itemIndex = GetItemIndex(e.X, e.Y); +// AbstractMenuEditorControl.MenuEditorFocused = true; +// +// Select(); +// if (itemIndex == -1 && typeArea.Contains(e.X, e.Y)) { +// SelectedItem = menu.MenuItems.Count; +// } else { +// SelectedItem = itemIndex; +// } +// } +// +// protected override void OnMouseLeave(System.EventArgs e) +// { +// base.OnMouseLeave(e); +// if (-1 != mouseOverItem) { +// mouseOverItem = -1; +// Refresh(); +// } +// } +// +// +// protected override void OnMouseMove(System.Windows.Forms.MouseEventArgs e) +// { +// int itemIndex = GetItemIndex(e.X, e.Y); +// +// int newMouseOver; +// bool newIsMouseOverLeftSpacing = e.X < GetLeftSpacing(); +// +// if (itemIndex == -1 && typeArea.Contains(e.X, e.Y)) { +// newMouseOver = menu.MenuItems.Count; +// newIsMouseOverLeftSpacing = false; +// } else { +// newMouseOver = itemIndex; +// if (itemIndex >= 0 && itemIndex < menu.MenuItems.Count) { +// newIsMouseOverLeftSpacing &= menu.MenuItems[itemIndex].MenuItems.Count == 0; +// } +// } +// +// if (newMouseOver != mouseOverItem || newIsMouseOverLeftSpacing != isMouseOverLeftSpacing) { +// mouseOverItem = newMouseOver; +// isMouseOverLeftSpacing = newIsMouseOverLeftSpacing; +// Refresh(); +// } +// } +// +// +// protected override void OnMouseUp(MouseEventArgs e) +// { +// base.OnMouseUp(e); +// if (oldSelectedItem == selectedItem) { +// int itemIndex = GetItemIndex(e.X, e.Y); +// +// if (itemIndex == -1 && typeArea.Contains(e.X, e.Y)) { +//// if (menu.MenuItems.Count == selectedItem) { +//// EditMode(menu.MenuItems.Count); +//// } +// } else { +// if (itemIndex == selectedItem && itemIndex != -1) { +// if (isMouseOverLeftSpacing) { +// menu.MenuItems[itemIndex].Checked = !menu.MenuItems[itemIndex].Checked; +// Refresh(); +// } else { +// EditMode(itemIndex); +// } +// } +// } +// } +// } +// +// protected override void OnKeyPress(System.Windows.Forms.KeyPressEventArgs e) +// { +// base.OnKeyPress(e); +// EditMode(selectedItem); +// if (itemEditor != null) { +// itemEditor.Text = String.Empty; +// itemEditor.AppendText(e.KeyChar.ToString()); +// } +// } +// +// protected override bool ProcessDialogKey(System.Windows.Forms.Keys keyData) +// { +// switch (keyData) { +// case Keys.Home: +// SelectItem(ItemSelection.First); +// return true; +// case Keys.End: +// SelectItem(ItemSelection.Last); +// return true; +// case Keys.Return: +// EditMode(this.SelectedItem); +// return true; +// case Keys.Left: +// SelectItem(ItemSelection.Prev); +// return true; +// case Keys.Right: +// SelectItem(ItemSelection.Next); +// return true; +// case Keys.Up: +// if (subMenuEditor != null) { +// subMenuEditor.Focus(); +// subMenuEditor.SelectItem(ItemSelection.Last); +// } +// return true; +// case Keys.Down: +// if (subMenuEditor != null) { +// subMenuEditor.Focus(); +// subMenuEditor.SelectItem(ItemSelection.First); +// } +// return true; +// case Keys.Escape: { +// SelectedItem = -1; +// AbstractMenuEditorControl.MenuEditorFocused = false; +// Refresh(); +// ISelectionService selectionService = (ISelectionService)host.GetService(typeof(ISelectionService)); +// selectionService.SetSelectedComponents(new object[] { host.RootComponent }); +// return true; +// } +// case Keys.Back: +// case Keys.Delete: { +// if (itemEditor != null && !itemEditor.Focused) { +// DeleteCommand(); +// return true; +// } +// break; +// } +// +// } +// return base.ProcessDialogKey(keyData); +// } +// public void DeleteCommand() +// { +// if (selectedItem >= 0 && selectedItem < menu.MenuItems.Count) { // && subMenuEditor == null +// ISelectionService selectionService = (ISelectionService)host.GetService(typeof(ISelectionService)); +// if (selectedItem == 0) { +// selectionService.SetSelectedComponents(new object[] { }); +// } else { +// selectionService.SetSelectedComponents(new object[] { menu.MenuItems[selectedItem - 1] }); +// } +// ComponentChangeService componentChangeService = (ComponentChangeService)host.GetService(typeof(IComponentChangeService)); +// +// PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(menu); +// System.ComponentModel.PropertyDescriptor myProperty = properties.Find("MenuItems", false); +// +// object[] oldArray = new object[menu.MenuItems.Count]; +// menu.MenuItems.CopyTo(oldArray, 0); +// MenuItem item = menu.MenuItems[selectedItem]; +// +// DesignerTransaction transaction = host.CreateTransaction("remove menu item"); +// componentChangeService.OnComponentChanging(menu, myProperty); +// menu.MenuItems.Remove(item); +// componentChangeService.OnComponentChanged(menu, myProperty, oldArray, menu.MenuItems); +// +// host.DestroyComponent(item); +// transaction.Commit(); +// SetSize(null, null); +// Refresh(); +// } +// } +// +// public void SelectItem(ItemSelection selection) +// { +// switch (selection) { +// case ItemSelection.Last: +// SelectedItem = menu.MenuItems.Count; +// break; +// case ItemSelection.First: +// SelectedItem = 0; +// break; +// case ItemSelection.Next: +// this.SelectedItem = (SelectedItem == menu.MenuItems.Count ? 0 : selectedItem + 1); +// break; +// case ItemSelection.Prev: +// this.SelectedItem = (SelectedItem == 0 ? menu.MenuItems.Count : selectedItem - 1); +// break; +// } +// } +// +// void EditMode(int itemNumber) +// { +// if (itemNumber < 0 || !canEditMenuItems) { +// return; +// } +// try { +// itemEditor = new ItemEditor(this); +// RectangleF r = itemNumber >= menu.MenuItems.Count ? this.typeArea : menuItemAreas[itemNumber]; +// SizeF s = itemNumber >= menu.MenuItems.Count ? this.typeSize : menuItemSize[itemNumber]; +// int yOffset = (int)((r.Height - s.Height) / 2); +// itemEditor.SetBounds((int)r.X + 2 + this.GetLeftSpacing(), +// (int)r.Y + yOffset, +// (int)r.Width - 4, +// (int)r.Height); +// +// if (itemNumber >= menu.MenuItems.Count) { +// DesignerTransaction transaction = host.CreateTransaction("create menu item"); +// ComponentChangeService componentChangeService = (ComponentChangeService)host.GetService(typeof(IComponentChangeService)); +// MenuItem newItem = (MenuItem)host.CreateComponent(typeof(MenuItem)); +// componentChangeService.OnComponentAdding(newItem); +// +// newItem.Text = newItem.Site.Name; +// menu.MenuItems.Add(newItem); +// componentChangeService.OnComponentAdded(newItem); +// transaction.Commit(); +// MeasureMenuItems(); +// } +// itemEditor.SetItem(menu.MenuItems[itemNumber]); +// base.Controls.Add(itemEditor); +// MenuEditorFocused = true; +// itemEditor.Select(); +// MenuEditorFocused = true; +// Refresh(); +// } catch (Exception e) { +// Console.WriteLine(e); +// if (itemEditor != null) { +// base.Controls.Remove(itemEditor); +// itemEditor.Dispose(); +// itemEditor = null; +// } +// } +// } +// } +//} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/ContextMenuEditorControl.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/ContextMenuEditorControl.cs new file mode 100644 index 0000000000..67284d6528 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/ContextMenuEditorControl.cs @@ -0,0 +1,71 @@ +//// +//// +//// +//// +//// +//// +// +//using System; +//using System.Diagnostics; +//using System.Drawing; +//using System.Collections; +//using System.ComponentModel; +//using System.ComponentModel.Design; +//using System.Windows.Forms; +//using System.Windows.Forms.Design; +// +//using System.Drawing.Design; +// +//namespace ICSharpCode.FormDesigner { +// +// public class ContextMenuEditorControl : AbstractMenuEditorControl +// { +// public ContextMenuEditorControl(IDesignerHost host, Menu menu) : base(host, menu) +// { +// typeAreaText = "Context Menu"; +// canEditMenuItems = false; +// MeasureMenuItems(); +// } +// +// protected override void OnLostFocus(EventArgs e) +// { +// MenuEditorFocused = base.subMenuEditor != null && !subMenuEditor.iveTheFocus; +// base.OnLostFocus(e); +// } +// +// protected override void MeasureMenuItems() +// { +// Graphics g = base.CreateGraphics(); +// Font f = System.Windows.Forms.SystemInformation.MenuFont; +// +// typeSize = g.MeasureString(typeAreaText, f); +// typeArea = new RectangleF(this.borderSize.Width, +// this.borderSize.Height, +// typeSize.Width, +// SystemInformation.MenuHeight); +// g.Dispose(); +// } +// +// protected override void OnPaint(PaintEventArgs pe) +// { +// MeasureMenuItems(); +// DrawTypeHere(pe.Graphics, this.selectedItem == menu.MenuItems.Count, mouseOverItem == menu.MenuItems.Count); +// if (MenuEditorFocused) { +// ShowSubMenuEditor(); +// } +// } +// +// protected override void ShowSubMenuEditor() +// { +// if (this.selectedItem >= 0) { +// SubMenuEditorControl panel = new SubMenuEditorControl(host, this, menu); +// panel.Location = GetSubmenuLocation(this.selectedItem); +// panel.Parent = rootControl.Parent; +// panel.BringToFront(); +// panel.Select(); +// CloseSubMenuEditor(); +// this.subMenuEditor = panel; +// } +// } +// } +//} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/ItemEditor.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/ItemEditor.cs new file mode 100644 index 0000000000..8d64670331 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/ItemEditor.cs @@ -0,0 +1,81 @@ +//// +//// +//// +//// +//// +//// +// +//using System; +//using System.Diagnostics; +//using System.Drawing; +//using System.Collections; +//using System.ComponentModel; +//using System.ComponentModel.Design; +//using System.Windows.Forms; +//using System.Windows.Forms.Design; +// +//using System.Drawing.Design; +// +//namespace ICSharpCode.FormDesigner +//{ +// public class ItemEditor : TextBox +// { +// MenuItem item = null; +// AbstractMenuEditorControl motherEditor; +// bool isEscape = false; +// +// public ItemEditor(AbstractMenuEditorControl motherEditor) +// { +// this.motherEditor = motherEditor; +// base.BorderStyle = BorderStyle.None; +// } +// +// protected override bool ProcessDialogKey(System.Windows.Forms.Keys keyData) +// { +// switch (keyData) { +// case Keys.Escape: +// isEscape = true; +// CloseItemEditor(); +// return true; +// case Keys.Return: +// try { +// item.Text = Text; +// } catch (Exception e) { +// Console.WriteLine(e); +// } +// CloseItemEditor(); +// return true; +// } +// return base.ProcessDialogKey(keyData); +// } +// +// protected override void OnLostFocus(System.EventArgs e) +// { +// if (!isEscape) { +// try { +// item.Text = Text; +// } catch (Exception ex) { +// Console.WriteLine(ex); +// } +// CloseItemEditor(); +// } +// } +// +// void CloseItemEditor() +// { +// base.Dispose(); +// motherEditor.SetSize(null, null); +// motherEditor.Invalidate(); +// motherEditor.Update(); +// } +// +// public void SetItem(MenuItem item) +// { +// this.item = item; +// this.Text = item.Text; +// AbstractMenuEditorControl.MenuEditorFocused = true; +// } +// +// +// } +//} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/MainMenuEditorControl.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/MainMenuEditorControl.cs new file mode 100644 index 0000000000..f8dd36c2f3 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/MainMenuEditorControl.cs @@ -0,0 +1,33 @@ +//// +//// +//// +//// +//// +//// +// +//using System; +//using System.Diagnostics; +//using System.Drawing; +//using System.Collections; +//using System.ComponentModel; +//using System.ComponentModel.Design; +//using System.Windows.Forms; +//using System.Windows.Forms.Design; +// +//using System.Drawing.Design; +// +//namespace ICSharpCode.FormDesigner { +// +// public class MainMenuEditorControl : AbstractMenuEditorControl +// { +// public MainMenuEditorControl(IDesignerHost host, Menu menu) : base(host, menu) +// { +// } +// +// protected override void OnLostFocus(EventArgs e) +// { +// MenuEditorFocused = base.subMenuEditor != null && !subMenuEditor.iveTheFocus; +// base.OnLostFocus(e); +// } +// } +//} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/MenuDesigner.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/MenuDesigner.cs new file mode 100644 index 0000000000..869a442a5c --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/MenuDesigner.cs @@ -0,0 +1,52 @@ +//// +//// +//// +//// +//// +//// +// +//using System; +//using System.Diagnostics; +//using System.Drawing; +//using System.Collections; +//using System.ComponentModel; +//using System.ComponentModel.Design; +//using System.Windows.Forms; +//using System.Windows.Forms.Design; +// +//using System.Drawing.Design; +//using ICSharpCode.FormDesigner; +// +//namespace Microsoft.VisualStudio.Windows.Forms { +// +// public class MenuDesigner : ComponentDesigner +// { +// DesignerVerbCollection designerVerbCollection = new DesignerVerbCollection(); +// +// public override void DoDefaultAction() +// { +// Console.WriteLine("MenuDesigner.DoDefaultAction"); +// } +// +// public override void Initialize(IComponent component) +// { +// base.Initialize(component); +// } +// +// public override ICollection AssociatedComponents { +// get { +// Menu menu = base.Component as Menu; +// if (menu != null) { +// return menu.MenuItems; +// } +// return null; +// } +// } +// +// public override DesignerVerbCollection Verbs { +// get { +// return designerVerbCollection; +// } +// } +// } +//} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/MenuEditorService.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/MenuEditorService.cs new file mode 100644 index 0000000000..f2f12d8a18 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/MenuEditorService.cs @@ -0,0 +1,134 @@ +//// +//// +//// +//// +//// +//// +// +//using System; +//using System.Diagnostics; +//using System.Drawing; +//using System.Collections; +//using System.ComponentModel; +//using System.ComponentModel.Design; +//using System.Windows.Forms; +//using System.Windows.Forms.Design; +// +//using System.Drawing.Design; +// +//namespace ICSharpCode.FormDesigner { +// +// public class MenuEditorService : IMenuEditorService +// { +// IDesignerHost host; +// bool isActive = false; +// +// AbstractMenuEditorControl menuEditorControl = null; +// Menu menu; +// +// public IDesignerHost Host { +// get { +// return host; +// } +// set { +// host = value; +// } +// } +// +// public AbstractMenuEditorControl MenuEditorControl { +// get { +// return menuEditorControl; +// } +// } +// +// +// public MenuEditorService(IDesignerHost host) +// { +// this.host = host; +// Initialize(); +// } +// +// void Initialize() +// { +// ISelectionService selectionService = (ISelectionService)host.GetService(typeof(ISelectionService)); +// selectionService.SelectionChanged += new EventHandler(HandleSelectionChange); +// } +// +// void HandleSelectionChange(object sender, EventArgs e) +// { +// ISelectionService selectionService = (ISelectionService)host.GetService(typeof(ISelectionService)); +// Menu selectedMenu = selectionService.PrimarySelection as Menu; +// +// if (selectedMenu != null) { +// if (menu != selectedMenu && (selectedMenu is MainMenu || selectedMenu is ContextMenu)) { +// DisposeMenuEditorControl(); +// this.menu = selectedMenu; +// InitMenuEditorControl(); +// } +// } else { +// if (menuEditorControl != null && selectionService.PrimarySelection != null) { +// AbstractMenuEditorControl.MenuEditorFocused = false; +// menuEditorControl.CloseSubMenuEditor(); +// menuEditorControl.Refresh(); +// } +// } +// } +// +// public void Dispose() +// { +// } +// +// void DisposeMenuEditorControl() +// { +// if (menuEditorControl != null) { +// menuEditorControl.Dispose(); +// menuEditorControl = null; +// } +// } +// +// void InitMenuEditorControl() +// { +// Control rootComponent = host.RootComponent as Control; +// if (rootComponent != null) { +// menuEditorControl = (menu is MainMenu) ? (AbstractMenuEditorControl)new MainMenuEditorControl(host, menu) : +// (AbstractMenuEditorControl)new ContextMenuEditorControl(host, menu); +// rootComponent.Parent.Controls.Add(menuEditorControl); +// menuEditorControl.BringToFront(); +// } +// } +// +// +//#region System.Windows.Forms.Design.IMenuEditorService interface implementation +// public bool IsActive() +// { +// return isActive; +// } +// +// public bool MessageFilter(ref System.Windows.Forms.Message m) +// { +// return false; +// } +// +// public void SetSelection(System.Windows.Forms.MenuItem item) +// { +// Console.WriteLine("!!!TODO!!! SET SELECTION TO : " + item); +// } +// +// public void SetMenu(System.Windows.Forms.Menu menu) +// { +// this.menu = menu; +// isActive = menu != null; +// if (isActive) { +// InitMenuEditorControl(); +// } else { +// DisposeMenuEditorControl(); +// } +// } +// +// public System.Windows.Forms.Menu GetMenu() +// { +// return menu; +// } +//#endregion +// } +//} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/SubMenuEditorControl.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/SubMenuEditorControl.cs new file mode 100644 index 0000000000..64305c3c9f --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/MenuDesigner/SubMenuEditorControl.cs @@ -0,0 +1,139 @@ +//// +//// +//// +//// +//// +//// +// +//using System; +//using System.Diagnostics; +//using System.Drawing; +//using System.Collections; +//using System.ComponentModel; +//using System.ComponentModel.Design; +//using System.Windows.Forms; +//using System.Windows.Forms.Design; +// +//using System.Drawing.Design; +// +//namespace ICSharpCode.FormDesigner { +// +// public class SubMenuEditorControl : AbstractMenuEditorControl +// { +// AbstractMenuEditorControl owner; +// +// public SubMenuEditorControl(IDesignerHost host, AbstractMenuEditorControl owner, Menu menu) : base(host, menu) +// { +// isHorizontal = false; +// drawMenuGlyphs = true; +// borderSize = SystemInformation.FrameBorderSize; +// SetSize(null, null); +// this.owner = owner; +// } +// +// public override void SetSize(object sender, EventArgs e) +// { +// try { +// MeasureMenuItems(); +// int maxWidth = (int)base.typeArea.Width + base.borderSize.Width * 2; +// foreach (RectangleF rect in menuItemAreas) { +// maxWidth = (int)Math.Max(maxWidth, rect.Width + base.borderSize.Width * 2); +// } +// +// Size = new Size(maxWidth, base.borderSize.Height * 2 + SystemInformation.MenuHeight * (menu.MenuItems.Count + 1)); +// +// if (subMenuEditor != null) { +// subMenuEditor.Location = GetSubmenuLocation(this.selectedItem); +// } +// } catch (Exception ex) { +// Console.WriteLine(ex); +// if (Parent != null) { +// Parent.Controls.Remove(this); +// } +// } +// } +// +// protected override void OnPaintBackground(System.Windows.Forms.PaintEventArgs pevent) +// { +// base.OnPaintBackground(pevent); +// ControlPaint.DrawBorder3D(pevent.Graphics, new Rectangle(0, 0, Width, Height), Border3DStyle.Raised); +// } +// +// protected override Point GetSubmenuLocation(int menuIndex) +// { +// RectangleF r; +// if (menuItemAreas == null || menuIndex >= menu.MenuItems.Count || menuIndex < 0) { +// r = base.typeArea; +// } else { +// r = base.menuItemAreas[menuIndex]; +// } +// return new Point((int)(Right - 2), +// (int)(Top + r.Y)); +// } +// +// +// protected override bool ProcessDialogKey(System.Windows.Forms.Keys keyData) +// { +// switch (keyData) { +// case Keys.Up: +// if (SelectedItem == 0) { +// if (!(owner is SubMenuEditorControl)) { +// owner.Focus(); +// } else { +// SelectedItem = menu.MenuItems.Count; +// } +// } else { +// SelectItem(ItemSelection.Prev); +// } +// Refresh(); +// return true; +// case Keys.Down: +// if (SelectedItem >= menu.MenuItems.Count) { +// if (!(owner is SubMenuEditorControl)) { +// owner.Focus(); +// } else { +// SelectedItem = 0; +// } +// } else { +// SelectItem(ItemSelection.Next); +// } +// Refresh(); +// return true; +// case Keys.Escape: +// owner.CloseSubMenuEditor(); +// owner.Focus(); +// return true; +// case Keys.Left: { +// AbstractMenuEditorControl topLevel = GetTopLevelMenuControl(); +// if (topLevel == owner) { +// topLevel.Focus(); +// topLevel.SelectItem(ItemSelection.Prev); +// } else { +// goto case Keys.Escape; +// } +// return true; +// } +// case Keys.Right: +// if (base.subMenuEditor != null) { +// subMenuEditor.Focus(); +// subMenuEditor.SelectItem(ItemSelection.First); +// } else { +// AbstractMenuEditorControl topLevel = GetTopLevelMenuControl(); +// topLevel.Focus(); +// topLevel.SelectItem(ItemSelection.Next); +// } +// return true; +// } +// return base.ProcessDialogKey(keyData); +// } +// +// AbstractMenuEditorControl GetTopLevelMenuControl() +// { +// AbstractMenuEditorControl curControl = owner; +// while (curControl is SubMenuEditorControl) { +// curControl = ((SubMenuEditorControl)curControl).owner; +// } +// return curControl; +// } +// } +//} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/DefaultServiceContainer.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/DefaultServiceContainer.cs new file mode 100644 index 0000000000..91d1d5d81b --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/DefaultServiceContainer.cs @@ -0,0 +1,116 @@ +// +// +// +// +// +// + +using System; +using System.Reflection; +using System.Collections; +using System.Collections.Specialized; +using System.Drawing; +using System.ComponentModel; +using System.ComponentModel.Design; +using System.Windows.Forms.Design; + +namespace ICSharpCode.FormDesigner.Services +{ + public class DefaultServiceContainer : IServiceContainer, IDisposable + { + IServiceContainer serviceContainer; + ArrayList services = new ArrayList(); + + public DefaultServiceContainer() + { + serviceContainer = new ServiceContainer(); + } + + public DefaultServiceContainer(IServiceContainer parent) + { + serviceContainer = new ServiceContainer(parent); + } + + #region System.IDisposable interface implementation + public virtual void Dispose() + { + foreach (object o in services) { + if (o == this) { + continue; + } + // || o.GetType().Assembly != Assembly.GetCallingAssembly() + IDisposable disposeMe = o as IDisposable; + if (disposeMe != null) { + try { + disposeMe.Dispose(); + } catch (Exception e) { + Console.WriteLine("Exception while disposing " + disposeMe + ":" + e.ToString()); + } + } + } + services.Clear(); + services = null; + } + #endregion + + #region System.ComponentModel.Design.IServiceContainer interface implementation + public void RemoveService(System.Type serviceType, bool promote) + { + serviceContainer.RemoveService(serviceType, promote); + } + + public void RemoveService(System.Type serviceType) + { + serviceContainer.RemoveService(serviceType); + } + + public void AddService(System.Type serviceType, System.ComponentModel.Design.ServiceCreatorCallback callback, bool promote) + { + if (IsServiceMissing(serviceType)) { + serviceContainer.AddService(serviceType, callback, promote); + } + } + + public void AddService(System.Type serviceType, System.ComponentModel.Design.ServiceCreatorCallback callback) + { + if (IsServiceMissing(serviceType)) { + serviceContainer.AddService(serviceType, callback); + } + } + + public void AddService(System.Type serviceType, object serviceInstance, bool promote) + { + if (IsServiceMissing(serviceType)) { + serviceContainer.AddService(serviceType, serviceInstance, promote); + services.Add(serviceInstance); + } + } + + public void AddService(System.Type serviceType, object serviceInstance) + { + if (IsServiceMissing(serviceType)) { + serviceContainer.AddService(serviceType, serviceInstance); + services.Add(serviceInstance); + } + } + #endregion + + #region System.IServiceProvider interface implementation + public object GetService(System.Type serviceType) + { +// if (IsServiceMissing(serviceType)) { +//// Console.WriteLine("request missing service : {0} from Assembly {1} is not aviable.", serviceType, serviceType.Assembly.FullName); +//// Console.ReadLine(); +// } else { +// Console.WriteLine("get service : {0} from Assembly {1}.", serviceType, serviceType.Assembly.FullName); +// } + return serviceContainer.GetService(serviceType); + } + #endregion + + bool IsServiceMissing(Type serviceType) + { + return serviceContainer.GetService(serviceType) == null; + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/DesignerEventService.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/DesignerEventService.cs new file mode 100644 index 0000000000..e6e5f8af30 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/DesignerEventService.cs @@ -0,0 +1,114 @@ +// +// +// +// +// +// + +using System; +using System.Drawing; +using System.Collections; +using System.Collections.Specialized; +using System.ComponentModel; +using System.ComponentModel.Design; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Windows.Forms.Design; + +using ICSharpCode.Core; + +namespace ICSharpCode.FormDesigner.Services +{ + public class DesignerEventService : IDesignerEventService + { + IDesignerHost activeDesigner = null; + ArrayList designers = new ArrayList(); + + public void Reset() + { + this.activeDesigner = null; + this.designers.Clear(); + } + + public IDesignerHost ActiveDesigner { + get { + return activeDesigner; + } + } + + public DesignerCollection Designers { + get { + return new DesignerCollection(designers); + } + } + + public void AddDesigner(IDesignerHost host) + { + this.designers.Add(host); + if (designers.Count == 1) { + SetActiveDesigner(host); + } + OnDesignerCreated(new DesignerEventArgs(host)); + } + + public void RemoveDesigner(IDesignerHost host) + { + designers.Remove(host); + if (activeDesigner == host) { + if (designers.Count <= 0) { + SetActiveDesigner(null); + } else { + this.SetActiveDesigner((IDesignerHost)this.designers[designers.Count - 1]); + } + } + ((IContainer)host).Dispose(); + OnDesignerDisposed(new DesignerEventArgs(host)); + } + + public void SetActiveDesigner(IDesignerHost host) + { + if (activeDesigner != host) { + IDesignerHost oldDesigner = activeDesigner; + activeDesigner = host; + FileSelectionChanged(); + OnActiveDesignerChanged(new ActiveDesignerEventArgs(oldDesigner, host)); + } + } + + public void FileSelectionChanged() + { + if (SelectionChanged != null) { + SelectionChanged(this, EventArgs.Empty); + } + } + + protected virtual void OnDesignerCreated(DesignerEventArgs e) + { + if (DesignerCreated != null) { + DesignerCreated(this, e); + } + } + + protected virtual void OnDesignerDisposed(DesignerEventArgs e) + { + if (DesignerDisposed != null) { + DesignerDisposed(this, e); + } + } + + protected virtual void OnActiveDesignerChanged(ActiveDesignerEventArgs e) + { + if (ActiveDesignerChanged != null) { + ActiveDesignerChanged(this, e); + } + } + + public event EventHandler SelectionChanged; + + public event DesignerEventHandler DesignerCreated; + public event DesignerEventHandler DesignerDisposed; + + public event ActiveDesignerEventHandler ActiveDesignerChanged; + + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/DesignerOptionService.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/DesignerOptionService.cs new file mode 100644 index 0000000000..408f80b299 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/DesignerOptionService.cs @@ -0,0 +1,98 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.Drawing; +using System.ComponentModel.Design; +using System.Windows.Forms.Design; +using ICSharpCode.Core; + +namespace ICSharpCode.FormDesigner.Services +{ + public class DesignerOptionService : IDesignerOptionService + { + public const string GridSize = "GridSize"; + public const string ShowGrid = "ShowGrid"; + public const string SnapToGrid = "SnapToGrid"; + public const string LayoutMode = "LayoutMode"; + + const string GridSizeWidth = "GridSize.Width"; + const string GridSizeHeight = "GridSize.Height"; + + public const string FormsDesignerPageName = "SharpDevelop Forms Designer\\General"; + + Hashtable pageOptionTable = new Hashtable(); + + + + public DesignerOptionService() + { + pageOptionTable[FormsDesignerPageName] = new Hashtable(); + } + + public object GetOptionValue(string pageName, string valueName) + { + switch (valueName) { + case GridSize: + return new Size(PropertyService.Get("FormsDesigner.DesignerOptions.GridSizeWidth", 8), + PropertyService.Get("FormsDesigner.DesignerOptions.GridSizeHeight", 8)); + case ShowGrid: + return PropertyService.Get("FormsDesigner.DesignerOptions.ShowGrid", true); + case SnapToGrid: + return PropertyService.Get("FormsDesigner.DesignerOptions.SnapToGrid", true); + case GridSizeWidth: + return PropertyService.Get("FormsDesigner.DesignerOptions.GridSizeWidth", 8); + case GridSizeHeight: + return PropertyService.Get("FormsDesigner.DesignerOptions.GridSizeHeight", 8); +// case LayoutMode: +// return PropertyService.Get("FormsDesigner.DesignerOptions.LayoutMode", LayoutOptions.SnapLines); + default: + Hashtable pageTable = (Hashtable)pageOptionTable[pageName]; + + if (pageTable == null) { + return null; + } + return pageTable[valueName]; + } + } + + public void SetOptionValue(string pageName, string valueName, object val) + { + switch (valueName) { + case GridSize: + Size size = (Size)val; + PropertyService.Set("FormsDesigner.DesignerOptions.GridSizeWidth", size.Width); + PropertyService.Set("FormsDesigner.DesignerOptions.GridSizeHeight", size.Height); + break; + case ShowGrid: + PropertyService.Set("FormsDesigner.DesignerOptions.ShowGrid", (bool)val); + break; + case SnapToGrid: + PropertyService.Set("FormsDesigner.DesignerOptions.SnapToGrid", (bool)val); + break; + case GridSizeWidth: + PropertyService.Set("FormsDesigner.DesignerOptions.GridSizeWidth", (int)val); + break; + case GridSizeHeight: + PropertyService.Set("FormsDesigner.DesignerOptions.GridSizeHeight", (int)val); + break; +// case LayoutMode: +// PropertyService.Set("FormsDesigner.DesignerOptions.LayoutMode", (LayoutOptions)val); +// break; + + default: + Hashtable pageTable = (Hashtable)pageOptionTable[pageName]; + if (pageTable == null) { + pageOptionTable[pageName] = pageTable = new Hashtable(); + } + pageTable[valueName] = val; + break; + } + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/DesignerResourceService.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/DesignerResourceService.cs new file mode 100644 index 0000000000..6be06c4a1d --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/DesignerResourceService.cs @@ -0,0 +1,247 @@ +// +// +// +// +// +// + +using System; +using System.Drawing; +using System.IO; +using System.Collections; +using System.Resources; +using System.Text; +using System.Collections.Specialized; +using System.Drawing.Design; +using System.ComponentModel.Design; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Project; + +namespace ICSharpCode.FormDesigner.Services +{ + public class DesignerResourceService : System.ComponentModel.Design.IResourceService , IDisposable + { + IDesignerHost host; + + public string FileName = String.Empty; + public string NameSpace = String.Empty; + public string RootType = String.Empty; + + protected IProject project; + + protected Hashtable Readers = new Hashtable(); + protected Hashtable Writers = new Hashtable(); + + #region ResourceStorage + public class ResourceStorage + { + public MemoryStream stream = null; + public byte[] storage = null; + public IProject project = null; + + public ResourceStorage(MemoryStream stream) + { + this.stream = stream; + } + + public ResourceStorage(ResourceStorage rs) + { + this.storage = (byte []) rs.storage.Clone(); + this.stream = new MemoryStream(this.storage); + } + + public void Dispose() + { + this.storage = null; + this.stream.Close(); + } + + public void Save(string fileName) + { + using (BinaryWriter binWriter = new BinaryWriter(System.IO.File.OpenWrite(fileName))) { + binWriter.Write(this.storage); + } + + // Add this resource file to the project + if (project != null && !project.IsFileInProject(fileName)) { +// ProjectFile fileInformation = ProjectService.AddFileToProject(project, fileName, BuildAction.EmbedAsResource); +// TODO: Project system... +// ICSharpCode.SharpDevelop.Gui.ProjectBrowser.ProjectBrowserView pbv = (ICSharpCode.SharpDevelop.Gui.ProjectBrowser.ProjectBrowserView)WorkbenchSingleton.Workbench.GetPad(typeof(ICSharpCode.SharpDevelop.Gui.ProjectBrowser.ProjectBrowserView)); +// pbv.UpdateCombineTree(); +// projectService.SaveCombine(); + } + } + } + #endregion + + // In ResourceMemoryStreams are stored: + // Key: "true" file names from the project + // Value: ResourceStorage, where the resources are stored + // If the file is read, after + // calculating of the "true" file name, it looks for MemoryStream + // uses it if it exists. + // Memory streams are cleared, when WriteSerialization will start + // or File in the editor will be reloaded from the disc and of + // course in Dispose of the service + protected Hashtable resources = null; + public Hashtable Resources + { + get { + return resources; + } + set { + resources = value; + } + } + public IDesignerHost Host { + get { + return host; + } + set { + host = value; + } + } + + public DesignerResourceService(Hashtable resources) + { + project = ProjectService.CurrentProject; + this.resources = resources; + } + + #region System.ComponentModel.Design.IResourceService interface implementation + public System.Resources.IResourceWriter GetResourceWriter(System.Globalization.CultureInfo info) + { + try { + IResourceWriter resourceWriter = (IResourceWriter)Writers[info]; + string fileName = CalcResourceFileName(info); + + if (resourceWriter == null) { + ResourceStorage resourceStorage = new ResourceStorage(new MemoryStream()); + resources[fileName] = resourceStorage; + resourceWriter = new ResourceWriter(resourceStorage.stream); + Writers[info] = resourceWriter; + resourceStorage.project = project; + + } + return resourceWriter; + } catch (Exception e) { + System.Windows.Forms.MessageBox.Show(e.ToString()); + return null; + } + } + + public System.Resources.IResourceReader GetResourceReader(System.Globalization.CultureInfo info) + { + try { + string fileName = CalcResourceFileName(info); + IResourceReader resourceReader = (IResourceReader)Readers[info]; + if (resourceReader == null) { + if (resources != null && resources[fileName] != null) { + MemoryStream stream = (MemoryStream) ((ResourceStorage)resources[fileName]).stream; + stream.Seek( 0, System.IO.SeekOrigin.Begin ); + resourceReader = new ResourceReader( stream ); + } else if (File.Exists(fileName)) { + resourceReader = new ResourceReader(fileName); + } + if (resourceReader != null) { + Readers[info] = resourceReader; + } + } + return resourceReader; + } catch (Exception e) { + System.Windows.Forms.MessageBox.Show(e.ToString()); + return null; + } + } + #endregion + + public void Save() + { + if (resources != null) { + foreach (DictionaryEntry entry in resources) { + + FileUtility.ObservedSave(new NamedFileOperationDelegate(((ResourceStorage)entry.Value).Save), (string) entry.Key, FileErrorPolicy.Inform); + } + } + } + + protected string CalcResourceFileName(System.Globalization.CultureInfo info) + { + StringBuilder resourceFileName = null; + if (FileName != null && FileName != String.Empty) { + resourceFileName = new StringBuilder(Path.GetDirectoryName(FileName)); + } else if (project != null) { + resourceFileName = new StringBuilder(project.Directory); + } else { + // required for untitled files. Untitled files should NOT save their resources. + resourceFileName = new StringBuilder(Path.GetTempPath()); + } + resourceFileName.Append(Path.DirectorySeparatorChar); + resourceFileName.Append(host.RootComponentClassName); + + if (info != null && info.Name.Length > 0) { + resourceFileName.Append('.'); + resourceFileName.Append(info.Name); + } + resourceFileName.Append(".resources"); + return resourceFileName.ToString(); + } + + public void SerializationStarted(bool serialize) + { + if (serialize == true) { + if (resources == null) { + resources = new Hashtable(); + } + foreach (ResourceStorage storage in resources.Values) { + storage.storage = null; + storage.stream.Close(); + } + resources.Clear(); + } else { + if (resources != null) { + foreach (ResourceStorage storage in resources.Values) { + storage.stream = new MemoryStream(storage.storage); + } + } + } + } + + public void SerializationEnded(bool serialize) + { + if (serialize == true && resources != null) { + foreach (ResourceStorage storage in Resources.Values) { + storage.storage = storage.stream.ToArray(); + } + } + + foreach (IResourceWriter resourceWriter in Writers.Values) { + if (resourceWriter != null) { + resourceWriter.Close(); + resourceWriter.Dispose(); + } + } + Writers.Clear(); + + foreach (IResourceReader resourceReader in Readers.Values) { + if (resourceReader != null) { + resourceReader.Close(); + resourceReader.Dispose(); + } + } + Readers.Clear(); + } + + public void Dispose() + { + if (resources != null) { + foreach (ResourceStorage storage in resources.Values) { + storage.Dispose(); + } + resources.Clear(); + } + SerializationEnded(false); + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/EventBindingService.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/EventBindingService.cs new file mode 100644 index 0000000000..a6e6c5f127 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/EventBindingService.cs @@ -0,0 +1,321 @@ +// +// +// +// +// +// + +using System; +using System.Reflection; +using System.Collections; +using System.ComponentModel; +using System.ComponentModel.Design; +using System.Globalization; + +using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor; +using ICSharpCode.SharpDevelop.Gui; + +namespace ICSharpCode.FormDesigner.Services +{ + public class EventBindingService : IEventBindingService + { + public IComponentChangeService changeService = null; + + EventTypeConverter eventTypeConverter; + Hashtable components = new Hashtable(); + IServiceProvider serviceProvider = null; + public IServiceProvider ServiceProvider { + get { + return serviceProvider; + } + set { + serviceProvider = value; + eventTypeConverter = new EventTypeConverter(serviceProvider, this); + changeService = serviceProvider.GetService(typeof(IComponentChangeService)) as IComponentChangeService; + if (changeService != null) { + changeService.ComponentRemoved += new ComponentEventHandler(ComponentRemoved); + changeService.ComponentRename += new ComponentRenameEventHandler(ComponentRenamed); + } + } + } + + public EventBindingService() + { + } + + public virtual string CreateUniqueMethodName(IComponent component, EventDescriptor e) + { + return String.Format("{0}{1}", Char.ToUpper(component.Site.Name[0]) + component.Site.Name.Substring(1), e.DisplayName); + } + + // sohuld look around in form class for compatiable methodes + public ICollection GetCompatibleMethods(EventDescriptor e) + { + IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; + if (window != null) { + FormDesignerViewContent formDesigner = window.ActiveViewContent as FormDesignerViewContent; + + if (formDesigner != null) { + return formDesigner.GetCompatibleMethods(e); + } + } + return new string[]{}; + } + + public ICollection GetCompatibleMethods(EventInfo e) + { + IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; + if (window != null) { + FormDesignerViewContent formDesigner = window.ActiveViewContent as FormDesignerViewContent; + + if (formDesigner != null) { + return formDesigner.GetCompatibleMethods(e); + } + } + return new string[]{}; + } + + public EventDescriptor GetEvent(PropertyDescriptor property) + { + EventPropertyDescriptor eventProp = property as EventPropertyDescriptor; + if (eventProp == null) { + return null; + } + return eventProp.Event; + } + + public PropertyDescriptorCollection GetEventProperties(EventDescriptorCollection events) + { + PropertyDescriptor[] props = new PropertyDescriptor[events.Count]; + for (int i = 0; i < events.Count; ++i) { + props[i] = GetEventProperty(events[i]); + } + return new PropertyDescriptorCollection(props); + } + + public PropertyDescriptor GetEventProperty(EventDescriptor e) + { + return new EventPropertyDescriptor(e, this); + } + + public bool ShowCode() + { + IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; + if (window == null) { + return false; + } + + FormDesignerViewContent formDesigner = window.ActiveViewContent as FormDesignerViewContent; + + if (formDesigner != null) { + formDesigner.ShowSourceCode(); + return true; + } + return false; + } + + public bool ShowCode(int lineNumber) + { + IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; + if (window == null) { + return false; + } + + FormDesignerViewContent formDesigner = window.ActiveViewContent as FormDesignerViewContent; + + if (formDesigner != null) { + formDesigner.ShowSourceCode(lineNumber); + return true; + } + return false; + } + + public bool ShowCode(IComponent component, EventDescriptor edesc) + { + IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; + if (window == null || edesc == null || edesc.Name == null || edesc.Name.Length == 0) { + return false; + } + FormDesignerViewContent formDesigner = window.ActiveViewContent as FormDesignerViewContent; + + if (formDesigner != null) { + object name = ((Hashtable)components[component])[edesc.Name]; + string nameStr = name == null ? null : name.ToString(); + if (nameStr != null && nameStr.Length > 0) { + formDesigner.ShowSourceCode(component, edesc, nameStr); + } else { + // TODO: Remove empty event methods. + } + return true; + } + return false; + } + + protected void ComponentRemoved(object sender, ComponentEventArgs e) + { + components.Remove(e.Component); + } + + protected void ComponentRenamed(object sender, ComponentRenameEventArgs e) + { + } + + protected class EventTypeConverter : TypeConverter + { + IServiceProvider serviceProvider = null; + EventBindingService eventBindingService = null; + + public EventTypeConverter(IServiceProvider serviceProvider, EventBindingService eventBindingService) + { + this.serviceProvider = serviceProvider; + this.eventBindingService = eventBindingService; + } + + public override bool CanConvertFrom(ITypeDescriptorContext context,Type type) + { + return (type == typeof(string)); + } + + public override bool CanConvertTo(ITypeDescriptorContext context,Type type) + { + return (type == typeof(string)); + } + + public override object ConvertFrom(ITypeDescriptorContext context,CultureInfo culture,object value) + { + if (context != null) + { + EventPropertyDescriptor ed = context.PropertyDescriptor as EventPropertyDescriptor; +// ed.SetValue(context.Instance,value); + return value; + } + else return base.ConvertFrom(context,culture,value); + + } + + public override object ConvertTo(ITypeDescriptorContext context,CultureInfo culture,object value, Type type) + { + if (value != null) { + if (value.GetType() == typeof(string)) { + return value; + } + } + + if (context != null) { + EventPropertyDescriptor ed = context.PropertyDescriptor as EventPropertyDescriptor; + if (ed != null) { + return ed.GetValue(context.Instance); + } + } + + return base.ConvertTo(context, culture, value, type); + } + + public override bool GetStandardValuesSupported(ITypeDescriptorContext context) + { + return true; + } + + public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) + { + return false; + } + + public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) + { + EventPropertyDescriptor ed = context.PropertyDescriptor as EventPropertyDescriptor; + if (ed == null || ed.eventBindingService == null) { + ISelectionService selectionService = (ISelectionService)this.serviceProvider.GetService(typeof(ISelectionService)); + EventInfo eventInfo = selectionService.PrimarySelection.GetType().GetEvent(context.PropertyDescriptor.Name); + return new StandardValuesCollection(eventBindingService.GetCompatibleMethods(eventInfo)); + } + + ICollection col = ed.eventBindingService.GetCompatibleMethods(((EventPropertyDescriptor)context.PropertyDescriptor).Event); + return new StandardValuesCollection(col); + } + + public override bool IsValid(ITypeDescriptorContext context, object o) + { + return true; + } + } + + protected class EventPropertyDescriptor : PropertyDescriptor + { + protected EventDescriptor baseDescriptor = null; + public EventBindingService eventBindingService = null; + + public EventPropertyDescriptor(EventDescriptor eventDesc, EventBindingService service): base(eventDesc) + { + baseDescriptor = eventDesc; + eventBindingService = service; + } + + public EventDescriptor Event { + get { return baseDescriptor;} + } + + public override Type ComponentType { + get {return Event.ComponentType;} + } + + public override TypeConverter Converter { + get {return eventBindingService.eventTypeConverter;} + } + + public override bool IsReadOnly { + get {return false;} + } + + public override Type PropertyType { + get { return typeof(string);} + } + + public override bool CanResetValue(object component) + { + return true; + } + + public override object GetValue(object component) + { + IDictionary events = eventBindingService.components[component] as IDictionary; + if (events == null) { + return null; + } + return events[Name]; + } + + public override void ResetValue(object component) + { + SetValue(component,null); + } + + public override void SetValue(object component, object value) + { + if (value as string == "") { + value = null; + } + + IDictionary events = eventBindingService.components[component] as IDictionary; + string oldValue = null; + if (events != null) { + oldValue = (string)events[Name]; + } else if (value != null) { + events = new Hashtable(); + eventBindingService.components[component] = (Hashtable)events; + } + + if (String.Compare(oldValue,(string)value) != 0) { +// eventBindingService.changeService.OnComponentChanging(component,Event); + events[Name] = value; +// eventBindingService.changeService.OnComponentChanged(component,Event,oldValue,value); + } + } + + public override bool ShouldSerializeValue(object component) + { + return false; + } + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/HelpService.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/HelpService.cs new file mode 100644 index 0000000000..42a4f85262 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/HelpService.cs @@ -0,0 +1,102 @@ +// created on 10/10/2002 at 16:13 + +using System; +using System.Drawing; +using System.Collections; +using System.Collections.Specialized; +using System.ComponentModel; +using System.ComponentModel.Design; +using System.Windows.Forms; +using System.Threading; +using Microsoft.Win32; + +using ICSharpCode.SharpDevelop.Gui; + +namespace ICSharpCode.FormDesigner.Services +{ + /// + /// BaseImlementation of IHelpService + /// + /// + /// created by - Niv + /// created on - 10/10/2002 11:44:46 + /// + public class HelpService : IHelpService + { + Hashtable LocalContexts = new Hashtable(); + ArrayList ContextAttributes = new ArrayList(); + + string f1Keyword = null; + string generalKeyword = null; + + + public HelpService() + { + } + + public void AddContextAttribute(string name, string value, HelpKeywordType keywordType) + { + switch (keywordType) { + case HelpKeywordType.F1Keyword: + f1Keyword = value; + return; + case HelpKeywordType.GeneralKeyword: + generalKeyword = value; + return; + } + } + + public void ClearContextAttributes() + { + } + + public IHelpService CreateLocalContext(HelpContextType contextType) + { + return this; + } + + public void RemoveContextAttribute(string name, string value) + { +// System.Console.WriteLine("child removeing {0} : {1}",name,value); +// object att = helpGUI.RemoveContextAttributeFromView(name,value); +// ContextAttributes.Remove(att);; + } + + public void RemoveLocalContext(IHelpService localContext) + { + LocalContexts.Remove(LocalContexts); + } + + public void ShowHelpFromKeyword(string helpKeyword) + { + if (helpKeyword == null) { + helpKeyword = f1Keyword; + } + string classStr = helpKeyword; + string memberStr = String.Empty; + + // show member help + if (helpKeyword == f1Keyword) { + int idx = helpKeyword.LastIndexOf('.'); + classStr = helpKeyword.Substring(0, idx); + memberStr = helpKeyword.Substring(idx + 1); + } + HelpBrowser helpBrowser = (HelpBrowser)WorkbenchSingleton.Workbench.GetPad(typeof(HelpBrowser)).PadContent; + helpBrowser.ShowHelpFromType(classStr, memberStr); + } + public void ShowGeneralHelp() + { + ShowHelpFromKeyword(generalKeyword); + } + public void ShowHelp() + { + ShowHelpFromKeyword(f1Keyword); + } + + public void ShowHelpFromUrl(string helpURL) + { + HelpBrowser helpBrowser = (HelpBrowser)WorkbenchSingleton.Workbench.GetPad(typeof(HelpBrowser)).PadContent; + helpBrowser.ShowHelpBrowser(helpURL); + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/MenuCommandService.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/MenuCommandService.cs new file mode 100644 index 0000000000..9d171bf9e2 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/MenuCommandService.cs @@ -0,0 +1,151 @@ +// +// +// +// +// +// + +using System; +using System.Diagnostics; +using System.Drawing; +using System.Collections; +using System.Collections.Specialized; +using System.ComponentModel; +using System.ComponentModel.Design; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Windows.Forms; +using System.Windows.Forms.Design; + +using ICSharpCode.Core; + +namespace ICSharpCode.FormDesigner.Services +{ + class MenuCommandService : IMenuCommandService + { + IServiceContainer serviceContainer; + + ArrayList commands = new ArrayList(); + ArrayList verbs = new ArrayList(); + + Control panel; + + public DesignerVerbCollection Verbs { + get { + DesignerVerbCollection verbCollection = CreateDesignerVerbCollection(); + verbCollection.AddRange((DesignerVerb[])verbs.ToArray(typeof(DesignerVerb))); + return verbCollection; + } + } + + public MenuCommandService(Control panel, IServiceContainer serviceContainer) + { + this.panel = panel; + this.serviceContainer = serviceContainer; + } + + public void AddCommand(System.ComponentModel.Design.MenuCommand command) + { + if (command != null && command.CommandID != null) { + if (!commands.Contains(command)) { + this.commands.Add(command); + } + } + } + + public void AddVerb(DesignerVerb verb) + { + if (verb != null) { + this.verbs.Add(verb); + } + } + + public void RemoveCommand(System.ComponentModel.Design.MenuCommand command) + { + if (command != null) { + commands.Remove(command.CommandID); + } + } + + public void RemoveVerb(DesignerVerb verb) + { + if (verb != null) { + verbs.Remove(verb); + } + } + + public bool GlobalInvoke(CommandID commandID) + { + System.ComponentModel.Design.MenuCommand menuCommand = FindCommand(commandID); + if (menuCommand == null) { + return false; + } + + menuCommand.Invoke(); + return true; + } + + public System.ComponentModel.Design.MenuCommand FindCommand(CommandID commandID) + { +// if (StringType.StrCmp(MenuUtilities.GetCommandNameFromCommandID(commandID), "", false) == 0 && StringType.StrCmp(commandID.ToString(), "74d21313-2aee-11d1-8bfb-00a0c90f26f7 : 12288", false) == 0) { +// return MenuUtilities.gPropertyGridResetCommand; +// } + + foreach (System.ComponentModel.Design.MenuCommand menuCommand in commands) { + if (menuCommand.CommandID == commandID) { + return menuCommand; + } + } + + foreach (DesignerVerb verb in Verbs) { + if (verb.CommandID == commandID) { + return verb; + } + } + return null; + } + + public void ShowContextMenu(CommandID menuID, int x, int y) + { + string contextMenuPath = "/SharpDevelop/FormsDesigner/ContextMenus/"; + + if (menuID == MenuCommands.ComponentTrayMenu) { + contextMenuPath += "ComponentTrayMenu"; + } else if (menuID == MenuCommands.ContainerMenu) { + contextMenuPath += "ContainerMenu"; + } else if (menuID == MenuCommands.SelectionMenu) { + contextMenuPath += "SelectionMenu"; + } else if (menuID == MenuCommands.TraySelectionMenu) { + contextMenuPath += "TraySelectionMenu"; + } else { + throw new Exception(); + } + Point p = panel.PointToClient(new Point(x, y)); + + + MenuService.ShowContextMenu(this, contextMenuPath, panel, p.X, p.Y); + } + + public DesignerVerbCollection CreateDesignerVerbCollection() + { + DesignerVerbCollection designerVerbCollection = new DesignerVerbCollection(); + + ISelectionService selectionService = (ISelectionService)serviceContainer.GetService(typeof(ISelectionService)); + IDesignerHost host = (IDesignerHost)serviceContainer.GetService(typeof(IDesignerHost)); + if (host != null && selectionService != null && selectionService.SelectionCount == 1) { + IComponent selectedComponent = selectionService.PrimarySelection as Component; + if (selectedComponent != null) { + IDesigner designer = host.GetDesigner((IComponent)selectedComponent); + if (designer != null) { + designerVerbCollection.AddRange(designer.Verbs); + } + } + + if (selectedComponent == host.RootComponent) { + designerVerbCollection.AddRange((DesignerVerb[])this.verbs.ToArray(typeof(DesignerVerb))); + } + } + return designerVerbCollection; + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/PropertyValueUIService.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/PropertyValueUIService.cs new file mode 100644 index 0000000000..d9859e08da --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/PropertyValueUIService.cs @@ -0,0 +1,56 @@ +// +// +// +// +//
      + +using System; +using System.ComponentModel; +using System.Drawing.Design; +using System.Collections; + +namespace ICSharpCode.FormDesigner.Services +{ + public class PropertyValueUIService : IPropertyValueUIService + { + PropertyValueUIHandler propertyValueUIHandler; + + public void AddPropertyValueUIHandler(PropertyValueUIHandler newHandler) + { + propertyValueUIHandler += newHandler; + } + + public PropertyValueUIItem[] GetPropertyUIValueItems(ITypeDescriptorContext context, PropertyDescriptor propDesc) + { + // Let registered handlers have a chance to add their UIItems + ArrayList propUIValues = new ArrayList(); + if (propertyValueUIHandler != null) { + propertyValueUIHandler(context,propDesc,propUIValues); + } + PropertyValueUIItem[] values = new PropertyValueUIItem[propUIValues.Count]; + if (propUIValues.Count > 0) { + propUIValues.CopyTo(values); + } + return values; + } + + public void NotifyPropertyValueUIItemsChanged() + { + OnPropertyUIValueItemsChanged(EventArgs.Empty); + } + + public void RemovePropertyValueUIHandler(PropertyValueUIHandler newHandler) + { + propertyValueUIHandler -= newHandler; + } + + protected virtual void OnPropertyUIValueItemsChanged(EventArgs e) + { + if (PropertyUIValueItemsChanged != null) { + PropertyUIValueItemsChanged(this, e); + } + } + + public event EventHandler PropertyUIValueItemsChanged; + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/ToolboxService.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/ToolboxService.cs new file mode 100644 index 0000000000..6855f8b52f --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/ToolboxService.cs @@ -0,0 +1,522 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.Collections.Specialized; +using System.Drawing.Design; +using System.ComponentModel.Design; + +namespace ICSharpCode.FormDesigner.Services +{ + public delegate void ToolboxEventHandler(object sender, ToolboxEventArgs tea); + + public class ToolboxEventArgs : EventArgs + { + ToolboxItem item = null; + string category = null; + IDesignerHost host = null; + + public ToolboxEventArgs(ToolboxItem item, string category, IDesignerHost host) + { + this.item = item; + this.category = category; + this.host = host; + } + + public ToolboxItem Item { + get { + return item; + } + } + + public string Category { + get { + return category; + } + } + + public IDesignerHost Host { + get { + return host; + } + } + } + + /// + /// Provides access to the toolbox in the development environment. + /// + /// + /// Provides designers with the ability to configure what tools + /// are available on the toolbox. + /// + public class ToolboxService : IToolboxService + { + static readonly string ALL_HOSTS = "_all_hosts_"; + static readonly string ALL_CATEGORIES = "_all_categories_"; + + IDictionary toolboxByCategory = new ListDictionary(); + IDictionary toolboxByHost = new ListDictionary(); + ArrayList toolboxItems = new ArrayList(); + + IDictionary creators = new HybridDictionary(); + IDictionary creatorsByHost = new ListDictionary(); + + string selectedCategory = null; + ToolboxItem selectedItem = null; + + // Constructor + public ToolboxService() + { + IList list = new ArrayList(); + toolboxByCategory.Add(ALL_CATEGORIES, list); + + list = new ArrayList(); + toolboxByHost.Add(ALL_HOSTS, list); + } + + // Properties + + /// + /// Gets the names of all the tool categories currently on the toolbox. + /// + /// + /// A + /// containing the tool categories. + /// + public CategoryNameCollection CategoryNames { + get { + string[] names = new string[toolboxByCategory.Count]; + toolboxByCategory.Keys.CopyTo(names, 0); + return new CategoryNameCollection(names); + } + } + + /// + /// Gets or sets the name of the currently selected tool category + /// from the toolbox. + /// + /// + /// The name of the currently selected category. + /// + /// + /// The implementation of this property's "set" accessor fires the + /// events and + /// . + /// + public string SelectedCategory { + get { + return selectedCategory; + } + set { + if (value != selectedCategory) { + FireSelectedCategoryChanging(); + selectedCategory = value; + FireSelectedCategoryChanged(); + } + } + } + + // Methods + /// + /// Adds a new toolbox item creator. + /// + /// + /// A + /// that can create a component when the toolbox item + /// is invoked. + /// + /// The data format this creator responds to. If a creator responds + /// to more than one format, call AddCreator more than once. It is + /// an error to add more than one creator for the same format. + /// + /// + /// A toolbox item creator is used to handle data formats other than + /// the standard native format of the toolbox service. Typically, the + /// standard toolbox service format should be used, because it provides + /// ample opportunity for customization in an object-oriented way. + /// However, there are times when a legacy data format may need to be + /// supported. A toolbox item creator is the mechanism by which these + /// legacy data formats may be converted into toolbox items. + /// + public void AddCreator(ToolboxItemCreatorCallback creator, string format) + { + AddCreator(creator, format, null); + } + + /// + /// Adds a new toolbox item creator. + /// + /// + /// A + /// that can create a component when the toolbox item + /// is invoked. + /// + /// The data format this creator responds to. If a creator responds + /// to more than one format, call AddCreator more than once. It is + /// an error to add more than one creator for the same format. + /// + /// + /// The designer host to associate with the creator. If this parameter + /// is set to a null reference (Nothing in Visual Basic), this creator + /// will be available to all designers. If a designer host is supplied, + /// the creator will only be available to designers using the specified + /// host. + /// + /// + /// A toolbox item creator is used to handle data formats other than + /// the standard native format of the toolbox service. Typically, the + /// standard toolbox service format should be used, because it provides + /// ample opportunity for customization in an object-oriented way. + /// However, there are times when a legacy data format may need to be + /// supported. A toolbox item creator is the mechanism by which these + /// legacy data formats may be converted into toolbox items. + /// + /// This implemetation does add the specified creator to a collection, + /// but at this time I have no idea what to do with it! + /// + /// + public void AddCreator(ToolboxItemCreatorCallback creator, string format, IDesignerHost host) + { + //System.Console.WriteLine("\tDefaultToolboxService:AddCreator({0}, {1}, {2})", + // creator, format, host); + if (host == null) { + creators.Add(format, creator); + } else { + IDictionary creatorsDict = (IDictionary)creatorsByHost[host]; + if (creatorsDict == null) { + creatorsDict = new HybridDictionary(); + creatorsByHost.Add(host, creatorsDict); + } + creatorsDict[format] =creator; + } + } + + void AddItemToToolbox(ToolboxItem toolboxItem, string category, IDesignerHost host) + { + toolboxItems.Add(toolboxItem); + + if (host != null) { + IList list = (IList)toolboxByHost[host]; + if (list == null) { + list = new ArrayList(); + toolboxByHost.Add(host, list); + } + list.Add(toolboxItem); + } else { + IList list = (IList)toolboxByHost[ALL_HOSTS]; + list.Add(toolboxItem); + } + + if (category != null) { + IList list = (IList)toolboxByCategory[category]; + if (list == null) { + list = new ArrayList(); + toolboxByCategory.Add(category, list); + } + list.Add(toolboxItem); + } else { + IList list = (IList)toolboxByCategory[ALL_CATEGORIES]; + list.Add(toolboxItem); + } + + FireToolboxItemAdded(toolboxItem, category, host); + } + + public void AddLinkedToolboxItem(ToolboxItem toolboxItem, string category, IDesignerHost host) + { + AddItemToToolbox(toolboxItem, category, host); + } + + public void AddLinkedToolboxItem(ToolboxItem toolboxItem, IDesignerHost host) + { + this.AddLinkedToolboxItem(toolboxItem, null, host); + } + + public void AddToolboxItem(ToolboxItem toolboxItem) + { + this.AddItemToToolbox(toolboxItem, null, null); + } + + public void AddToolboxItem(ToolboxItem toolboxItem, string category) + { + this.AddItemToToolbox(toolboxItem, category, null); + } + + public ToolboxItem DeserializeToolboxItem(object serializedObject) + { + if (serializedObject is System.Windows.Forms.IDataObject) { + if (((System.Windows.Forms.IDataObject)serializedObject).GetDataPresent(typeof(ToolboxItem))) { + return (ToolboxItem) ((System.Windows.Forms.IDataObject)serializedObject).GetData(typeof(ToolboxItem)); + } + } + return null; + } + + public ToolboxItem DeserializeToolboxItem(object serializedObject, IDesignerHost host) + { + if (serializedObject is System.Windows.Forms.IDataObject) { + if (((System.Windows.Forms.IDataObject)serializedObject).GetDataPresent(typeof(ToolboxItem))) { + ToolboxItem item = (ToolboxItem) ((System.Windows.Forms.IDataObject)serializedObject).GetData(typeof(ToolboxItem)); + if (host != null) { + ArrayList list = (ArrayList)toolboxByHost[host]; + if (list != null && list.Contains(item)) { + return item; + } + list = (ArrayList)toolboxByHost[ALL_HOSTS]; + if (list != null && list.Contains(item)) { + return item; + } + } + } + } + return null; + } + + public ToolboxItem GetSelectedToolboxItem() + { + return selectedItem; + } + + public ToolboxItem GetSelectedToolboxItem(IDesignerHost host) + { + IList list = (IList)toolboxByHost[host]; + if (list != null && list.Contains(selectedItem)) { + return selectedItem; + } + + list = (IList)toolboxByHost[ALL_HOSTS]; + if (list.Contains(selectedItem)) { + return selectedItem; + } + return null; + } + + public ToolboxItemCollection GetToolboxItems() + { + ToolboxItem[] items = new ToolboxItem[toolboxItems.Count]; + toolboxItems.CopyTo(items); + return new ToolboxItemCollection(items); + } + + public ToolboxItemCollection GetToolboxItems(string category) + { + if (category == null) { + category = ALL_CATEGORIES; + } + + ArrayList list = (ArrayList)toolboxByCategory[category]; + list.Add((ArrayList)toolboxByCategory[ALL_CATEGORIES]); + ToolboxItem[] items = new ToolboxItem[list.Count]; + toolboxItems.CopyTo(items); + return new ToolboxItemCollection(items); + } + + public ToolboxItemCollection GetToolboxItems(string category, IDesignerHost host) + { + if (category == null) { + category = ALL_CATEGORIES; + } + + ArrayList hList = null; + + if (host == null) { + hList = (ArrayList)toolboxByHost[ALL_HOSTS]; + } else { + hList = (ArrayList)toolboxByHost[host]; + } + + ArrayList cList = (ArrayList)toolboxByCategory[category]; + ArrayList list = new ArrayList(); + + foreach (ToolboxItem item in hList) { + if (cList.Contains(item)) { + list.Add(item); + } + } + + ToolboxItem[] items = new ToolboxItem[list.Count]; + toolboxItems.CopyTo(items); + return new ToolboxItemCollection(items); + } + + public ToolboxItemCollection GetToolboxItems(IDesignerHost host) + { + ArrayList hList = null; + + if(host == null) { + hList = (ArrayList)toolboxByHost[ALL_HOSTS]; + } else { + hList = (ArrayList)toolboxByHost[host]; + } + ArrayList list = (ArrayList)toolboxByHost[host]; + list.Add((ArrayList)toolboxByHost[ALL_HOSTS]); + ToolboxItem[] items = new ToolboxItem[list.Count]; + toolboxItems.CopyTo(items); + return new ToolboxItemCollection(items); + } + + public bool IsSupported(object serializedObject, ICollection filterAttributes) + { + return false; + } + + public bool IsSupported(object serializedObject, IDesignerHost host) + { + return false; + } + + public bool IsToolboxItem(object serializedObject) + { + if (serializedObject is System.Windows.Forms.IDataObject) { + if (((System.Windows.Forms.IDataObject)serializedObject).GetDataPresent(typeof(ToolboxItem))) { + return true; + } + } + return false; + } + + public bool IsToolboxItem(object serializedObject, IDesignerHost host) + { + // needed for Toolbox drag & drop + if (serializedObject is System.Windows.Forms.IDataObject) { + if (((System.Windows.Forms.IDataObject)serializedObject).GetDataPresent(typeof(ToolboxItem))) { + ToolboxItem item = (ToolboxItem) ((System.Windows.Forms.IDataObject)serializedObject).GetData(typeof(ToolboxItem)); + if (host != null) { + ArrayList list = (ArrayList)toolboxByHost[host]; + if (list != null && list.Contains(item)) + return true; + list = (ArrayList)toolboxByHost[ALL_HOSTS]; + if (list != null && list.Contains(item)) + return true; + } + } + } + return false; + } + + public void Refresh() + { + //System.Console.WriteLine("\tDefaultToolboxService:Refresh()"); + } + + public void RemoveCreator(string format) + { + } + + public void RemoveCreator(string format, IDesignerHost host) + { + } + + public void RemoveToolboxItem(ToolboxItem toolboxItem) + { + toolboxItems.Remove(toolboxItem); + ArrayList list = (ArrayList)toolboxByCategory[ALL_CATEGORIES]; + list.Remove(toolboxItem); + list = (ArrayList)toolboxByHost[ALL_HOSTS]; + list.Remove(toolboxItem); + FireToolboxItemRemoved(toolboxItem, null, null); + } + + public void RemoveToolboxItem(ToolboxItem toolboxItem, string category) + { + toolboxItems.Remove(toolboxItem); + ArrayList list = (ArrayList)toolboxByCategory[category]; + list.Remove(toolboxItem); + FireToolboxItemRemoved(toolboxItem, category, null); + } + + public void SelectedToolboxItemUsed() + { + FireSelectedItemUsed(); + } + + public object SerializeToolboxItem(ToolboxItem toolboxItem) + { + return null; + } + + public bool SetCursor() + { + if (selectedItem == null) { + return false; + } + if (selectedItem.DisplayName == "Pointer") { + return false; + } + return true; + } + + public void SetSelectedToolboxItem(ToolboxItem toolboxItem) + { + if (toolboxItem != selectedItem) { + FireSelectedItemChanging(); + selectedItem = toolboxItem; + FireSelectedItemChanged(); + } + } + + // Event helpers + void FireSelectedCategoryChanging() + { + if (SelectedCategoryChanging != null) { + SelectedCategoryChanging(this, EventArgs.Empty); + } + } + + void FireSelectedItemChanged() + { + if (SelectedItemChanged != null) { + SelectedItemChanged(this, EventArgs.Empty); + } + } + + void FireSelectedItemChanging() + { + if (SelectedItemChanging != null) { + SelectedItemChanging(this, EventArgs.Empty); + } + } + + void FireSelectedCategoryChanged() + { + if (SelectedCategoryChanged != null) { + SelectedCategoryChanged(this, EventArgs.Empty); + } + } + + void FireSelectedItemUsed() + { + if (SelectedItemUsed != null) { + SelectedItemUsed(this, EventArgs.Empty); + } + } + + void FireToolboxItemAdded(ToolboxItem item, string category, IDesignerHost host) + { + if (ToolboxItemAdded != null) { + ToolboxItemAdded(this, new ToolboxEventArgs(item, category, host)); + } + } + + void FireToolboxItemRemoved(ToolboxItem item, string category, IDesignerHost host) + { + if (ToolboxItemAdded != null) { + ToolboxItemRemoved(this, new ToolboxEventArgs(item, category, host)); + } + } + + // Events + public event EventHandler SelectedCategoryChanging; + public event EventHandler SelectedCategoryChanged; + public event EventHandler SelectedItemChanging; + public event EventHandler SelectedItemChanged; + public event EventHandler SelectedItemUsed; + public event ToolboxEventHandler ToolboxItemAdded; + public event ToolboxEventHandler ToolboxItemRemoved; + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/TypeDescriptorFilterService.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/TypeDescriptorFilterService.cs new file mode 100644 index 0000000000..aa984cdd0e --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/TypeDescriptorFilterService.cs @@ -0,0 +1,64 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.ComponentModel; +using System.ComponentModel.Design; + +namespace ICSharpCode.FormDesigner.Services +{ + public class TypeDescriptorFilterService : ITypeDescriptorFilterService + { + IDesignerFilter GetDesignerFilter(IComponent component) + { + ISite site = component.Site; + + if (site == null) { + return null; + } + + IDesignerHost host = (IDesignerHost)site.GetService(typeof(IDesignerHost)); + if (host == null) + return null; + return host.GetDesigner(component) as IDesignerFilter; + } + + +#region System.ComponentModel.Design.ITypeDescriptorFilterService interface implementation + public bool FilterProperties(System.ComponentModel.IComponent component, System.Collections.IDictionary properties) + { + IDesignerFilter designerFilter = GetDesignerFilter(component); + if (designerFilter != null) { + designerFilter.PreFilterProperties(properties); + designerFilter.PostFilterProperties(properties); + } + return false; + } + + public bool FilterEvents(System.ComponentModel.IComponent component, System.Collections.IDictionary events) + { + IDesignerFilter designerFilter = GetDesignerFilter(component); + if (designerFilter != null) { + designerFilter.PreFilterEvents(events); + designerFilter.PostFilterEvents(events); + } + return false; + } + + public bool FilterAttributes(System.ComponentModel.IComponent component, System.Collections.IDictionary attributes) + { + IDesignerFilter designerFilter = GetDesignerFilter(component); + if (designerFilter != null) { + designerFilter.PreFilterAttributes(attributes); + designerFilter.PostFilterAttributes(attributes); + } + return false; + } +#endregion + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/TypeResolutionService.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/TypeResolutionService.cs new file mode 100644 index 0000000000..bf7c00efe7 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/TypeResolutionService.cs @@ -0,0 +1,97 @@ +// +// +// +// +// +// + +using System; +using System.Reflection; +using System.Collections; +using System.Collections.Specialized; +using System.Drawing; +using System.ComponentModel; +using System.ComponentModel.Design; + +namespace ICSharpCode.FormDesigner.Services +{ + public class TypeResolutionService : ITypeResolutionService + { + public Assembly GetAssembly(AssemblyName name) + { + return GetAssembly(name, false); + } + + public Assembly GetAssembly(AssemblyName name, bool throwOnError) + { + return Assembly.Load(name); + } + + + public string GetPathOfAssembly(AssemblyName name) + { + Assembly assembly = GetAssembly(name); + if (assembly != null) { + return assembly.Location; + } + return null; + } + + public Type GetType(string name) + { + return GetType(name, false); + } + + public Type GetType(string name, bool throwOnError) + { + return GetType(name, throwOnError, false); + } + + public Type GetType(string name, bool throwOnError, bool ignoreCase) + { + if (name == null || name.Length == 0) { + return null; + } + Assembly lastAssembly = null; + foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies()) { + Type t = asm.GetType(name, throwOnError); + if (t != null) { + lastAssembly = asm; + } + } + if (lastAssembly != null) { + return lastAssembly.GetType(name, throwOnError, ignoreCase); + } + + Type type = Type.GetType(name, throwOnError, ignoreCase); + + // type lookup for typename, assembly, xyz style lookups + if (type == null) { + int idx = name.IndexOf(","); + if (idx > 0) { + string[] splitName = name.Split(','); + string typeName = splitName[0]; + string assemblyName = splitName[1].Substring(1); + Assembly assembly = null; + try { + assembly = Assembly.Load(assemblyName); + } catch (Exception e) { + Console.WriteLine(e); + } + if (assembly != null) { + type = assembly.GetType(typeName, throwOnError, ignoreCase); + } else { + type = Type.GetType(typeName, throwOnError, ignoreCase); + } + } + } + + return type; + } + + public void ReferenceAssembly(AssemblyName name) + { + Console.WriteLine("TODO!!! : Add Assembly reference : " + name); + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/UIService.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/UIService.cs new file mode 100644 index 0000000000..11e16899a0 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/UIService.cs @@ -0,0 +1,115 @@ +// +// +// +// +// +// + +using System; +using System.Drawing; +using System.Collections; +using System.Collections.Specialized; +using System.Windows.Forms; +using System.Windows.Forms.Design; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; + +namespace ICSharpCode.FormDesigner.Services +{ + public class UIService : IUIService + { + IDictionary styles = new Hashtable(); + + public IDictionary Styles { + get { + return styles; + } + } + + public UIService() + { + + styles["DialogFont"] = ResourceService.LoadFont("Tahoma", 10); + styles["HighlightColor"] = Color.LightYellow; + } + + public void SetUIDirty() + { + // TODO: Fixme! + } + + #region ComponentEditor functions + public bool CanShowComponentEditor(object component) + { + return false; + } + + public bool ShowComponentEditor(object component, IWin32Window parent) + { + throw new System.NotImplementedException("Cannot display component editor for " + component); + } + #endregion + + #region Dialog functions + public IWin32Window GetDialogOwnerWindow() + { + return WorkbenchSingleton.MainForm; + } + + public DialogResult ShowDialog(Form form) + { + return form.ShowDialog(GetDialogOwnerWindow()); + } + #endregion + + #region Show error functions + public void ShowError(Exception ex) + { + ShowError(ex, null); + } + + public void ShowError(string message) + { + ShowError(null, message); + } + + public void ShowError(Exception ex, string message) + { +// string msg = String.Empty; +// +// if (ex != null) { +// msg = "Exception occurred: " + ex.ToString() + "\n"; +// } +// +// if (message != null) { +// msg += message; +// } + + + MessageBox.Show(GetDialogOwnerWindow(), ex.Message, ResourceService.GetString("Global.ErrorText"), MessageBoxButtons.OK, MessageBoxIcon.Error); + } + #endregion + + #region Show Message functions + public void ShowMessage(string message) + { + ShowMessage(message, "", MessageBoxButtons.OK); + } + + public void ShowMessage(string message, string caption) + { + ShowMessage(message, caption, MessageBoxButtons.OK); + } + + public DialogResult ShowMessage(string message, string caption, MessageBoxButtons buttons) + { + return MessageBox.Show(GetDialogOwnerWindow(), message, caption, buttons); + } + #endregion + + public bool ShowToolWindow(Guid toolWindow) + { + return false; + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/ToolboxProvider.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/ToolboxProvider.cs new file mode 100644 index 0000000000..64b4057972 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/ToolboxProvider.cs @@ -0,0 +1,200 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.Collections; +using System.Drawing; +using System.Drawing.Design; +using System.Reflection; +using System.Windows.Forms; +using System.Windows.Forms.Design; +using System.Drawing.Printing; +using System.ComponentModel; +using System.ComponentModel.Design; +using System.ComponentModel.Design.Serialization; +using System.Xml; + +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Project; +using ICSharpCode.SharpDevelop.Internal.Undo; +using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor; + +using ICSharpCode.Core; + +using ICSharpCode.FormDesigner.Services; +using ICSharpCode.FormDesigner.Gui; + +using System.CodeDom; +using System.CodeDom.Compiler; + +using Microsoft.CSharp; +using Microsoft.VisualBasic; + +namespace ICSharpCode.FormDesigner +{ + public class ToolboxProvider + { + static ICSharpCode.FormDesigner.Services.ToolboxService toolboxService = null; + static ITypeResolutionService typeResolutionService = new TypeResolutionService(); + public static ArrayList SideTabs = new ArrayList(); + + static ComponentLibraryLoader componentLibraryLoader = new ComponentLibraryLoader(); + + public static ITypeResolutionService TypeResolutionService { + get { + return typeResolutionService; + } + } + + public static ComponentLibraryLoader ComponentLibraryLoader { + get { + return componentLibraryLoader; + } + } + public static ICSharpCode.FormDesigner.Services.ToolboxService ToolboxService { + get { + if (toolboxService == null) { + toolboxService = new ICSharpCode.FormDesigner.Services.ToolboxService(); + ReloadSideTabs(false); + toolboxService.SelectedItemUsed += new EventHandler(SelectedToolUsedHandler); + } + return toolboxService; + } + } + + static ToolboxProvider() + { + PadDescriptor pad = WorkbenchSingleton.Workbench.GetPad(typeof(SideBarView)); + pad.CreatePad(); + LoadToolbox(); + } + static string componentLibraryFile = "SharpDevelopControlLibrary.sdcl"; + + static string GlobalConfigFile { + get { + return PropertyService.DataDirectory + Path.DirectorySeparatorChar + + "options" + Path.DirectorySeparatorChar + + componentLibraryFile; + } + } + + static string UserConfigFile { + get { + return Path.Combine(PropertyService.ConfigDirectory, componentLibraryFile); + } + } + + public static void SaveToolbox() + { + componentLibraryLoader.SaveToolComponentLibrary(UserConfigFile); + } + + public static void LoadToolbox() + { + if (!componentLibraryLoader.LoadToolComponentLibrary(UserConfigFile)) { + if (!componentLibraryLoader.LoadToolComponentLibrary(GlobalConfigFile)) { + + MessageService.ShowWarning("${res:ICSharpCode.FormDesigner.ToolboxProvider.CantLoadSidbarComponentLibraryWarning}"); + } + } + } + + public static void ReloadSideTabs(bool doInsert) + { + bool reInsertTabs = false; + foreach(AxSideTab tab in SideTabs) { + if (SharpDevelopSideBar.SideBar.Tabs.Contains(tab)) { + SharpDevelopSideBar.SideBar.Tabs.Remove(tab); + reInsertTabs = true;; + } + } + reInsertTabs &= doInsert; + + SideTabs.Clear(); + foreach (Category category in componentLibraryLoader.Categories) { + if (category.IsEnabled) { + try { + SideTabDesigner newTab = new SideTabDesigner(SharpDevelopSideBar.SideBar, category, toolboxService); + SideTabs.Add(newTab); + } catch (Exception e) { + Console.WriteLine("Can't add tab : " + e); + } + } + } + SideTabDesigner customTab = new CustomComponentsSideTab(SharpDevelopSideBar.SideBar, "Custom Components", toolboxService); + SideTabs.Add(customTab); + if (reInsertTabs) { + foreach(AxSideTab tab in SideTabs) { + SharpDevelopSideBar.SideBar.Tabs.Add(tab); + } + } + } + + static void SelectedToolUsedHandler(object sender, EventArgs e) + { + AxSideTab tab = SharpDevelopSideBar.SideBar.ActiveTab; + + // try to add project reference + if (sender != null && sender is ICSharpCode.FormDesigner.Services.ToolboxService && !(tab is CustomComponentsSideTab)) { + ToolboxItem selectedItem = (sender as IToolboxService).GetSelectedToolboxItem(); + if (selectedItem != null) { + if (selectedItem.AssemblyName != null) { +// TODO: Project system... +// //We Put the assembly reference into the reference project folder +// IProject currentProject = ProjectService.CurrentProject; +// +// if (currentProject != null) { +// bool isAlreadyInRefFolder = false; +// +// if (currentProject.ProjectType == "C#" || currentProject.ProjectType == "VBNET") { +// foreach (string assembly in DefaultParserService.AssemblyList) { +// if (selectedItem.AssemblyName.FullName.StartsWith(assembly + ",")) { +// isAlreadyInRefFolder = true; +// break; +// } +// } +// } +// +// foreach (ProjectReference refproj in currentProject.ProjectReferences) { +// if (refproj.ReferenceType == ReferenceType.Assembly) { +// AssemblyName assemblyName = AssemblyName.GetAssemblyName(refproj.Reference); +// if (assemblyName != null && assemblyName.FullName == selectedItem.AssemblyName.FullName) { +// isAlreadyInRefFolder = true; +// break; +// } +// } else if (refproj.ReferenceType == ReferenceType.Gac) { +// if (refproj.Reference == selectedItem.AssemblyName.FullName) { +// isAlreadyInRefFolder = true; +// break; +// } +// } +// } +// +// if (!isAlreadyInRefFolder && !selectedItem.AssemblyName.FullName.StartsWith("System.")) { +// ToolComponent toolComponent = ToolboxProvider.ComponentLibraryLoader.GetToolComponent(selectedItem.AssemblyName.FullName); +// if (toolComponent == null || toolComponent.HintPath == null) { +// currentProject.ProjectReferences.Add(new ProjectReference(ReferenceType.Gac, selectedItem.AssemblyName.FullName)); +// } else { +// currentProject.ProjectReferences.Add(new ProjectReference(ReferenceType.Assembly, toolComponent.FileName)); +// } +// ICSharpCode.SharpDevelop.Gui.ProjectBrowser.ProjectBrowserView pbv = (ICSharpCode.SharpDevelop.Gui.ProjectBrowser.ProjectBrowserView)WorkbenchSingleton.Workbench.GetPad(typeof(ICSharpCode.SharpDevelop.Gui.ProjectBrowser.ProjectBrowserView)); +// pbv.UpdateCombineTree(); +// projectService.SaveCombine(); +// } +// } + } + } + } + + if (tab.Items.Count > 0) { + tab.ChoosedItem = tab.Items[0]; + } + SharpDevelopSideBar.SideBar.Refresh(); + } + } +} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/UndoRedo/ComponentAddedUndoAction.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/UndoRedo/ComponentAddedUndoAction.cs new file mode 100644 index 0000000000..ca77eecfe1 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/UndoRedo/ComponentAddedUndoAction.cs @@ -0,0 +1,66 @@ +//// +//// +//// +//// +//// +//// +// +//using System; +//using System.IO; +//using System.Collections; +//using System.Drawing; +//using System.Drawing.Design; +//using System.Reflection; +//using System.Windows.Forms; +//using System.Drawing.Printing; +//using System.ComponentModel; +//using System.ComponentModel.Design; +//using System.Xml; +//using System.ComponentModel.Design.Serialization; +//using ICSharpCode.SharpDevelop.Project; +//using ICSharpCode.SharpDevelop.Internal.Undo; +//using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor; +// +//using ICSharpCode.Core; +// +//using ICSharpCode.FormDesigner.Services; +//using ICSharpCode.TextEditor; +// +//using System.CodeDom; +//using System.CodeDom.Compiler; +// +//using Microsoft.CSharp; +//using Microsoft.VisualBasic; +// +//using ICSharpCode.SharpDevelop.Gui.ErrorDialogs; +//using ICSharpCode.FormDesigner.Gui; +// +//using ICSharpCode.SharpDevelop.Gui.OptionPanels; +// +//namespace ICSharpCode.FormDesigner { +// +// public class ComponentAddedUndoAction : ICSharpCode.SharpDevelop.Internal.Undo.IUndoableOperation +// { +// IDesignerHost host; +// +// Type componentType; +// string componentName; +// +// public ComponentAddedUndoAction(IDesignerHost host, ComponentEventArgs cea) +// { +// this.host = host; +// componentName = cea.Component.Site.Name; +// componentType = cea.Component.GetType(); +// } +// +// public void Undo() +// { +// host.DestroyComponent(host.Container.Components[componentName]); +// } +// +// public void Redo() +// { +// host.CreateComponent(componentType, componentName); +// } +// } +//} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/UndoRedo/ComponentChangedUndoAction.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/UndoRedo/ComponentChangedUndoAction.cs new file mode 100644 index 0000000000..8413bfb824 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/UndoRedo/ComponentChangedUndoAction.cs @@ -0,0 +1,190 @@ +//// +//// +//// +//// +//// +//// +// +//using System; +//using System.IO; +//using System.Collections; +//using System.Drawing; +//using System.Drawing.Design; +//using System.Reflection; +//using System.Windows.Forms; +//using System.Drawing.Printing; +//using System.ComponentModel; +//using System.ComponentModel.Design; +//using System.Xml; +//using System.ComponentModel.Design.Serialization; +//using ICSharpCode.SharpDevelop.Gui; +//using ICSharpCode.SharpDevelop.Project; +//using ICSharpCode.SharpDevelop.Internal.Undo; +//using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor; +// +//using ICSharpCode.Core; +// +//using ICSharpCode.FormDesigner.Services; +//using ICSharpCode.TextEditor; +// +//using System.CodeDom; +//using System.CodeDom.Compiler; +// +//using Microsoft.CSharp; +//using Microsoft.VisualBasic; +// +//using ICSharpCode.SharpDevelop.Gui.ErrorDialogs; +//using ICSharpCode.FormDesigner.Gui; +// +//using ICSharpCode.SharpDevelop.Gui.OptionPanels; +// +//namespace ICSharpCode.FormDesigner { +// +// public class ComponentChangedUndoAction : ICSharpCode.SharpDevelop.Internal.Undo.IUndoableOperation +// { +// IDesignerHost host; +// +// string componentName; +// MemberDescriptor member; +// bool isCollection; +// bool isComponentCollection; +// object oldValue = null; +// object newValue = null; +// +// public ComponentChangedUndoAction(IDesignerHost host, ComponentChangedEventArgs ea) +// { +// this.host = host; +// IComponent component = ea.Component as IComponent; +// if (component == null) { +// return; +// } +// +// this.member = ea.Member; +// this.componentName = component.Site.Name; +// +// isCollection = ea.NewValue is IList; +// +// if (isCollection) { +// IList oldCol = (IList)ea.OldValue; +// IList newCol = (IList)ea.NewValue; +// object[] newArray = new object[newCol.Count]; +// isComponentCollection = false; +// if (newCol.Count > 0) { +// isComponentCollection = newCol[0] is IComponent; +// } +// +// if (oldCol != null) { +// object[] oldArray = new object[oldCol.Count]; +// if (isComponentCollection) { +// int idx = 0; +// foreach (IComponent cmp in oldCol) { +// oldArray[idx++] = cmp.Site.Name; +// } +// } else { +// oldCol.CopyTo(oldArray, 0); +// } +// this.oldValue = oldArray; +// } +// if (isComponentCollection) { +// int idx = 0; +// foreach (IComponent cmp in newCol) { +// newArray[idx++] = cmp.Site.Name; +// } +// } else { +// newCol.CopyTo(newArray, 0); +// } +// +// this.newValue = newArray; +// } else { +// this.oldValue = ea.OldValue; +// this.newValue = ea.NewValue; +// } +// } +// +// public void Undo() +// { +// ComponentChangeService componentChangeService = (ComponentChangeService)host.GetService(typeof(System.ComponentModel.Design.IComponentChangeService)); +// +// IComponent component = host.Container.Components[componentName]; +// componentChangeService.OnComponentChanging(component, member); +// +// +// Type t = component.GetType(); +// +// PropertyInfo pInfo = t.Get(member.Name); +// if (isCollection) { +// IList coll = (IList)pInfo.GetValue(component, null); +// +// if (isComponentCollection) { +// int idx = 0; +// foreach (string name in (object[])oldValue) { +// try { +// if (coll is Menu.MenuItemCollection) { +// ((Menu.MenuItemCollection)coll).Add(idx++, (MenuItem)host.Container.Components[name]); +// } else { +// coll.Add(host.Container.Components[name]); +// } +// } catch (Exception e) { +// +// MessageService.ShowError(e, "Can't add " + name + " to collection."); +// } +// } +// } else { +// foreach (object o in (object[])oldValue) { +// coll.Add(o); +// } +// } +// } else { +// pInfo.SetValue(component, oldValue, null); +// } +// componentChangeService.OnComponentChanged(component, +// member, +// newValue, +// oldValue); +// } +// +// public void Redo() +// { +// ComponentChangeService componentChangeService = (ComponentChangeService)host.GetService(typeof(System.ComponentModel.Design.IComponentChangeService)); +// +// IComponent component = host.Container.Components[componentName]; +// componentChangeService.OnComponentChanging(component, member); +// Type t = component.GetType(); +// if (isCollection) { +// IList coll = (IList)t.InvokeMember(member.Name, +// BindingFlags.Public | +// BindingFlags.NonPublic | +// BindingFlags.Instance | +// BindingFlags.FlattenHierarchy | +// BindingFlags.GetProperty, +// null, +// component, +// null); +// coll.Clear(); +// if (isComponentCollection) { +// foreach (string name in (object[])newValue) { +// coll.Add(host.Container.Components[name]); +// } +// } else { +// foreach (object o in (object[])newValue) { +// coll.Add(o); +// } +// } +// } else { +// t.InvokeMember(member.Name, +// BindingFlags.Public | +// BindingFlags.NonPublic | +// BindingFlags.Instance | +// BindingFlags.FlattenHierarchy | +// BindingFlags.SetProperty, +// null, +// component, +// new object[] { newValue }); +// } +// componentChangeService.OnComponentChanged(component, +// member, +// oldValue, +// newValue); +// } +// } +//} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/UndoRedo/ComponentRemovedUndoAction.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/UndoRedo/ComponentRemovedUndoAction.cs new file mode 100644 index 0000000000..5b731b4a0c --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/UndoRedo/ComponentRemovedUndoAction.cs @@ -0,0 +1,89 @@ +//// +//// +//// +//// +//// +//// +// +//using System; +//using System.IO; +//using System.Collections; +//using System.Drawing; +//using System.Drawing.Design; +//using System.Reflection; +//using System.Windows.Forms; +//using System.Drawing.Printing; +//using System.ComponentModel; +//using System.ComponentModel.Design; +//using System.Xml; +//using System.ComponentModel.Design.Serialization; +//using ICSharpCode.SharpDevelop.Gui; +//using ICSharpCode.SharpDevelop.Project; +//using ICSharpCode.SharpDevelop.Internal.Undo; +//using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor; +// +// +//using ICSharpCode.FormDesigner.Services; +//using ICSharpCode.Core; +//using ICSharpCode.TextEditor; +// +//using System.CodeDom; +//using System.CodeDom.Compiler; +// +//using Microsoft.CSharp; +//using Microsoft.VisualBasic; +// +//using ICSharpCode.SharpDevelop.Gui.ErrorDialogs; +//using ICSharpCode.FormDesigner.Gui; +// +//using ICSharpCode.SharpDevelop.Gui.OptionPanels; +// +//namespace ICSharpCode.FormDesigner { +// +// public class ComponentRemovedUndoAction : ICSharpCode.SharpDevelop.Internal.Undo.IUndoableOperation +// { +// IDesignerHost host; +// +// Type componentType; +// string componentName; +// string parent; +// IComponent oldComponent; +// +// public ComponentRemovedUndoAction(IDesignerHost host, ComponentEventArgs cea, string parent) +// { +// this.host = host; +// oldComponent = cea.Component; +// componentName = cea.Component.Site.Name; +// componentType = cea.Component.GetType(); +// this.parent = parent; +// } +// +// public void Undo() +// { +// IComponent component = host.CreateComponent(componentType, componentName); +// if (parent != null && parent.Length > 0) { +// IComponent parentCtrl = host.Container.Components[parent]; +// ((Control)parentCtrl).Controls.Add((Control)component); +// } +// +// PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(oldComponent.GetType()); +// foreach (PropertyDescriptor pd in properties) { +// try { +// if (pd.ShouldSerializeValue(oldComponent) && pd.IsBrowsable) { +// if (pd.Name == "Visible") { +// continue; +// } +// pd.SetValue(component, pd.GetValue(oldComponent)); +// } +// } catch (Exception e) { +// Console.WriteLine(e); +// } +// } +// } +// +// public void Redo() +// { +// host.DestroyComponent(host.Container.Components[componentName]); +// } +// } +//} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/UndoRedo/SelectComponentsUndoAction.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/UndoRedo/SelectComponentsUndoAction.cs new file mode 100644 index 0000000000..6aa28ed851 --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/UndoRedo/SelectComponentsUndoAction.cs @@ -0,0 +1,71 @@ +//// +//// +//// +//// +//// +//// +// +//using System; +//using System.IO; +//using System.Collections; +//using System.Drawing; +//using System.Drawing.Design; +//using System.Reflection; +//using System.Windows.Forms; +//using System.Drawing.Printing; +//using System.ComponentModel; +//using System.ComponentModel.Design; +//using System.Xml; +//using System.ComponentModel.Design.Serialization; +//using ICSharpCode.SharpDevelop.Gui; +//using ICSharpCode.SharpDevelop.Project; +//using ICSharpCode.SharpDevelop.Internal.Undo; +//using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor; +// +// +//using ICSharpCode.FormDesigner.Services; +//using ICSharpCode.Core; +//using ICSharpCode.TextEditor; +// +//using System.CodeDom; +//using System.CodeDom.Compiler; +// +//using Microsoft.CSharp; +//using Microsoft.VisualBasic; +// +//using ICSharpCode.SharpDevelop.Gui.ErrorDialogs; +//using ICSharpCode.FormDesigner.Gui; +// +//using ICSharpCode.SharpDevelop.Gui.OptionPanels; +// +//namespace ICSharpCode.FormDesigner { +// +// public class SelectComponentsUndoAction : ICSharpCode.SharpDevelop.Internal.Undo.IUndoableOperation +// { +// IDesignerHost host; +// +// ArrayList oldComponentNames; +// ArrayList newComponentNames; +// +// public SelectComponentsUndoAction(IDesignerHost host, ArrayList oldComponentNames) +// { +// this.host = host; +// this.oldComponentNames = oldComponentNames; +// } +// +// public void SetNewSelection(ArrayList newComponentNames) +// { +// this.newComponentNames = newComponentNames; +// } +// +// public void Undo() +// { +// UndoHandler.SetSelectedComponentsPerName(host, oldComponentNames); +// } +// +// public void Redo() +// { +// UndoHandler.SetSelectedComponentsPerName(host, newComponentNames); +// } +// } +//} diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/UndoRedo/UndoHandler.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/UndoRedo/UndoHandler.cs new file mode 100644 index 0000000000..eb0073306e --- /dev/null +++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/UndoRedo/UndoHandler.cs @@ -0,0 +1,266 @@ +//// +//// +// +//using System; +//using System.IO; +//using System.Collections; +//using System.Drawing; +//using System.Drawing.Design; +//using System.Reflection; +//using System.Windows.Forms; +//using System.Drawing.Printing; +//using System.ComponentModel; +//using System.ComponentModel.Design; +//using System.Xml; +//using System.ComponentModel.Design.Serialization; +//using ICSharpCode.SharpDevelop.Gui; +//using ICSharpCode.SharpDevelop.Project; +//using ICSharpCode.SharpDevelop.Internal.Undo; +//using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor; +// +//using ICSharpCode.Core; +// +//using ICSharpCode.FormDesigner.Services; +//using ICSharpCode.TextEditor; +// +//using System.CodeDom; +//using System.CodeDom.Compiler; +// +//using Microsoft.CSharp; +//using Microsoft.VisualBasic; +// +//using ICSharpCode.SharpDevelop.Gui.ErrorDialogs; +//using ICSharpCode.FormDesigner.Gui; +// +//using ICSharpCode.SharpDevelop.Gui.OptionPanels; +// +//namespace ICSharpCode.FormDesigner { +// +// public class UndoHandler +// { +// IDesignerHost host; +// Hashtable sizePos = new Hashtable(); +// +// ICSharpCode.SharpDevelop.Internal.Undo.UndoStack undoStack = new ICSharpCode.SharpDevelop.Internal.Undo.UndoStack(); +// +// bool inUndoRedo = false; +// int transactionLevel = 0; +// int undoOperations = 0; +// +// public bool EnableUndo { +// get { +// return undoStack.CanUndo; +// } +// } +// public bool EnableRedo { +// get { +// return undoStack.CanRedo; +// } +// } +// +// public void Reset() +// { +// undoStack.ClearAll(); +// } +// +// // BUG ALERT !!! +// // WINDOWS FORMS DESIGNER BUG: +// // MOVE/RESIZE IN THE DESIGNER --> OldValue == NewValue in change event +// // THEREFORE A WORKAROUND IS NEEDED (AN UGLY WORKAROUND) +// // BUG ALERT 2 !!! +// // SOME MS CODERS DON'T KNOW THE DIFFERENCE BETWEEN REFERENCE AND VALUE !!! +// // CONTROL COLLECTION new/old values are the same !!!! +// void InitSizePosTable() +// { +// sizePos.Clear(); +// foreach (IComponent component in host.Container.Components) { +// Control ctrl = component as Control; +// if (ctrl != null) { +// object[] ctrlCol = new object[ctrl.Controls.Count]; +// ctrl.Controls.CopyTo(ctrlCol, 0); +// sizePos[component.Site.Name] = new object[] { ctrl.Location, ctrl.Size, ctrlCol}; +// } +// } +// } +// +// void ComponentChanged(object sender, ComponentChangedEventArgs ea) +// { +// if (inUndoRedo) { +// return; +// } +// if (ea.Component == null || (ea.Component is IComponent == false)) { +// return; +// } +// +// ++undoOperations; +// if (ea.Member != null) +// { +// if (sizePos[((IComponent)ea.Component).Site.Name] != null) +// { +// if (ea.Member.Name == "Location") +// { +// ea = new ComponentChangedEventArgs(ea.Component, ea.Member, ((object[])sizePos[((IComponent)ea.Component).Site.Name])[0], ea.NewValue); +// } +// else if (ea.Member.Name == "Size") +// { +// ea = new ComponentChangedEventArgs(ea.Component, ea.Member, ((object[])sizePos[((IComponent)ea.Component).Site.Name])[1], ea.NewValue); +// } +// else if (ea.Member.Name == "Controls") +// { +// ea = new ComponentChangedEventArgs(ea.Component, ea.Member, ((object[])sizePos[((IComponent)ea.Component).Site.Name])[2], ea.NewValue); +// } +// } +// } +// undoStack.Push(new ComponentChangedUndoAction(host, ea)); +// } +// +// void ComponentAdded(object sender, ComponentEventArgs ea) +// { +// if (inUndoRedo) { +// return; +// } +// ++undoOperations; +// undoStack.Push(new ComponentAddedUndoAction(host, ea)); +// } +// +// void ComponentRemoved(object sender, ComponentEventArgs ea) +// { +// if (inUndoRedo) { +// return; +// } +// ++undoOperations; +// string parentName = null; +// foreach (DictionaryEntry entry in sizePos) { +// object[] arr = (object[])entry.Value; +// if (arr[2] != null) { +// foreach (object ctr in ((IList)arr[2])) { +// if (ctr == ea.Component) { +// parentName = entry.Key.ToString(); +// } +// } +// } +// } +// undoStack.Push(new ComponentRemovedUndoAction(host, ea, parentName)); +// } +// SelectComponentsUndoAction selectComponentsUndoAction = null; +// +// void TransactionOpened(object sender, EventArgs e) +// { +// if (transactionLevel == 0) { +// undoOperations = 0; +// InitSizePosTable(); +// selectComponentsUndoAction = new SelectComponentsUndoAction(host, GetSelectedComponentNames(host)); +// undoStack.Push(selectComponentsUndoAction); +// } +// ++transactionLevel; +// } +// +// void TransactionClosed(object sender, DesignerTransactionCloseEventArgs e) +// { +// --transactionLevel; +// if (transactionLevel == 0 && undoOperations > 0) { +// if (selectComponentsUndoAction != null) { +// selectComponentsUndoAction.SetNewSelection(GetSelectedComponentNames(host)); +// selectComponentsUndoAction = null; +// } +// undoStack.UndoLast(undoOperations + 1); +// ((DefaultWorkbench)WorkbenchSingleton.Workbench).UpdateToolbars(); +// } +// } +// +// public static ArrayList GetSelectedComponentNames(IDesignerHost host) +// { +// ISelectionService selectionService = (ISelectionService)host.GetService(typeof(ISelectionService)); +// ArrayList names = new ArrayList(); +// +// foreach (IComponent component in selectionService.GetSelectedComponents()) { +// if (component.Site != null) { +// names.Add(component.Site.Name); +// } else { +// +// MessageService.ShowError(component + " has no site."); +// } +// } +// return names; +// } +// +// public static void SetSelectedComponentsPerName(IDesignerHost host, ArrayList names) +// { +// ArrayList components = new ArrayList(); +// +// foreach (string name in names) { +// if (host.Container.Components[name] != null) { +// components.Add(host.Container.Components[name]); +// } else { +// +// MessageService.ShowError("Can't select component : Component " + name + " not found."); +// } +// } +// +// ISelectionService selectionService = (ISelectionService)host.GetService(typeof(ISelectionService)); +// selectionService.SetSelectedComponents(components); +// } +// +// +// public void Attach(IDesignerHost host) +// { +// this.host = host; +// +// IComponentChangeService componentChangeService = (IComponentChangeService)host.GetService(typeof(IComponentChangeService)); +// componentChangeService.ComponentChanged += new ComponentChangedEventHandler(ComponentChanged); +// componentChangeService.ComponentAdded += new ComponentEventHandler(ComponentAdded); +// componentChangeService.ComponentRemoved += new ComponentEventHandler(ComponentRemoved); +// +// host.TransactionOpened += new EventHandler(TransactionOpened); +// host.TransactionClosed += new DesignerTransactionCloseEventHandler(TransactionClosed); +// } +// +// public void Detach() +// { +// IComponentChangeService componentChangeService = (IComponentChangeService)host.GetService(typeof(IComponentChangeService)); +// componentChangeService.ComponentChanged -= new ComponentChangedEventHandler(ComponentChanged); +// componentChangeService.ComponentAdded -= new ComponentEventHandler(ComponentAdded); +// componentChangeService.ComponentRemoved -= new ComponentEventHandler(ComponentRemoved); +// +// host.TransactionOpened -= new EventHandler(TransactionOpened); +// host.TransactionClosed -= new DesignerTransactionCloseEventHandler(TransactionClosed); +// } +// +// public void Undo() +// { +// inUndoRedo = true; +// try { +// undoStack.Undo(); +// UpdateSelectableObjects(); +// } catch (Exception e) { +// Console.WriteLine("UndoException : " + e.ToString()); +// } finally { +// inUndoRedo = false; +// } +// } +// +// public void Redo() +// { +// inUndoRedo = true; +// try { +// undoStack.Redo(); +// UpdateSelectableObjects(); +// } catch (Exception e) { +// Console.WriteLine("UndoException : " + e.ToString()); +// } finally { +// inUndoRedo = false; +// } +// } +// +// protected void UpdateSelectableObjects() +// { +// if (host != null) { +// PropertyPad.SetSelectableObjects(host.Container.Components); +// ISelectionService selectionService = (ISelectionService)host.GetService(typeof(ISelectionService)); +// if (selectionService != null) { +// ICSharpCode.SharpDevelop.Gui.PropertyPad.SetDesignableObject(selectionService.PrimarySelection); +// } +// } +// } +// } +//} diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Configuration/AssemblyInfo.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Configuration/AssemblyInfo.cs new file mode 100644 index 0000000000..0a023139e0 --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Configuration/AssemblyInfo.cs @@ -0,0 +1,32 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following +// attributes. +// +// change them to the information which is associated with the assembly +// you compile. + +[assembly: AssemblyTitle("Resource editor")] +[assembly: AssemblyDescription("Resource editor display binding for #develop")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("www.icsharpcode.net")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("(c) Mike Krueger/Markus Palme")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has following format : +// +// Major.Minor.Build.Revision +// +// You can specify all values by your own or you can build default build and revision +// numbers with the '*' character (the default): + +[assembly: AssemblyVersion("2.0.0.1")] + +// The following attributes specify the key for the sign of your assembly. See the +// .NET Framework documentation for more information about signing. +// This is not required, if you don't want signing let these attributes like they're. +[assembly: AssemblyDelaySign(false)] +[assembly: AssemblyKeyFile("")] diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.addin b/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.addin new file mode 100644 index 0000000000..40c00be6a8 --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.addin @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj b/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj new file mode 100644 index 0000000000..8e50efa532 --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj @@ -0,0 +1,80 @@ + + + Debug + AnyCPU + 8.0.41115 + 2.0 + {CBC6C247-747B-4908-B09A-4D2E0F640B6B} + ResourceEditor + Library + 4 + False + False + OnSuccessfulBuild + Library + + + True + True + True + True + ..\..\..\AddIns\DisplayBindings\ + False + + + True + True + True + True + ..\..\..\AddIns\DisplayBindings\ + False + + + + + + + + + + + + + + + + + + + UserControl + + + + + + + + UserControl + + + + + + + + + {2748AD25-9C63-4E12-877B-4DCE96FBED54} + ICSharpCode.SharpDevelop + False + + + {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} + ICSharpCode.Core + False + + + + + + + \ No newline at end of file diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj.user b/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj.user new file mode 100644 index 0000000000..746ae1f782 --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj.user @@ -0,0 +1,9 @@ + + + + + 8.0.41115 + ShowAllFiles + 0 + + \ No newline at end of file diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/AddNewFileCommand.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/AddNewFileCommand.cs new file mode 100644 index 0000000000..d5e0d9fc3f --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/AddNewFileCommand.cs @@ -0,0 +1,112 @@ +using System; +using System.IO; +using System.Drawing; +using System.Windows.Forms; +using System.Runtime.Serialization.Formatters.Binary; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop; + +namespace ResourceEditor +{ + class AddNewFileCommand : AbstractMenuCommand + { + public override void Run() + { + IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; + ResourceEditorControl editor = (ResourceEditorControl)window.ViewContent.Control; + + if(editor.ResourceList.WriteProtected) { + return; + } + + using (OpenFileDialog fdiag = new OpenFileDialog()) { + fdiag.AddExtension = true; + fdiag.Filter = "All files (*.*)|*.*"; + fdiag.Multiselect = true; + fdiag.CheckFileExists = true; + + if (fdiag.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) { + foreach (string filename in fdiag.FileNames) { + string oresname = Path.ChangeExtension(Path.GetFileName(filename), null); + if (oresname == "") oresname = "new"; + + string resname = oresname; + + int i = 0; + TestName: + if (editor.ResourceList.Resources.ContainsKey(resname)) { + if (i == 10) { + continue; + } + i++; + resname = oresname + "_" + i.ToString(); + goto TestName; + } + + object tmp = loadResource(filename); + if (tmp == null) { + continue; + } + editor.ResourceList.Resources.Add(resname, new ResourceItem(resname, tmp)); + + } + editor.ResourceList.InitializeListView(); + } + } + editor.ResourceList.OnChanged(); + } + + object loadResource(string name) + { + switch (Path.GetExtension(name).ToUpper()) { + case ".CUR": + try { + return new Cursor(name); + } catch { + return null; + } + case ".ICO": + try { + return new Icon(name); + } catch { + return null; + } + default: + // try to read a bitmap + try { + return new Bitmap(name); + } catch {} + + // try to read a serialized object + try { + Stream r = File.Open(name, FileMode.Open); + try { + BinaryFormatter c = new BinaryFormatter(); + object o = c.Deserialize(r); + r.Close(); + return o; + } catch { r.Close(); } + } catch { } + + // try to read a byte array :) + try { + FileStream s = new FileStream(name, FileMode.Open); + BinaryReader r = new BinaryReader(s); + Byte[] d = new Byte[(int) s.Length]; + d = r.ReadBytes((int) s.Length); + s.Close(); + return d; + } catch(Exception) { + + + string message = ResourceService.GetString("ResourceEditor.Messages.CantLoadResource"); + MessageService.ShowWarning(message + " " + name + "."); + } + break; + } + return null; + } + } +} diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/AddStringEntryCommand.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/AddStringEntryCommand.cs new file mode 100644 index 0000000000..f78fe21f98 --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/AddStringEntryCommand.cs @@ -0,0 +1,39 @@ +using System; +using System.Windows.Forms; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop; + +namespace ResourceEditor +{ + class AddStringCommand : AbstractMenuCommand + { + public override void Run() + { + IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; + ResourceEditorControl editor = (ResourceEditorControl)window.ViewContent.Control; + + if(editor.ResourceList.WriteProtected) { + return; + } + + int count = 1; + string newNameBase = " new string entry "; + string newName = newNameBase + count.ToString(); + string type = "System.String"; + + while(editor.ResourceList.Resources.ContainsKey(newName)) { + count++; + newName = newNameBase + count.ToString(); + } + + ResourceItem item = new ResourceItem(newName, ""); + editor.ResourceList.Resources.Add(newName, item); + ListViewItem lv = new ListViewItem(new string[] { newName, type, "" }, item.ImageIndex); + editor.ResourceList.Items.Add(lv); + editor.ResourceList.OnChanged(); + lv.BeginEdit(); + } + } +} diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/ClipboardCommands.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/ClipboardCommands.cs new file mode 100644 index 0000000000..fdfe9c2da6 --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/ClipboardCommands.cs @@ -0,0 +1,22 @@ +using System; +using System.Windows.Forms; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop; + +namespace ResourceEditor +{ + + class SelectAllCommand : AbstractMenuCommand + { + public override void Run() + { + IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; + ResourceEditWrapper editor = (ResourceEditWrapper)window.ViewContent; + + editor.SelectAll(); + } + } + +} diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/CopyResourceNameCommand.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/CopyResourceNameCommand.cs new file mode 100644 index 0000000000..2de23838b0 --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/CopyResourceNameCommand.cs @@ -0,0 +1,22 @@ +using System; +using System.Windows.Forms; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop; + +namespace ResourceEditor +{ + class CopyResourceNameCommand : AbstractMenuCommand + { + public override void Run() + { + IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; + ResourceEditorControl editor = (ResourceEditorControl)window.ViewContent.Control; + + if(editor.ResourceList.SelectedItems.Count > 0) { + Clipboard.SetDataObject(editor.ResourceList.SelectedItems[0].Text, true); + } + } + } +} diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/DeleteEntryCommand.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/DeleteEntryCommand.cs new file mode 100644 index 0000000000..ec4f80927e --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/DeleteEntryCommand.cs @@ -0,0 +1,20 @@ +using System; +using System.Windows.Forms; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop; + +namespace ResourceEditor +{ + class DeleteEntryCommand : AbstractMenuCommand + { + public override void Run() + { + IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; + ResourceEditWrapper editor = (ResourceEditWrapper)window.ViewContent; + + editor.Delete(); + } + } +} diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/RenameEntryCommand.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/RenameEntryCommand.cs new file mode 100644 index 0000000000..f552d3dffc --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/RenameEntryCommand.cs @@ -0,0 +1,23 @@ +using System; +using System.Windows.Forms; +using System.IO; +using System.Drawing; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop; +namespace ResourceEditor +{ + class RenameEntryCommand : AbstractMenuCommand + { + public override void Run() + { + IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; + ResourceEditorControl editor = (ResourceEditorControl)window.ViewContent.Control; + + if(editor.ResourceList.SelectedItems.Count != 0) { + editor.ResourceList.SelectedItems[0].BeginEdit(); + } + } + } +} diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/SaveEntryAsCommand.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/SaveEntryAsCommand.cs new file mode 100644 index 0000000000..bb826fe764 --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/SaveEntryAsCommand.cs @@ -0,0 +1,75 @@ +using System; +using System.Windows.Forms; +using System.IO; +using System.Drawing; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop; + +namespace ResourceEditor +{ + class SaveEntryAsCommand : AbstractMenuCommand + { + public override void Run() + { + IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; + ResourceEditorControl editor = (ResourceEditorControl)window.ViewContent.Control; + ResourceList list = editor.ResourceList; + + if(list.SelectedItems.Count != 1) { + return; + } + + string key = list.SelectedItems[0].Text; + if(! list.Resources.ContainsKey(key)) { + return; + } + + ResourceItem item = list.Resources[key]; + SaveFileDialog sdialog = new SaveFileDialog(); + sdialog.AddExtension = true; + sdialog.FileName = key; + + if (item.ResourceValue is Bitmap) { + sdialog.Filter = "Bitmap files (*.bmp)|*.bmp"; + sdialog.DefaultExt = ".bmp"; + } else if (item.ResourceValue is Icon) { + sdialog.Filter = "Icon files (*.ico)|*.ico"; + sdialog.DefaultExt = ".ico"; + } else if (item.ResourceValue is Cursor) { + sdialog.Filter = "Cursor files (*.cur)|*.cur"; + sdialog.DefaultExt = ".cur"; + } else if (item.ResourceValue is byte[]){ + sdialog.Filter = "Binary files (*.*)|*.*"; + sdialog.DefaultExt = ".bin"; + } else { + return; + } + + DialogResult dr = sdialog.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm); + sdialog.Dispose(); + if (dr != DialogResult.OK) { + return; + } + + try { + if (item.ResourceValue is Icon) { + FileStream fstr = new FileStream(sdialog.FileName, FileMode.Create); + ((Icon)item.ResourceValue).Save(fstr); + fstr.Close(); + } else if(item.ResourceValue is Image) { + Image img = (Image)item.ResourceValue; + img.Save(sdialog.FileName); + } else { + FileStream fstr = new FileStream(sdialog.FileName, FileMode.Create); + BinaryWriter wr = new BinaryWriter(fstr); + wr.Write((byte[])item.ResourceValue); + fstr.Close(); + } + } catch(Exception ex) { + MessageBox.Show(ex.Message, "Can't save resource to " + sdialog.FileName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + } + } +} diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/DisplayDefinition.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/DisplayDefinition.cs new file mode 100644 index 0000000000..1c93b0b435 --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/DisplayDefinition.cs @@ -0,0 +1,269 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.IO; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Gui; + +using ResourceEditor; +using ICSharpCode.Core; + +namespace ResourceEditor +{ + public class ResourceEditorDisplayBinding : IDisplayBinding + { + // IDisplayBinding interface + public bool CanCreateContentForFile(string fileName) + { + return Path.GetExtension(fileName).ToUpper() == ".RESOURCES" || + Path.GetExtension(fileName).ToUpper() == ".RESX"; + } + + public bool CanCreateContentForLanguage(string language) + { + return language == "ResourceFiles"; + } + + public IViewContent CreateContentForFile(string fileName) + { + ResourceEditWrapper di2 = new ResourceEditWrapper(); + di2.Load(fileName); + return di2; + } + + public IViewContent CreateContentForLanguage(string language, string content) + { + return new ResourceEditWrapper(); + } + } + + /// + /// This class describes the main functionality of a language codon + /// + public class ResourceEditWrapper : AbstractViewContent, IClipboardHandler + { + ResourceEditorControl resourceEditor = new ResourceEditorControl(); + + public override Control Control { + get { + return resourceEditor; + } + } + + public override bool IsReadOnly { + get { + return false; + } + } + + void SetDirty(object sender, EventArgs e) + { + IsDirty = true; + } + + public ResourceEditWrapper() + { + resourceEditor.ResourceList.Changed += new EventHandler(SetDirty); + } + + public override void RedrawContent() + { + } + + public override void Dispose() + { + resourceEditor.Dispose(); + } + + public override void Save() + { + Save(FileName); + } + + public override void Load(string filename) + { + resourceEditor.ResourceList.LoadFile(filename); + TitleName = Path.GetFileName(filename); + FileName = filename; + IsDirty = false; + } + + public override void Save(string filename) + { + OnSaving(EventArgs.Empty); + resourceEditor.ResourceList.SaveFile(filename); + TitleName = Path.GetFileName(filename); + FileName = filename; + IsDirty = false; + OnSaved(new SaveEventArgs(true)); + } + + + public bool EnableCut + { + get { + return resourceEditor.ResourceList.SelectedItems.Count > 0; + } + } + + public bool EnableCopy + { + get { + return resourceEditor.ResourceList.SelectedItems.Count > 0; + } + } + + public bool EnablePaste + { + get { + return true; + } + } + + public bool EnableDelete + { + get { + return resourceEditor.ResourceList.SelectedItems.Count > 0; + } + } + + public bool EnableSelectAll + { + get { + return true; + } + } + + public void Cut() + { + if (resourceEditor.ResourceList.WriteProtected || resourceEditor.ResourceList.SelectedItems.Count < 1) + return; + + Hashtable tmphash = new Hashtable(); + foreach (ListViewItem item in resourceEditor.ResourceList.SelectedItems) { + tmphash.Add(item.Text, resourceEditor.ResourceList.Resources[item.Text].ResourceValue); + resourceEditor.ResourceList.Resources.Remove(item.Text); + resourceEditor.ResourceList.Items.Remove(item); + } + resourceEditor.ResourceList.OnChanged(); + Clipboard.SetDataObject(tmphash); + } + + public void Copy() + { + if (resourceEditor.ResourceList.SelectedItems.Count < 1) { + return; + } + + Hashtable tmphash = new Hashtable(); + foreach (ListViewItem item in resourceEditor.ResourceList.SelectedItems) { + object resourceValue = GetClonedResource(resourceEditor.ResourceList.Resources[item.Text].ResourceValue); + tmphash.Add(item.Text, resourceValue); // copy a clone to clipboard + } + Clipboard.SetDataObject(tmphash); + } + + public void Paste() + { + if (resourceEditor.ResourceList.WriteProtected) { + return; + } + + IDataObject dob = Clipboard.GetDataObject(); + + if (dob.GetDataPresent(typeof(Hashtable).FullName)) { + Hashtable tmphash = (Hashtable)dob.GetData(typeof(Hashtable)); + foreach (DictionaryEntry entry in tmphash) { + + object resourceValue = GetClonedResource(entry.Value); + ResourceItem item; + + if (!resourceEditor.ResourceList.Resources.ContainsKey((string)entry.Key)) { + item = new ResourceItem(entry.Key.ToString(), resourceValue); + } else { + int count = 1; + string newNameBase = entry.Key.ToString() + " "; + string newName = newNameBase + count.ToString(); + + while(resourceEditor.ResourceList.Resources.ContainsKey(newName)) { + count++; + newName = newNameBase + count.ToString(); + } + item = new ResourceItem(newName, resourceValue); + } + resourceEditor.ResourceList.Resources.Add(item.Name, item); + resourceEditor.ResourceList.OnChanged(); + } + resourceEditor.ResourceList.InitializeListView(); + } + } + + /// + /// Clones a resource if the + /// is cloneable. + /// + /// A resource to clone. + /// A cloned resource if the object implements + /// the ICloneable interface, otherwise the + /// object. + object GetClonedResource(object resource) + { + object clonedResource = null; + + ICloneable cloneableResource = resource as ICloneable; + if (cloneableResource != null) { + clonedResource = cloneableResource.Clone(); + } else { + clonedResource = resource; + } + + return clonedResource; + } + + public void Delete() + { + if (resourceEditor.ResourceList.WriteProtected) { + return; + } + + if (resourceEditor.ResourceList.SelectedItems.Count==0) return; // nothing to do + DialogResult rc; + + try { + + rc=MessageBox.Show(ResourceService.GetString("ResourceEditor.DeleteEntry.Confirm"),ResourceService.GetString("ResourceEditor.DeleteEntry.Title"),MessageBoxButtons.OKCancel); + } + catch { + // when something happens - like resource is missing - try to use default message + rc = MessageBox.Show("Do you really want to delete?","Delete-Warning!",MessageBoxButtons.OKCancel); + } + + if (rc != DialogResult.OK) { + return; + } + + foreach (ListViewItem item in resourceEditor.ResourceList.SelectedItems) { + //// not clear why this check is present here - seems to be extra + ////if (item.Text != null) { + resourceEditor.ResourceList.Resources.Remove(item.Text); + resourceEditor.ResourceList.Items.Remove(item); + // and set dirty flag + resourceEditor.ResourceList.OnChanged(); + } + } + + public void SelectAll() + { + foreach (ListViewItem i in resourceEditor.ResourceList.Items) { + i.Selected=true; + } + } + } +} diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/AbstractImageView.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/AbstractImageView.cs new file mode 100644 index 0000000000..a1fc1f6405 --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/AbstractImageView.cs @@ -0,0 +1,82 @@ +// +// +// +// +// +// + +using System; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace ResourceEditor +{ + /// + /// This control is used for displaying images. Large images + /// can be scrolled. + /// + abstract class AbstractImageView : ScrollableControl, IResourceView + { + protected PictureBox pictureBox; + + public event ResourceChangedEventHandler ResourceChanged; + + public abstract ResourceItem ResourceItem + { + get; + set; + } + + public abstract bool WriteProtected + { + get; + set; + } + + protected void resized(object sender, EventArgs e) + { + adjustMargin(); + } + + protected AbstractImageView(ResourceItem item) + { + Dock = DockStyle.Fill; + AutoScroll = true; + pictureBox = new PictureBox(); + pictureBox.BorderStyle = BorderStyle.FixedSingle; + this.SizeChanged += new EventHandler(resized); + pictureBox.SizeMode = PictureBoxSizeMode.AutoSize; + Controls.Add(this.pictureBox); + ResourceItem = item; + } + + protected void OnResourceChanged(string resourceName, object val) + { + if(ResourceChanged != null) { + ResourceChanged(this, new ResourceEventArgs(resourceName, val)); + } + } + + protected void adjustMargin() + { + int deltaY = Height - pictureBox.Image.Height; + int deltaX = Width - pictureBox.Image.Width; + + if(deltaY > 0) { + pictureBox.Top = deltaY / 2; + } + pictureBox.Top = Math.Max(pictureBox.Top, 20); + + if(deltaX > 0) { + pictureBox.Left = deltaX / 2; + } + pictureBox.Left = Math.Max(pictureBox.Left, 20); + AutoScrollMargin = new Size(pictureBox.Left / 2, pictureBox.Top / 2); + } + } +} + diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/BinaryView.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/BinaryView.cs new file mode 100644 index 0000000000..3142cef360 --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/BinaryView.cs @@ -0,0 +1,129 @@ +// +// +// +// +// +// + +using System; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Windows.Forms; +using System.Text; +using System.Text.RegularExpressions; + +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace ResourceEditor +{ + /// + /// This class displays binary data. + /// + class BinaryView : UserControl, IResourceView + { + TextBox byteDataTextBox = new TextBox(); + CheckBox viewHexDumpCheckBox = new CheckBox(); + + ResourceItem resourceItem; + + ASCIIEncoding enc = new ASCIIEncoding(); + Regex rgex = new Regex(@"\p{Cc}"); + + public event ResourceChangedEventHandler ResourceChanged; + + public BinaryView(ResourceItem item) + { + + + byteDataTextBox.ReadOnly = true; + byteDataTextBox.Multiline = true; + + byteDataTextBox.Top = 24; + byteDataTextBox.Left = 0; + byteDataTextBox.Width = Width; + byteDataTextBox.Height = Height - 24; + byteDataTextBox.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom | AnchorStyles.Top; + byteDataTextBox.Font = ResourceService.LoadFont("Courier New", 10); + byteDataTextBox.ScrollBars = ScrollBars.Both; + byteDataTextBox.BackColor = SystemColors.Window; + + viewHexDumpCheckBox.Location = new Point(8, 4); + viewHexDumpCheckBox.Size = new Size(Width - 16, 16); + viewHexDumpCheckBox.Text = "Show as Hex Dump"; + viewHexDumpCheckBox.CheckedChanged += new EventHandler(CheckEvt); + + Controls.Add(byteDataTextBox); + Controls.Add(viewHexDumpCheckBox); + byteDataTextBox.Select(); + ResourceItem = item; + } + + public bool WriteProtected + { + get { + return true; + } + set { + } + } + + public ResourceItem ResourceItem + { + get { + return resourceItem; + } + set { + resourceItem = value; + showData(); + } + } + + protected void OnResourceChanged(string resourceName, object val) + { + if(ResourceChanged != null) { + ResourceChanged(this, new ResourceEventArgs(resourceName, val)); + } + } + + void showData() + { + byte[] bytes= (byte[])ResourceItem.ResourceValue; + string regText = enc.GetString(bytes).Replace("\x0", "."); + + if (viewHexDumpCheckBox.Checked) { + // Hex Dump + StringBuilder sb = new StringBuilder(); + + string byteString = BitConverter.ToString(bytes).Replace("-", " "); + string stext = rgex.Replace(regText, "."); + + byteDataTextBox.Text = ""; + int max = bytes.Length; + int last = max % 16; + + int i = 0; + int count = 16; + do { + sb.Append(String.Format("{0:X8} ", i) + + byteString.Substring(i*3, (count * 3) - 1) + " " + + stext.Substring(i, count) + "\r\n"); + i += 16; + if (i >= (max - last)) { + count = last; + } + } while (i < max); + byteDataTextBox.Text = sb.ToString(); + } else { + // Regular Text + byteDataTextBox.Text = regText; + } + } + + public void CheckEvt(object sender, EventArgs e) + { + showData(); + } + + } +} diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/BitmapView.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/BitmapView.cs new file mode 100644 index 0000000000..60caa06e4e --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/BitmapView.cs @@ -0,0 +1,83 @@ +// +// +// +// +// +// + +using System; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace ResourceEditor +{ + /// + /// This control is used for displaying images. Large images + /// can be scrolled. + /// + class BitmapView : AbstractImageView + { + ResourceItem resourceItem; + LinkLabel updateLinkLabel; + + public BitmapView(ResourceItem item) : base(item) + { + + updateLinkLabel = new LinkLabel(); + updateLinkLabel.Text = ResourceService.GetString("ResourceEditor.BitmapView.UpdateBitmap"); + updateLinkLabel.Location = new Point(4, 4); + updateLinkLabel.AutoSize = true; + updateLinkLabel.Click += new EventHandler(updateBitmapLinkLabelClick); + Controls.Add(updateLinkLabel); + } + + void updateBitmapLinkLabelClick(object sender, EventArgs e) + { + using(OpenFileDialog fileDialog = new OpenFileDialog()) + { + Bitmap bitmap; + fileDialog.AddExtension = true; + fileDialog.Filter = "All files (*.*)|*.*"; + fileDialog.CheckFileExists = true; + + if(fileDialog.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) { + try { + bitmap = new Bitmap(fileDialog.FileName); + } catch { + + MessageService.ShowWarning("Can't load bitmap file."); + return; + } + ResourceItem = new ResourceItem(resourceItem.Name, bitmap); + OnResourceChanged(resourceItem.Name, bitmap); + } + } + } + + public override bool WriteProtected + { + get { + return true; + } + set { + } + } + + public override ResourceItem ResourceItem + { + get { + return resourceItem; + } + set { + resourceItem = value; + pictureBox.Image = (Bitmap)value.ResourceValue; + adjustMargin(); + } + } + } +} + diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/BooleanView.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/BooleanView.cs new file mode 100644 index 0000000000..08c6c9dd40 --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/BooleanView.cs @@ -0,0 +1,71 @@ +using System; +using System.Windows.Forms; +using System.Drawing; + +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace ResourceEditor +{ + class BooleanView : Panel, IResourceView + { + public event ResourceChangedEventHandler ResourceChanged; + private ResourceItem resourceItem; + + private RadioButton trueRadioButton = new RadioButton(); + private RadioButton falseRadioButton = new RadioButton(); + + public BooleanView(ResourceItem item) + { + trueRadioButton.Location = new Point(4, 4); + trueRadioButton.Text = "True"; + trueRadioButton.CheckedChanged += new EventHandler(valueChanged); + Controls.Add(trueRadioButton); + + falseRadioButton.Location = new Point(4, 24); + falseRadioButton.Text = "False"; + falseRadioButton.CheckedChanged += new EventHandler(valueChanged); + Controls.Add(falseRadioButton); + + ResourceItem = item; + } + + public bool WriteProtected + { + get { + return ! trueRadioButton.Enabled; + } + set { + trueRadioButton.Enabled = ! value; + falseRadioButton.Enabled = ! value; + } + } + + public ResourceItem ResourceItem + { + get { + return resourceItem; + } + set { + this.resourceItem = value; + if((bool)resourceItem.ResourceValue == true) { + trueRadioButton.Checked = true; + } else { + falseRadioButton.Checked = true; + } + } + } + + protected void OnResourceChanged(string resourceName, object val) + { + if(ResourceChanged != null) { + ResourceChanged(this, new ResourceEventArgs(resourceName, val)); + } + } + + void valueChanged(object sender, EventArgs e) + { + OnResourceChanged(resourceItem.Name, trueRadioButton.Checked); + } + } +} diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/CursorView.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/CursorView.cs new file mode 100644 index 0000000000..d5a1e71e86 --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/CursorView.cs @@ -0,0 +1,58 @@ +// +// +// +// +// +// + +using System; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace ResourceEditor +{ + /// + /// This control is used for displaying images. Large images + /// can be scrolled. + /// + class CursorView : AbstractImageView + { + ResourceItem resourceItem; + + public CursorView(ResourceItem item) : base(item) + { + } + + public override bool WriteProtected + { + get { + return true; + } + set { + } + } + + public override ResourceItem ResourceItem + { + get { + return resourceItem; + } + set { + resourceItem = value; + + Cursor c = (Cursor)resourceItem.ResourceValue; + Bitmap a = new Bitmap(c.Size.Width, c.Size.Height); + Graphics g = Graphics.FromImage(a); + g.FillRectangle(new SolidBrush(Color.DarkCyan), 0, 0, a.Width, a.Height); + c.Draw(g, new Rectangle(0, 0, a.Width, a.Height)); + pictureBox.Image = a; + g.Dispose(); + adjustMargin(); + } + } + } +} diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/IResourceView.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/IResourceView.cs new file mode 100644 index 0000000000..473097f94f --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/IResourceView.cs @@ -0,0 +1,58 @@ +using System; +using System.IO; +using System.Drawing; +using System.Windows.Forms; + +namespace ResourceEditor +{ + delegate void ResourceChangedEventHandler(object sender, ResourceEventArgs e); + + interface IResourceView : IDisposable + { + bool WriteProtected + { + get; + set; + } + + ResourceItem ResourceItem + { + get; + set; + } + + event ResourceChangedEventHandler ResourceChanged; + } + + class ResourceEventArgs + { + string resourceName; + object resourceValue; + + public ResourceEventArgs(string resourceName, object resourceValue) + { + this.resourceName = resourceName; + this.resourceValue = resourceValue; + } + + public string ResourceName + { + get { + return resourceName; + } + set { + resourceName = value; + } + } + + public object ResourceValue + { + get { + return resourceValue; + } + set { + resourceValue = value; + } + } + } +} diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/IconView.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/IconView.cs new file mode 100644 index 0000000000..59f40744b4 --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/IconView.cs @@ -0,0 +1,52 @@ +// +// +// +// +// +// + +using System; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace ResourceEditor +{ + /// + /// This control is used for displaying images. Large images + /// can be scrolled. + /// + class IconView : AbstractImageView + { + ResourceItem resourceItem; + + public IconView(ResourceItem item) : base(item) + { + } + + public override bool WriteProtected + { + get { + return true; + } + set { + } + } + + public override ResourceItem ResourceItem + { + get { + return resourceItem; + } + set { + resourceItem = value; + pictureBox.Image = ((Icon)value.ResourceValue).ToBitmap(); + adjustMargin(); + } + } + } +} + diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceEditor.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceEditor.cs new file mode 100644 index 0000000000..0890008b3a --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceEditor.cs @@ -0,0 +1,142 @@ +using System; +using System.Windows.Forms; +using System.Drawing; + +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace ResourceEditor +{ + public class ResourceEditorControl : UserControl, IOwnerState + { + ResourceList resourceList; + Splitter splitter; + Panel panel; + IResourceView currentView = null; + + [Flags] + public enum ListViewViewState { + Nothing = 0, + ItemsSelected = 1, + } + + protected ListViewViewState internalState = ListViewViewState.Nothing; + + public System.Enum InternalState { + get { + return internalState; + } + } + + public ResourceList ResourceList + { + get { + return resourceList; + } + } + + public ResourceEditorControl() + { + InitializeComponent(); + resourceList.SelectedIndexChanged += new EventHandler(resourceListSelectionChanged); + } + + void resourceListSelectionChanged(object sender, EventArgs e) + { + if(resourceList.SelectedItems.Count == 0) { + internalState = ListViewViewState.Nothing; + showResource(null); + } else { + internalState = ListViewViewState.ItemsSelected; + } + + if(resourceList.SelectedItems.Count != 1) { + return; + } + object key = resourceList.SelectedItems[0].Text; + ResourceItem item = (ResourceItem)resourceList.Resources[key.ToString()]; + showResource(item); + } + + void InitializeComponent() + { + resourceList = new ResourceList(this); + resourceList.Dock = DockStyle.Top; + Controls.Add(resourceList); + + panel = new Panel(); + panel.BackColor = SystemColors.Info; + panel.Dock = DockStyle.Fill; + + splitter = new Splitter(); + splitter.Dock = DockStyle.Top; + + Controls.Add(panel); + Controls.Add(splitter); + Controls.Add(resourceList); + + this.Resize += new EventHandler(initializeLayout); + } + + void initializeLayout(object sender, EventArgs e) + { + resourceList.Height = Convert.ToInt32(0.75 * Height); + } + + void showView(Control viewer) + { + // remvoe old view if there is one + if(panel.Controls.Count == 1) { + Control control = panel.Controls[0]; + panel.Controls.Remove(control); + control.Dispose(); + } + + if(viewer != null) { + viewer.Dock = DockStyle.Fill; + panel.Controls.Add(viewer); + currentView = (IResourceView)viewer; + currentView.WriteProtected = resourceList.WriteProtected; + currentView.ResourceChanged += new ResourceChangedEventHandler(viewResourceChanged); + } + } + + void viewResourceChanged(object sender, ResourceEventArgs e) + { + resourceList.SetResourceValue(e.ResourceName, e.ResourceValue); + + + + } + + void showResource(ResourceItem item) + { + if(item == null) { + showView(null); + return; + } + if (item.ResourceValue is Icon) { + IconView iv = new IconView(item); + showView(iv); + } else if(item.ResourceValue is Bitmap) { + BitmapView bv = new BitmapView(item); + showView(bv); + } else if(item.ResourceValue is Cursor) { + CursorView cv = new CursorView(item); + showView(cv); + } else if(item.ResourceValue is string) { + TextView tv = new TextView(item); + showView(tv); + } else if(item.ResourceValue is byte[]) { + BinaryView bv = new BinaryView(item); + showView(bv); + } else if(item.ResourceValue is bool) { + BooleanView bv = new BooleanView(item); + showView(bv); + } else { + showView(null); + } + } + + } +} diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceItem.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceItem.cs new file mode 100644 index 0000000000..912a5b2e11 --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceItem.cs @@ -0,0 +1,93 @@ +using System; +using System.Drawing; +using System.Resources; +using System.Windows.Forms; + +namespace ResourceEditor +{ + public class ResourceItem + { + string name; + object resourceValue; + + public ResourceItem(string name, object resourceValue) + { + this.name = name; + this.resourceValue = resourceValue; + } + + public string Name + { + get { + return name; + } + set { + name = value; + } + } + + public object ResourceValue + { + get { + return resourceValue; + } + set { + resourceValue = value; + } + } + + public int ImageIndex + { + get { + switch(this.resourceValue.GetType().ToString()) { + case "System.String": + return 0; + case "System.Drawing.Bitmap": + return 1; + case "System.Drawing.Icon": + return 2; + case "System.Windows.Forms.Cursor": + return 3; + case "System.Byte[]": + return 4; + default: + return 5; + } + } + } + + public override string ToString() + { + string type = ResourceValue.GetType().FullName; + string tmp = String.Empty; + + switch (type) { + case "System.String": + tmp = ResourceValue.ToString(); + break; + case "System.Byte[]": + tmp = "[Size = " + ((byte[])ResourceValue).Length + "]"; + break; + case "System.Drawing.Bitmap": + Bitmap bmp = ResourceValue as Bitmap; + tmp = "[Width = " + bmp.Size.Width + ", Height = " + bmp.Size.Height + "]"; + break; + case "System.Drawing.Icon": + Icon icon = ResourceValue as Icon; + tmp = "[Width = " + icon.Size.Width + ", Height = " + icon.Size.Height + "]"; + break; + case "System.Windows.Forms.Cursor": + Cursor c = ResourceValue as Cursor; + tmp = "[Width = " + c.Size.Width + ", Height = " + c.Size.Height + "]"; + break; + case "System.Boolean": + tmp = ResourceValue.ToString(); + break; + default: + tmp = ResourceValue.ToString(); + break; + } + return tmp; + } + } +} diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceItemHashtable.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceItemHashtable.cs new file mode 100644 index 0000000000..4596397430 --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceItemHashtable.cs @@ -0,0 +1,321 @@ +using System; +using System.Collections; + +namespace ResourceEditor +{ + public class ResourceItemHashtable : IDictionary, ICollection, IEnumerable, ICloneable + { + protected Hashtable innerHash; + + #region "Constructors" + public ResourceItemHashtable() + { + innerHash = new Hashtable(); + } + + public ResourceItemHashtable(ResourceItemHashtable original) + { + innerHash = new Hashtable (original.innerHash); + } + + public ResourceItemHashtable(IDictionary dictionary) + { + innerHash = new Hashtable (dictionary); + } + + public ResourceItemHashtable(int capacity) + { + innerHash = new Hashtable(capacity); + } + + public ResourceItemHashtable(IDictionary dictionary, float loadFactor) + { + innerHash = new Hashtable(dictionary, loadFactor); + } + + public ResourceItemHashtable(IHashCodeProvider codeProvider, IComparer comparer) + { + innerHash = new Hashtable (codeProvider, comparer); + } + + public ResourceItemHashtable(int capacity, int loadFactor) + { + innerHash = new Hashtable(capacity, loadFactor); + } + + public ResourceItemHashtable(IDictionary dictionary, IHashCodeProvider codeProvider, IComparer comparer) + { + innerHash = new Hashtable (dictionary, codeProvider, comparer); + } + + public ResourceItemHashtable(int capacity, IHashCodeProvider codeProvider, IComparer comparer) + { + innerHash = new Hashtable (capacity, codeProvider, comparer); + } + + public ResourceItemHashtable(IDictionary dictionary, float loadFactor, IHashCodeProvider codeProvider, IComparer comparer) + { + innerHash = new Hashtable (dictionary, loadFactor, codeProvider, comparer); + } + + public ResourceItemHashtable(int capacity, float loadFactor, IHashCodeProvider codeProvider, IComparer comparer) + { + innerHash = new Hashtable (capacity, loadFactor, codeProvider, comparer); + } + #endregion + + #region Implementation of IDictionary + public ResourceItemHashtableEnumerator GetEnumerator() + { + return new ResourceItemHashtableEnumerator(this); + } + + System.Collections.IDictionaryEnumerator IDictionary.GetEnumerator() + { + return new ResourceItemHashtableEnumerator(this); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + public void Remove(string key) + { + innerHash.Remove (key); + } + + void IDictionary.Remove(object key) + { + Remove ((string)key); + } + + public bool Contains(string key) + { + return innerHash.Contains(key); + } + + bool IDictionary.Contains(object key) + { + return Contains((string)key); + } + + public void Clear() + { + innerHash.Clear(); + } + + public void Add(string key, ResourceItem value) + { + innerHash.Add (key, value); + } + + void IDictionary.Add(object key, object value) + { + Add ((string)key, (ResourceItem)value); + } + + public bool IsReadOnly + { + get + { + return innerHash.IsReadOnly; + } + } + + public ResourceItem this[string key] + { + get + { + return (ResourceItem) innerHash[key]; + } + set + { + innerHash[key] = value; + } + } + + object IDictionary.this[object key] + { + get + { + return this[(string)key]; + } + set + { + this[(string)key] = (ResourceItem)value; + } + } + + public System.Collections.ICollection Values + { + get + { + return innerHash.Values; + } + } + + public System.Collections.ICollection Keys + { + get + { + return innerHash.Keys; + } + } + + public bool IsFixedSize + { + get + { + return innerHash.IsFixedSize; + } + } + #endregion + + #region Implementation of ICollection + public void CopyTo(System.Array array, int index) + { + innerHash.CopyTo (array, index); + } + + public bool IsSynchronized + { + get + { + return innerHash.IsSynchronized; + } + } + + public int Count + { + get + { + return innerHash.Count; + } + } + + public object SyncRoot + { + get + { + return innerHash.SyncRoot; + } + } + #endregion + + #region Implementation of ICloneable + public ResourceItemHashtable Clone() + { + ResourceItemHashtable clone = new ResourceItemHashtable(); + clone.innerHash = (Hashtable) innerHash.Clone(); + + return clone; + } + + object ICloneable.Clone() + { + return Clone(); + } + #endregion + + #region "HashTable Methods" + public bool ContainsKey (string key) + { + return innerHash.ContainsKey(key); + } + + public bool ContainsValue (ResourceItem value) + { + return innerHash.ContainsValue(value); + } + + public static ResourceItemHashtable Synchronized(ResourceItemHashtable nonSync) + { + ResourceItemHashtable sync = new ResourceItemHashtable(); + sync.innerHash = Hashtable.Synchronized(nonSync.innerHash); + + return sync; + } + #endregion + + internal Hashtable InnerHash + { + get + { + return innerHash; + } + } + } + + public class ResourceItemHashtableEnumerator : IDictionaryEnumerator + { + private IDictionaryEnumerator innerEnumerator; + + internal ResourceItemHashtableEnumerator (ResourceItemHashtable enumerable) + { + innerEnumerator = enumerable.InnerHash.GetEnumerator(); + } + + #region Implementation of IDictionaryEnumerator + public string Key + { + get + { + return (string)innerEnumerator.Key; + } + } + + object IDictionaryEnumerator.Key + { + get + { + return Key; + } + } + + public ResourceItem Value + { + get + { + return (ResourceItem)innerEnumerator.Value; + } + } + + object IDictionaryEnumerator.Value + { + get + { + return Value; + } + } + + public System.Collections.DictionaryEntry Entry + { + get + { + return innerEnumerator.Entry; + } + } + #endregion + + #region Implementation of IEnumerator + public void Reset() + { + innerEnumerator.Reset(); + } + + public bool MoveNext() + { + return innerEnumerator.MoveNext(); + } + + public object Current + { + get + { + return innerEnumerator.Current; + } + } + #endregion + } +} diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceList.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceList.cs new file mode 100644 index 0000000000..e06862a401 --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceList.cs @@ -0,0 +1,245 @@ +// +// +// +// +// +// + +using System; +using System.IO; +using System.ComponentModel; +using System.Windows.Forms; +using System.Diagnostics; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Collections; +using System.Resources; +using System.Runtime.Serialization.Formatters.Binary; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Internal.Undo; +using System.Drawing.Printing; + +namespace ResourceEditor +{ + /// + /// This class allows viewing and editing of windows resource files + /// both in XML as in normal format. + /// + public class ResourceList : ListView + { + ColumnHeader name = new ColumnHeader(); + ColumnHeader type = new ColumnHeader(); + ColumnHeader content = new ColumnHeader(); + + ResourceItemHashtable resources = new ResourceItemHashtable(); + ImageList images = new ImageList(); + + UndoStack undoStack = null; + bool writeProtected = false; + + public event EventHandler Changed; + + public bool WriteProtected + { + get { + return writeProtected; + } + set { + writeProtected = value; + } + } + + public ResourceItemHashtable Resources + { + get { + return resources; + } + } + + public UndoStack UndoStack + { + get { + return undoStack; + } + } + + public PrintDocument PrintDocument + { + get { + return null; + } + } + + public ResourceList(ResourceEditorControl editor) + { + undoStack = new UndoStack(); + + + + name.Text = ResourceService.GetString("ResourceEditor.ResourceEdit.NameColumn"); + name.Width = 250; + + type.Text = ResourceService.GetString("ResourceEditor.ResourceEdit.TypeColumn"); + type.Width = 170; + + content.Text = ResourceService.GetString("ResourceEditor.ResourceEdit.ContentColumn"); + content.Width = 300; + + Columns.AddRange(new ColumnHeader[] {name, type, content}); + + FullRowSelect = true; + AutoArrange = true; + Alignment = ListViewAlignment.Left; + View = View.Details; + GridLines = true; + LabelEdit = true; + Sorting = SortOrder.Ascending; + Dock = DockStyle.Fill; + HideSelection = false; + + BorderStyle = System.Windows.Forms.BorderStyle.None; + + images.Images.Add(ResourceService.GetIcon("Icons.16x16.ResourceEditor.string")); + images.Images.Add(ResourceService.GetIcon("Icons.16x16.ResourceEditor.bmp")); + images.Images.Add(ResourceService.GetIcon("Icons.16x16.ResourceEditor.icon")); + images.Images.Add(ResourceService.GetIcon("Icons.16x16.ResourceEditor.cursor")); + images.Images.Add(ResourceService.GetIcon("Icons.16x16.ResourceEditor.bin")); + images.Images.Add(ResourceService.GetIcon("Icons.16x16.ResourceEditor.obj")); + SmallImageList = images; + + AfterLabelEdit += new LabelEditEventHandler(afterLabelEdit); + + + ContextMenuStrip = MenuService.CreateContextMenu(editor, "/SharpDevelop/ResourceEdtior/ResourceList/ContextMenu"); + } + + public void LoadFile(string filename) + { + Stream s = File.OpenRead(filename); + switch (Path.GetExtension(filename).ToLower()) { + case ".resx": + ResXResourceReader rx = new ResXResourceReader(s); + IDictionaryEnumerator n = rx.GetEnumerator(); + while (n.MoveNext()) + if (!resources.ContainsKey(n.Key.ToString())) + resources.Add(n.Key.ToString(), new ResourceItem(n.Key.ToString(), n.Value)); + + rx.Close(); + break; + case ".resources": + //// new file will fail here - so we have to ignore exception(s) + ResourceReader rr=null; + try { + rr = new ResourceReader(s); + foreach (DictionaryEntry entry in rr) { + if (!resources.ContainsKey(entry.Key.ToString())) + resources.Add(entry.Key.ToString(), new ResourceItem(entry.Key.ToString(), entry.Value)); + } + } + catch {} + finally { + if (rr != null) { + rr.Close(); + } + } + break; + } + s.Close(); + InitializeListView(); + } + + public void SaveFile(string filename) + { + Debug.Assert(!writeProtected, "ICSharpCode.SharpDevelop.Gui.Edit.Resource.ResourceEdit.SaveFile(string filename) : trying to save a write protected file"); + switch (Path.GetExtension(filename).ToUpper()) { + + // write XML resource + case ".RESX": + ResXResourceWriter rxw = new ResXResourceWriter(filename); + foreach (DictionaryEntry entry in resources) { + if (entry.Value != null) { + ResourceItem item = (ResourceItem)entry.Value; + rxw.AddResource(item.Name, item.ResourceValue); + } + } + rxw.Generate(); + rxw.Close(); + break; + + // write default resource + default: + ResourceWriter rw = new ResourceWriter(filename); + foreach (DictionaryEntry entry in resources) { + ResourceItem item = (ResourceItem)entry.Value; + rw.AddResource(item.Name, item.ResourceValue); + } + rw.Generate(); + rw.Close(); + break; + } + } + + public void SetResourceValue(string resourceName, object resourceValue) + { + ResourceItem item = ((ResourceItem)Resources[resourceName]); + item.ResourceValue = resourceValue; + SelectedItems[0].SubItems[2].Text = item.ToString(); + OnChanged(); + } + + public void OnChanged() + { + if (Changed != null) { + Changed(this, null); + } + } + + void afterLabelEdit(object sender, LabelEditEventArgs e) + { + if (writeProtected) { + e.CancelEdit = true; + return; + } + string oldName = this.Items[e.Item].Text; + string newName = e.Label; + + if(newName == null) { + // no change + return; + } + + ResourceItem item = (ResourceItem)resources[oldName]; + + if(resources.ContainsKey(newName)) { + + MessageService.ShowWarning("${res:ResourceEditor.ResourceList.KeyAlreadyDefinedWarning}"); + e.CancelEdit = true; + return; + } + + resources.Remove(oldName); + item.Name = newName; + resources.Add(newName, item); + OnChanged(); + } + + public void InitializeListView() + { + BeginUpdate(); + Items.Clear(); + + foreach (DictionaryEntry entry in resources) { + ResourceItem item = (ResourceItem)entry.Value; + + string tmp = item.ToString(); + string type = item.ResourceValue.GetType().FullName; + + ListViewItem lv = new ListViewItem(new String[] {item.Name, type, tmp}, item.ImageIndex); + Items.Add(lv); + } + EndUpdate(); + } + } +} diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/TextView.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/TextView.cs new file mode 100644 index 0000000000..074ffe901e --- /dev/null +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/TextView.cs @@ -0,0 +1,56 @@ +using System; +using System.Windows.Forms; +using System.Drawing; + +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace ResourceEditor +{ + class TextView : TextBox, IResourceView + { + public event ResourceChangedEventHandler ResourceChanged; + private ResourceItem resourceItem; + + public TextView(ResourceItem item) + { + this.Multiline = true; + this.ResourceItem = item; + this.ScrollBars = ScrollBars.Both; + this.TextChanged += new EventHandler(textChanged); + } + + public bool WriteProtected + { + get { + return ! Enabled; + } + set { + Enabled = ! value; + } + } + + public ResourceItem ResourceItem + { + get { + return resourceItem; + } + set { + resourceItem = value; + Text = (string)value.ResourceValue; + } + } + + protected void OnResourceChanged(string resourceName, object val) + { + if(ResourceChanged != null) { + ResourceChanged(this, new ResourceEventArgs(resourceName, val)); + } + } + + void textChanged(object sender, EventArgs e) + { + OnResourceChanged(resourceItem.Name, Text); + } + } +} diff --git a/src/AddIns/Misc/AddinScout/AddinScout.sln b/src/AddIns/Misc/AddinScout/AddinScout.sln new file mode 100644 index 0000000000..8f87029910 --- /dev/null +++ b/src/AddIns/Misc/AddinScout/AddinScout.sln @@ -0,0 +1,6 @@ +Microsoft Visual Studio Solution File, Format Version 9.00 +# SharpDevelop 2.0.0.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddinScout", "src\AddinScout.csproj", "{4b8f0f98-8be1-402b-aa8b-c8d548577b38}" +EndProject +Global +EndGlobal diff --git a/src/AddIns/Misc/AddinScout/Project/AddinScout.csproj b/src/AddIns/Misc/AddinScout/Project/AddinScout.csproj new file mode 100644 index 0000000000..b1a9013533 --- /dev/null +++ b/src/AddIns/Misc/AddinScout/Project/AddinScout.csproj @@ -0,0 +1,90 @@ + + + Debug + AnyCPU + 8.0.40607 + 2.0 + {4b8f0f98-8be1-402b-aa8b-c8d548577b38} + NewProject + AddinScout + Library + + + 4 + + + + + False + False + OnSuccessfulBuild + + + + + + + True + True + False + True + + + ..\..\..\..\..\AddIns\AddIns\Misc\AddinScout\ + False + + + True + True + False + True + + + ..\..\..\AddIns\Misc\AddinScout\ + False + + + + + + + + + + + + + + ..\..\..\..\..\bin\SharpDevelop.Base.dll + False + + + ..\..\..\..\..\bin\ICSharpCode.Core.dll + False + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Misc/AddinScout/Project/AddinScout.csproj.user b/src/AddIns/Misc/AddinScout/Project/AddinScout.csproj.user new file mode 100644 index 0000000000..e956ed7735 --- /dev/null +++ b/src/AddIns/Misc/AddinScout/Project/AddinScout.csproj.user @@ -0,0 +1,13 @@ + + + ..\..\..\..\..\bin\SharpDevelop.exe + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Misc/AddinScout/Project/Resources/AddInScout.addin b/src/AddIns/Misc/AddinScout/Project/Resources/AddInScout.addin new file mode 100644 index 0000000000..e09fe62aa1 --- /dev/null +++ b/src/AddIns/Misc/AddinScout/Project/Resources/AddInScout.addin @@ -0,0 +1,21 @@ + + + + + + + + + + + + + diff --git a/src/AddIns/Misc/AddinScout/Project/Src/AddInScoutCommand.cs b/src/AddIns/Misc/AddinScout/Project/Src/AddInScoutCommand.cs new file mode 100644 index 0000000000..d431e4e06b --- /dev/null +++ b/src/AddIns/Misc/AddinScout/Project/Src/AddInScoutCommand.cs @@ -0,0 +1,15 @@ +using System; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop; + +namespace AddInScout +{ + public class AddInScoutCommand : AbstractMenuCommand + { + public override void Run() + { + AddInScoutViewContent vw = new AddInScoutViewContent(); + WorkbenchSingleton.Workbench.ShowView(vw); + } + } +} diff --git a/src/AddIns/Misc/AddinScout/Project/Src/AddInScoutViewContent.cs b/src/AddIns/Misc/AddinScout/Project/Src/AddInScoutViewContent.cs new file mode 100644 index 0000000000..7f9407f07d --- /dev/null +++ b/src/AddIns/Misc/AddinScout/Project/Src/AddInScoutViewContent.cs @@ -0,0 +1,131 @@ +using System; +using System.IO; +using System.Collections; +using System.Windows.Forms; +using System.Drawing; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; + + +namespace AddInScout +{ + public class AddInScoutViewContent : AbstractViewContent + { + Control control = null; + + public override Control Control { + get { + return control; + } + } + + public override bool IsViewOnly { + get { + return true; + } + } + + public override void Dispose() + { + control.Dispose(); + } + + public override void Load(string filename) + { + } + + AddInDetailsPanel addInDetailsPanel = new AddInDetailsPanel(); + CodonListPanel codonListPanel = new CodonListPanel(); + + public AddInScoutViewContent() : base("AddIn Scout") + { + Panel p = new Panel(); + p.Dock = DockStyle.Fill; + p.BorderStyle = BorderStyle.FixedSingle; + + Panel RightPanel = new Panel(); + RightPanel.Dock = DockStyle.Fill; + p.Controls.Add(RightPanel); + + codonListPanel.Dock = DockStyle.Fill; + codonListPanel.CurrentAddinChanged += new EventHandler(CodonListPanelCurrentAddinChanged); + RightPanel.Controls.Add(codonListPanel); + + Splitter hs = new Splitter(); + hs.Dock = DockStyle.Top; + RightPanel.Controls.Add(hs); + + addInDetailsPanel.Dock = DockStyle.Top; + addInDetailsPanel.Height = 175; + RightPanel.Controls.Add(addInDetailsPanel); + + Splitter s1 = new Splitter(); + s1.Dock = DockStyle.Left; + p.Controls.Add(s1); + + AddinTreeView addinTreeView = new AddinTreeView(); + addinTreeView.Dock = DockStyle.Fill; + addinTreeView.treeView.AfterSelect += new TreeViewEventHandler(this.tvSelectHandler); + + TreeTreeView treeTreeView = new TreeTreeView(); + treeTreeView.Dock = DockStyle.Fill; + treeTreeView.treeView.AfterSelect += new TreeViewEventHandler(this.tvSelectHandler); + + TabControl tab = new TabControl(); + tab.Width = 300; + tab.Dock = DockStyle.Left; + + TabPage tabPage2 = new TabPage("Tree"); + tabPage2.Dock = DockStyle.Left; + tabPage2.Controls.Add(treeTreeView); + tab.TabPages.Add(tabPage2); + + TabPage tabPage = new TabPage("AddIns"); + tabPage.Dock = DockStyle.Left; + tabPage.Controls.Add(addinTreeView); + tab.TabPages.Add(tabPage); + + p.Controls.Add(tab); + + this.control = p; + this.TitleName = "AddIn Scout"; + } + + void CodonListPanelCurrentAddinChanged(object sender, EventArgs e) + { + addInDetailsPanel.ShowAddInDetails(codonListPanel.CurrentAddIn); + } + + public void tvSelectHandler(object sender, TreeViewEventArgs e) + { + if (e.Node.Tag == null) { + codonListPanel.ClearList(); + return; + } + + TreeNode tn = e.Node; + + object o = e.Node.Tag; + + if (o is AddIn) { + AddIn addIn = (AddIn)o; + addInDetailsPanel.ShowAddInDetails(addIn); + if (tn.FirstNode != null) { + codonListPanel.ListCodons((ExtensionPath)tn.FirstNode.Tag); + } else { + codonListPanel.ClearList(); + } + } else { + ExtensionPath ext = (ExtensionPath)o; + AddIn addIn = tn.Parent.Tag as AddIn; + if (addIn == null) { + codonListPanel.ListCodons(ext.Name); + } else { + addInDetailsPanel.ShowAddInDetails(addIn); + codonListPanel.ListCodons(ext); + } + } + } + } +} diff --git a/src/AddIns/Misc/AddinScout/Project/Src/AssemblyInfo.cs b/src/AddIns/Misc/AddinScout/Project/Src/AssemblyInfo.cs new file mode 100644 index 0000000000..25b180ecdf --- /dev/null +++ b/src/AddIns/Misc/AddinScout/Project/Src/AssemblyInfo.cs @@ -0,0 +1,32 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following +// attributes. +// +// change them to the information which is associated with the assembly +// you compile. + +[assembly: AssemblyTitle("AddInScout")] +[assembly: AssemblyDescription("Display AddIn Information")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("Satguru P Srivastava")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has following format : +// +// Major.Minor.Build.Revision +// +// You can specify all values by your own or you can build default build and revision +// numbers with the '*' character (the default): + +[assembly: AssemblyVersion("2.0.0.1")] + +// The following attributes specify the key for the sign of your assembly. See the +// .NET Framework documentation for more information about signing. +// This is not required, if you don't want signing let these attributes like they're. +[assembly: AssemblyDelaySign(false)] +[assembly: AssemblyKeyFile("")] diff --git a/src/AddIns/Misc/AddinScout/Project/Src/Gui/AddInDetailsPanel.cs b/src/AddIns/Misc/AddinScout/Project/Src/Gui/AddInDetailsPanel.cs new file mode 100644 index 0000000000..95d1ea73b9 --- /dev/null +++ b/src/AddIns/Misc/AddinScout/Project/Src/Gui/AddInDetailsPanel.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections; +using System.Drawing; +using System.Windows.Forms; + +using ICSharpCode.Core; + +namespace AddInScout +{ + public class AddInDetailsPanel : Panel + { + ListView addInDetailsListView = new ListView(); + Label addInLabel = new Label(); + + public AddInDetailsPanel() + { + addInDetailsListView.Dock = DockStyle.Fill; + addInDetailsListView.GridLines = false; + addInDetailsListView.View = View.Details; + addInDetailsListView.MultiSelect = false; + addInDetailsListView.FullRowSelect = true; + addInDetailsListView.Activation = ItemActivation.OneClick; + addInDetailsListView.HeaderStyle = ColumnHeaderStyle.None; + addInDetailsListView.BorderStyle = BorderStyle.FixedSingle; + addInDetailsListView.ItemActivate += new EventHandler(AddInDetailsListViewItemActivate); + addInDetailsListView.Columns.Add("Property",100, HorizontalAlignment.Left); + addInDetailsListView.Columns.Add("Value", 500, HorizontalAlignment.Left); + Controls.Add(addInDetailsListView); + + addInLabel.Dock =DockStyle.Top; + addInLabel.Text = "AddIn : "; + addInLabel.Font = new Font(addInLabel.Font.FontFamily,addInLabel.Font.Size*2); + addInLabel.Height = addInLabel.Height*2; + addInLabel.FlatStyle = FlatStyle.Flat; + addInLabel.TextAlign = ContentAlignment.MiddleLeft; + addInLabel.BorderStyle = BorderStyle.FixedSingle; + Controls.Add(addInLabel); + } + + void AddInDetailsListViewItemActivate(object sender, EventArgs e) + { + Cursor.Current = Cursors.WaitCursor; + + ListViewItem selectedItem = ((ListView)sender).SelectedItems[0]; + + if (selectedItem.Text.ToLower().Equals("url")) { + string url = selectedItem.SubItems[1].Text; + try { + System.Diagnostics.Process.Start(url); + } catch (Exception) { +// Silent: On my System the browser starts but Process.Start throws an exception. Mike 2.11.2004/Notebook/ICE 1517 on the way to DevCon Europe 2004 +// MessageBox.Show("Unable to Start Browser\n" + ex.ToString()); + } + } else if (selectedItem.Text.ToLower().Equals("filename")) { + + FileService.OpenFile(selectedItem.SubItems[1].Text); + } + + Cursor.Current = Cursors.Default; + } + + public void ShowAddInDetails(AddIn ai) + { + addInLabel.Text = "AddIn : " + ai.Properties["name"]; + + addInDetailsListView.Items.Clear(); + + ListViewItem[] items = new ListViewItem[] { + new ListViewItem(new string[] { "Author", ai.Properties["author"] }), + new ListViewItem(new string[] { "Copyright", ai.Properties["copyright"]}), + new ListViewItem(new string[] { "Description", ai.Properties["description"] }), + new ListViewItem(new string[] { "FileName", ai.FileName}), + new ListViewItem(new string[] { "Url", ai.Properties["url"]}), + new ListViewItem(new string[] { "Version", ai.Properties["version"]}) + }; + + // set Filename & Url rows to 'weblink' style + items[3].Font = items[4].Font = new Font(addInDetailsListView.Font, FontStyle.Underline); + items[3].ForeColor = items[4].ForeColor = Color.Blue; + addInDetailsListView.Items.AddRange(items); + + foreach (Runtime runtime in ai.Runtimes) { + ListViewItem newListViewItem = new ListViewItem("Runtime Library"); + newListViewItem.SubItems.Add(runtime.Assembly); + addInDetailsListView.Items.Add(newListViewItem); + } + } + } +} diff --git a/src/AddIns/Misc/AddinScout/Project/Src/Gui/AddinTreeView.cs b/src/AddIns/Misc/AddinScout/Project/Src/Gui/AddinTreeView.cs new file mode 100644 index 0000000000..48771b0eda --- /dev/null +++ b/src/AddIns/Misc/AddinScout/Project/Src/Gui/AddinTreeView.cs @@ -0,0 +1,73 @@ +/* + * Created by SharpDevelop. + * User: Omnibrain + * Date: 01.11.2004 + * Time: 12:03 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ + +using System; +using ICSharpCode.Core; +using System.Windows.Forms; + +namespace AddInScout +{ + /// + /// Description of AddinTreeView. + /// + public class AddinTreeView : Panel + { + public TreeView treeView = new TreeView(); + + public AddinTreeView() + { +// treeView.BorderStyle = BorderStyle.; +// treeView.AfterSelect += new TreeViewEventHandler(this.tvSelectHandler); + + PopulateTreeView(); + + + treeView.ImageList = new ImageList(); + treeView.ImageList.ColorDepth = ColorDepth.Depth32Bit; + treeView.ImageList.Images.Add(IconService.GetBitmap("Icons.16x16.Class")); + treeView.ImageList.Images.Add(IconService.GetBitmap("Icons.16x16.Assembly")); + treeView.ImageList.Images.Add(IconService.GetBitmap("Icons.16x16.OpenAssembly")); + treeView.ImageList.Images.Add(IconService.GetBitmap("Icons.16x16.ClosedFolderBitmap")); + treeView.ImageList.Images.Add(IconService.GetBitmap("Icons.16x16.OpenFolderBitmap")); + + treeView.Dock = DockStyle.Fill; + Controls.Add(treeView); + } + + void PopulateTreeView() + { + TreeNode rootNode = new TreeNode("Addins"); + rootNode.ImageIndex = rootNode.SelectedImageIndex = 0; + rootNode.Expand(); + + treeView.Nodes.Add(rootNode); + + for (int i = 0; i < AddInTree.AddIns.Count; i++) { + TreeNode newNode = new TreeNode(AddInTree.AddIns[i].Properties["name"]); + newNode.ImageIndex = 1; + newNode.SelectedImageIndex = 2; + newNode.Tag = AddInTree.AddIns[i]; + GetExtensions(AddInTree.AddIns[i], newNode); + rootNode.Nodes.Add(newNode); + } + } + + void GetExtensions(AddIn ai, TreeNode treeNode) + { + foreach (ExtensionPath ext in ai.Paths.Values) { + TreeNode newNode = new TreeNode(ext.Name); + newNode.ImageIndex = 3; + newNode.SelectedImageIndex = 4; + newNode.Tag = ext; + treeNode.Nodes.Add(newNode); + } + } + + } +} diff --git a/src/AddIns/Misc/AddinScout/Project/Src/Gui/CodonListPanel.cs b/src/AddIns/Misc/AddinScout/Project/Src/Gui/CodonListPanel.cs new file mode 100644 index 0000000000..7ebc5305b4 --- /dev/null +++ b/src/AddIns/Misc/AddinScout/Project/Src/Gui/CodonListPanel.cs @@ -0,0 +1,116 @@ +using System; +using System.Collections; +using System.Drawing; +using System.Windows.Forms; + +using ICSharpCode.Core; + +namespace AddInScout +{ + public class CodonListPanel : Panel + { + ListView CodonLV = new ListView(); // show codin details + Label ExtLabel = new Label(); // show extension name + AddIn currentAddIn = null; + + public AddIn CurrentAddIn { + get { + return currentAddIn; + } + set { + currentAddIn = value; + this.OnCurrentAddinChanged(EventArgs.Empty); + } + } + + public CodonListPanel() + { + CodonLV.Dock = DockStyle.Fill; + CodonLV.GridLines = true; + CodonLV.View = View.Details; + CodonLV.FullRowSelect = true; + CodonLV.MultiSelect = false; + CodonLV.BorderStyle = BorderStyle.FixedSingle; + CodonLV.SelectedIndexChanged += new EventHandler(CodonLVSelectedIndexChanged); + CodonLV.Columns.Add("Codon", 100,HorizontalAlignment.Left); + CodonLV.Columns.Add("Codon ID", 175,HorizontalAlignment.Left); + CodonLV.Columns.Add("Codon Class", 400,HorizontalAlignment.Left); + CodonLV.Columns.Add("Codon Condition -> Action on Fail", 600,HorizontalAlignment.Left); + + + ExtLabel.Text = "Extension : "; + ExtLabel.Dock = DockStyle.Top; + ExtLabel.FlatStyle = FlatStyle.Flat; + ExtLabel.TextAlign = ContentAlignment.MiddleLeft; + ExtLabel.BorderStyle = BorderStyle.FixedSingle; + + Controls.Add(CodonLV); + Controls.Add(ExtLabel); + } + + + void CodonLVSelectedIndexChanged(object sender, EventArgs e) + { + if (CodonLV.SelectedItems.Count != 1) { + return; + } + Codon c = CodonLV.SelectedItems[0].Tag as Codon; + if (c == null) { + return; + } + + CurrentAddIn = c.AddIn; + } + + public void ClearList() + { + ExtLabel.Text = "Extension : "; + CodonLV.Items.Clear(); + } + + public void ListCodons(string path) + { + CodonLV.Items.Clear(); + if (path == null) { + ExtLabel.Text = "Extension : "; + return; + } + + ExtLabel.Text = "Extension : " + path; + + AddInTreeNode node = AddInTree.GetTreeNode(path); + foreach (Codon c in node.Codons) { + ListViewItem lvi = new ListViewItem(c.Name); + lvi.Tag = c; + lvi.SubItems.Add(c.ID); + + lvi.SubItems.Add(c.Properties.Contains("class") ? c.Properties["class"] : ""); + + foreach (ICondition condition in c.Conditions) { + lvi.SubItems.Add(condition.Name + ", " + condition.Action); + } + CodonLV.Items.Add(lvi); + } + } + + public void ListCodons(ExtensionPath ext) + { + CodonLV.Items.Clear(); + if (ext == null) { + ExtLabel.Text = "Extension : "; + return; + } + ListCodons(ext.Name); + } + + protected virtual void OnCurrentAddinChanged(EventArgs e) + { + if (CurrentAddinChanged != null) { + CurrentAddinChanged(this, e); + } + } + + public event EventHandler CurrentAddinChanged; + } +} + diff --git a/src/AddIns/Misc/AddinScout/Project/Src/Gui/TreeTreeView.cs b/src/AddIns/Misc/AddinScout/Project/Src/Gui/TreeTreeView.cs new file mode 100644 index 0000000000..941d98c5e8 --- /dev/null +++ b/src/AddIns/Misc/AddinScout/Project/Src/Gui/TreeTreeView.cs @@ -0,0 +1,75 @@ +using System; +using ICSharpCode.Core; +using System.Windows.Forms; + +namespace AddInScout +{ + /// + /// Description of AddinTreeView. + /// + public class TreeTreeView : Panel + { + public TreeView treeView = new TreeView(); + + public TreeTreeView() + { + PopulateTreeView(); + + + treeView.ImageList = new ImageList(); + treeView.ImageList.ColorDepth = ColorDepth.Depth32Bit; + treeView.ImageList.Images.Add(IconService.GetBitmap("Icons.16x16.Class")); + treeView.ImageList.Images.Add(IconService.GetBitmap("Icons.16x16.Assembly")); + treeView.ImageList.Images.Add(IconService.GetBitmap("Icons.16x16.OpenAssembly")); + treeView.ImageList.Images.Add(IconService.GetBitmap("Icons.16x16.ClosedFolderBitmap")); + treeView.ImageList.Images.Add(IconService.GetBitmap("Icons.16x16.OpenFolderBitmap")); + + treeView.Dock = DockStyle.Fill; + Controls.Add(treeView); + } + + void PopulateTreeView() + { + TreeNode rootNode = new TreeNode("AddInTree"); + rootNode.ImageIndex = rootNode.SelectedImageIndex = 0; + rootNode.Expand(); + + treeView.Nodes.Add(rootNode); + + for (int i = 0; i < AddInTree.AddIns.Count; i++) { + GetExtensions(AddInTree.AddIns[i], rootNode); + } + } + + void GetExtensions(AddIn ai, TreeNode treeNode) + { + foreach (ExtensionPath ext in ai.Paths.Values) { + string[] name = ext.Name.Split('/'); + TreeNode currentNode = treeNode; + if (name.Length < 1) { + continue; + } + for (int i = 1; i < name.Length; ++i) { + bool found = false; + foreach (TreeNode n in currentNode.Nodes) { + if (n.Text == name[i]) { + currentNode = n; + found = true; + break; + } + } + if (!found) { + TreeNode newNode = new TreeNode(name[i]); + newNode.ImageIndex = 3; + newNode.SelectedImageIndex = 4; + if (i == name.Length - 1) { + newNode.Tag = ext; + } + currentNode.Nodes.Add(newNode); + currentNode = newNode; + } + } + } + } + } +} diff --git a/src/AddIns/Misc/FiletypeRegisterer/Doc/Description.txt b/src/AddIns/Misc/FiletypeRegisterer/Doc/Description.txt new file mode 100644 index 0000000000..dbedf86ce8 --- /dev/null +++ b/src/AddIns/Misc/FiletypeRegisterer/Doc/Description.txt @@ -0,0 +1,22 @@ +This is my suggestion for the filetype associations in #d. + +The AddIn contains two classes: + - The RegisterFiletypesCommand, that is executed at startup and where the types are registered + - The RegisterFiletypesOptionPanel, that is shown in the IDE Options. + +In the Option panel, you can select the types you want #d to be associated with and whether #d should re-register the types at each startup. +The command, which is autoexecuted at startup, checks if this option is turned on and then performs the task, if necessary. +If this option is turned off, the only point where file types are registered is clicking OK in the option panel. + +The file types are listed in the Filetypes.xml file, which has to be located (as well as the icon files) in the subdir "filetypes" of "data\resources". +So types can be dynamically added or deleted. (In case this file is malformed, the addin will load an internal list that is currently the same as in the XML file.) + +I don't exactly know how to manage that the option panel pops up the first time #d is started (like the code completion database wizard), but I think that's not a point of extremely much work. + +-------------------------------- +New Info +-------------------------------- +- By default, cmbx and prjx are registered. +- The Addin now automatically unregisters filetypes when they are deselected in the option panel. +- An Unregister.exe is included that takes one parameter: the extension. +- When registering file types, old associations are preserved and restored when unregistering. \ No newline at end of file diff --git a/src/AddIns/Misc/FiletypeRegisterer/Project/Configuration/AssemblyInfo.cs b/src/AddIns/Misc/FiletypeRegisterer/Project/Configuration/AssemblyInfo.cs new file mode 100644 index 0000000000..640595f2cb --- /dev/null +++ b/src/AddIns/Misc/FiletypeRegisterer/Project/Configuration/AssemblyInfo.cs @@ -0,0 +1,32 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following +// attributes. +// +// change them to the information which is associated with the assembly +// you compile. + +[assembly: AssemblyTitle("FiletypeRegisterer")] +[assembly: AssemblyDescription("Registers file types for #develop")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Georg Brandl")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("(C) 2002")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has following format : +// +// Major.Minor.Build.Revision +// +// You can specify all values by your own or you can build default build and revision +// numbers with the '*' character (the default): + +[assembly: AssemblyVersion("2.0.0.1")] + +// The following attributes specify the key for the sign of your assembly. See the +// .NET Framework documentation for more information about signing. +// This is not required, if you don't want signing let these attributes like they're. +[assembly: AssemblyDelaySign(false)] +[assembly: AssemblyKeyFile("")] diff --git a/src/AddIns/Misc/FiletypeRegisterer/Project/FiletypeRegisterer.addin b/src/AddIns/Misc/FiletypeRegisterer/Project/FiletypeRegisterer.addin new file mode 100644 index 0000000000..d01d299c13 --- /dev/null +++ b/src/AddIns/Misc/FiletypeRegisterer/Project/FiletypeRegisterer.addin @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + diff --git a/src/AddIns/Misc/FiletypeRegisterer/Project/FiletypeRegisterer.csproj b/src/AddIns/Misc/FiletypeRegisterer/Project/FiletypeRegisterer.csproj new file mode 100644 index 0000000000..c88c797cf5 --- /dev/null +++ b/src/AddIns/Misc/FiletypeRegisterer/Project/FiletypeRegisterer.csproj @@ -0,0 +1,75 @@ + + + Debug + AnyCPU + 8.0.41115 + 2.0 + {D022A6CE-7438-41E8-AC64-F2DE18EC54C6} + ICSharpCode.FiletypeRegisterer + Library + 4 + False + False + OnSuccessfulBuild + Library + + + True + False + False + True + ..\..\..\AddIns\Misc\FiletypeRegisterer\ + False + + + False + True + False + True + ..\..\..\AddIns\Misc\FiletypeRegisterer\ + False + + + + + + UserControl + + + + + {2748AD25-9C63-4E12-877B-4DCE96FBED54} + ICSharpCode.SharpDevelop + False + + + {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} + ICSharpCode.Core + False + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Misc/FiletypeRegisterer/Project/FiletypeRegisterer.csproj.user b/src/AddIns/Misc/FiletypeRegisterer/Project/FiletypeRegisterer.csproj.user new file mode 100644 index 0000000000..746ae1f782 --- /dev/null +++ b/src/AddIns/Misc/FiletypeRegisterer/Project/FiletypeRegisterer.csproj.user @@ -0,0 +1,9 @@ + + + + + 8.0.41115 + ShowAllFiles + 0 + + \ No newline at end of file diff --git a/src/AddIns/Misc/FiletypeRegisterer/Project/Src/RegisterFiletypesCommand.cs b/src/AddIns/Misc/FiletypeRegisterer/Project/Src/RegisterFiletypesCommand.cs new file mode 100644 index 0000000000..55196f527b --- /dev/null +++ b/src/AddIns/Misc/FiletypeRegisterer/Project/Src/RegisterFiletypesCommand.cs @@ -0,0 +1,144 @@ +using System; +using System.IO; +using System.Drawing; +using System.Windows.Forms; +using System.Reflection; +using System.Xml; + +using Microsoft.Win32; + +using ICSharpCode.Core; + +using ICSharpCode.SharpDevelop.Gui; + + +namespace ICSharpCode.FiletypeRegisterer { + + public class RegisterFiletypesCommand : AbstractCommand + { + readonly public static string uiFiletypesProperty = "SharpDevelop.Filetypes"; + readonly public static string uiRegisterStartupProperty = "SharpDevelop.FiletypesRegisterStartup"; + + const int SHCNE_ASSOCCHANGED = 0x08000000; + const int SHCNF_IDLIST = 0x0; + + readonly public static string[,] FileTypes_err = new string[,] + {{"${res:ICSharpCode.FiletypeRegisterer.SharpDevelopCombineFileAssozisation}", "cmbx", "cmbx.ico"}, + {"${res:ICSharpCode.FiletypeRegisterer.SharpDevelopProjectFileAssozisation}", "prjx", "prjx.ico"}, + {"${res:ICSharpCode.FiletypeRegisterer.CSharpSourceFileAssozisation}" , "cs" , "cs.ico"}, + {"${res:ICSharpCode.FiletypeRegisterer.VBNetSourceFileAssozisation}" , "vb" , "vb.ico"}, + {"${res:ICSharpCode.FiletypeRegisterer.JavaSourceFileAssozisation}" , "java", "java.ico"}, + {"${res:ICSharpCode.FiletypeRegisterer.XMLFormFileAssozisation}" , "xfrm", "xfrm.ico"}, + {"${res:ICSharpCode.FiletypeRegisterer.ResXResourceFilesFileAssozisation}" , "resx", "resx.ico"}, + {"${res:ICSharpCode.FiletypeRegisterer.BinaryResourceFilesFileAssozisation}", "resources", "resx.ico"}, + {"${res:ICSharpCode.FiletypeRegisterer.XmlFileAssozisation}" , "xml", "xml.ico"}}; + + public static string[,] GetFileTypes() + { + try { + + XmlDocument doc = new XmlDocument(); + + doc.Load(System.IO.Path.Combine(PropertyService.DataDirectory, "resources") + + Path.DirectorySeparatorChar + "filetypes" + + Path.DirectorySeparatorChar + "Filetypes.xml"); + + XmlNodeList nodes = doc.DocumentElement.ChildNodes; + string[,] ret = new string[doc.DocumentElement.ChildNodes.Count, 3]; + + for(int i = 0; i < nodes.Count; ++i) { + XmlElement el = (XmlElement)nodes.Item(i); + ret[i, 0] = el.InnerText; + ret[i, 1] = el.Attributes["ext"].InnerText; + ret[i, 2] = el.Attributes["icon"].InnerText; + } + return ret; + } catch (Exception) { + return FileTypes_err; + } + } + + public override void Run() + { + + + if (PropertyService.Get(uiRegisterStartupProperty, true)) { + // register Combine and Project by default + RegisterFiletypes(PropertyService.Get(uiFiletypesProperty, "cmbx|prjx")); + } + } + + public static void RegisterFiletypes(string types) + { + string[] singleTypes = types.Split('|'); + string mainExe = Assembly.GetEntryAssembly().Location; + string[,] FileTypes = GetFileTypes(); + + string resPath = System.IO.Path.Combine(PropertyService.DataDirectory, "resources") + Path.DirectorySeparatorChar + "filetypes" + Path.DirectorySeparatorChar; + foreach(string type in singleTypes) { + for(int i = 0; i < FileTypes.GetLength(0); ++i) { + if(FileTypes[i, 1] == type) { + RegisterFiletype(type, FileTypes[i, 0], '"' + Path.GetFullPath(mainExe) + '"' + " \"%1\"", Path.GetFullPath(resPath + FileTypes[i, 2])); + } + } + } + } + + public static void RegisterFiletype(string extension, string description, string command, string icon) + { + try { + RegistryKey extKey, clsKey, openKey; + extKey = Registry.ClassesRoot.CreateSubKey("." + extension); + + // save previous association + string prev = (string)extKey.GetValue("", ""); + if (prev != "" && prev != ("SD." + extension + "file")) { + extKey.SetValue("PreSD", extKey.GetValue("")); + } + extKey.SetValue("", "SD." + extension + "file"); + extKey.Close(); + + clsKey = Registry.ClassesRoot.CreateSubKey("SD." + extension + "file"); + + + clsKey.SetValue("", StringParser.Parse(description)); + clsKey.CreateSubKey("DefaultIcon").SetValue("", '"' + icon + '"'); + openKey = clsKey.CreateSubKey("shell\\open\\command"); + openKey.SetValue("", command); + openKey.Close(); + clsKey.Close(); + + SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero); + } catch {} + + } + + public static void UnRegisterFiletype(string extension) + { + try { + Registry.ClassesRoot.DeleteSubKeyTree("SD." + extension + "file"); + + RegistryKey extKey; + extKey = Registry.ClassesRoot.OpenSubKey("." + extension, true); + + // if no association return + if (extKey == null) return; + // if other association return too + if ((string)extKey.GetValue("", "") != ("SD." + extension + "file")) return; + + // restore previous association + string prev = (string)extKey.GetValue("PreSD", ""); + if(prev != "") { + extKey.SetValue("", prev); + } + extKey.Close(); + + + SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero); + } catch {} + } + + [System.Runtime.InteropServices.DllImport("shell32.dll")] + static extern void SHChangeNotify(int wEventId, int uFlags, IntPtr dwItem1, IntPtr dwItem2); + } +} diff --git a/src/AddIns/Misc/FiletypeRegisterer/Project/Src/RegisterFiletypesPanel.cs b/src/AddIns/Misc/FiletypeRegisterer/Project/Src/RegisterFiletypesPanel.cs new file mode 100644 index 0000000000..1a1173f13a --- /dev/null +++ b/src/AddIns/Misc/FiletypeRegisterer/Project/Src/RegisterFiletypesPanel.cs @@ -0,0 +1,122 @@ +// created on 16.11.2002 at 21:14 + +using System; +using System.Drawing; +using System.Windows.Forms; +using System.Collections; + +using ICSharpCode.SharpDevelop.Internal.ExternalTool; +using ICSharpCode.Core; +using ICSharpCode.FiletypeRegisterer; + +namespace ICSharpCode.SharpDevelop.Gui.OptionPanels +{ + class RegisterFiletypesPanel : AbstractOptionPanel { + + ListView list = new ListView(); + Label capLbl = new Label(); + CheckBox regChk = new CheckBox(); + + + + + + Hashtable wasChecked = new Hashtable(); + + public RegisterFiletypesPanel() + { + // Initialize dialog controls + InitializeComponent(); + + // Set previous values + SelectFiletypes(PropertyService.Get(RegisterFiletypesCommand.uiFiletypesProperty, "cmbx|prjx")); + regChk.Checked = PropertyService.Get(RegisterFiletypesCommand.uiRegisterStartupProperty, true); + } + + public override bool ReceiveDialogMessage(DialogMessage message) + { + if (message == DialogMessage.OK) { + UnRegisterFiletypes(); + RegisterFiletypesCommand.RegisterFiletypes(SelectedFiletypes); + PropertyService.Set(RegisterFiletypesCommand.uiFiletypesProperty, SelectedFiletypes); + PropertyService.Set(RegisterFiletypesCommand.uiRegisterStartupProperty, regChk.Checked); + } + return true; + } + + string SelectedFiletypes + { + get { + try { + string ret = ""; + + foreach(ListViewItem lv in list.Items) { + if(lv.Checked) ret += (string)lv.Tag + "|"; + } + return ret; + } catch { + return ""; + } + } + } + + void UnRegisterFiletypes() + { + foreach(ListViewItem lv in list.Items) { + if((!lv.Checked) && wasChecked.Contains((string)lv.Tag)) { + RegisterFiletypesCommand.UnRegisterFiletype((string)lv.Tag); + } + } + } + + void SelectFiletypes(string types) { + string[] singleTypes = types.Split('|'); + + foreach(string str in singleTypes) { + wasChecked[str] = true; + foreach(ListViewItem lv in list.Items) { + if(str == (string)lv.Tag) { + lv.Checked = true; + } + } + } + } + + void InitializeComponent() + { + capLbl.Location = new Point(8, 8); + capLbl.Size = new Size(136, 16); + capLbl.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; + capLbl.Text = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.OptionPanels.RegisterFiletypesPanel.CaptionLabel}"); + capLbl.FlatStyle = FlatStyle.System; + + list.Location = new Point(8, 30); + list.Size = new Size(136, 250); + list.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; + list.View = View.List; + list.CheckBoxes = true; + + FillList(list); + + regChk.Location = new Point(8, 300); + regChk.Size = new Size(136, 20); + regChk.Anchor = capLbl.Anchor; + regChk.FlatStyle = FlatStyle.System; + regChk.Text = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.OptionPanels.RegisterFiletypesPanel.RegisterCheckBox}"); + + this.Controls.AddRange(new Control[] {capLbl, list, regChk}); + } + + void FillList(ListView list) + { + string[,] Items = RegisterFiletypesCommand.GetFileTypes(); + + for(int i = 0; i < Items.GetLength(0); ++i) { + ListViewItem lv; + lv = new ListViewItem(StringParser.Parse(Items[i, 0]) + " (." + Items[i, 1] + ")"); + lv.Tag = Items[i, 1]; + list.Items.Add(lv); + } + } + } +} diff --git a/src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/Filetypes.xml b/src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/Filetypes.xml new file mode 100644 index 0000000000..6f6f6464ce --- /dev/null +++ b/src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/Filetypes.xml @@ -0,0 +1,12 @@ + + + SharpDevelop Combine + SharpDevelop Project + C# Source File + VB.NET Source File + Java Source File + SharpDevelop XML Form + .NET Resource File + .NET Resource File (Binary) + XML Document + \ No newline at end of file diff --git a/src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/cmbx.ico b/src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/cmbx.ico new file mode 100644 index 0000000000000000000000000000000000000000..1b5063739f1bcf5fafba03d6adfda0a7f23448fe GIT binary patch literal 8854 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 literal 0 HcmV?d00001 diff --git a/src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/cs.ico b/src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/cs.ico new file mode 100644 index 0000000000000000000000000000000000000000..2389e7bd2f08166effea43b195241a3c3c403cb0 GIT binary patch literal 4710 zcmeH~KWJN56o-#ql)Tt+>`0lMrCt;=WU(_l^$?0}4D#Z5_YevOgHhr6Pb+B%sfJ*I zhk%!mp_C#|UV^g}5sVGRM2qMUJQy272g{ON6*<)9_B;1IC6XgIX&We%oagiIJMZ`1 zbMHI4(tQ>QNm#C2xgu&eLLy(#2BCa;USx)QeSNmT8Tbf z^Qq;O5Dj54G#^@E!p||vO+P?MFM6#%+PJ5imWV8+9G~G1L z*Lr$XAF2<>do(s?EUs}aTo|HF*9s2{o=7HRQfUU!{&UBEd&~{8W->Ylx>Aq7<>%mC zyytYCC>}OMzIOKD!2|ou+bb)weea&E;D+m4!1r$5l5N^;TCLj(ZJKxmH*lZqQw2U% z;Qw5K(51Jg&lz&w*rgy2`Q|j@2H?l8>*|eA$k#hur^|KhEvpk;=<2zwcWm5grS6W) zL5zOc?e28CU0)Bo&czNV+|lV=^7Dt!haKmF6XusMn2#O*T*$G%cW>q!@_+t<$kYct`D_$w1!M1UlX{HlbyK`i zNSTv(%@~HLqd$zNOl^ahd>$Kcrtnq4jM*{ja~j9Lj+?@UX7F@_cJFVH?}YeRi;bns z@qO)oZ06E_Y%*gS*TJ!rG1>bCVqdng?eEJP8{0o^ar^ns=_jJ$iO9Ks>$~L0|Anj0 z7%tv}e};dKr*LzFIrQN}ct|dCW*LWV{o3??%3R@#@V}jN=hUf@9qB75F{)BK#)&I=p7jK`%ouKusyvlqSs zzXxB0--KU>&%x*5m*E%Sr{G872Xw8#8+Ze6;0?TiXF@wn=ouf^BR;MKAJ_P}NCkcm zz6iewzYd>+KV$jGKKvH^Dts0`0Y3?U#_}O=QP$v>;HTk-;bZV;6{u+T;kV#d;j{2m z+DyW?FHq4`;P>E*@SE`K@D%5a0u?F58oq>2U+ncY7{8nyjuN!)2shyQST#vk`eCbg3iXbD zcz76$a>o1{Is6Pk|CGaVP%0fX)W#6Lo?J{tZhn*0E>kdH5pQDzb?AEOA z)#oFJ$u7;mm`dt0z^okT-fZNs%R!&t1!$5x{q=j*o1LH43C!*SSUvjs4{MF}Usl=k zW_OdjzFv!z%6@u_xT;41x*B?mELK18qTcLc(7(AiTfFu^@D8H$PM|j>X9PEDfoOC# c8nMt3_beb77T&Ki$-gL zq(d635WHYY5?!JkN-6Tmm*8BA3Be9U#21l6@S#|c^dQwr;#d+5O#d^xl0Rxg3x)QO zw|YDK=Kbc)o42xNOyr|h(lm{vobeHTiPkgen?pp`(AU@J`hR0Y&kjpl(nLSC6aCzQ zad?(QA5_MZvZU_&-BLvOP%7m%xZ{zQmX^>;hfp69LOwxp$u4=@D>GaQkpr)&qOGOV zY1uaHw2_ZXJD%o_Y&SVqoHdhFw)O3;s2X=CDLDK*nXOUK!qNi!= zU4i2#*tY*@*RgKR-_`W9j`r5Wtdkw_;FV`bRN0%B9DYee#U*K5 zPBaR>mJ~)(+H};oY#E!YkG=TReTgTlf=jpZZyNd4TeX^~J@M=nNj_PvIjhQVSzjC< zmR)HTzir64c-;7YXj5F@l>T-jSd^?gNlNE6}V^!KSPJN~>veM?*fa#8toe|lLa=Z4O zY+cj=aJfNK+~L`59XZutK)N%+Ndgcx5l_huez%SZP@<~Dx8G0AbvNHv&2?|vDTTWy z0rxaO^p2=yr()8UU!hBTRQ5~7(W0r6YpCpR#M#S9ANtzh?}mN^{T!NviZevi2fYCG zQ9JHLsaDmvH}{WAJ*P-s@T=SQgFJUFtu3juf;@kz^A_CdxTOwY>IPd-^x*1woU`f`%3a1#{q}&aDwmKO`EzO*Aq^G&o9yBKQ^X^WYuuQ{czIUV#pSKLrl zuY)guUk1MjUPjM>o&!A%dK~l!=t0CUf?okY58eSk1%3?t74XC0&w-DC4}$LjkGKm9 z;Ag>4f*%4O1W(}iRtHrpf?okY58eSk1%3?t74XC0&!L(TR5OTb_JFT|Uk6_RzYKm6 zd=7jL{2cgc@Z;b|zz@pr3U~otfEVBecmW;>ts$X@cwM*gx~A~DMn{P%;Mc(yz%PSe z1fK(cz}JV0;8(!UgLlABfgb~Zz}E+H3$y@!7W^dmA@D))2NkFwir`nk&x3csqtapw z{Qdn7`%W^@_&lxjK zY?~&;=G-<-Ad+zXCPSZ}bE~9d4sbRg1-O3Z5Ac}Zw&ZY=mr7PFV3#>-j%R+q8DI%_ z`UDG<%O(;vI~wsj822-a>4+|c$KYiW^X5klY@}@mu!J(R%QmyTg>J8p1!A$7ZpBJg zN32vb&6rHTIo`tDwryJ+d6hZp#BILYZwGW&N;bEV125Y<#s?A`Cj06lW9N~iN)yFu z=1+kH#{|(&5{ab77}rg`6tl}_bAFykZ20x?fSe)xF-yc)DZtApke7dqGrW@DBVn6; zt@Z0Xft6b3wx41qLVtQT!g;@Dg#g%ikElU&{S@FAKf3_G*545t(B%$2DFfJyNg8lHt+k@AMW&rA{ejfp@^yz-V@w!JpTavnvAbU zLYf3nB3V+%69B;ib^VRM zywL~`Xd{fm4QN_Kj>RhUH@n=_=||sAd9!mg{yzWW-w_<~xBPo#x0|-!?iDZd|NNZt EC&?`@-2eap literal 0 HcmV?d00001 diff --git a/src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/prjx.ico b/src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/prjx.ico new file mode 100644 index 0000000000000000000000000000000000000000..7b3b17293f5e830243ca9a950098e866ed8a36f3 GIT binary patch literal 8854 zcmeI0zi(7W5Xa{Z{DXTw>@#4DG5GugVkdz_x_`i;$RA({DWV7k(kYTr8j3?g!dDRc z3MxZHtv3dqjR=Eas1h{L?E^ESmmbS&<)d%B!`=Z~Y?Q{>XtEwVAQmtA;O;?^je@?4{&^;1{+N1ENLsb2>T1_?jV6?5& zYISW_;Ood&;8!Y3j(2U6->KJhyb^}BZQ45WaNG11Uvac$n#%3lb*WeGZvEZ-9o%wx z`RDJYy2NB!h}nmfy>TL#(7a+LXnA>AnvDjfOesl2OSw!bNwY*tX~LIEC1=?{SN#q{ z+NPE=r9>fa*oLfnh)q~($lTnVJb3Ux%Gi_}O|Y9%#-`kCN)wDG?a0W8TaUMI-^%OP zuVs9ETq>1{yn6LY-n@AuPo6xHsi`TqUe~W*mtP+}l9w-E%GIk^rHo%!u3SmH(II;n zfx`%N8-d{RH|4A{=0V5Xix-`Ic2?ygQx~Bx=7I~;?oFnq@_G1~0DZOt zrF?#R3cfX;p%#OIQ8_a^x^%3bAFeV^PP%=G$riV!vg3bZ5k#O83SzVxMGN1z*1Fek998zAZ_Eu75_2iV|H z=S=5FcaNUw9O<0sT5G3a`XDNUPrakXtG=-vUFcS3>t7^p1_U~ABXhW)9_vES_$yHWE zyB=z%D*ct)v~XmTl?wdr9jDF6&d#>uopv3Q`idtTcF6_$HJt&fEUr7#&*Yp!#5Eg;YJd_tNUdYDAhHP$b%Hzk6Wo>Ou z_aI?|k!R1I$^HBH-T%g&J9p&i)2Fh!x+)JJJ`~NliMQOkbxRf(7v;u{8*=U1HCb3# zILyIQ*5q*LFan=l1SY2@p~7@0#|oD0pY1F^1qG?{2pfn(ntg69GTBVd$JY5Lf?_Zc`0`!spin3T=YsRWd0*~cyr9^~hcm$lD!x3n z$9i};I1^-oabNE2#}s=Y$Ob2ZK@@zsvv=6Jyi)+dm)rb`ecUOW4n`C9&hH?X%bCJp zFp{vxI8b>@;iPYmU(RnQM_~XLz4>!FH$RoyE5bl96ERQ~?L>tNNV@j!8-F$(>C$Mnz0Mi{*&gWQm2^2{*$|=8Zzj=7A#q`Q8zJ({l|gGZcm$v&mg&YH!+F*N10R` zmSmgS`pooB{P-iGgCXBZj7d!BgKR{fte%>@-s*1f(ew!@KPHF_oVx|C!g8sgwu!pI z-^c%!-^9 zM*Jz_x9A2RTb~j!;fj}-f(sq`TBUjoPQM5V6qR;K$C#F-hPvOZyaD zQM>U!jz$d5r_zoePhrb#3(XSm@4vl%?0=$TQopvhuqn85ztjKs#Yf+tf>k(J|IHsh zS2`eDO_bXAPX3PE z;bi;w!;e_{Y^>_DzSw%!Ciy{&ho7|khhMh#dAh}qz~d?S(TrI@_UrbE+VMX=>R6tPrPvWggz zExfbyr8FSHwa<6Y@9yGQ7ori3DT+e)DV@edw?q_%p3g@_!Gvgzy$DzVoX2L6J8T9b z6l1)@iV!fAWf_Fh{i!TD0`TK4Ui!AJ%=Cnc3lyyL0`gHBDB7+-)`spF5*jX|6ycgVFm73glOqz%PG+hNk)1bDSguBA}l04DqlT z3^f$YwR2bz{%g(!?w@<`d^w-z7f|M(i^YOOo_}rB+VRcf8(|L8lYPgjw@>!`3}3A6 k`Gw!Yf?w9pg{UEIYt=ZhFYT8_W;`{yQc52Jd2BVE_OC literal 0 HcmV?d00001 diff --git a/src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/vb.ico b/src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/vb.ico new file mode 100644 index 0000000000000000000000000000000000000000..b95d71ebc29d21165d7c4a1aeabb332897fdac33 GIT binary patch literal 4710 zcmeH~Pe>eB9LIm7uB&Tw-A!YwX{rdD<{0%-2qq!)j|u@VW@({Vq)0*V&@DCWA-hm8 z3#Bf2h~$!_Qc775#Y->^IBlO7BYT@|fe^*qBIEIqs=6 zedep5BDz=ULDN@}h~*Q``7cgpO#jsU8Por=%Wd}22)dak_-2YhqM6uqCPV*e`}di! zNF-7biRd{nPwMfHS|z-b<}R%h#ly~$ubhpKkIVV<=S8|uhpp@X=EeR#v9+%AR~Hf!C* zfbH$=BzdBk)Ka>&7pceAf_=t zS6yA*A&22G-*<+ix~j@qQ_C2ZZWtAnReD0&eG%{3Hu9XM+25lu->&i&Hs7Dm`90$M zk~5wDGVk83UDSS*4@=gb&rgq8`J?LD;?vpDUnrl}mtc=?4PfWb*q3MNVf{tLLRr3U z{v;kDS^m^~mt7JwU*-H;8rNp};SMcx5uvm--k7P8Z;TIcK|RwKv;Jp2n$TrJemj~T zUDFvd8kVX7_vc$%A8B7*42!(8(x2H{dr$jmjn}W-Q{x|pw6A6KUsUEYuF9C%t3I@@ z24BnMFS^wd!tB7+!#7%3Zoxu-rUY!t;HriR5AvNrIl&j3n+F3s?^EhmN z@zKM$X0s0Tx@%#1K~g_{Yp%b{^%jV^+|p}{>;W~A)DtCo4H8c&nO#*f5mz#@sHA63 zi7y7M+vKuH@RrEX6_LJxNN2yq6Yxv$Gw@OP0K6Y|fYuA&4c`IpgKvf>@9Zr61pEkm z54;c7T$V z58a^;p6a&@N@7n_!#^od=P#Jz7M`rKO*o7UcoDP1+U4~_(k|R_!#^FkB=nam*8jMqwoQEKl}lY4|(G<3qJur z0^bAggFmQ1ag~5yf}eqp!c%GGhc92CxJtpV!pGqk;pgBf&H)9AQ;1pG1Z{-I8w;M| z=vJmcj~+dewY4?5fB(MRy?a+~-@Yw3Z{CzxEGE~kU6aYlNzwlw1cN~t9UYaSp&_|& z;ezz_^~veer=_#AQ;r`$E-fuB($LVr6QRwuSKcgDi%-?Qo5-u`_jYmYJLLY;VTX@(+Q%OyaOo=iG(w!M9Lr!+tDr5TFiOd|uGV_0|3uK#>p&l*XAOEy|_(OiYoxy|i$=ASQ5GFcF9&M)cQ zDbP_jHy`F09lcYmC#R5@zTB8trZy$qM{hC}Z literal 0 HcmV?d00001 diff --git a/src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/xfrm.ico b/src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/xfrm.ico new file mode 100644 index 0000000000000000000000000000000000000000..340f9f7a7d423fb27b35badd90e73d21db7db978 GIT binary patch literal 3310 zcmc(hKTI1}9LInBkw6GxPMKh-g=$(=UGUJ2gdwWH6ANMMU}Y*&L}e9-Tg9FN>VPE= zj8RIfsxn=?AXplUrnVFzCQlI)NT>_=0LNzt_d4$4AK?F^cQLL958$8R5Aa0eKJV4{C&_Mea68^1HPgF0Nuc+( z|3tqJa{D>4-~5J_bl(FY<~3km45lMiV!v1N>&ur?w3TEJl<&%;l9#ZYc?6;Iyar zMdI5c(KV4sOe8!l#Y6Z4{04jqJ_bJvJA+TbkHe3_hv0|c$(zl>ufos4Pr`>_&6^5d z;00dbWm*p53-BB8Dfk%tEc^`olPsG<+OB3Lk+F z!z*|NuizEDf>-dm?bEhtYqS_`+VD2~0elfY55EPkvuB{w&~fM}bObs~{zLcz{04jq zJ_bJvKLbAnKMp?zAA%o(CvP?jzY0GGKM5a#7x?DtP_;w&0{jMi3O)uu3qJ!t1wT$T z$EaqAY7W8M@CWck_&od;dY zfZu>m!Bc593*WjxMPU9>Uud=eycQ_7HzB6q|{^=S~s!*<+#yGMmM9yvczhwTRMk3{?fJg+DPRa?@rQ~ z-qU^aJ5|>%E-o({$A8@X_s+}4-t|?S#_{eXmesHVv%XHBot>Bayb{*O`{Ygw^JQ@F zPv3e)E7-Aab-S%wmG@WI*H<2KTQ|SQA|7!|uSz1(T}S|!41T>_WqSGXmqg+3!nMfN z@%5!wU$ed*3TRdO`}^1b%D?8X2MNUSjsKumU*3NDbf9|xK=k7ipI*8`zxT5X{P0XJ zkk5U(b#iK1r?09@OHaQW=zk{8abJ&rex2Srez&mTT;#U9yE;$FU$V{q^3|`ju(0r| z3Sb+#+^ip$zW?^mSJm?}MK0OpTe@YPluA9PC!Sns9&c7*x{GULdTwpC=T`@qp>&hJ jh29{y(EX!Z<@Y6TIe&fW?)sX)*cEe`|FZw{|CE0L7B~0O literal 0 HcmV?d00001 diff --git a/src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/xml.ico b/src/AddIns/Misc/FiletypeRegisterer/Project/Src/filetypes/xml.ico new file mode 100644 index 0000000000000000000000000000000000000000..e5d84f07d12dc3c781f3b991ffcdadca8c49ed85 GIT binary patch literal 3310 zcmc(hKTI1}9LIkIB&-OLoS4W`D~eH6Wx+!?(kO}&@B$04b@0$3RHT(#?6_6V>X4u+ z!jgxKQA(?-GLshsOR;EbOHst+DPl4b>SBBt$2JM%_4D5O9~eidL;E}b-n)0-&-=aK z{qEg?NRRZ&<;#~v+w~ri&*;5gcl`GSkuSLB^=eh*caO;3J~+-b;l+D|3s~B;XEiYq zeiDnh9WAGlPN(U$pv+H{(q}k_zNDMFc^F_$tN#*v@R6}yzN2i%Q=QzpF?rANe5>a3 zljW}&KiJb_Wmmq^x(O@d_IAweBjQ=q*2q`td7rbVUa?-h->s9Ed$@%+>J+1&3VaE;RI7-|cIy@uG6>-o7g0#Et&sl6w03{?$98JZ2nI>c`j1%hyCX4SnIpt508g z>Uun^B2QljUV3VFGk$n+dE}m|HpbO(>N(!Nj33|B-*fI-lbFu;QuYNP%1@j#MF`ohRVW@u{xZu23^6QHil5>=#@=BI+ zO6D?3#@Ceil5pA++al3*k>E3tKuE+tCAl5=Ec^<596kg;3pmR?!u#Nd;fb3{ z!7stj!H>iHV9l2bUf=~@;AKj7;Ir^6@NxJM{4D%5{Df@F82l)_4}KWlfzQL|;4|=R z@JaY2d;&fSAA}FU`{5P5f>-bgUcoDPeQa~Ab3Ee+aZDNBfzQL|;4|=R@H%=DIsqMp z4nhZ@{lwpa&%&?3$KgZpv+&dK6Yyj3qwqfXVR+)EQt(UgbMWKvK6rsYT^*{n1D}Oo zfsez7;Ai2d;V0n7sOBiu^ij=Wy}{t~@HzMl{2F``J_(-bg zUcr;lHVLisxSsL2LOiaiDc&3SJbVs51HT5JgzvI_WCuPAzXBhJ55dpEciBF~%}EM= z34RWK9Nq`ttw1@o1D}OofseyeX*COfc7bxdeJPcP&%tNl*Wf8mmjdM|L<(QR=kRgd zhj%MbsZ^5P-CcR}=8bG^ZOP{5rmU{6N-~+0=g*%@B9V~Cj~`1k8kPC^c?kxCGBYzH zfj~fR-n=P(zh6d1M&!zsD>67Z$c_-HbTK2+ye*z-hYh__ILnIX*R4XKT04B_+IwvT zY@2Uc1&~wLt{1Gg7c148YllSYoKK9C);`~|N~NKpgR(Il>hyfe*ogqA=I@tE2jz?P zN_LrlB8QXnb$o8JEy+&Zs=PlsK0c~v(W%$}vek(Wy(YHZm$gNXO@wy6Tw{6p;TJpm zSN2%ssBrwQz5e}zTp1V`SpGBf(zbN~skY7kptCQpKYTdYHwYm5@kyIrJVGD(*#*9T zB!|ccZMwC$Z&~{rwMgXQH-iI@q*}Px-@d*MZx!AyEL0EE>wUc!_K9C~TKmiBR&ilr zVWS4%7`c2}FBHGK|Hnq{piGgAPPs$3ti58fe}AtoS5D7&SJCa^v9adD->Jd krP86Fkk8QDXY+n`%x?=$5}kT8b(3P}>)puw|NlSbAH>Bs$p8QV literal 0 HcmV?d00001 diff --git a/src/AddIns/Misc/FiletypeRegisterer/Project/Unregister/Main.cs b/src/AddIns/Misc/FiletypeRegisterer/Project/Unregister/Main.cs new file mode 100644 index 0000000000..8e860030a2 --- /dev/null +++ b/src/AddIns/Misc/FiletypeRegisterer/Project/Unregister/Main.cs @@ -0,0 +1,61 @@ +/* +using Microsoft.Win32; +using System; + +namespace ICSharpCode.FiletypeRegisterer.Unregister +{ + + public class MainClass + { + const int SHCNE_ASSOCCHANGED = 0x08000000; + const int SHCNF_IDLIST = 0x0; + + public static void UnRegisterFiletype(string extension) { + try { + Registry.ClassesRoot.DeleteSubKeyTree("SD." + extension + "file"); + + RegistryKey extKey; + extKey = Registry.ClassesRoot.OpenSubKey("." + extension, true); + + // if no association return + if (extKey == null) return; + // if other association return too + if ((string)extKey.GetValue("", "") != ("SD." + extension + "file")) return; + + // restore previous association + string prev = (string)extKey.GetValue("PreSD", ""); + if(prev != "") { + extKey.SetValue("", prev); + } + extKey.Close(); + + + SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero); + } catch {} + + } + + [System.Runtime.InteropServices.DllImport("shell32.dll")] + static extern void SHChangeNotify(int wEventId, int uFlags, IntPtr dwItem1, IntPtr dwItem2); + + public static void Main() { + Console.WriteLine("--------------------------------"); + Console.WriteLine(" Filetype Unregister"); + Console.WriteLine("--------------------------------"); + + string[] args = Environment.GetCommandLineArgs(); + if (args.Length != 2) { + Console.WriteLine("\nUsage: Unregister.exe ext"); + Console.WriteLine(" where ext is the extension, e.g. cs"); + return; + } + + System.Console.WriteLine("Unregistering " + args[1] + "..."); + UnRegisterFiletype(args[1]); + Console.WriteLine("\nSuccessful."); + return; + } + + } +} +*/ diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Configuration/AssemblyInfo.cs b/src/AddIns/Misc/HighlightingEditor/Project/Configuration/AssemblyInfo.cs new file mode 100644 index 0000000000..0ebec27439 --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Configuration/AssemblyInfo.cs @@ -0,0 +1,32 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following +// attributes. +// +// change them to the information which is associated with the assembly +// you compile. + +[assembly: AssemblyTitle("HighlightingEditor")] +[assembly: AssemblyDescription("Editor for editor highlighting styles in #develop")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Georg Brandl")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("(C) 2003")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has following format : +// +// Major.Minor.Build.Revision +// +// You can specify all values by your own or you can build default build and revision +// numbers with the '*' character (the default): + +[assembly: AssemblyVersion("2.0.0.1")] + +// The following attributes specify the key for the sign of your assembly. See the +// .NET Framework documentation for more information about signing. +// This is not required, if you don't want signing let these attributes like they're. +[assembly: AssemblyDelaySign(false)] +[assembly: AssemblyKeyFile("")] diff --git a/src/AddIns/Misc/HighlightingEditor/Project/HighlightingEditor.addin b/src/AddIns/Misc/HighlightingEditor/Project/HighlightingEditor.addin new file mode 100644 index 0000000000..5e1d4d5059 --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/HighlightingEditor.addin @@ -0,0 +1,19 @@ + + + + + + + + + + + diff --git a/src/AddIns/Misc/HighlightingEditor/Project/HighlightingEditor.csproj b/src/AddIns/Misc/HighlightingEditor/Project/HighlightingEditor.csproj new file mode 100644 index 0000000000..ddc78e514f --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/HighlightingEditor.csproj @@ -0,0 +1,132 @@ + + + Debug + AnyCPU + 8.0.41115 + 2.0 + {8A462940-E5E9-4E85-982D-D4C006EE31D4} + HighlightingEditor + Library + 0 + False + False + OnSuccessfulBuild + Library + + + True + False + False + True + ..\..\..\..\..\AddIns\AddIns\Misc\HighlightingEditor\ + False + + + False + True + False + True + ..\..\..\..\..\AddIns\AddIns\Misc\HighlightingEditor\ + False + + + + + + + + + + + + + + + + + + + + + Form + + + Form + + + Form + + + UserControl + + + + + UserControl + + + UserControl + + + UserControl + + + UserControl + + + UserControl + + + UserControl + + + UserControl + + + UserControl + + + UserControl + + + UserControl + + + UserControl + + + UserControl + + + UserControl + + + + + {2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} + ICSharpCode.TextEditor + False + + + {2748AD25-9C63-4E12-877B-4DCE96FBED54} + ICSharpCode.SharpDevelop + False + + + {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} + ICSharpCode.Core + + + + + True + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Misc/HighlightingEditor/Project/HighlightingEditor.csproj.user b/src/AddIns/Misc/HighlightingEditor/Project/HighlightingEditor.csproj.user new file mode 100644 index 0000000000..96135953c3 --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/HighlightingEditor.csproj.user @@ -0,0 +1,13 @@ + + + ..\..\..\..\..\bin\SharpDevelop.exe + + + ..\..\..\..\..\bin\SharpDevelop.exe + + + 8.0.41115 + ShowAllFiles + 0 + + \ No newline at end of file diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Resources/ColorDialog.xfrm b/src/AddIns/Misc/HighlightingEditor/Project/Resources/ColorDialog.xfrm new file mode 100644 index 0000000000..e21d4ddc7e --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Resources/ColorDialog.xfrm @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Resources/Digits.xfrm b/src/AddIns/Misc/HighlightingEditor/Project/Resources/Digits.xfrm new file mode 100644 index 0000000000..9c06aaa104 --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Resources/Digits.xfrm @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Resources/EditDialog.xfrm b/src/AddIns/Misc/HighlightingEditor/Project/Resources/EditDialog.xfrm new file mode 100644 index 0000000000..59ef7c241e --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Resources/EditDialog.xfrm @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Resources/Environment.xfrm b/src/AddIns/Misc/HighlightingEditor/Project/Resources/Environment.xfrm new file mode 100644 index 0000000000..02ba2eee10 --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Resources/Environment.xfrm @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Resources/KeywordList.xfrm b/src/AddIns/Misc/HighlightingEditor/Project/Resources/KeywordList.xfrm new file mode 100644 index 0000000000..ea305e452d --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Resources/KeywordList.xfrm @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Resources/KeywordLists.xfrm b/src/AddIns/Misc/HighlightingEditor/Project/Resources/KeywordLists.xfrm new file mode 100644 index 0000000000..e6ace9000d --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Resources/KeywordLists.xfrm @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Resources/Marker.xfrm b/src/AddIns/Misc/HighlightingEditor/Project/Resources/Marker.xfrm new file mode 100644 index 0000000000..2838e4376d --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Resources/Marker.xfrm @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Resources/Markers.xfrm b/src/AddIns/Misc/HighlightingEditor/Project/Resources/Markers.xfrm new file mode 100644 index 0000000000..ff5671fd5e --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Resources/Markers.xfrm @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Resources/OptionPanel.xfrm b/src/AddIns/Misc/HighlightingEditor/Project/Resources/OptionPanel.xfrm new file mode 100644 index 0000000000..ca84624e7f --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Resources/OptionPanel.xfrm @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Resources/Properties.xfrm b/src/AddIns/Misc/HighlightingEditor/Project/Resources/Properties.xfrm new file mode 100644 index 0000000000..d71832c56e --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Resources/Properties.xfrm @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Resources/RuleSet.xfrm b/src/AddIns/Misc/HighlightingEditor/Project/Resources/RuleSet.xfrm new file mode 100644 index 0000000000..967df0787f --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Resources/RuleSet.xfrm @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Resources/RuleSets.xfrm b/src/AddIns/Misc/HighlightingEditor/Project/Resources/RuleSets.xfrm new file mode 100644 index 0000000000..4a0a706324 --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Resources/RuleSets.xfrm @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Resources/Scheme.xfrm b/src/AddIns/Misc/HighlightingEditor/Project/Resources/Scheme.xfrm new file mode 100644 index 0000000000..17edac8a9d --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Resources/Scheme.xfrm @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Resources/Span.xfrm b/src/AddIns/Misc/HighlightingEditor/Project/Resources/Span.xfrm new file mode 100644 index 0000000000..34e303291b --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Resources/Span.xfrm @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Resources/Spans.xfrm b/src/AddIns/Misc/HighlightingEditor/Project/Resources/Spans.xfrm new file mode 100644 index 0000000000..a74410c111 --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Resources/Spans.xfrm @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Src/ColorButton.cs b/src/AddIns/Misc/HighlightingEditor/Project/Src/ColorButton.cs new file mode 100644 index 0000000000..ad57cec562 --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Src/ColorButton.cs @@ -0,0 +1,118 @@ +// +// +// +// +// +// + +using System; +using System.Windows.Forms; +using System.Drawing; + +namespace ICSharpCode.SharpDevelop.Gui +{ + + public class ColorButton : Button + { + Color centerColor; + + public ColorButton() + { + } + + public Color CenterColor + { + get { return centerColor; } + set { centerColor = value; } + } + + protected override void OnMouseEnter(EventArgs e) + { + base.OnMouseEnter(e); + Invalidate(); + } + + protected override void OnMouseLeave(EventArgs e) + { + base.OnMouseLeave(e); + Invalidate(); + } + + protected override void OnMouseUp(MouseEventArgs e) + { + base.OnMouseUp(e); + Invalidate(); + } + + protected override void OnEnabledChanged(EventArgs e) + { + base.OnEnabledChanged(e); + Invalidate(); + } + + protected override void OnClick(EventArgs e) + { + base.OnClick(e); + + Point p = new Point(0, Height); + p = PointToScreen(p); + + using (ColorPaletteDialog clDlg = new ColorPaletteDialog(p.X, p.Y)) { + clDlg.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm); + if (clDlg.DialogResult == DialogResult.OK) { + CenterColor = clDlg.Color; + } + } + + } + + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + + Graphics g = e.Graphics; + + Rectangle r = ClientRectangle; + + byte border = 4; + byte right_border = 15; + + Rectangle rc = new Rectangle(r.Left + border, r.Top + border, + r.Width - border - right_border - 1, r.Height - border * 2 - 1); + + SolidBrush centerColorBrush = new SolidBrush( centerColor ); + g.FillRectangle(centerColorBrush, rc); + + Pen pen = Pens.Black; + g.DrawRectangle(pen, rc); + + Pen greyPen = new Pen(SystemColors.ControlDark); + + //draw the arrow + Point p1 = new Point(r.Width - 9, r.Height / 2 - 1); + Point p2 = new Point(r.Width - 5, r.Height / 2 - 1); + g.DrawLine(Enabled ? pen : greyPen, p1, p2); + + p1 = new Point(r.Width - 8, r.Height / 2); + p2 = new Point(r.Width - 6, r.Height / 2); + g.DrawLine(Enabled ? pen : greyPen, p1, p2); + + p1 = new Point(r.Width - 7, r.Height / 2); + p2 = new Point(r.Width - 7, r.Height / 2 + 1); + g.DrawLine(Enabled ? pen : greyPen, p1, p2); + + //draw the divider line + pen = new Pen(SystemColors.ControlDark); + p1 = new Point(r.Width - 12, 4); + p2 = new Point(r.Width - 12, r.Height - 5 ); + g.DrawLine(pen, p1, p2); + + pen = new Pen(SystemColors.ControlLightLight); + p1 = new Point(r.Width - 11, 4); + p2 = new Point(r.Width - 11, r.Height - 5 ); + g.DrawLine(pen, p1, p2); + } + } + +} + diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Src/ColorDialog.cs b/src/AddIns/Misc/HighlightingEditor/Project/Src/ColorDialog.cs new file mode 100644 index 0000000000..6072e3245f --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Src/ColorDialog.cs @@ -0,0 +1,212 @@ +// +// +// +// +// +// + +using System; +using System.Windows.Forms; +using System.Drawing; + +namespace ICSharpCode.SharpDevelop.Gui +{ + + public class ColorPaletteDialog : Form + { + byte max = 40; + ColorPanel[] panel = new ColorPanel[40]; + + Color[] color = new Color[40] + { + //row 1 + Color.FromArgb(0,0,0), Color.FromArgb(153,51,0), Color.FromArgb(51,51,0), Color.FromArgb(0,51,0), + Color.FromArgb(0,51,102), Color.FromArgb(0,0,128), Color.FromArgb(51,51,153), Color.FromArgb(51,51,51), + + //row 2 + Color.FromArgb(128,0,0), Color.FromArgb(255,102,0), Color.FromArgb(128,128,0), Color.FromArgb(0,128,0), + Color.FromArgb(0,128,128), Color.FromArgb(0,0,255), Color.FromArgb(102,102,153), Color.FromArgb(128,128,128), + + //row 3 + Color.FromArgb(255,0,0), Color.FromArgb(255,153,0), Color.FromArgb(153,204,0), Color.FromArgb(51,153,102), + Color.FromArgb(51,204,204), Color.FromArgb(51,102,255), Color.FromArgb(128,0,128), Color.FromArgb(153,153,153), + + //row 4 + Color.FromArgb(255,0,255), Color.FromArgb(255,204,0), Color.FromArgb(255,255,0), Color.FromArgb(0,255,0), + Color.FromArgb(0,255,255), Color.FromArgb(0,204,255), Color.FromArgb(153,51,102), Color.FromArgb(192,192,192), + + //row 5 + Color.FromArgb(255,153,204), Color.FromArgb(255,204,153), Color.FromArgb(255,255,153), Color.FromArgb(204,255,204), + Color.FromArgb(204,255,255), Color.FromArgb(153,204,255), Color.FromArgb(204,153,255), Color.FromArgb(255,255,255) + }; + + string[] colorName = new string[40] + { + "Black", "Brown", "Olive Green", "Dark Green", "Dark Teal", "Dark Blue", "Indigo", "Gray-80%", + "Dark Red", "Orange", "Dark Yellow", "Green", "Teal", "Blue", "Blue-Gray", "Gray-50%", + "Red", "Light Orange", "Lime", "Sea Green", "Aqua", "Light Blue", "Violet", "Gray-40%", + "Pink", "Gold", "Yellow", "Bright Green", "Turquoise", "Sky Blue", "Plum", "Gray-25%", + "Rose", "Tan", "Light Yellow", "Light Green", "Light Turquoise", "Pale Blue", "Lavender", "White" + }; + + Button moreColorsButton = new Button(); + Button cancelButton = new Button(); + Color selectedColor; + + public ColorPaletteDialog(int x, int y) + { + Size = new Size(158, 158); + FormBorderStyle = FormBorderStyle.FixedDialog; + MinimizeBox = MaximizeBox = ControlBox = false; + ShowInTaskbar = false; + CenterToScreen(); + Location = new Point(x, y); + + BuildPalette(); + + moreColorsButton.Text = "More colors ..."; + moreColorsButton.Size = new Size(142, 22); + moreColorsButton.Location = new Point(5, 99); + moreColorsButton.Click += new EventHandler(moreColorsButton_Click); + moreColorsButton.FlatStyle = FlatStyle.Popup; + Controls.Add(moreColorsButton); + + //"invisible" button to cancel at Escape + cancelButton.Text = "Cancel"; + cancelButton.Size = new Size(142, 22); + cancelButton.Location = new Point(5, 125); + cancelButton.FlatStyle = FlatStyle.Popup; + cancelButton.Click += new EventHandler(cancelButton_Click); + Controls.Add(cancelButton); + cancelButton.DialogResult = DialogResult.Cancel; + this.CancelButton = cancelButton; + + moreColorsButton.TabIndex = 0; + } + + public Color Color + { + get { return selectedColor; } + } + + void BuildPalette() + { + byte pwidth = 16; + byte pheight = 16; + byte pdistance = 2; + byte border = 5; + int x = border, y = border; + ToolTip toolTip = new ToolTip(); + + for(int i = 0; i < max; i++) + { + panel[i] = new ColorPanel(); + panel[i].Height = pwidth; + panel[i].Width = pheight; + panel[i].Location = new Point(x, y); + toolTip.SetToolTip(panel[i], colorName[i]); + + this.Controls.Add(panel[i]); + + if(x < ( 7 * (pwidth + pdistance))) + x += pwidth + pdistance; + else + { + x = border; + y += pheight + pdistance; + } + + panel[i].BackColor = color[i]; + panel[i].MouseUp += new MouseEventHandler(OnPanelMouseUp); + } + } + + void OnPanelMouseUp(object sender, MouseEventArgs e) + { + Panel panel = (Panel)sender; + selectedColor = panel.BackColor; + DialogResult = DialogResult.OK; + Close(); + } + + void moreColorsButton_Click(object sender, System.EventArgs e) + { + using (ColorDialog colDialog = new ColorDialog()) { + colDialog.FullOpen = true; + if (colDialog.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) { + selectedColor = colDialog.Color; + DialogResult = DialogResult.OK; + } + } + + Close(); + } + + void cancelButton_Click(object sender, System.EventArgs e) + { + Close(); + } + + internal class ColorPanel : Panel + { + protected override void OnMouseEnter(EventArgs e) + { + base.OnMouseEnter(e); + Draw(1, CreateGraphics()); + } + + protected override void OnMouseLeave(EventArgs e) + { + base.OnMouseLeave(e); + Draw(0, CreateGraphics()); + } + + protected override void OnMouseDown(MouseEventArgs e) + { + base.OnMouseDown(e); + Draw(2, CreateGraphics()); + } + + protected override void OnPaint(PaintEventArgs e) + { + Draw(0, e.Graphics); + } + + void Draw(byte state, Graphics g) + { + Pen pen1, pen2; + + if(state == 1) //mouse over + { + pen1 = new Pen( SystemColors.ControlLightLight ); + pen2 = new Pen( SystemColors. ControlDarkDark); + } + else if(state == 2) //clicked + { + pen1 = new Pen( SystemColors.ControlDarkDark ); + pen2 = new Pen( SystemColors.ControlLightLight ); + } + else //neutral + { + pen1 = new Pen( SystemColors.ControlDark ); + pen2 = new Pen( SystemColors.ControlDark ); + + } + + Rectangle r = ClientRectangle; + Point p1 = new Point( r.Left, r.Top ); //top left + Point p2 = new Point( r.Right -1, r.Top ); //top right + Point p3 = new Point( r.Left, r.Bottom -1 ); //bottom left + Point p4 = new Point( r.Right -1, r.Bottom -1 ); //bottom right + + g.DrawLine( pen1, p1, p2 ); + g.DrawLine( pen1, p1, p3 ); + g.DrawLine( pen2, p2, p4 ); + g.DrawLine( pen2, p3, p4 ); + } + + } + } + +} + diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Src/EditHighlightingColorDialog.cs b/src/AddIns/Misc/HighlightingEditor/Project/Src/EditHighlightingColorDialog.cs new file mode 100644 index 0000000000..39b207a464 --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Src/EditHighlightingColorDialog.cs @@ -0,0 +1,165 @@ +// created on 07.09.2003 at 22:09 +using System; +using System.Windows.Forms; +using System.Reflection; + +using ICSharpCode.SharpDevelop.Gui.XmlForms; + +using ICSharpCode.TextEditor.Document; +using ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes; + +namespace ICSharpCode.SharpDevelop.Gui { + + public class EditHighlightingColorDialog : BaseSharpDevelopForm + { + private System.Windows.Forms.RadioButton foreNo; + private System.Windows.Forms.RadioButton foreUser; + private ICSharpCode.SharpDevelop.Gui.ColorButton backBtn; + private System.Windows.Forms.RadioButton backSys; + private System.Windows.Forms.Button acceptBtn; + private ICSharpCode.SharpDevelop.Gui.ColorButton foreBtn; + private System.Windows.Forms.RadioButton backNo; + private System.Windows.Forms.ComboBox foreList; + private System.Windows.Forms.CheckBox italicBox; + private System.Windows.Forms.RadioButton foreSys; + private System.Windows.Forms.RadioButton backUser; + private System.Windows.Forms.CheckBox boldBox; + private System.Windows.Forms.ComboBox backList; + + public EditorHighlightColor Color; + + public EditHighlightingColorDialog(EditorHighlightColor color) + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.ColorDialog.xfrm")); + + Color = color; + + boldBox = (CheckBox)ControlDictionary["boldBox"]; + italicBox = (CheckBox)ControlDictionary["italicBox"]; + + foreNo = (RadioButton)ControlDictionary["foreNo"]; + foreUser = (RadioButton)ControlDictionary["foreUser"]; + foreSys = (RadioButton)ControlDictionary["foreSys"]; + foreList = (ComboBox)ControlDictionary["foreList"]; + + backNo = (RadioButton)ControlDictionary["backNo"]; + backUser = (RadioButton)ControlDictionary["backUser"]; + backSys = (RadioButton)ControlDictionary["backSys"]; + backList = (ComboBox)ControlDictionary["backList"]; + + acceptBtn = (Button)ControlDictionary["acceptBtn"]; + + this.foreBtn = new ColorButton(); + this.foreBtn.CenterColor = System.Drawing.Color.Empty; + this.foreBtn.Enabled = false; + this.foreBtn.Location = new System.Drawing.Point(30, 78); + this.foreBtn.Name = "foreBtn"; + this.foreBtn.Size = new System.Drawing.Size(98, 24); + + this.ControlDictionary["foreBox"].Controls.Add(foreBtn); + + this.backBtn = new ColorButton(); + this.backBtn.CenterColor = System.Drawing.Color.Empty; + this.backBtn.Enabled = false; + this.backBtn.Location = new System.Drawing.Point(30, 78); + this.backBtn.Name = "backBtn"; + this.backBtn.Size = new System.Drawing.Size(98, 24); + + this.ControlDictionary["backBox"].Controls.Add(backBtn); + + this.acceptBtn.Click += new EventHandler(AcceptClick); + this.foreNo.CheckedChanged += new EventHandler(foreCheck); + this.foreSys.CheckedChanged += new EventHandler(foreCheck); + this.foreUser.CheckedChanged += new EventHandler(foreCheck); + this.backNo.CheckedChanged += new EventHandler(backCheck); + this.backSys.CheckedChanged += new EventHandler(backCheck); + this.backUser.CheckedChanged += new EventHandler(backCheck); + + PropertyInfo[] names = typeof(System.Drawing.SystemColors).GetProperties(BindingFlags.Static | BindingFlags.Public); + + foreach(PropertyInfo info in names) { + foreList.Items.Add(info.Name); + backList.Items.Add(info.Name); + } + foreList.SelectedIndex = backList.SelectedIndex = 0; + + if (color.SysForeColor) { + foreSys.Checked = true; + for (int i = 0; i < foreList.Items.Count; ++i) { + if ((string)foreList.Items[i] == color.SysForeColorName) foreList.SelectedIndex = i; + } + } else if (color.HasForeColor) { + foreUser.Checked = true; + foreBtn.CenterColor = color.ForeColor; + } else { + foreNo.Checked = true; + } + + if (color.SysBackColor) { + backSys.Checked = true; + for (int i = 0; i < backList.Items.Count; ++i) { + if ((string)backList.Items[i] == color.SysForeColorName) backList.SelectedIndex = i; + } + } else if (color.HasBackColor) { + backUser.Checked = true; + backBtn.CenterColor = color.BackColor; + } else { + backNo.Checked = true; + } + + boldBox.Checked = color.Bold; + italicBox.Checked = color.Italic; + } + + void foreCheck(object sender, EventArgs e) + { + if (foreNo.Checked) { + foreBtn.Enabled = false; + foreList.Enabled = false; + } else if (foreUser.Checked) { + foreBtn.Enabled = true; + foreList.Enabled = false; + } else if (foreSys.Checked) { + foreBtn.Enabled = false; + foreList.Enabled = true; + } + } + + void backCheck(object sender, EventArgs e) + { + if (backNo.Checked) { + backBtn.Enabled = false; + backList.Enabled = false; + } else if (backUser.Checked) { + backBtn.Enabled = true; + backList.Enabled = false; + } else if (backSys.Checked) { + backBtn.Enabled = false; + backList.Enabled = true; + } + } + + void AcceptClick(object sender, EventArgs e) + { + object foreColor = null; + object backColor = null; + + if (foreUser.Checked) { + foreColor = (System.Drawing.Color)foreBtn.CenterColor; + } else if (foreSys.Checked) { + foreColor = (string)foreList.SelectedItem; + } + + if (backUser.Checked) { + backColor = (System.Drawing.Color)backBtn.CenterColor; + } else if (backSys.Checked) { + backColor = (string)backList.SelectedItem; + } + + Color = new EditorHighlightColor(foreColor, backColor, boldBox.Checked, italicBox.Checked); + + DialogResult = DialogResult.OK; + } + + } +} diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Src/EditHighlightingDialog.cs b/src/AddIns/Misc/HighlightingEditor/Project/Src/EditHighlightingDialog.cs new file mode 100644 index 0000000000..971967a4fc --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Src/EditHighlightingDialog.cs @@ -0,0 +1,146 @@ +// +// +// +// +// +// + +using System; +using System.Windows.Forms; +using System.Drawing; +using System.Drawing.Drawing2D; + +using ICSharpCode.SharpDevelop.Gui.XmlForms; +using ICSharpCode.TextEditor.Document; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes; + +namespace ICSharpCode.SharpDevelop.Gui { + + public class EditHighlightingDialog : BaseSharpDevelopForm + { + private System.Windows.Forms.Button acceptBtn; + private System.Windows.Forms.Panel propPanel; + private System.Windows.Forms.Panel optionPanel; + private System.Windows.Forms.TreeView nodeTree; + + private GradientLabel gradientLabel = new GradientLabel(); + private Label bottomLabel = new Label(); + + public EditHighlightingDialog(TreeNode topNode) + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.EditDialog.xfrm")); + acceptBtn = (Button)ControlDictionary["acceptBtn"]; + nodeTree = (TreeView)ControlDictionary["nodeTree"]; + propPanel = (Panel)ControlDictionary["propPanel"]; + optionPanel = (Panel)ControlDictionary["optionPanel"]; + + // Form editor does not work properly with the custom control + this.gradientLabel.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; + this.gradientLabel.BorderStyle = BorderStyle.Fixed3D; + this.gradientLabel.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); + this.gradientLabel.Location = new System.Drawing.Point(0, 0); + this.gradientLabel.Size = new System.Drawing.Size(propPanel.Width, 30); + this.gradientLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.propPanel.Controls.Add(gradientLabel); + + this.bottomLabel.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; + this.bottomLabel.BorderStyle = BorderStyle.Fixed3D; + this.bottomLabel.Location = new System.Drawing.Point(0, propPanel.Height - 2); + this.bottomLabel.Size = new System.Drawing.Size(propPanel.Width, 2); + this.propPanel.Controls.Add(bottomLabel); + + this.ClientSize = new Size(660, 530); + this.acceptBtn.Click += new EventHandler(acceptClick); + ControlDictionary["cancelBtn"].Click += new EventHandler(cancelClick); + + this.nodeTree.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.NodeTreeAfterSelect); + this.nodeTree.BeforeSelect += new System.Windows.Forms.TreeViewCancelEventHandler(this.NodeTreeBeforeSelect); + + nodeTree.Nodes.Add(topNode); + nodeTree.ExpandAll(); + + nodeTree.SelectedNode = topNode; + } + + void cancelClick(object sender, EventArgs e) + { + if (currentPanel != null) { + currentPanel.ParentNode.UpdateNodeText(); + optionPanel.Controls.Clear(); + } + nodeTree.Nodes.Clear(); + + DialogResult = DialogResult.Cancel; + + } + + void acceptClick(object sender, EventArgs e) + { + if (currentPanel != null) { + if (!currentPanel.ValidateSettings()) { + return; + } + currentPanel.StoreSettings(); + currentPanel.ParentNode.UpdateNodeText(); + + optionPanel.Controls.Clear(); + } + + nodeTree.Nodes.Clear(); + + DialogResult = DialogResult.OK; + } + + public class GradientLabel : Label + { + protected override void OnPaintBackground(PaintEventArgs pe) + { +// base.OnPaintBackground(pe); + Graphics g = pe.Graphics; + g.FillRectangle(new LinearGradientBrush(new Point(0, 0), new Point(Width, Height), + SystemColors.ControlLightLight, + SystemColors.Control), + new Rectangle(0, 0, Width, Height)); + } + + public GradientLabel() : base() + { + UseMnemonic = false; + } + } + + private NodeOptionPanel currentPanel; + + void NodeTreeBeforeSelect(object sender, System.Windows.Forms.TreeViewCancelEventArgs e) + { + if (currentPanel != null) { + if (!currentPanel.ValidateSettings()) { + e.Cancel = true; + return; + } + } + } + + void NodeTreeAfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e) + { + if (currentPanel != null) { + currentPanel.StoreSettings(); + currentPanel.ParentNode.UpdateNodeText(); + } + + optionPanel.Controls.Clear(); + NodeOptionPanel control = ((AbstractNode)e.Node).OptionPanel; + if (control != null) { + optionPanel.Controls.Add(control); + currentPanel = control; + currentPanel.LoadSettings(); + } + + gradientLabel.Text = " " + e.Node.Text; + + } + + } + +} diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Src/EditHighlightingPanel.cs b/src/AddIns/Misc/HighlightingEditor/Project/Src/EditHighlightingPanel.cs new file mode 100644 index 0000000000..9d3e0c1d69 --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Src/EditHighlightingPanel.cs @@ -0,0 +1,305 @@ +// +// +// +// +// +// + +using System; +using System.Drawing; +using System.Windows.Forms; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Xml; +using System.Xml.Schema; +using System.Text; + +using ICSharpCode.Core; + +using ICSharpCode.TextEditor.Document; +using ICSharpCode.SharpDevelop.Gui; + +using ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes; + +namespace ICSharpCode.SharpDevelop.Gui.OptionPanels +{ + class EditHighlightingPanel : AbstractOptionPanel { + Label builtinLabel; + ListBox builtinList; + Button copyButton; + Label userLabel; + ListBox userList; + Button deleteButton; + Button modifyButton; + + ResourceSyntaxModeProvider modeProvider; + + public override bool StorePanelContents() + { + ICSharpCode.TextEditor.Document.HighlightingManager.Manager.ReloadSyntaxModes(); + return true; + } + + public EditHighlightingPanel() { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.OptionPanel.xfrm")); + InitializeComponent(); + } + + public override void LoadPanelContents() + { + FillLists(); + } + + void InitializeComponent() { + builtinLabel = (Label)ControlDictionary["builtinLabel"]; + builtinList = (ListBox)ControlDictionary["builtinList"]; + builtinList.SelectedIndexChanged += new EventHandler(BuiltinListSelectedIndexChanged); + + copyButton = (Button)ControlDictionary["copyButton"]; + copyButton.Click += new EventHandler(CopyButtonClick); + + userLabel = (Label)ControlDictionary["userLabel"]; + userList = (ListBox)ControlDictionary["userList"]; + + deleteButton = (Button)ControlDictionary["deleteButton"]; + deleteButton.Click += new EventHandler(DeleteButtonClick); + + modifyButton = (Button)ControlDictionary["modifyButton"]; + modifyButton.Click += new EventHandler(ModifyButtonClick); + + } + + void BuiltinListSelectedIndexChanged(object sender, EventArgs e) + { + if (builtinList.SelectedIndex == -1) { + copyButton.Enabled = false; + return; + } + HighlightItem item = (HighlightItem)builtinList.SelectedItem; + string filename = item.FileName; + if (filename == null) { + filename = item.SyntaxMode.FileName; + } + + string newname = Path.GetFileName(filename); + foreach (HighlightItem item2 in userList.Items) { + if (Path.GetFileName(item2.FileName) == newname) { + copyButton.Enabled = false; + return; + } + } + copyButton.Enabled = true; + } + + protected override void OnResize(System.EventArgs ev) + { + int halfWidth = (Width - 24) / 2; + + builtinLabel.Width = userLabel.Width = halfWidth; + builtinList.Width = userList.Width = halfWidth; + + userLabel.Left = userList.Left = halfWidth + 16; + deleteButton.Left = userList.Left; + modifyButton.Left = deleteButton.Left + 90; + + base.OnResize(ev); + } + + void FillLists() + { + builtinList.Items.Clear(); + userList.Items.Clear(); + + string uPath = Path.Combine(PropertyService.ConfigDirectory, "modes"); + + List uCol; + + if (Directory.Exists(uPath)) { + uCol = FileUtility.SearchDirectory(uPath, "*.xshd", true); + } else { + Directory.CreateDirectory(uPath); + uCol = new List(); + } + + foreach(string str in uCol) { + SchemeNode node = LoadFile(new XmlTextReader(str), true); + if (node == null) continue; + userList.Items.Add(new HighlightItem(null, str, node)); + } + + modeProvider = new ResourceSyntaxModeProvider(); + + foreach(SyntaxMode mode in modeProvider.SyntaxModes){ + SchemeNode node = LoadFile(modeProvider.GetSyntaxModeFile(mode), false); + if (node == null) continue; + builtinList.Items.Add(new HighlightItem(mode, null, node)); + } + + if (builtinList.Items.Count > 0) + builtinList.SelectedIndex = 0; + + if (userList.Items.Count > 0) + userList.SelectedIndex = 0; + } + + void CopyButtonClick(object sender, EventArgs ev) + { + if (builtinList.SelectedIndex == -1) return; + + try { + HighlightItem item = (HighlightItem)builtinList.SelectedItem; + + string filename = item.FileName; + if (filename == null) filename = item.SyntaxMode.FileName; + + string newname = Path.GetFileName(filename); + newname = Path.Combine(PropertyService.ConfigDirectory, "modes" + + Path.DirectorySeparatorChar + newname); + + using (StreamWriter fs = File.CreateText(newname)) { + fs.Write(item.Node.Content); + } + + SchemeNode newNode = LoadFile(new XmlTextReader(newname), true); + if (newNode == null) throw new Exception(); + + userList.Items.Add(new HighlightItem(null, newname, newNode)); + } catch (Exception e) { + MessageService.ShowError(e, "${res:Dialog.Options.TextEditorOptions.EditHighlighting.CopyError}"); + } + BuiltinListSelectedIndexChanged(this, EventArgs.Empty); + } + + void ModifyButtonClick(object sender, EventArgs ev) + { + if (userList.SelectedIndex == -1) { + return; + } + + HighlightItem item = (HighlightItem)userList.SelectedItem; + + using (EditHighlightingDialog dlg = new EditHighlightingDialog(item.Node)) { + DialogResult res = dlg.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm); + + if (res == DialogResult.OK) { + using (StreamWriter sw = new StreamWriter(item.FileName, false)) { + sw.WriteLine(item.Node.ToXml().Replace("\n", "\r\n")); + } + // refresh item text + userList.Items.RemoveAt(userList.SelectedIndex); + userList.Items.Add(item); + } + + try { + item.Node.Remove(); + } catch {} + + } + } + + void DeleteButtonClick(object sender, EventArgs ev) + { + if (userList.SelectedIndex == -1) return; + HighlightItem item = (HighlightItem)userList.SelectedItem; + + if (!MessageService.AskQuestion("${res:Dialog.Options.TextEditorOptions.EditHighlighting.DeleteConfirm}")) return; + + try { + File.Delete(item.FileName); + } catch (Exception e) { + MessageService.ShowError(e, "${res:Dialog.Options.TextEditorOptions.EditHighlighting.DeleteError}"); + } + userList.Items.RemoveAt(userList.SelectedIndex); + BuiltinListSelectedIndexChanged(this, EventArgs.Empty); + } + + ArrayList errors = new ArrayList(); + + private SchemeNode LoadFile(XmlTextReader reader, bool userList) + { + try { + XmlValidatingReader validatingReader = new XmlValidatingReader(reader); + Stream schemaStream = typeof(SyntaxMode).Assembly.GetManifestResourceStream("Mode.xsd"); + validatingReader.Schemas.Add("", new XmlTextReader(schemaStream)); + validatingReader.ValidationType = ValidationType.Schema; + validatingReader.ValidationEventHandler += new ValidationEventHandler(ValidationHandler); + + XmlDocument doc = new XmlDocument(); + doc.Load(validatingReader); + + if (errors.Count != 0) { + ReportErrors(); + return null; + } else { + return new SchemeNode(doc.DocumentElement, userList); + } + } catch (Exception e) { + + MessageService.ShowError(e, "${res:Dialog.Options.TextEditorOptions.EditHighlighting.LoadError}"); + return null; + } finally { + reader.Close(); + } + + } + + private void ValidationHandler(object sender, ValidationEventArgs args) + { + errors.Add(args); + } + + private void ReportErrors() + { + StringBuilder msg = new StringBuilder(); + msg.Append(ResourceService.GetString("Dialog.Options.TextEditorOptions.EditHighlighting.LoadError") + "\n\n"); + foreach(ValidationEventArgs args in errors) { + msg.Append(args.Message); + msg.Append(Console.Out.NewLine); + } + + MessageService.ShowWarning(msg.ToString()); + } + + internal class HighlightItem + { + string fileName; + SyntaxMode syntaxMode; + SchemeNode node; + + public HighlightItem(SyntaxMode mode, string filename, SchemeNode Node) + { + syntaxMode = mode; + fileName = filename; + node = Node; + } + + public string FileName { + get { + return fileName; + } + } + + public SyntaxMode SyntaxMode { + get { + return syntaxMode; + } + } + + public SchemeNode Node { + get { + return node; + } + } + + public override string ToString() + { + try { + return syntaxMode.Name + " (" + String.Join(", ", node.Extensions) + ")"; + } catch { + return fileName; + } + } + } + } +} diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Src/EditorHighlightColor.cs b/src/AddIns/Misc/HighlightingEditor/Project/Src/EditorHighlightColor.cs new file mode 100644 index 0000000000..9e66f5e1e8 --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Src/EditorHighlightColor.cs @@ -0,0 +1,300 @@ +// +// +// +// +// +// + +using System; +using System.Drawing; +using System.Diagnostics; +using System.Collections.Specialized; +using System.Collections; +using System.Globalization; +using System.IO; +using System.Reflection; +using System.Windows.Forms; +using System.Xml; + +namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes +{ + public class EditorHighlightColor + { + bool hasForeColor = false; + bool hasBackColor = false; + + Color foreColor; + bool sysForeColor = false; + string sysForeColorName = ""; + + Color backColor; + bool sysBackColor = false; + string sysBackColorName = ""; + + bool bold = false; + bool italic = false; + + bool noColor = false; + + public bool NoColor { + get { + return noColor; + } + } + public bool HasForeColor { + get { + return hasForeColor; + } + } + public bool HasBackColor { + get { + return hasBackColor; + } + } + public Color ForeColor { + get { + return foreColor; + } + } + public bool SysForeColor { + get { + return sysForeColor; + } + } + public string SysForeColorName { + get { + return sysForeColorName; + } + } + public Color BackColor { + get { + return backColor; + } + } + public bool SysBackColor { + get { + return sysBackColor; + } + } + public string SysBackColorName { + get { + return sysBackColorName; + } + } + public bool Bold { + get { + return bold; + } + } + public bool Italic { + get { + return italic; + } + } + + + public EditorHighlightColor(XmlElement el) + { + if (el == null) { + noColor = true; + return; + } + + if (el.Attributes["bold"] == null && + el.Attributes["italic"] == null && + el.Attributes["color"] == null && + el.Attributes["bgcolor"] == null) + { + noColor = true; + return; + } + + if (el.Attributes["bold"] != null) { + bold = Boolean.Parse(el.Attributes["bold"].InnerText); + } + + if (el.Attributes["italic"] != null) { + italic = Boolean.Parse(el.Attributes["italic"].InnerText); + } + + if (el.Attributes["color"] != null) { + hasForeColor = true; + string c = el.Attributes["color"].InnerText; + if (c[0] == '#') { + foreColor = ParseColor(c); + } else if (c.StartsWith("SystemColors.")) { + sysForeColor = true; + sysForeColorName = c.Substring("SystemColors.".Length); + } else { + PropertyInfo myPropInfo = typeof(Color).GetProperty(c, BindingFlags.Public | BindingFlags.Static); + foreColor = (Color)myPropInfo.GetValue(null, null); + } + } + + if (el.Attributes["bgcolor"] != null) { + hasBackColor = true; + string c = el.Attributes["bgcolor"].InnerText; + if (c[0] == '#') { + backColor = ParseColor(c); + } else if (c.StartsWith("SystemColors.")) { + sysBackColor = true; + sysBackColorName = c.Substring("SystemColors.".Length); + } else { + PropertyInfo myPropInfo = typeof(Color).GetProperty(c, BindingFlags.Public | BindingFlags.Static); + backColor = (Color)myPropInfo.GetValue(null, null); + } + } + } + + public EditorHighlightColor(bool hascolor, Color Color, bool hasbackcolor, Color BackColor, bool bold, bool italic) + { + hasForeColor = hascolor; + hasBackColor = hasbackcolor; + this.backColor = BackColor; + this.foreColor = Color; + this.bold = bold; + this.italic = italic; + } + + public EditorHighlightColor(object ForeColor, object BackColor, bool Bold, bool Italic) + { + bold = Bold; + italic = Italic; + + if (ForeColor is Color) { + hasForeColor = true; + foreColor = (Color)ForeColor; + } else if (ForeColor is string) { + hasForeColor = true; + sysForeColor = true; + sysForeColorName = (string)ForeColor; + } + + if (BackColor is Color) { + hasBackColor = true; + backColor = (Color)BackColor; + } else if (BackColor is string) { + hasBackColor = true; + sysBackColor = true; + sysBackColorName = (string)BackColor; + } + } + + public EditorHighlightColor() + { + bold = false; + italic = false; + hasForeColor = true; + sysForeColor = true; + sysForeColorName = "WindowText"; + } + + public EditorHighlightColor(bool NoColor) : this() + { + noColor = NoColor; + } + + static Color ParseColor(string c) + { + int a = 255; + int offset = 0; + if (c.Length > 7) { + offset = 2; + a = Int32.Parse(c.Substring(1,2), NumberStyles.HexNumber); + } + + int r = Int32.Parse(c.Substring(1 + offset,2), NumberStyles.HexNumber); + int g = Int32.Parse(c.Substring(3 + offset,2), NumberStyles.HexNumber); + int b = Int32.Parse(c.Substring(5 + offset,2), NumberStyles.HexNumber); + return Color.FromArgb(a, r, g, b); + } + + public string ToXml() + { + string str = ""; + str += "bold=\"" + bold.ToString().ToLower() + "\" "; + str += "italic=\"" + italic.ToString().ToLower() + "\" "; + if (hasForeColor) { + str += "color=\""; + if (sysForeColor) { + str += "SystemColors." + sysForeColorName; + } else { + str += ReplaceColorName("#" + (foreColor.A != 255 ? foreColor.A.ToString("X2") : "") + + foreColor.R.ToString("X2") + + foreColor.G.ToString("X2") + + foreColor.B.ToString("X2")); + } + + str += "\" "; + } + if (hasBackColor) { + str += "bgcolor=\""; + if (sysBackColor) { + str += "SystemColors." + sysBackColorName; + } else { + str += ReplaceColorName("#" + (backColor.A != 255 ? backColor.A.ToString("X2") : "") + + backColor.R.ToString("X2") + + backColor.G.ToString("X2") + + backColor.B.ToString("X2")); + } + + str += "\" "; + } + return str; + } + + Color ParseSysColor(string colorName) + { + string[] cNames = colorName.Split('*'); + PropertyInfo myPropInfo = typeof(System.Drawing.SystemColors).GetProperty(cNames[0], BindingFlags.Public | BindingFlags.Static); + Color c = (Color)myPropInfo.GetValue(null, null); + + if (cNames.Length == 2) { + // hack : can't figure out how to parse doubles with '.' (culture info might set the '.' to ',') + double factor = Double.Parse(cNames[1]) / 100; + c = Color.FromArgb((int)((double)c.R * factor), (int)((double)c.G * factor), (int)((double)c.B * factor)); + } + + return c; + } + + public Color GetForeColor() + { + if (!hasForeColor) return Color.Transparent; + + if (sysForeColor) return ParseSysColor(sysForeColorName); + + return foreColor; + } + + public Color GetBackColor() + { + if (!hasBackColor) return Color.Transparent; + + if (sysBackColor) return ParseSysColor(sysBackColorName); + + return backColor; + } + + static Hashtable colorNames = new Hashtable(); + + static string ReplaceColorName(string color) + { + if (colorNames.ContainsKey(color)) return (string)colorNames[color]; + return color; + } + + static EditorHighlightColor() + { + PropertyInfo[] names = typeof(System.Drawing.Color).GetProperties(BindingFlags.Public | BindingFlags.Static); + + foreach(PropertyInfo pi in names) { + Color pcolor = (Color)pi.GetValue(null, null); + string colorDesc = "#" + (pcolor.A != 255 ? pcolor.A.ToString("X2") : "") + pcolor.R.ToString("X2") + pcolor.G.ToString("X2") + pcolor.B.ToString("X2"); + try { + colorNames.Add(colorDesc, pi.Name); + } catch {} + } + } + } +} diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/AbstractNode.cs b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/AbstractNode.cs new file mode 100644 index 0000000000..4f18fd6a83 --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/AbstractNode.cs @@ -0,0 +1,46 @@ +// +// +// +// +// +// + +using System; +using System.Windows.Forms; +using System.Drawing; +using System.Xml; +using ICSharpCode.TextEditor.Document; + + +using ICSharpCode.Core; +namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes +{ + abstract class AbstractNode : TreeNode + { + protected NodeOptionPanel panel; + protected string ResNodeName(string resName) + { + try { + return ResourceService.GetString("Dialog.HighlightingEditor.TreeView." + resName); + } catch { + return resName; + } + } + + public NodeOptionPanel OptionPanel { + get { + return panel; + } + } + + public abstract void UpdateNodeText(); + + // should be made abstract when implementing ToXml() + public virtual string ToXml() { return ""; } + + public static string ReplaceXmlChars(string str) + { + return str.Replace("&", "&").Replace("<", "<").Replace(">", ">"); + } + } +} diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/DigitsNode.cs b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/DigitsNode.cs new file mode 100644 index 0000000000..bb5ef83d44 --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/DigitsNode.cs @@ -0,0 +1,97 @@ +// +// +// +// +// +// + +using System; +using System.Windows.Forms; +using System.Drawing; +using System.Xml; +using ICSharpCode.TextEditor.Document; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; + +namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes +{ + class DigitsNode : AbstractNode + { + EditorHighlightColor color; + + public EditorHighlightColor Color { + get { + return color; + } + set { + color = value; + } + } + + public DigitsNode(XmlElement el) + { + if (el != null) { + color = new EditorHighlightColor(el); + } else { + color = new EditorHighlightColor(); + } + + Text = ResNodeName("DigitsColor"); + + panel = new DigitsOptionPanel(this); + } + + public override void UpdateNodeText() + { + } + + public override string ToXml() + { + return "\t\n\n"; + } + } + + class DigitsOptionPanel : NodeOptionPanel + { + private System.Windows.Forms.Button button; + private System.Windows.Forms.Label sampleLabel; + + EditorHighlightColor color = new EditorHighlightColor(); + + public DigitsOptionPanel(DigitsNode parent) : base(parent) + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.Digits.xfrm")); + + button = (Button)ControlDictionary["button"]; + button.Click += new EventHandler(EditButtonClicked); + sampleLabel = (Label)ControlDictionary["sampleLabel"]; + } + + public override void StoreSettings() + { + DigitsNode node = (DigitsNode)parent; + + node.Color = color; + } + + public override void LoadSettings() + { + DigitsNode node = (DigitsNode)parent; + + Properties properties = ((Properties)PropertyService.Get("ICSharpCode.TextEditor.Document.Document.DefaultDocumentAggregatorProperties", new Properties())); + sampleLabel.Font = ParseFont(properties.Get("DefaultFont", new Font("Courier New", 10).ToString())); + color = node.Color; + PreviewUpdate(sampleLabel, color); + } + + void EditButtonClicked(object sender, EventArgs e) + { + using (EditHighlightingColorDialog dlg = new EditHighlightingColorDialog(color)) { + if (dlg.ShowDialog(this) == DialogResult.OK) { + color = dlg.Color; + PreviewUpdate(sampleLabel, color); + } + } + } + } +} diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/EnvironmentNode.cs b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/EnvironmentNode.cs new file mode 100644 index 0000000000..8a1e4538fc --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/EnvironmentNode.cs @@ -0,0 +1,165 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.Windows.Forms; +using System.Drawing; +using System.Xml; + +using ICSharpCode.TextEditor.Document; +using ICSharpCode.Core; + +using ICSharpCode.SharpDevelop.Gui; + +namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes +{ + class EnvironmentNode : AbstractNode + { + public static string[] ColorNames; + public string[] ColorDescs; + public EditorHighlightColor[] Colors; + + public EnvironmentNode(XmlElement el) + { + + + ArrayList envColors = new ArrayList(); + ArrayList envColorNames = new ArrayList(); + ArrayList envColorDescriptions = new ArrayList(); + if (el != null) { + foreach (XmlNode node in el.ChildNodes) { + if (node is XmlElement) { + Console.WriteLine("Node : " + node); + + envColorNames.Add(node.Name); + envColorDescriptions.Add("${res:Dialog.HighlightingEditor.EnvColors." + node.Name + "}"); + envColors.Add(new EditorHighlightColor((XmlElement)node)); + } + } + } + EnvironmentNode.ColorNames = (string[])envColorNames.ToArray(typeof(string)); + this.ColorDescs = (string[])envColorDescriptions.ToArray(typeof(string)); + this.Colors = (EditorHighlightColor[])envColors.ToArray(typeof(EditorHighlightColor)); + StringParser.Parse(ref ColorDescs); + + Text = ResNodeName("EnvironmentColors"); + + panel = new EnvironmentOptionPanel(this); + } + + public override void UpdateNodeText() + { + } + + public override string ToXml() + { + string str = "\t\n"; + for (int i = 0; i <= ColorNames.GetUpperBound(0); ++i) { + str += "\t\t<" + ColorNames[i] + " " + Colors[i].ToXml() + "/>\n"; + } + str += "\t\n\n"; + return str; + } + } + + class EnvironmentOptionPanel : NodeOptionPanel + { + private System.Windows.Forms.Button button; + private System.Windows.Forms.ListView listView; + + public EnvironmentOptionPanel(EnvironmentNode parent) : base(parent) + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.Environment.xfrm")); + + button = (Button)ControlDictionary["button"]; + button.Click += new EventHandler(EditButtonClicked); + listView = (ListView)ControlDictionary["listView"]; + + listView.Font = new Font(listView.Font.FontFamily, 10); + } + + public override void StoreSettings() + { + EnvironmentNode node = (EnvironmentNode)parent; + + foreach (EnvironmentItem item in listView.Items) { + node.Colors[item.arrayIndex] = item.Color; + } + } + + public override void LoadSettings() + { + EnvironmentNode node = (EnvironmentNode)parent; + listView.Items.Clear(); + + for (int i = 0; i <= EnvironmentNode.ColorNames.GetUpperBound(0); ++i) { + listView.Items.Add(new EnvironmentItem(i, node.ColorDescs[i], node.Colors[i], listView.Font)); + } + } + + void EditButtonClicked(object sender, EventArgs e) + { + if (listView.SelectedItems.Count != 1) return; + + EnvironmentItem item = (EnvironmentItem)listView.SelectedItems[0]; + using (EditHighlightingColorDialog dlg = new EditHighlightingColorDialog(item.Color)) { + if (dlg.ShowDialog(this) == DialogResult.OK) { + item.Color = dlg.Color; + item.ColorUpdate(); + } + } + } + + private class EnvironmentItem : ListViewItem + { + public string Name; + public EditorHighlightColor Color; + public int arrayIndex; + + Font basefont; + Font listfont; + + static Font ParseFont(string font) + { + string[] descr = font.Split(new char[]{',', '='}); + return new Font(descr[1], Single.Parse(descr[3])); + } + + public EnvironmentItem(int index, string name, EditorHighlightColor color, Font listFont) : base(new string[] {name, "Sample"}) + { + Name = name; + Color = color; + arrayIndex = index; + + this.UseItemStyleForSubItems = false; + + Properties properties = ((Properties)PropertyService.Get("ICSharpCode.TextEditor.Document.Document.DefaultDocumentAggregatorProperties", new Properties())); + basefont = ParseFont(properties.Get("DefaultFont", new Font("Courier New", 10).ToString())); + listfont = listFont; + + ColorUpdate(); + } + + public void ColorUpdate() + { + FontStyle fs = FontStyle.Regular; + if (Color.Bold) fs |= FontStyle.Bold; + if (Color.Italic) fs |= FontStyle.Italic; + + this.Font = new Font(listfont.FontFamily, 8); + + Font font = new Font(basefont, fs); + + this.SubItems[1].Font = font; + + this.SubItems[1].ForeColor = Color.GetForeColor(); + this.SubItems[1].BackColor = Color.GetBackColor(); + } + } + } +} diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/KeywordListNode.cs b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/KeywordListNode.cs new file mode 100644 index 0000000000..d5b014f1dd --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/KeywordListNode.cs @@ -0,0 +1,211 @@ +// +// +// +// +// +// + +using System; +using System.Collections.Specialized; +using System.Windows.Forms; +using System.Drawing; +using System.Xml; +using System.Text; +using ICSharpCode.TextEditor.Document; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes +{ + class KeywordListNode : AbstractNode + { + EditorHighlightColor color; + StringCollection words = new StringCollection(); + string name; + + public EditorHighlightColor Color { + get { + return color; + } + set { + color = value; + } + } + + public StringCollection Words { + get { + return words; + } + set { + if (words != null) { + words.Clear(); + } + words = value; + } + } + + public string Name { + get { + return name; + } + set { + name = value; + } + } + + public KeywordListNode(XmlElement el) + { + Text = ResNodeName("KeywordList"); + panel = new KeywordListOptionPanel(this); + + if (el == null) return; + + color = new EditorHighlightColor(el); + + XmlNodeList keys = el.GetElementsByTagName("Key"); + foreach (XmlElement node in keys) { + if (node.Attributes["word"] != null) words.Add(node.Attributes["word"].InnerText); + } + + if (el.Attributes["name"] != null) { + name = el.Attributes["name"].InnerText; + } + UpdateNodeText(); + + } + + public KeywordListNode(string Name) + { + name = Name; + color = new EditorHighlightColor(); + UpdateNodeText(); + + panel = new KeywordListOptionPanel(this); + } + + public override void UpdateNodeText() + { + if (name != "") Text = name; + } + + public override string ToXml() + { + StringBuilder ret = new StringBuilder("\t\t\t\n"; + ret.Append(color.ToXml()); + ret.Append(">\n"); + foreach(string str in words) { + ////ret += "\t\t\t\t\n"; + ret.Append("\t\t\t\t\n"); + } + ////ret += "\t\t\t\n\n"; + ret.Append("\t\t\t\n\n"); + return ret.ToString(); + } + } + + class KeywordListOptionPanel : NodeOptionPanel + { + private System.Windows.Forms.Button chgBtn; + private System.Windows.Forms.Button addBtn; + private System.Windows.Forms.ListBox listBox; + private System.Windows.Forms.Button removeBtn; + private System.Windows.Forms.TextBox nameBox; + private System.Windows.Forms.Label sampleLabel; + + public KeywordListOptionPanel(KeywordListNode parent) : base(parent) + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.KeywordList.xfrm")); + + addBtn = (Button)ControlDictionary["addBtn"]; + addBtn.Click += new EventHandler(addBtnClick); + removeBtn = (Button)ControlDictionary["removeBtn"]; + removeBtn.Click += new EventHandler(removeBtnClick); + chgBtn = (Button)ControlDictionary["chgBtn"]; + chgBtn.Click += new EventHandler(chgBtnClick); + + nameBox = (TextBox)ControlDictionary["nameBox"]; + sampleLabel = (Label)ControlDictionary["sampleLabel"]; + listBox = (ListBox)ControlDictionary["listBox"]; + } + + EditorHighlightColor color; + + public override void StoreSettings() + { + KeywordListNode node = (KeywordListNode)parent; + StringCollection col = new StringCollection(); + + foreach (string word in listBox.Items) { + col.Add(word); + } + node.Words = col; + node.Name = nameBox.Text; + node.Color = color; + } + + public override void LoadSettings() + { + KeywordListNode node = (KeywordListNode)parent; + listBox.Items.Clear(); + + foreach (string word in node.Words) { + listBox.Items.Add(word); + } + + Properties properties = ((Properties)PropertyService.Get("ICSharpCode.TextEditor.Document.Document.DefaultDocumentAggregatorProperties", new Properties())); + sampleLabel.Font = ParseFont(properties.Get("DefaultFont", new Font("Courier New", 10).ToString())); + + color = node.Color; + nameBox.Text = node.Name; + PreviewUpdate(sampleLabel, color); + } + + public override bool ValidateSettings() + { + if (nameBox.Text == "") { + ValidationMessage("${res:Dialog.HighlightingEditor.KeywordList.NameEmpty}"); + return false; + } + + return true; + } + + void chgBtnClick(object sender, EventArgs e) + { + using (EditHighlightingColorDialog dlg = new EditHighlightingColorDialog(color)) { + if (dlg.ShowDialog(this) == DialogResult.OK) { + color = dlg.Color; + PreviewUpdate(sampleLabel, color); + } + } + } + + void addBtnClick(object sender, EventArgs e) + { + using (InputBox box = new InputBox()) { + box.Label.Text = ResourceService.GetString("Dialog.HighlightingEditor.KeywordList.EnterName"); + if (box.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.Cancel) return; + + if (box.TextBox.Text == "") return; + foreach (string item in listBox.Items) { + if (item == box.TextBox.Text) + return; + } + + listBox.Items.Add(box.TextBox.Text); + } + } + + void removeBtnClick(object sender, EventArgs e) + { + if (listBox.SelectedIndex == -1) return; + + listBox.Items.RemoveAt(listBox.SelectedIndex); + } + } +} diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/KeywordListsNode.cs b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/KeywordListsNode.cs new file mode 100644 index 0000000000..90e72b6c4b --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/KeywordListsNode.cs @@ -0,0 +1,112 @@ +// +// +// +// +// +// + +using System; +using System.Windows.Forms; +using System.Drawing; +using System.Xml; +using ICSharpCode.TextEditor.Document; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes +{ + class KeywordListsNode : AbstractNode + { + public KeywordListsNode(XmlElement el) + { + Text = ResNodeName("KeywordLists"); + panel = new KeywordListsOptionPanel(this); + + if (el == null) return; + + XmlNodeList nodes = el.GetElementsByTagName("KeyWords"); + if (nodes == null) return; + + foreach (XmlElement el2 in nodes) { + Nodes.Add(new KeywordListNode(el2)); + } + + } + + public override void UpdateNodeText() + { + } + + public override string ToXml() + { + string ret = ""; + foreach (KeywordListNode node in Nodes) { + ret += node.ToXml(); + } + return ret; + } + } + + class KeywordListsOptionPanel : NodeOptionPanel + { + private System.Windows.Forms.Button removeBtn; + private System.Windows.Forms.Button addBtn; + private System.Windows.Forms.ListView listView; + + public KeywordListsOptionPanel(KeywordListsNode parent) : base(parent) + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.KeywordLists.xfrm")); + + addBtn = (Button)ControlDictionary["addBtn"]; + addBtn.Click += new EventHandler(addClick); + removeBtn = (Button)ControlDictionary["removeBtn"]; + removeBtn.Click += new EventHandler(removeClick); + + listView = (ListView)ControlDictionary["listView"]; + } + + public override void StoreSettings() + { + } + + public override void LoadSettings() + { + KeywordListsNode node = (KeywordListsNode)parent; + listView.Items.Clear(); + + foreach (KeywordListNode rn in node.Nodes) { + ListViewItem lv = new ListViewItem(rn.Name); + lv.Tag = rn; + listView.Items.Add(lv); + } + } + + void addClick(object sender, EventArgs e) + { + using (InputBox box = new InputBox()) { + box.Label.Text = ResourceService.GetString("Dialog.HighlightingEditor.KeywordLists.EnterName"); + if (box.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.Cancel) return; + + if (box.TextBox.Text == "") return; + foreach (ListViewItem item in listView.Items) { + if (item.Text == box.TextBox.Text) + return; + } + + KeywordListNode kwn = new KeywordListNode(box.TextBox.Text); + ListViewItem lv = new ListViewItem(box.TextBox.Text); + lv.Tag = kwn; + parent.Nodes.Add(kwn); + listView.Items.Add(lv); + } + } + + void removeClick(object sender, EventArgs e) + { + if (listView.SelectedItems.Count != 1) return; + + ((TreeNode)listView.SelectedItems[0].Tag).Remove(); + listView.SelectedItems[0].Remove(); + } + } +} diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/MarkerNode.cs b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/MarkerNode.cs new file mode 100644 index 0000000000..c7760d008d --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/MarkerNode.cs @@ -0,0 +1,164 @@ +// +// +// +// +// +// + +using System; +using System.Windows.Forms; +using System.Drawing; +using System.Xml; +using ICSharpCode.TextEditor.Document; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; +namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes +{ + class MarkerNode : AbstractNode + { + bool previous; + string what; + EditorHighlightColor color; + bool markMarker = false; + + public MarkerNode(XmlElement el, bool prev) + { + Text = "Marker"; + previous = prev; + panel = new MarkerOptionPanel(this, prev); + + if (el == null) return; + + color = new EditorHighlightColor(el); + what = el.InnerText; + if (el.Attributes["markmarker"] != null) { + markMarker = Boolean.Parse(el.Attributes["markmarker"].InnerText); + } + + UpdateNodeText(); + + } + + public MarkerNode(string What, bool prev) + { + what = What; + previous = prev; + color = new EditorHighlightColor(); + UpdateNodeText(); + + panel = new MarkerOptionPanel(this, prev); + } + + public override void UpdateNodeText() + { + Text = what; + } + + public override string ToXml() + { + string ret = "\t\t\t\n\n"; + return ret; + } + + public string What { + get { + return what; + } + set { + what = value; + } + } + + public EditorHighlightColor Color { + get { + return color; + } + set { + color = value; + } + } + + public bool MarkMarker { + get { + return markMarker; + } + set { + markMarker = value; + } + } + + } + + class MarkerOptionPanel : NodeOptionPanel + { + private System.Windows.Forms.Button chgBtn; + private System.Windows.Forms.CheckBox checkBox; + private System.Windows.Forms.TextBox nameBox; + private System.Windows.Forms.Label sampleLabel; + + bool previous; + + public MarkerOptionPanel(MarkerNode parent, bool prev) : base(parent) + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.Marker.xfrm")); + + chgBtn = (Button)ControlDictionary["chgBtn"]; + chgBtn.Click += new EventHandler(chgBtnClick); + + checkBox = (CheckBox)ControlDictionary["checkBox"]; + nameBox = (TextBox)ControlDictionary["nameBox"]; + sampleLabel = (Label)ControlDictionary["sampleLabel"]; + + previous = prev; + ControlDictionary["explLabel"].Text = ResourceService.GetString(previous ? "Dialog.HighlightingEditor.Marker.ExplanationPrev" : "Dialog.HighlightingEditor.Marker.ExplanationNext"); + } + + EditorHighlightColor color; + + public override void StoreSettings() + { + MarkerNode node = (MarkerNode)parent; + + node.What = nameBox.Text; + node.Color = color; + node.MarkMarker = checkBox.Checked; + } + + public override void LoadSettings() + { + MarkerNode node = (MarkerNode)parent; + + + Properties properties = ((Properties)PropertyService.Get("ICSharpCode.TextEditor.Document.Document.DefaultDocumentAggregatorProperties", new Properties())); + sampleLabel.Font = ParseFont(properties.Get("DefaultFont", new Font("Courier New", 10).ToString())); + + color = node.Color; + nameBox.Text = node.What; + checkBox.Checked = node.MarkMarker; + PreviewUpdate(sampleLabel, color); + } + + public override bool ValidateSettings() + { + if (nameBox.Text == "") { + ValidationMessage(ResourceService.GetString("Dialog.HighlightingEditor.Marker.NameEmpty")); + return false; + } + + return true; + } + + void chgBtnClick(object sender, EventArgs e) + { + using (EditHighlightingColorDialog dlg = new EditHighlightingColorDialog(color)) { + if (dlg.ShowDialog(this) == DialogResult.OK) { + color = dlg.Color; + PreviewUpdate(sampleLabel, color); + } + } + } + } +} diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/MarkersNode.cs b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/MarkersNode.cs new file mode 100644 index 0000000000..63ae1db0e4 --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/MarkersNode.cs @@ -0,0 +1,116 @@ +// +// +// +// +// +// + +using System; +using System.Windows.Forms; +using System.Drawing; +using System.Xml; +using ICSharpCode.TextEditor.Document; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes +{ + class MarkersNode : AbstractNode + { + public MarkersNode(XmlElement el, bool prev) + { + Text = ResNodeName(prev ? "MarkPreviousWord" : "MarkNextWord"); + + panel = new MarkersOptionPanel(this, prev); + if (el == null) return; + + XmlNodeList nodes = el.GetElementsByTagName(prev ? "MarkPrevious" : "MarkFollowing"); + + foreach (XmlElement el2 in nodes) { + Nodes.Add(new MarkerNode(el2, prev)); + } + + } + + public override void UpdateNodeText() + { + } + + public override string ToXml() + { + string ret = ""; + foreach (MarkerNode node in Nodes) { + ret += node.ToXml(); + } + return ret; + } + } + + class MarkersOptionPanel : NodeOptionPanel + { + private System.Windows.Forms.Button addBtn; + private System.Windows.Forms.Button removeBtn; + private System.Windows.Forms.ListView listView; + + bool previous = false; + + public MarkersOptionPanel(MarkersNode parent, bool prev) : base(parent) + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.Markers.xfrm")); + + addBtn = (Button)ControlDictionary["addBtn"]; + addBtn.Click += new EventHandler(addClick); + removeBtn = (Button)ControlDictionary["removeBtn"]; + removeBtn.Click += new EventHandler(removeClick); + + listView = (ListView)ControlDictionary["listView"]; + + previous = prev; + ControlDictionary["label"].Text = ResourceService.GetString(previous ? "Dialog.HighlightingEditor.Markers.Previous" : "Dialog.HighlightingEditor.Markers.Next"); + } + + public override void StoreSettings() + { + } + + public override void LoadSettings() + { + MarkersNode node = (MarkersNode)parent; + listView.Items.Clear(); + + foreach (MarkerNode rn in node.Nodes) { + ListViewItem lv = new ListViewItem(rn.What); + lv.Tag = rn; + listView.Items.Add(lv); + } + } + + void addClick(object sender, EventArgs e) + { + using (InputBox box = new InputBox()) { + box.Label.Text = ResourceService.GetString("Dialog.HighlightingEditor.Markers.EnterName"); + if (box.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.Cancel) return; + + if (box.TextBox.Text == "") return; + foreach (ListViewItem item in listView.Items) { + if (item.Text == box.TextBox.Text) + return; + } + + MarkerNode rsn = new MarkerNode(box.TextBox.Text, previous); + ListViewItem lv = new ListViewItem(box.TextBox.Text); + lv.Tag = rsn; + parent.Nodes.Add(rsn); + listView.Items.Add(lv); + } + } + + void removeClick(object sender, EventArgs e) + { + if (listView.SelectedItems.Count != 1) return; + + ((TreeNode)listView.SelectedItems[0].Tag).Remove(); + listView.SelectedItems[0].Remove(); + } + } +} diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/NodeOptionPanel.cs b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/NodeOptionPanel.cs new file mode 100644 index 0000000000..90ba04e5da --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/NodeOptionPanel.cs @@ -0,0 +1,81 @@ +// +// +// +// +// +// + +using System; +using System.Collections.Specialized; +using System.Windows.Forms; +using System.Drawing; +using System.Xml; +using ICSharpCode.TextEditor.Document; +using ICSharpCode.SharpDevelop.Gui.XmlForms; +using ICSharpCode.Core; + +namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes +{ + abstract class NodeOptionPanel : BaseSharpDevelopUserControl + { + protected AbstractNode parent; + + public AbstractNode ParentNode { + get { + return parent; + } + } + + public NodeOptionPanel(AbstractNode Parent) { + parent = Parent; + + this.Dock = DockStyle.Fill; + this.ClientSize = new Size(320, 392); + + } + + public virtual bool ValidateSettings() + { + return true; + } + + + + protected void ValidationMessage(string str) + { + MessageService.ShowWarning("${res:Dialog.HighlightingEditor.ValidationError}\n\n" + str); + } + + protected static Font ParseFont(string font) + { + string[] descr = font.Split(new char[]{',', '='}); + return new Font(descr[1], Single.Parse(descr[3])); + } + + protected static void PreviewUpdate(Label label, EditorHighlightColor color) + { + if (label == null) return; + + if (color == null) { + label.ForeColor = label.BackColor = Color.Transparent; + return; + } + if (color.NoColor) { + label.ForeColor = label.BackColor = Color.Transparent; + return; + } + + label.ForeColor = color.GetForeColor(); + label.BackColor = color.GetBackColor(); + + FontStyle fs = FontStyle.Regular; + if (color.Bold) fs |= FontStyle.Bold; + if (color.Italic) fs |= FontStyle.Italic; + + label.Font = new Font(label.Font, fs); + } + + public abstract void StoreSettings(); + public abstract void LoadSettings(); + } +} diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/PropertiesNode.cs b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/PropertiesNode.cs new file mode 100644 index 0000000000..ceebe1bf80 --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/PropertiesNode.cs @@ -0,0 +1,130 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.Windows.Forms; +using System.Drawing; +using System.Xml; + +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes +{ + class PropertiesNode : AbstractNode + { + public Hashtable Properties = new Hashtable(); + + public PropertiesNode(XmlElement el) + { + Text = ResNodeName("Properties"); + panel = new PropertiesOptionPanel(this); + + if (el == null) return; + + foreach (XmlElement el2 in el.ChildNodes) { + if (el2.Attributes["name"] == null || el2.Attributes["value"] == null) continue; + Properties.Add(el2.Attributes["name"].InnerText, el2.Attributes["value"].InnerText); + } + + } + + public override void UpdateNodeText() + { + } + + public override string ToXml() + { + string ret = "\t\n"; + foreach (DictionaryEntry de in Properties) { + ret += "\t\t\n"; + } + ret += "\t\n\n"; + return ret; + } + } + + class PropertiesOptionPanel : NodeOptionPanel + { + private System.Windows.Forms.Button addBtn; + private System.Windows.Forms.Button editBtn; + private System.Windows.Forms.Button removeBtn; + private System.Windows.Forms.ListView listView; + + public PropertiesOptionPanel(PropertiesNode parent) : base(parent) + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.Properties.xfrm")); + + addBtn = (Button)ControlDictionary["addBtn"]; + addBtn.Click += new EventHandler(addClick); + editBtn = (Button)ControlDictionary["editBtn"]; + editBtn.Click += new EventHandler(editClick); + removeBtn = (Button)ControlDictionary["removeBtn"]; + removeBtn.Click += new EventHandler(removeClick); + + listView = (ListView)ControlDictionary["listView"]; + } + + public override void StoreSettings() + { + PropertiesNode node = (PropertiesNode)parent; + + node.Properties.Clear(); + foreach (ListViewItem item in listView.Items) { + node.Properties.Add(item.Text, item.SubItems[1].Text); + } + } + + public override void LoadSettings() + { + PropertiesNode node = (PropertiesNode)parent; + listView.Items.Clear(); + + foreach (DictionaryEntry de in node.Properties) { + ListViewItem lv = new ListViewItem(new string[] {(string)de.Key, (string)de.Value}); + listView.Items.Add(lv); + } + } + + void addClick(object sender, EventArgs e) + { + using (InputBox box = new InputBox()) { + box.Label.Text = ResourceService.GetString("Dialog.HighlightingEditor.Properties.EnterName"); + if (box.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.Cancel) return; + + foreach (ListViewItem item in listView.Items) { + if (item.Text == box.TextBox.Text) + return; + } + + listView.Items.Add(new ListViewItem(new string[] {box.TextBox.Text, ""})); + } + } + + void removeClick(object sender, EventArgs e) + { + if (listView.SelectedItems.Count != 1) return; + + listView.SelectedItems[0].Remove(); + } + + void editClick(object sender, EventArgs e) + { + if (listView.SelectedItems.Count != 1) return; + + using (InputBox box = new InputBox()) { + box.Text = ResourceService.GetString("Dialog.HighlightingEditor.EnterText"); + box.Label.Text = String.Format(ResourceService.GetString("Dialog.HighlightingEditor.Properties.EnterValue"), listView.SelectedItems[0].Text); + if (box.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.Cancel) return; + + listView.SelectedItems[0].SubItems[1].Text = box.TextBox.Text; + } + } + } +} diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/RuleSetNode.cs b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/RuleSetNode.cs new file mode 100644 index 0000000000..a525c45a76 --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/RuleSetNode.cs @@ -0,0 +1,237 @@ +// +// +// +// +// +// + +using System; +using System.Windows.Forms; +using System.Drawing; +using System.Xml; +using ICSharpCode.Core; + +namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes +{ + class RuleSetNode : AbstractNode + { + bool noEscapeSequences = false; + bool ignoreCase = false; + bool isRoot = false; + string name = String.Empty; + string delimiters = String.Empty; + string reference = String.Empty; + + KeywordListsNode keywordNode; + SpansNode spansNode; + MarkersNode prevMarkerNode; + MarkersNode nextMarkerNode; + + public RuleSetNode(XmlElement el) + { + Text = ResNodeName("RuleSet"); + + panel = new RuleSetOptionPanel(this); + + if (el == null) return; + + if (el.Attributes["name"] != null) { + name = el.Attributes["name"].InnerText; + Text = name; + isRoot = false; + } + + if (name == "") { + Text = ResNodeName("RootRuleSet"); + isRoot = true; + } + + if (el.Attributes["noescapesequences"] != null) { + noEscapeSequences = Boolean.Parse(el.Attributes["noescapesequences"].InnerText); + } + + if (el.Attributes["reference"] != null) { + reference = el.Attributes["reference"].InnerText; + } + + if (el.Attributes["ignorecase"] != null) { + ignoreCase = Boolean.Parse(el.Attributes["ignorecase"].InnerText); + } + + if (el["Delimiters"] != null) { + delimiters = el["Delimiters"].InnerText; + } + + keywordNode = new KeywordListsNode(el); + spansNode = new SpansNode(el); + prevMarkerNode = new MarkersNode(el, true); // Previous + nextMarkerNode = new MarkersNode(el, false); // Next + Nodes.Add(keywordNode); + Nodes.Add(spansNode); + Nodes.Add(prevMarkerNode); + Nodes.Add(nextMarkerNode); + + } + + public RuleSetNode(string Name, string Delim, string Ref, bool noEsc, bool noCase) + { + name = Name; + Text = Name; + delimiters = Delim; + reference = Ref; + noEscapeSequences = noEsc; + ignoreCase = noCase; + + keywordNode = new KeywordListsNode(null); + spansNode = new SpansNode(null); + prevMarkerNode = new MarkersNode(null, true); // Previous + nextMarkerNode = new MarkersNode(null, false); // Next + Nodes.Add(keywordNode); + Nodes.Add(spansNode); + Nodes.Add(prevMarkerNode); + Nodes.Add(nextMarkerNode); + + panel = new RuleSetOptionPanel(this); + } + + public override void UpdateNodeText() + { + if (name != "" && !isRoot) { + Text = name; + } + } + + public override string ToXml() + { + if (reference != "") return "\t\t\n\n"; + + string ret = "\t\t\n\n"; + + ret += spansNode.ToXml(); + ret += prevMarkerNode.ToXml(); + ret += nextMarkerNode.ToXml(); + ret += keywordNode.ToXml(); + + ret += "\t\t\n\n"; + + return ret; + } + + public string Delimiters { + get { + return delimiters; + } + set { + delimiters = value; + } + } + + public bool NoEscapeSequences { + get { + return noEscapeSequences; + } + set { + noEscapeSequences = value; + } + } + + public bool IgnoreCase { + get { + return ignoreCase; + } + set { + ignoreCase = value; + } + } + + public string Name { + get { + return name; + } + set { + name = value; + } + } + + public string Reference { + get { + return reference; + } + set { + reference = value; + } + } + + public bool IsRoot { + get { + return isRoot; + } + } + + } + + class RuleSetOptionPanel : NodeOptionPanel + { + private System.Windows.Forms.CheckBox igcaseBox; + private System.Windows.Forms.CheckBox noEscBox; + private System.Windows.Forms.TextBox refBox; + private System.Windows.Forms.TextBox delimBox; + private System.Windows.Forms.TextBox nameBox; + + public RuleSetOptionPanel(RuleSetNode parent) : base(parent) + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.RuleSet.xfrm")); + + nameBox = (TextBox)ControlDictionary["nameBox"]; + refBox = (TextBox)ControlDictionary["refBox"]; + delimBox = (TextBox)ControlDictionary["delimBox"]; + + igcaseBox = (CheckBox)ControlDictionary["igcaseBox"]; + noEscBox = (CheckBox)ControlDictionary["noEscBox"]; + } + + public override void StoreSettings() + { + RuleSetNode node = (RuleSetNode)parent; + if (!node.IsRoot) node.Name = nameBox.Text; + node.Reference = refBox.Text; + node.Delimiters = delimBox.Text; + node.NoEscapeSequences = noEscBox.Checked; + node.IgnoreCase = igcaseBox.Checked; + } + + public override void LoadSettings() + { + RuleSetNode node = (RuleSetNode)parent; + + nameBox.Text = node.Name; + + if (node.IsRoot) { + nameBox.Text = ResourceService.GetString("Dialog.HighlightingEditor.TreeView.RootRuleSet"); + nameBox.Enabled = false; + } + + refBox.Text = node.Reference; + delimBox.Text = node.Delimiters; + + noEscBox.Checked = node.NoEscapeSequences; + igcaseBox.Checked = node.IgnoreCase; + } + + public override bool ValidateSettings() + { + if (nameBox.Text == "") { + ValidationMessage(ResourceService.GetString("Dialog.HighlightingEditor.RuleSet.NameEmpty")); + return false; + } + + return true; + } + + } +} diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/RuleSetsNode.cs b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/RuleSetsNode.cs new file mode 100644 index 0000000000..321e1490b2 --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/RuleSetsNode.cs @@ -0,0 +1,112 @@ +// +// +// +// +// +// + +using System; +using System.Windows.Forms; +using System.Drawing; +using System.Xml; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes +{ + class RuleSetsNode : AbstractNode + { + public RuleSetsNode(XmlElement el) + { + Text = ResNodeName("RuleSets"); + + panel = new RuleSetsOptionPanel(this); + if (el == null) return; + + XmlNodeList nodes = el.GetElementsByTagName("RuleSet"); + + foreach (XmlElement element in nodes) { + Nodes.Add(new RuleSetNode(element)); + } + + } + + public override void UpdateNodeText() + { + } + + public override string ToXml() + { + string ret = "\t\n"; + foreach (RuleSetNode node in Nodes) { + ret += node.ToXml(); + } + ret += "\t\n\n"; + return ret; + } + } + + class RuleSetsOptionPanel : NodeOptionPanel + { + private System.Windows.Forms.Button addBtn; + private System.Windows.Forms.ListView listView; + private System.Windows.Forms.Button removeBtn; + + public RuleSetsOptionPanel(RuleSetsNode parent) : base(parent) + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.RuleSets.xfrm")); + + addBtn = (Button)ControlDictionary["addBtn"]; + addBtn.Click += new EventHandler(addClick); + removeBtn = (Button)ControlDictionary["removeBtn"]; + removeBtn.Click += new EventHandler(removeClick); + + listView = (ListView)ControlDictionary["listView"]; + } + + public override void StoreSettings() + { + } + + public override void LoadSettings() + { + RuleSetsNode node = (RuleSetsNode)parent; + listView.Items.Clear(); + + foreach (RuleSetNode rn in node.Nodes) { + if (rn.Name == "") continue; + ListViewItem lv = new ListViewItem(rn.Name); + lv.Tag = rn; + listView.Items.Add(lv); + } + } + + void addClick(object sender, EventArgs e) + { + using (InputBox box = new InputBox()) { + box.Label.Text = ResourceService.GetString("Dialog.HighlightingEditor.RuleSets.EnterName"); + if (box.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.Cancel) return; + + if (box.TextBox.Text == "") return; + foreach (ListViewItem item in listView.Items) { + if (item.Text == box.TextBox.Text) + return; + } + + RuleSetNode rsn = new RuleSetNode(box.TextBox.Text, "&<>~!@%^*()-+=|\\#/{}[]:;\"' , .?", "", false, false); + ListViewItem lv = new ListViewItem(box.TextBox.Text); + lv.Tag = rsn; + parent.Nodes.Add(rsn); + listView.Items.Add(lv); + } + } + + void removeClick(object sender, EventArgs e) + { + if (listView.SelectedItems.Count != 1) return; + + ((TreeNode)listView.SelectedItems[0].Tag).Remove(); + listView.SelectedItems[0].Remove(); + } + } +} diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/SchemeNode.cs b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/SchemeNode.cs new file mode 100644 index 0000000000..9c461e2369 --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/SchemeNode.cs @@ -0,0 +1,141 @@ +// +// +// +// +// +// + +using System; +using System.Windows.Forms; +using System.Drawing; +using System.Collections; +using System.Xml; +using System.Xml.Schema; + +namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes +{ + class SchemeNode : AbstractNode + { + string name; + string[] extensions; + + public string[] Extensions { + get { + return extensions; + } + set { + extensions = value; + } + } + + public string Name { + get { + return name; + } + set { + name = value; + } + } + + EnvironmentNode envNode; + DigitsNode digitsNode; + PropertiesNode propNode; + RuleSetsNode rulesetsNode; + + string content; + + public string Content { + get { + return content; + } + } + + public SchemeNode(XmlElement el, bool readChildren) + { + content = el.OuterXml; + + name = el.Attributes["name"].InnerText; + + if (el.Attributes["extensions"] != null) { + extensions = el.Attributes["extensions"].InnerText.Split('|'); + } + + UpdateNodeText(); + + panel = new SchemeOptionPanel(this); + + if (!readChildren) return; + + envNode = new EnvironmentNode(el["Environment"]); + digitsNode = new DigitsNode(el["Digits"]); + propNode = new PropertiesNode(el["Properties"]); + rulesetsNode = new RuleSetsNode(el); + + Nodes.Add(envNode); + Nodes.Add(digitsNode); + Nodes.Add(propNode); + Nodes.Add(rulesetsNode); + } + + public override void UpdateNodeText() + { + Text = name; + } + + public override string ToXml() + { + string str = + "\n" + + "\n\n" + + "\n\n"; + + str += envNode.ToXml(); + str += propNode.ToXml(); + str += digitsNode.ToXml(); + str += rulesetsNode.ToXml(); + + str += + "\n"; + + return str; + + } + } + + class SchemeOptionPanel : NodeOptionPanel + { + private System.Windows.Forms.TextBox extBox; + private System.Windows.Forms.TextBox nameBox; + + public SchemeOptionPanel(SchemeNode parent) : base(parent) + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.Scheme.xfrm")); + nameBox = (TextBox)ControlDictionary["nameBox"]; + extBox = (TextBox)ControlDictionary["extBox"]; + } + + public override void StoreSettings() + { + SchemeNode node = (SchemeNode)parent; + node.Name = nameBox.Text; + node.Extensions = extBox.Text.Split(';'); + } + + public override void LoadSettings() + { + SchemeNode node = (SchemeNode)parent; + nameBox.Text = node.Name; + extBox.Text = String.Join(";", node.Extensions); + } + + public override bool ValidateSettings() + { + if (nameBox.Text == "") { + ValidationMessage("${res:Dialog.HighlightingEditor.Scheme.NameEmpty}"); + return false; + } + + return true; + } + } +} diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/SpanNode.cs b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/SpanNode.cs new file mode 100644 index 0000000000..8c10e9c1ea --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/SpanNode.cs @@ -0,0 +1,354 @@ +// +// +// +// +// +// + +using System; +using System.Windows.Forms; +using System.Drawing; +using System.Xml; +using ICSharpCode.TextEditor.Document; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes +{ + class SpanNode : AbstractNode + { + bool stopEOL; + EditorHighlightColor color; + EditorHighlightColor beginColor = null; + EditorHighlightColor endColor = null; + string begin = ""; + string end = ""; + string name = ""; + string rule = ""; + bool noEscapeSequences = false; + + public SpanNode(XmlElement el) + { + Text = ResNodeName("Span"); + + panel = new SpanOptionPanel(this); + + if (el == null) return; + + color = new EditorHighlightColor(el); + + if (el.Attributes["rule"] != null) { + rule = el.Attributes["rule"].InnerText; + } + + if (el.Attributes["noescapesequences"] != null) { + noEscapeSequences = Boolean.Parse(el.Attributes["noescapesequences"].InnerText); + } + + name = el.Attributes["name"].InnerText; + stopEOL = Boolean.Parse(el.Attributes["stopateol"].InnerText); + begin = el["Begin"].InnerText; + beginColor = new EditorHighlightColor(el["Begin"]); + + if (el["End"] != null) { + end = el["End"].InnerText; + endColor = new EditorHighlightColor(el["End"]); + } + + UpdateNodeText(); + + } + + public override string ToXml() + { + string ret = ""; + ret = "\t\t\t\n"; + + if (end != "") { + ret += "\t\t\t\t\n"; + } + ret += "\t\t\t\n\n"; + return ret; + } + + public SpanNode(string Name) + { + name = Name; + color = new EditorHighlightColor(); + UpdateNodeText(); + + panel = new SpanOptionPanel(this); + } + + public override void UpdateNodeText() + { + if (name != "") { Text = name; return; } + + if (end == "" && stopEOL) { + Text = begin + " to EOL"; + } else { + Text = begin + " to " + end; + } + } + + public bool StopEOL { + get { + return stopEOL; + } + set { + stopEOL = value; + } + } + + public EditorHighlightColor Color { + get { + return color; + } + set { + color = value; + } + } + + public EditorHighlightColor BeginColor { + get { + return beginColor; + } + set { + beginColor = value; + } + } + + public EditorHighlightColor EndColor { + get { + return endColor; + } + set { + endColor = value; + } + } + + public string Begin { + get { + return begin; + } + set { + begin = value; + } + } + + public string End { + get { + return end; + } + set { + end = value; + } + } + + public string Name { + get { + return name; + } + set { + name = value; + } + } + + public string Rule { + get { + return rule; + } + set { + rule = value; + } + } + + public bool NoEscapeSequences { + get { + return noEscapeSequences; + } + set { + noEscapeSequences = value; + } + } + + } + + class SpanOptionPanel : NodeOptionPanel { + + private System.Windows.Forms.TextBox nameBox; + private System.Windows.Forms.TextBox beginBox; + private System.Windows.Forms.TextBox endBox; + private System.Windows.Forms.ComboBox ruleBox; + private System.Windows.Forms.CheckBox useBegin; + private System.Windows.Forms.CheckBox useEnd; + private System.Windows.Forms.Button chgBegin; + private System.Windows.Forms.Button chgEnd; + private System.Windows.Forms.Button chgCont; + private System.Windows.Forms.Label samBegin; + private System.Windows.Forms.Label samEnd; + private System.Windows.Forms.Label samCont; + private System.Windows.Forms.CheckBox noEscBox; + private System.Windows.Forms.CheckBox stopEolBox; + + public SpanOptionPanel(SpanNode parent) : base(parent) + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.Span.xfrm")); + nameBox = (TextBox)ControlDictionary["nameBox"]; + beginBox = (TextBox)ControlDictionary["beginBox"]; + endBox = (TextBox)ControlDictionary["endBox"]; + ruleBox = (ComboBox)ControlDictionary["ruleBox"]; + + useBegin = (CheckBox)ControlDictionary["useBegin"]; + useEnd = (CheckBox)ControlDictionary["useEnd"]; + + chgBegin = (Button)ControlDictionary["chgBegin"]; + chgEnd = (Button)ControlDictionary["chgEnd"]; + chgCont = (Button)ControlDictionary["chgCont"]; + + samBegin = (Label)ControlDictionary["samBegin"]; + samEnd = (Label)ControlDictionary["samEnd"]; + samCont = (Label)ControlDictionary["samCont"]; + + stopEolBox = (CheckBox)ControlDictionary["stopEolBox"]; + noEscBox = (CheckBox)ControlDictionary["noEscBox"]; + + this.chgBegin.Click += new EventHandler(chgBeginClick); + this.chgCont.Click += new EventHandler(chgContClick); + this.chgEnd.Click += new EventHandler(chgEndClick); + + this.useBegin.CheckedChanged += new EventHandler(CheckedChanged); + this.useEnd.CheckedChanged += new EventHandler(CheckedChanged); + } + + EditorHighlightColor color; + EditorHighlightColor beginColor; + EditorHighlightColor endColor; + + public override void StoreSettings() + { + SpanNode node = (SpanNode)parent; + + node.Name = nameBox.Text; + node.Begin = beginBox.Text; + node.End = endBox.Text; + node.StopEOL = stopEolBox.Checked; + node.NoEscapeSequences = noEscBox.Checked; + node.Rule = ruleBox.Text; + + node.Color = color; + + if (useBegin.Checked) { + node.BeginColor = beginColor; + } else { + node.BeginColor = new EditorHighlightColor(true); + } + + if (useEnd.Checked) { + node.EndColor = endColor; + } else { + node.EndColor = new EditorHighlightColor(true); + } + } + + public override void LoadSettings() + { + SpanNode node = (SpanNode)parent; + + try { + ruleBox.Items.Clear(); + foreach(RuleSetNode rn in node.Parent.Parent.Parent.Nodes) { // list rule sets + if (!rn.IsRoot) ruleBox.Items.Add(rn.Text); + } + } catch {} + + Properties properties = ((Properties)PropertyService.Get("ICSharpCode.TextEditor.Document.Document.DefaultDocumentAggregatorProperties", new Properties())); + ////samBegin.Font = samEnd.Font = samCont.Font = ParseFont(properties.Get("DefaultFont", new Font("Courier New", 10).ToString())); + samBegin.Font = samEnd.Font = samCont.Font = FontContainer.DefaultFont; + + nameBox.Text = node.Name; + ruleBox.Text = node.Rule; + beginBox.Text = node.Begin; + endBox.Text = node.End; + stopEolBox.Checked = node.StopEOL; + noEscBox.Checked = node.NoEscapeSequences; + + color = node.Color; + beginColor = node.BeginColor; + endColor = node.EndColor; + + if (beginColor != null) { + if (!beginColor.NoColor) useBegin.Checked = true; + } + if (endColor != null) { + if (!endColor.NoColor) useEnd.Checked = true; + } + + PreviewUpdate(samBegin, beginColor); + PreviewUpdate(samEnd, endColor); + PreviewUpdate(samCont, color); + CheckedChanged(null, null); + } + + public override bool ValidateSettings() + { + if (nameBox.Text == "") { + ValidationMessage(ResourceService.GetString("Dialog.HighlightingEditor.Span.NameEmpty")); + return false; + } + if (beginBox.Text == "") { + ValidationMessage(ResourceService.GetString("Dialog.HighlightingEditor.Span.BeginEmpty")); + return false; + } + + return true; + } + + void chgBeginClick(object sender, EventArgs e) + { + using (EditHighlightingColorDialog dlg = new EditHighlightingColorDialog(beginColor)) { + if (dlg.ShowDialog(this) == DialogResult.OK) { + beginColor = dlg.Color; + PreviewUpdate(samBegin, beginColor); + } + } + } + + void chgEndClick(object sender, EventArgs e) + { + using (EditHighlightingColorDialog dlg = new EditHighlightingColorDialog(endColor)) { + if (dlg.ShowDialog(this) == DialogResult.OK) { + endColor = dlg.Color; + PreviewUpdate(samEnd, endColor); + } + } + } + + void chgContClick(object sender, EventArgs e) + { + using (EditHighlightingColorDialog dlg = new EditHighlightingColorDialog(color)) { + if (dlg.ShowDialog(this) == DialogResult.OK) { + color = dlg.Color; + PreviewUpdate(samCont, color); + } + } + } + + void CheckedChanged(object sender, EventArgs e) + { + chgEnd.Enabled = useEnd.Checked; + chgBegin.Enabled = useBegin.Checked; + } + } +} diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/SpansNode.cs b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/SpansNode.cs new file mode 100644 index 0000000000..485fb9d0e8 --- /dev/null +++ b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/SpansNode.cs @@ -0,0 +1,106 @@ +// +// +// +// +// +// + +using System; +using System.Windows.Forms; +using System.Drawing; +using System.Xml; +using ICSharpCode.TextEditor.Document; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; + +namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes +{ + class SpansNode : AbstractNode + { + public SpansNode(XmlElement el) + { + Text = ResNodeName("Spans"); + + panel = new SpansOptionPanel(this); + if (el == null) return; + + XmlNodeList nodes = el.GetElementsByTagName("Span"); + foreach (XmlElement el2 in nodes) { + Nodes.Add(new SpanNode(el2)); + } + + } + + public override void UpdateNodeText() + { + } + + public override string ToXml() + { + string ret = ""; + foreach (SpanNode node in Nodes) { + ret += node.ToXml(); + } + return ret; + } + } + + class SpansOptionPanel : NodeOptionPanel + { + private System.Windows.Forms.ListView listView; + private System.Windows.Forms.Button addBtn; + private System.Windows.Forms.Button removeBtn; + + public SpansOptionPanel(SpansNode parent) : base(parent) + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.Spans.xfrm")); + + addBtn = (Button)ControlDictionary["addBtn"]; + addBtn.Click += new EventHandler(addClick); + removeBtn = (Button)ControlDictionary["removeBtn"]; + removeBtn.Click += new EventHandler(removeClick); + + listView = (ListView)ControlDictionary["listView"]; + } + + public override void StoreSettings() + { + } + + public override void LoadSettings() + { + SpansNode node = (SpansNode)parent; + listView.Items.Clear(); + + foreach (SpanNode rn in node.Nodes) { + ListViewItem lv = new ListViewItem(rn.Text); + lv.Tag = rn; + listView.Items.Add(lv); + } + } + + void addClick(object sender, EventArgs e) + { + using (InputBox box = new InputBox()) { + box.Label.Text = ResourceService.GetString("Dialog.HighlightingEditor.Spans.EnterName"); + if (box.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.Cancel) return; + + if (box.TextBox.Text == "") return; + + SpanNode rsn = new SpanNode(box.TextBox.Text); + ListViewItem lv = new ListViewItem(rsn.Text); + lv.Tag = rsn; + parent.Nodes.Add(rsn); + listView.Items.Add(lv); + } + } + + void removeClick(object sender, EventArgs e) + { + if (listView.SelectedItems.Count != 1) return; + + ((TreeNode)listView.SelectedItems[0].Tag).Remove(); + listView.SelectedItems[0].Remove(); + } + } +} diff --git a/src/AddIns/Misc/NUnitPad/Project/Configuration/AssemblyInfo.cs b/src/AddIns/Misc/NUnitPad/Project/Configuration/AssemblyInfo.cs new file mode 100644 index 0000000000..205aa8a9ad --- /dev/null +++ b/src/AddIns/Misc/NUnitPad/Project/Configuration/AssemblyInfo.cs @@ -0,0 +1,32 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following +// attributes. +// +// change them to the information which is associated with the assembly +// you compile. + +[assembly: AssemblyTitle("")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has following format : +// +// Major.Minor.Build.Revision +// +// You can specify all values by your own or you can build default build and revision +// numbers with the '*' character (the default): + +[assembly: AssemblyVersion("2.0.0.1")] + +// The following attributes specify the key for the sign of your assembly. See the +// .NET Framework documentation for more information about signing. +// This is not required, if you don't want signing let these attributes like they're. +[assembly: AssemblyDelaySign(false)] +[assembly: AssemblyKeyFile("")] diff --git a/src/AddIns/Misc/NUnitPad/Project/NUnitPad.csproj b/src/AddIns/Misc/NUnitPad/Project/NUnitPad.csproj new file mode 100644 index 0000000000..0a31704f78 --- /dev/null +++ b/src/AddIns/Misc/NUnitPad/Project/NUnitPad.csproj @@ -0,0 +1,59 @@ + + + Debug + AnyCPU + 8.0.41115 + 2.0 + {A82F44D7-F336-4AD6-B2EE-D2C082D094EC} + ICSharpCode.NUnitPad + NUnitPad + Library + 4 + False + False + OnSuccessfulBuild + + + True + True + False + True + ..\..\..\..\..\AddIns\AddIns\Misc\NUnitPad\ + False + + + True + True + False + True + ..\..\..\..\..\AddIns\AddIns\Misc\NUnitPad\ + False + + + + + + + + + ..\..\..\..\..\bin\ICSharpCode.Core.dll + False + + + + + + + UserControl + + + + + + + {2748AD25-9C63-4E12-877B-4DCE96FBED54} + ICSharpCode.SharpDevelop + + + + \ No newline at end of file diff --git a/src/AddIns/Misc/NUnitPad/Project/NUnitPad.csproj.user b/src/AddIns/Misc/NUnitPad/Project/NUnitPad.csproj.user new file mode 100644 index 0000000000..b895c1ffa7 --- /dev/null +++ b/src/AddIns/Misc/NUnitPad/Project/NUnitPad.csproj.user @@ -0,0 +1,13 @@ + + + ..\..\..\..\..\bin\SharpDevelop.exe + + + ..\..\..\..\..\bin\SharpDevelop.exe + + + 8.0.41115 + ProjectFiles + 0 + + \ No newline at end of file diff --git a/src/AddIns/Misc/NUnitPad/Project/Resources/NUnitPad.addin b/src/AddIns/Misc/NUnitPad/Project/Resources/NUnitPad.addin new file mode 100644 index 0000000000..ddc33f4505 --- /dev/null +++ b/src/AddIns/Misc/NUnitPad/Project/Resources/NUnitPad.addin @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/AddIns/Misc/NUnitPad/Project/Src/Commands/MenuCommands.cs b/src/AddIns/Misc/NUnitPad/Project/Src/Commands/MenuCommands.cs new file mode 100644 index 0000000000..3624a7a631 --- /dev/null +++ b/src/AddIns/Misc/NUnitPad/Project/Src/Commands/MenuCommands.cs @@ -0,0 +1,27 @@ +// +// +// +// +// +// + +using System; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop; + +namespace ICSharpCode.NUnitPad +{ + public class RunTestsInProject : AbstractMenuCommand + { + public override void Run() + { + PadDescriptor nunitPad = WorkbenchSingleton.Workbench.GetPad(typeof(NUnitPadContent)); + if (nunitPad != null) { + nunitPad.BringPadToFront(); + ((NUnitPadContent)nunitPad.PadContent).RunTests(); + } + } + } +} diff --git a/src/AddIns/Misc/NUnitPad/Project/Src/Commands/TestTreeViewContextMenuCommands.cs b/src/AddIns/Misc/NUnitPad/Project/Src/Commands/TestTreeViewContextMenuCommands.cs new file mode 100644 index 0000000000..055db89f86 --- /dev/null +++ b/src/AddIns/Misc/NUnitPad/Project/Src/Commands/TestTreeViewContextMenuCommands.cs @@ -0,0 +1,55 @@ +// +// +// +// +// +// +using System; +using System.Windows.Forms; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop; + +namespace ICSharpCode.NUnitPad +{ + /// + /// Description of RunTestsCommand + /// + public class RunTestsCommand : AbstractMenuCommand + { + /// + /// Creates a new RunTestsCommand + /// + public RunTestsCommand() + { + } + + /// + /// Starts the command + /// + public override void Run() + { + ((TestTreeView)Owner).RunTests(); + } + } + /// + /// Description of GotoDefinitionCommand + /// + public class GotoDefinitionCommand : AbstractMenuCommand + { + /// + /// Creates a new GotoDefinitionCommand + /// + public GotoDefinitionCommand() + { + } + + /// + /// Starts the command + /// + public override void Run() + { + ((TestTreeView)Owner).GotoDefinition(); + } + } +} diff --git a/src/AddIns/Misc/NUnitPad/Project/Src/Gui/NUnitPadContent.cs b/src/AddIns/Misc/NUnitPad/Project/Src/Gui/NUnitPadContent.cs new file mode 100644 index 0000000000..072c9fc114 --- /dev/null +++ b/src/AddIns/Misc/NUnitPad/Project/Src/Gui/NUnitPadContent.cs @@ -0,0 +1,213 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.Threading; +using System.Windows.Forms; + +using NUnit.Core; +using NUnit.Framework; +using NUnit.Util; + +using ICSharpCode.SharpDevelop.Project; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; + +namespace ICSharpCode.NUnitPad +{ + /// + /// Description of the pad content + /// + public class NUnitPadContent : AbstractPadContent + { + TestTreeView testTreeView; + Panel contentPanel; + bool autoLoadItems = false; + ArrayList testDomains = new ArrayList(); + + #region AbstractPadContent requirements + /// + /// The representing the pad + /// + public override Control Control { + get { + return contentPanel; + } + } + + /// + /// Creates a new NUnitPadContent object + /// + public NUnitPadContent() + { + testTreeView = new TestTreeView(); + testTreeView.Dock = DockStyle.Fill; + ToolStrip toolStrip = new ToolStrip(); + toolStrip.Dock = DockStyle.Top; + toolStrip.Stretch = true; + toolStrip.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; + + ToolStripButton refreshItem = new ToolStripButton(); + refreshItem.ToolTipText = StringParser.Parse("${res:NUnitPad.NUnitPadContent.RefreshItem}"); + refreshItem.Image = IconService.GetBitmap("Icons.16x16.BrowserRefresh"); + refreshItem.Click += new EventHandler(RefreshItemClick); + toolStrip.Items.Add(refreshItem); + + ToolStripButton cancelItem = new ToolStripButton(); + cancelItem.ToolTipText = StringParser.Parse("${res:NUnitPad.NUnitPadContent.CancelItem}"); + cancelItem.Image = IconService.GetBitmap("Icons.16x16.BrowserCancel"); + cancelItem.Click += new EventHandler(CancelItemClick); + + toolStrip.Items.Add(cancelItem); + + toolStrip.Items.Add(new ToolStripSeparator()); + + ToolStripButton referenceItem = new ToolStripButton(); + referenceItem.ToolTipText = StringParser.Parse("${res:NUnitPad.NUnitPadContent.ReferenceItem}"); + referenceItem.Image = IconService.GetBitmap("Icons.16x16.Reference"); + referenceItem.Click += new EventHandler(AddNUnitReference); + toolStrip.Items.Add(referenceItem); + + toolStrip.Items.Add(new ToolStripSeparator()); + + ToolStripButton runItem = new ToolStripButton(); + runItem.ToolTipText = StringParser.Parse("${res:NUnitPad.NUnitPadContent.RunItem}"); + runItem.Image = IconService.GetBitmap("Icons.16x16.RunProgramIcon"); + runItem.Click += new EventHandler(RunItemClick); + toolStrip.Items.Add(runItem); + + contentPanel = new Panel(); + contentPanel.Controls.Add(testTreeView); + contentPanel.Controls.Add(toolStrip); + + ProjectService.SolutionLoaded += new SolutionEventHandler(CombineEventHandler); + ProjectService.SolutionClosed += new EventHandler(ProjectServiceCombineClosed); + ProjectService.StartBuild += new EventHandler(ProjectServiceStartBuild); + ProjectService.EndBuild += new EventHandler(ProjectServiceEndBuild); + testTreeView.SetAutoLoadState(autoLoadItems); + } + + /// + /// Refreshes the pad + /// + public override void RedrawContent() + { + } + + /// + /// Cleans up all used resources + /// + public override void Dispose() + { + base.Dispose(); + UnloadAppDomains(); + testTreeView.Dispose(); + contentPanel.Dispose(); + ProjectService.StartBuild -= new EventHandler(ProjectServiceStartBuild); + ProjectService.EndBuild -= new EventHandler(ProjectServiceEndBuild); + } + #endregion + + void ProjectServiceStartBuild(object sender, EventArgs e) + { + } + + void CombineEventHandler(object sender, SolutionEventArgs e) + { + if (autoLoadItems) { + RefreshProjectAssemblies(); + } + } + + void ProjectServiceEndBuild(object sender, EventArgs e) + { + if (autoLoadItems) { + testTreeView.Invoke(new ThreadStart(RefreshProjectAssemblies)); + } + } + + void AddNUnitReference(object sender, EventArgs e) + { +// TODO: Add NUnit reference. +// IProject project = ProjectService.CurrentProject; +// if (project != null) { +// foreach (ProjectReference reference in project.ProjectReferences) { +// if (reference.ReferenceType == ReferenceType.Gac && reference.Reference.ToLower().StartsWith("nunit.framework")) { +// return; +// } +// } +// projectService.AddReferenceToProject(project, new ProjectReference(ReferenceType.Gac, "nunit.framework")); +// } + } + + void RunItemClick(object sender, EventArgs e) + { + RunTests(); + } + + void RefreshItemClick(object sender, EventArgs e) + { + autoLoadItems = true; + RefreshProjectAssemblies(); + } + + void CancelItemClick(object sender, EventArgs e) + { + autoLoadItems = false; + UnloadAppDomains(); + testTreeView.SetAutoLoadState(autoLoadItems); + } + + void ProjectServiceCombineClosed(object sender, EventArgs e) + { + if (testDomains.Count > 0) { + UnloadAppDomains(); + } + } + + void UnloadAppDomains() + { + foreach (TestDomain domain in testDomains) { + try { + domain.Unload(); + } catch (Exception) {} + } + testDomains.Clear(); + testTreeView.ClearTests(); + } + + public void RunTests() + { + if (!autoLoadItems) { + autoLoadItems = true; + RefreshProjectAssemblies(); + } + testTreeView.RunTests(); + } + + public void RefreshProjectAssemblies() + { + UnloadAppDomains(); + + foreach (IProject project in ProjectService.OpenSolution.Projects) { + string outputAssembly = project.OutputAssemblyFullPath; + TestDomain testDomain = new TestDomain(); + try { + Test testsFromAssembly = testDomain.Load(outputAssembly); + testTreeView.PrintTests(outputAssembly, testsFromAssembly); + testDomains.Add(testDomain); + } catch (Exception e) { + testDomain.Unload(); + Console.WriteLine(e); + testTreeView.PrintTestErrors(outputAssembly); + } + + } + } + } +} diff --git a/src/AddIns/Misc/NUnitPad/Project/Src/Gui/TestTreeView.cs b/src/AddIns/Misc/NUnitPad/Project/Src/Gui/TestTreeView.cs new file mode 100644 index 0000000000..d47623ef52 --- /dev/null +++ b/src/AddIns/Misc/NUnitPad/Project/Src/Gui/TestTreeView.cs @@ -0,0 +1,382 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.IO; +using System.Windows.Forms; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; + +using NUnit.Core; +using NUnit.Framework; + +namespace ICSharpCode.NUnitPad +{ + /// + /// Description of TestTreeView. + /// + public class TestTreeView : System.Windows.Forms.UserControl, EventListener, IOwnerState + { + const string ContextMenuAddInTreePath = "/NUnitPad/TestTreeView/ContextMenu"; + + [Flags] + public enum TestTreeViewState { + Nothing = 0, + SourceCodeItemSelected = 1, + TestItemSelected = 2, + } + + protected TestTreeViewState internalState = TestTreeViewState.Nothing; + + public System.Enum InternalState { + get { + return internalState; + } + } + + TreeView treeView; + Hashtable treeNodeHash = new Hashtable(); + MessageViewCategory testRunnerCategory; + + + bool IsSourceCodeItemSelected { + get { + if (treeView.SelectedNode == null) { + return false; + } + ITest test = treeView.SelectedNode.Tag as ITest; + if (test != null) { + + Position position = ParserService.CurrentProjectContent.GetPosition(test.FullName.Replace('+', '.')); + return position != null && position.Cu != null; + } + return false; + } + } + + bool IsTestItemSelected { + get { + if (treeView.SelectedNode == null) { + return false; + } + ITest test = treeView.SelectedNode.Tag as ITest; + return test != null; + } + } + + protected override void Dispose(bool disposing) + { + if (disposing) { + treeView.Dispose(); + } + base.Dispose(disposing); + } + + public TestTreeView() + { + + ImageList imageList = new ImageList(); + imageList.ColorDepth = ColorDepth.Depth32Bit; + imageList.Images.Add(IconService.GetBitmap("Icons.16x16.TestRunner.Gray")); + imageList.Images.Add(IconService.GetBitmap("Icons.16x16.TestRunner.Green")); + imageList.Images.Add(IconService.GetBitmap("Icons.16x16.TestRunner.Yellow")); + imageList.Images.Add(IconService.GetBitmap("Icons.16x16.TestRunner.Red")); + imageList.Images.Add(IconService.GetBitmap("Icons.16x16.AboutIcon")); + imageList.Images.Add(IconService.GetBitmap("Icons.16x16.Error")); + + this.treeView = new TreeView(); + treeView.ImageList = imageList; + treeView.Dock = DockStyle.Fill; + treeView.DoubleClick += new EventHandler(ActivateItem); + treeView.KeyPress += new KeyPressEventHandler(TestTreeViewKeyPress); + treeView.MouseDown += new MouseEventHandler(TreeViewMouseDown); + treeView.HideSelection = false; + Controls.Add(treeView); + treeView.ContextMenuStrip = MenuService.CreateContextMenu(this, ContextMenuAddInTreePath); + } + void TreeViewMouseDown(object sender, MouseEventArgs e) + { + TreeNode node = treeView.GetNodeAt(e.X, e.Y); + + treeView.SelectedNode = node; + + internalState = TestTreeViewState.Nothing; + if (IsSourceCodeItemSelected) { + internalState |= TestTreeViewState.SourceCodeItemSelected; + } + + if (IsTestItemSelected) { + internalState |= TestTreeViewState.TestItemSelected; + } + } + + public void SetAutoLoadState(bool state) + { + if (!state) { + ClearTests(); + + TreeNode noAutoLoad = new TreeNode(StringParser.Parse("${res:NUnitPad.NUnitPadContent.TestTreeView.ClickOnRunInformationNode}")); + noAutoLoad.ImageIndex = noAutoLoad.SelectedImageIndex = 4; + treeView.Nodes.Add(noAutoLoad); + } + } + public void ClearTests() + { + if (!treeView.IsDisposed) { + treeView.Nodes.Clear(); + } + } + + public void PrintTestErrors(string assembly) + { + TreeNode assemblyNode = new TreeNode(Path.GetFileName(assembly)); + + TreeNode failedNode = new TreeNode(StringParser.Parse("${res:NUnitPad.NUnitPadContent.TestTreeView.LoadingErrorNode}")); + failedNode.ImageIndex = failedNode.SelectedImageIndex = 5; + assemblyNode.Nodes.Add(failedNode); + + treeView.Nodes.Add(assemblyNode); + } + + public void PrintTests(string assembly, Test test) + { + TreeNode assemblyNode = new TreeNode(Path.GetFileName(assembly)); + assemblyNode.Tag = test; + treeView.Nodes.Add(assemblyNode); + if (test != null) { + AddTests(assemblyNode, test); + } + assemblyNode.Expand(); + } + + public void AddTests(TreeNode node, ITest test) + { + foreach (ITest childTest in test.Tests) { + TreeNode newNode = new TreeNode(childTest.Name); + treeNodeHash[childTest.UniqueName] = newNode; + newNode.ImageIndex = newNode.SelectedImageIndex = 0; + newNode.Tag = childTest; + if (childTest.IsSuite) { + AddTests(newNode, childTest); + node.Expand(); + } + node.Nodes.Add(newNode); + } + } + + public void GotoDefinition() + { + if (treeView.SelectedNode != null) { + ITest test = treeView.SelectedNode.Tag as ITest; + if (test != null) { + + Position position = ParserService.CurrentProjectContent.GetPosition(test.FullName.Replace('+', '.')); + + if (position != null && position.Cu != null) { + + FileService.JumpToFilePosition(position.Cu.FileName, Math.Max(0, position.Line - 1), Math.Max(0, position.Column - 1)); + } + } + } + } + + public void RunTests() + { + ResetNodeIcons(treeView.Nodes); + + if (testRunnerCategory == null) { + testRunnerCategory = new MessageViewCategory("NUnit"); + CompilerMessageView cmv = (CompilerMessageView)WorkbenchSingleton.Workbench.GetPad(typeof(CompilerMessageView)).PadContent; + cmv.AddCategory(testRunnerCategory); + } else { + testRunnerCategory.ClearText(); + } + + TaskService.Tasks.Clear(); + + TreeNode selectedNode = treeView.SelectedNode; + + if (selectedNode != null) { + Test test = selectedNode.Tag as Test; + if (test != null) { + test.Run(this); + } else { + selectedNode.ImageIndex = selectedNode.SelectedImageIndex = 2; + } + } else { + foreach (TreeNode node in treeView.Nodes) { + Test test = node.Tag as Test; + if (test != null) { + test.Run(this); + } else { + node.ImageIndex = node.SelectedImageIndex = 2; + } + } + } + + // If any tasks bring task view to front. + if (TaskService.Tasks.Count > 0) { + IWorkbench Workbench = ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.Workbench; + PadDescriptor padDescriptor = Workbench.GetPad(typeof(OpenTaskView)); + + if (padDescriptor != null) { + padDescriptor.BringPadToFront(); + } + } + + treeView.Focus(); + } + + void ResetNodeIcons(ICollection col) + { + foreach (TreeNode node in col) { + if (node.ImageIndex <= 3) { + node.ImageIndex = node.SelectedImageIndex = 0; + } + ResetNodeIcons(node.Nodes); + } + } + + void SetResultIcon(TestResult testResult) + { + TreeNode node = (TreeNode)treeNodeHash[testResult.Test.UniqueName]; + if (node != null) { + if (testResult.IsSuccess && testResult.Executed) { + node.ImageIndex = node.SelectedImageIndex = 1; + } else if (testResult.IsFailure) { + node.ImageIndex = node.SelectedImageIndex = 3; + } else { + node.ImageIndex = node.SelectedImageIndex = 2; + } + if (node.Parent != null || node.Parent.Parent == null) { + node.Parent.ImageIndex = node.Parent.SelectedImageIndex = node.ImageIndex; + } + } + } + + + void ActivateItem(object sender, EventArgs e) + { + GotoDefinition(); + } + + void TestTreeViewKeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '\r') { + GotoDefinition(); + } else if (e.KeyChar == ' ') { + RunTests(); + } + } + + #region NUnit.Core.EventListener interface implementation + public void RunStarted(NUnit.Core.Test[] tests) + { + + } + public void RunFinished(NUnit.Core.TestResult[] tests) + { + + } + public void RunFinished(Exception exception) + { + + } + public void UnhandledException(Exception exception) + { + + } + + public void SuiteStarted(NUnit.Core.TestSuite suite) + { +// testRunnerCategory.AppendText(suite.FullName + " started.\n"); + } + + public void SuiteFinished(NUnit.Core.TestSuiteResult result) + { + SetResultIcon(result); +// testRunnerCategory.AppendText(result.Test.FullName + " finished.\n"); + } + + public void TestStarted(NUnit.Core.TestCase testCase) + { +// testRunnerCategory.AppendText(testCase.FullName + " started.\n"); + } + + public void TestFinished(NUnit.Core.TestCaseResult result) + { + + if (!result.IsSuccess) { + + string outputMessage = StringParser.Parse("${res:NUnitPad.NUnitPadContent.TestTreeView.TestFailedMessage}", new string[,] { + {"TestCase", result.Test.FullName}, + {"Message", result.Message.Replace("\t", " ").Trim()} + } + ); + + testRunnerCategory.AppendText(outputMessage + Environment.NewLine); + testRunnerCategory.AppendText(result.Description + Environment.NewLine); + testRunnerCategory.AppendText(result.StackTrace + Environment.NewLine); +// if (result.StackTrace != null ) { +// Console.WriteLine("result.StackTrace=" + result.StackTrace); +// } +// else { +// Console.WriteLine("result.StackTrace=null"); +// } + + FileLineReference LineRef = OutputTextLineParser.GetNUnitOutputFileLineReference(result.StackTrace, true); + if (LineRef != null) { +// Console.WriteLine("Adding NUnit error task."); + Task Task = new Task(Path.GetFullPath(LineRef.FileName), + outputMessage, + LineRef.Column, + LineRef.Line, + TaskType.Error); + + TaskService.Tasks.Add(Task); + TaskService.NotifyTaskChange(); + } + } else if (!result.Executed) { + + string outputMessage = StringParser.Parse("${res:NUnitPad.NUnitPadContent.TestTreeView.TestNotExecutedMessage}", new string[,] { + {"TestCase", result.Test.FullName} + } + ); + + testRunnerCategory.AppendText(outputMessage + Environment.NewLine); + testRunnerCategory.AppendText(result.Message + Environment.NewLine); + testRunnerCategory.AppendText(result.Description + Environment.NewLine); + testRunnerCategory.AppendText(result.StackTrace + Environment.NewLine); +// if (result.StackTrace != null ) { +// Console.WriteLine("result.StackTrace=" + result.StackTrace); +// } +// else { +// Console.WriteLine("result.StackTrace=null"); +// } + + FileLineReference LineRef = OutputTextLineParser.GetNUnitOutputFileLineReference(result.StackTrace, true); + if (LineRef != null) { + +// Console.WriteLine("Adding NUnit warning task."); + Task Task = new Task(Path.GetFullPath(LineRef.FileName), + outputMessage, + LineRef.Column, + LineRef.Line, + TaskType.Warning); + + TaskService.Tasks.Add(Task); + TaskService.NotifyTaskChange(); + } + } + + SetResultIcon(result); + } + #endregion + } +} diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/AssemblyInfo.cs b/src/AddIns/Misc/ProjectImporterExporter/Project/AssemblyInfo.cs new file mode 100644 index 0000000000..8cf1fc53bd --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Security; +using System.Security.Permissions; + +// Information about this assembly is defined by the following +// attributes. +// +// change them to the information which is associated with the assembly +// you compile. +[assembly:UIPermissionAttribute(SecurityAction.RequestMinimum, Window = UIPermissionWindow.AllWindows)] + +[assembly: AssemblyTitle("")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has following format : +// +// Major.Minor.Build.Revision +// +// You can specify all values by your own or you can build default build and revision +// numbers with the '*' character (the default): + +[assembly: AssemblyVersion("2.0.0.1")] + +// The following attributes specify the key for the sign of your assembly. See the +// .NET Framework documentation for more information about signing. +// This is not required, if you don't want signing let these attributes like they're. +[assembly: AssemblyDelaySign(false)] +[assembly: AssemblyKeyFile("")] diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/Commands/ExportProjectCommand.cs b/src/AddIns/Misc/ProjectImporterExporter/Project/Commands/ExportProjectCommand.cs new file mode 100644 index 0000000000..54126803e4 --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/Commands/ExportProjectCommand.cs @@ -0,0 +1,64 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.Text; +using System.Text.RegularExpressions; +using System.IO; +using System.Windows.Forms; +using System.Xml.Xsl; + +using ICSharpCode.Core; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Gui; + +using MSjogren.GacTool.FusionNative; +using ICSharpCode.SharpDevelop.Commands; +using ICSharpCode.SharpDevelop.ProjectImportExporter.Converters; +using ICSharpCode.SharpDevelop.ProjectImportExporter.Dialogs; + +namespace ICSharpCode.SharpDevelop.ProjectImportExporter.Commands +{ + public class ExportProjectCommand : AbstractMenuCommand + { + public override void Run() + { + using (ExportProjectDialog exportProjectDialog = new ExportProjectDialog("Visual Studio.NET 2003 Solutions")) { + exportProjectDialog.Owner = (Form)WorkbenchSingleton.Workbench; + exportProjectDialog.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm); + } + } + } + + public class ExportProjectToCSharpCommand : AbstractMenuCommand + { + public override void Run() + { + IProjectService projectService = (IProjectService)ICSharpCode.Core.ServiceManager.Services.GetService(typeof(IProjectService)); + + using (ExportProjectDialog exportProjectDialog = new ExportProjectDialog("Convert VB.NET to C#", projectService.CurrentSelectedProject != null ? projectService.CurrentSelectedProject.Name : null)) { + exportProjectDialog.Owner = (Form)WorkbenchSingleton.Workbench; + exportProjectDialog.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm); + } + } + } + + public class ExportProjectToVBNetCommand : AbstractMenuCommand + { + public override void Run() + { + IProjectService projectService = (IProjectService)ICSharpCode.Core.ServiceManager.Services.GetService(typeof(IProjectService)); + + using (ExportProjectDialog exportProjectDialog = new ExportProjectDialog("Convert C# to VB.NET", projectService.CurrentSelectedProject != null ? projectService.CurrentSelectedProject.Name : null)) { + exportProjectDialog.Owner = (Form)WorkbenchSingleton.Workbench; + exportProjectDialog.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm); + } + } + } +} diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/Commands/ImportProjectCommand.cs b/src/AddIns/Misc/ProjectImporterExporter/Project/Commands/ImportProjectCommand.cs new file mode 100644 index 0000000000..80d4652fb6 --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/Commands/ImportProjectCommand.cs @@ -0,0 +1,39 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.Text; +using System.Text.RegularExpressions; +using System.IO; +using System.Windows.Forms; +using System.Xml.Xsl; + +using ICSharpCode.Core; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Gui; + +using MSjogren.GacTool.FusionNative; +using ICSharpCode.SharpDevelop.Commands; +using ICSharpCode.SharpDevelop.ProjectImportExporter.Converters; +using ICSharpCode.SharpDevelop.ProjectImportExporter.Dialogs; + +namespace ICSharpCode.SharpDevelop.ProjectImportExporter.Commands +{ + public class ImportProjectCommand : AbstractMenuCommand + { + public override void Run() + { + using (ImportProjectDialog importProjectDialog = new ImportProjectDialog()) { + importProjectDialog.Owner = (Form)WorkbenchSingleton.Workbench; + importProjectDialog.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm); + } + } + } +} + diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/AbstractInputConverter.cs b/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/AbstractInputConverter.cs new file mode 100644 index 0000000000..c322dd9cfa --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/AbstractInputConverter.cs @@ -0,0 +1,25 @@ +// +// +// +// +// +// + +using System; + +namespace ICSharpCode.SharpDevelop.ProjectImportExporter.Converters +{ + public abstract class AbstractInputConverter + { + public abstract string FormatName { + get; + } + public abstract string OutputFile { + get; + } + + public abstract bool CanConvert(string fileName); + + public abstract bool Convert(string inputFile, string outputPath); + } +} diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/AbstractOutputConverter.cs b/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/AbstractOutputConverter.cs new file mode 100644 index 0000000000..1e3df87db7 --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/AbstractOutputConverter.cs @@ -0,0 +1,22 @@ +// +// +// +// +// +// + +using System; +using ICSharpCode.SharpDevelop.Gui; +namespace ICSharpCode.SharpDevelop.ProjectImportExporter.Converters +{ + public abstract class AbstractOutputConverter + { + public abstract string FormatName { + get; + } + + public abstract void ConvertCombine(IProgressMonitor progressMonitor, string inputCombine, string outputPath); + + public abstract void ConvertProject(IProgressMonitor progressMonitor, string inputProject, string outputPath); + } +} diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/LanguageConversion/AbstractLanguageConverterOutput.cs b/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/LanguageConversion/AbstractLanguageConverterOutput.cs new file mode 100644 index 0000000000..46e0e43ef0 --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/LanguageConversion/AbstractLanguageConverterOutput.cs @@ -0,0 +1,180 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.IO; +using System.Reflection; +using System.Xml; +using System.Xml.Xsl; +using System.CodeDom.Compiler; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Internal.Templates; + +namespace ICSharpCode.SharpDevelop.ProjectImportExporter.Converters +{ + /// + /// Description of AbstractLanguageConverterOutput. + /// + public abstract class AbstractLanguageConverterOutput : AbstractOutputConverter + { + + protected abstract string Extension { + get; + } + public override void ConvertCombine(IProgressMonitor progressMonitor,string inputCombine, string outputPath) + { + string inputPath = Path.GetFullPath(Path.GetDirectoryName(inputCombine)); + + Combine combine = new Combine(); + combine.LoadCombine(inputCombine); + + Combine outputCombine = new Combine(); + ArrayList projects = Combine.GetAllProjects(combine); + if (progressMonitor != null) { + progressMonitor.BeginTask("Convert", projects.Count + 1); + } + foreach (ProjectCombineEntry project in projects) { + string projectFileName = Path.GetFullPath(Path.Combine(inputPath, project.Filename)); + string relativeFileName = projectFileName.Substring(inputPath.Length + 1); + + string output = TranslateProject(null, projectFileName, Path.Combine(outputPath, Path.GetDirectoryName(relativeFileName))); + outputCombine.AddEntry(output); + if (progressMonitor != null) { + progressMonitor.Worked(1); + } + } + + outputCombine.SaveCombine(Path.Combine(outputPath, Path.GetFileName(inputCombine))); + if (progressMonitor != null) { + progressMonitor.Done();; + } + } + + public override void ConvertProject(IProgressMonitor progressMonitor,string inputProject, string outputPath) + { + TranslateProject(progressMonitor, inputProject, outputPath); + } + + + protected virtual IProject CreateProject(string outputPath, IProject originalProject) + { + return CreateProject(outputPath, originalProject, originalProject.ProjectType); + } + + protected IProject CreateProject(string outputPath, IProject originalProject, string targetLanguage) + { + LanguageBindingService languageBindingService = (LanguageBindingService)ServiceManager.Services.GetService(typeof(LanguageBindingService)); + ILanguageBinding binding = languageBindingService.GetBindingPerLanguageName(targetLanguage); + + ProjectCreateInformation info = new ProjectCreateInformation(); + info.CombinePath = outputPath; + info.ProjectBasePath = outputPath; + info.ProjectName = originalProject.Name + " converted"; + + return binding.CreateProject(info, null); + } + + bool CopyFile(string original, string newFile) + { + try { + File.Copy(original, newFile); + } catch(IOException) { + return false; + } + return true; + } + + bool SaveFile(string fileName, string content) + { + try { + if (!Directory.Exists(Path.GetDirectoryName(fileName))) { + Directory.CreateDirectory(Path.GetDirectoryName(fileName)); + } + + StreamWriter sw = new StreamWriter(fileName); + sw.Write(content); + sw.Close(); + } catch (Exception e) { + Console.WriteLine("Error while saving file : " + e); + return false; + } + return true; + } + + + protected abstract string ConvertFile(string fileName); + + string TranslateProject(IProgressMonitor progressMonitor, string inputProject, string outputPath) + { + IProjectService projectService = (IProjectService)ICSharpCode.Core.ServiceManager.Services.GetService(typeof(IProjectService)); + IProject inProject = projectService.LoadProject(inputProject); + int len = inProject.BaseDirectory.Length; + + IProject project = CreateProject(outputPath, inProject); + if (progressMonitor != null) { + progressMonitor.BeginTask("Convert", inProject.ProjectFiles.Count + 1); + } + + foreach (ProjectFile file in inProject.ProjectFiles) { + + if (file.BuildAction == BuildAction.EmbedAsResource) { + string outFile; + + // resource files can be outside of the project path + if(file.Name.StartsWith(outputPath)) { + // Path.GetFilename can't be used because the filename can be + // a relative path that shouldn't get lost + outFile = Path.Combine(outputPath, file.Name.Substring(len + 1)); + } else { + outFile = Path.Combine(outputPath, Path.GetFileName(file.Name)); + } + + if (CopyFile(file.Name, outFile)) { + ProjectFile pf = new ProjectFile(outFile); + pf.BuildAction = BuildAction.EmbedAsResource; + project.ProjectFiles.Add(pf); + } + } else if(file.Subtype != Subtype.Directory && File.Exists(file.Name)) { + string outPut; + try { + outPut = ConvertFile(file.Name); + } catch (Exception e) { + outPut = "Conversion Error : " + e.ToString(); + } + + // Path.GetFilename can't be used because the filename can be + // a relative path that shouldn't get lost + string outFile = Path.Combine(outputPath, file.Name.Substring(len + 1)); + outFile = Path.ChangeExtension(outFile, Extension); + + if (SaveFile(outFile, outPut)) { + project.ProjectFiles.Add(new ProjectFile(outFile)); + } + } + if (progressMonitor != null) { + progressMonitor.Worked(1); + } + + } + string output = Path.Combine(outputPath, project.Name + ".prjx"); + try { + project.SaveProject(output); + } catch (Exception e) { + Console.WriteLine("Error while saving project : " + e); + return null; + } + if (progressMonitor != null) { + progressMonitor.Done();; + } + return output; + } + } +} diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/LanguageConversion/CSharpToVBNetLanguageConverterOutput.cs b/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/LanguageConversion/CSharpToVBNetLanguageConverterOutput.cs new file mode 100644 index 0000000000..b4a37a5e25 --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/LanguageConversion/CSharpToVBNetLanguageConverterOutput.cs @@ -0,0 +1,60 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.IO; +using System.Reflection; +using System.Xml; +using System.Xml.Xsl; + +using System.CodeDom.Compiler; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Internal.Templates; + +using ICSharpCode.NRefactory.PrettyPrinter; +using ICSharpCode.NRefactory.Parser; + +namespace ICSharpCode.SharpDevelop.ProjectImportExporter.Converters +{ + /// + /// Description of CSharpToVBNetLanguageConverterOutput. + /// + public class CSharpToVBNetLanguageConverterOutput : AbstractLanguageConverterOutput + { + public override string FormatName { + get { + return "Convert C# to VB.NET"; + } + } + + protected override string Extension { + get { + return ".vb"; + } + } + + protected override IProject CreateProject(string outputPath, IProject originalProject) + { + return CreateProject(outputPath, originalProject, "VBNET"); + } + + protected override string ConvertFile(string fileName) + { + ICSharpCode.NRefactory.Parser.IParser p = ICSharpCode.NRefactory.Parser.ParserFactory.CreateParser(SupportedLanguages.CSharp, new StreamReader(fileName)); + p.Parse(); + + ICSharpCode.NRefactory.PrettyPrinter.VBNetOutputVisitor vbv = new ICSharpCode.NRefactory.PrettyPrinter.VBNetOutputVisitor(); + vbv.Visit(p.CompilationUnit, null); + + return vbv.Text; + } + } +} diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/LanguageConversion/VBNetToCSharpLanguageConverterOutput.cs b/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/LanguageConversion/VBNetToCSharpLanguageConverterOutput.cs new file mode 100644 index 0000000000..6639adfcdd --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/LanguageConversion/VBNetToCSharpLanguageConverterOutput.cs @@ -0,0 +1,59 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.IO; +using System.Reflection; +using System.Xml; +using System.Xml.Xsl; +using System.CodeDom.Compiler; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Internal.Templates; + +using ICSharpCode.NRefactory.PrettyPrinter; +using ICSharpCode.NRefactory.Parser; + +namespace ICSharpCode.SharpDevelop.ProjectImportExporter.Converters +{ + /// + /// Description of CSharpToVBNetLanguageConverterOutput. + /// + public class VBNetToCSharpLanguageConverterOutput : AbstractLanguageConverterOutput + { + public override string FormatName { + get { + return "Convert VB.NET to C#"; + } + } + + protected override string Extension { + get { + return ".cs"; + } + } + + protected override IProject CreateProject(string outputPath, IProject originalProject) + { + return CreateProject(outputPath, originalProject, "C#"); + } + + protected override string ConvertFile(string fileName) + { + ICSharpCode.NRefactory.Parser.IParser p = ICSharpCode.NRefactory.Parser.ParserFactory.CreateParser(SupportedLanguages.CSharp, new StreamReader(fileName)); + p.Parse(); + + ICSharpCode.NRefactory.PrettyPrinter.CSharpOutputVisitor vbv = new ICSharpCode.NRefactory.PrettyPrinter.CSharpOutputVisitor(); + vbv.Visit(p.CompilationUnit, null); + + return vbv.Text; + } + } +} diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/VSNet/SolutionConverterTool.cs b/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/VSNet/SolutionConverterTool.cs new file mode 100644 index 0000000000..1a4bba08d5 --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/VSNet/SolutionConverterTool.cs @@ -0,0 +1,341 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Security; +using System.Security.Permissions; + +using System.Windows.Forms; + +using MSjogren.GacTool.FusionNative; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.ProjectImportExporter.Commands; + +namespace ICSharpCode.SharpDevelop.ProjectImportExporter.Converters +{ +// [UIPermissionAttribute(SecurityAction.Demand, Window = UIPermissionWindow.AllWindows, Unrestricted = true)] + public class SolutionConversionTool + { + public ArrayList copiedFiles = new ArrayList(); + + Hashtable GacReferences = new Hashtable(); + string projectTitle; + string projectInputDirectory; + string projectOutputDirectory; + + void WriteLine(string str) + { + Console.WriteLine(str); +// +// TaskService.CompilerOutput += str + "\n"; +// TaskService.NotifyTaskChange(); + } + + public SolutionConversionTool(string projectTitle, string projectInputDirectory, string projectOutputDirectory) + { + GenerateGacReferences(); + this.projectTitle = projectTitle; + this.projectInputDirectory = projectInputDirectory; + this.projectOutputDirectory = projectOutputDirectory; + } + + void GenerateGacReferences() + { + IApplicationContext applicationContext = null; + IAssemblyEnum assemblyEnum = null; + IAssemblyName assemblyName = null; + + Fusion.CreateAssemblyEnum(out assemblyEnum, null, null, 2, 0); + + while (assemblyEnum.GetNextAssembly(out applicationContext, out assemblyName, 0) == 0) { + uint nChars = 0; + assemblyName.GetDisplayName(null, ref nChars, 0); + + StringBuilder sb = new StringBuilder((int)nChars); + assemblyName.GetDisplayName(sb, ref nChars, 0); + + string[] info = sb.ToString().Split(','); + + string aName = info[0]; + string aVersion = info[1].Substring(info[1].LastIndexOf('=') + 1); + GacReferences[aName] = sb.ToString(); + } + } + + static string[] commonAssemblies = new string[] { + "mscorlib", + "Accessibility", + "Microsoft.Vsa", + "System.Configuration.Install", + "System.Data", + "System.Design", + "System.DirectoryServices", + "System", + "System.Drawing.Design", + "System.Drawing", + "System.EnterpriseServices", + "System.Management", + "System.Messaging", + "System.Runtime.Remoting", + "System.Runtime.Serialization.Formatters.Soap", + "System.Security", + "System.ServiceProcess", + "System.Web", + "System.Web.RegularExpressions", + "System.Web.Services", + "System.Windows.Forms", + "System.XML" + }; + + public bool ShouldGenerateReference(bool filter, string assemblyName, string hintPath) + { + if (filter) { + foreach (string reference in commonAssemblies) { + if (reference.ToUpper() == assemblyName.ToUpper()) { + return false; + } + } + } + + if (hintPath != null && hintPath.Length > 0) { + string assemblyLocation = Path.Combine(this.projectInputDirectory, hintPath); + if (File.Exists(assemblyLocation)) { + return true; + } + } + + if (!File.Exists(Path.Combine(this.projectInputDirectory, assemblyName))) { + if (GacReferences[assemblyName] != null) { + return true; + } + } else { + return true; + } + this.WriteLine("Can't import reference " + assemblyName + " (" + hintPath + ")"); + return false; + } + + public string GenerateReferenceType(string assemblyName, string hintPath) + { + if (hintPath != null && hintPath.Length > 0) { + string assemblyLocation = Path.Combine(this.projectInputDirectory, hintPath); + if (File.Exists(assemblyLocation)) { + return "Assembly"; + } + } + + if (!File.Exists(Path.Combine(this.projectInputDirectory, assemblyName))) { + if (GacReferences[assemblyName] == null) { + this.WriteLine("Can't find Assembly reference " + assemblyName); + } else { + return "Gac"; + } + } else { + return "Assembly"; + } + + this.WriteLine("Can't determine reference type for " + assemblyName); + return "Assembly"; + } + + public string GenerateReference(string assemblyName, string hintPath) + { + if (hintPath != null && hintPath.Length > 0) { + string assemblyLocation = Path.Combine(this.projectInputDirectory, hintPath); + if (File.Exists(assemblyLocation)) { + VerifyFileLocation(hintPath); + return hintPath; + } + } + + if (!File.Exists(Path.Combine(this.projectInputDirectory, assemblyName))) { + if (GacReferences[assemblyName] == null) { + this.WriteLine("Can't find Assembly reference " + assemblyName); + } else { + return GacReferences[assemblyName].ToString(); + } + } else { + return "." + Path.DirectorySeparatorChar + assemblyName; + } + + this.WriteLine("Created illegal, empty reference (should never happen) remove manually"); + return null; + } + + public string VerifyFileLocation(string itemFile) + { + if (itemFile.Length == 0) { + return String.Empty; + } + string itemInputFile = Path.Combine(this.projectInputDirectory, itemFile); + if (itemInputFile.StartsWith("..")) { + string correctLocation = this.projectOutputDirectory + Path.DirectorySeparatorChar + + "MovedFiles" + Path.DirectorySeparatorChar + Path.GetFileName(itemFile); + try { + if (File.Exists(correctLocation)) { + File.Delete(correctLocation); + } + this.WriteLine("Copy file " + itemInputFile + " to " + correctLocation); + copiedFiles.Add(new DictionaryEntry(itemInputFile, correctLocation)); + } catch (Exception) { +// +// MessageService.ShowError(e, "Can't copy " + itemInputFile + " to " + correctLocation +"\nCheck for write permission."); + } + return "." + correctLocation.Substring(this.projectOutputDirectory.Length); + } + copiedFiles.Add(new DictionaryEntry(itemInputFile, this.projectOutputDirectory + Path.DirectorySeparatorChar + itemFile)); + return itemFile.StartsWith(".") ? itemFile : "." + Path.DirectorySeparatorChar + itemFile; + } + + public string EnsureBool(string txt) + { + if (txt.ToUpper() == "TRUE") { + return true.ToString(); + } + return false.ToString(); + } + + public string Negate(string txt) + { + if (txt.ToUpper() == "TRUE") { + return false.ToString(); + } + return true.ToString(); + } + + /// + /// Imports a resource file. + /// + /// The resource file. + /// The dependent source file. + /// The output resource file path. + public string ImportDependentResource(string resourceFile, string dependentFile, string rootNamespace) + { + WriteLine("Import resource " + resourceFile); + WriteLine("Searching namespace in " + dependentFile); + + string resourceOutputFile; + + string Namespace = null; + if (dependentFile != null && dependentFile.Length > 0) + Namespace = GetNamespaceFromFile(Path.Combine(this.projectInputDirectory, dependentFile)); + if (Namespace == null) + Namespace = rootNamespace; + WriteLine(" Namespace is '" + Namespace + "'"); + + if (Namespace != null && Namespace.Length > 0) { + resourceOutputFile = Path.Combine(Path.GetDirectoryName(resourceFile), + Namespace + "." + Path.GetFileName(resourceFile)); + } else { + resourceOutputFile = resourceFile; + } + return CopyResource(resourceFile, resourceOutputFile); + } + + #region GetNamespace + // TODO: Get namespace using the parser, not with regular expressions. + + /// Gets the class namespace from a piece of code. + /// The code to extract the namespace from. + /// The namespace of the classes in the source code. + private string GetCSharpNamespace(string code) + { + // The regular expression that extracts the text + // "namespace Name {" from a code string. + + string pattern = @"^[ \t]*namespace\s+([\w\d\.]+)\s*{"; + Regex regex = new Regex(pattern, RegexOptions.Multiline); + Match match = regex.Match(code); + if (match.Success) + return match.Groups[1].Value; + else + return null; + } + + /// Gets the class's namespace from a piece of code. + /// The code to extract the namespace from. + /// The namespace of the classes in the source code. + private string GetVBNamespace(string code) + { + string pattern = @"^[ \t]*Namespace\s+([\w\d\.]+)[ \t]*$"; + Regex regex = new Regex(pattern, RegexOptions.Multiline | RegexOptions.IgnoreCase); + Match match = regex.Match(code); + if (match.Success) + return match.Groups[1].Value; + else + return null; + } + + /// + /// Gets the namespace of the first class specified in a file. + /// + /// The filename to search for + /// a namespace. + private string GetNamespaceFromFile(string filename) + { + try { + using (StreamReader reader = new StreamReader(filename, true)) { + string extension = Path.GetExtension(filename).ToLower(); + if (extension == ".cs") { + return GetCSharpNamespace(reader.ReadToEnd()); + } else if (extension == ".vb") { + return GetVBNamespace(reader.ReadToEnd()); + } + return null; + } + } catch (Exception ex) { + WriteLine(ex.ToString()); + return null; + } + } + #endregion + + public string ImportResource(string resourceFile, string rootNamespace) + { + WriteLine("Import resource " + resourceFile + " (ns=" + rootNamespace + ")"); + + string resourceOutputFile = resourceFile; + + if (!Path.IsPathRooted(resourceFile) && !resourceFile.StartsWith("..")) { + resourceOutputFile = resourceOutputFile.Replace(Path.DirectorySeparatorChar, '.'); + resourceOutputFile = resourceOutputFile.Replace(Path.AltDirectorySeparatorChar, '.'); + + if (rootNamespace == null || rootNamespace.Length == 0) + resourceOutputFile = Path.Combine(Path.GetDirectoryName(resourceFile), + resourceOutputFile); + else + resourceOutputFile = Path.Combine(Path.GetDirectoryName(resourceFile), + rootNamespace + "." + resourceOutputFile); + } else { + if (rootNamespace == null || rootNamespace.Length == 0) + resourceOutputFile = Path.GetFileName(resourceFile); + else + resourceOutputFile = rootNamespace + "." + Path.GetFileName(resourceFile); + } + + return CopyResource(resourceFile, resourceOutputFile); + } + + private string CopyResource(string inputFile, string outputFile) { + inputFile = Path.Combine(this.projectInputDirectory, inputFile); + if (Path.GetExtension(outputFile).ToUpper() == ".RESX") { + outputFile = Path.ChangeExtension(outputFile, ".resources"); + } + + string outputFileFull = Path.Combine(this.projectOutputDirectory, outputFile); + + WriteLine("Needed to copy file " + inputFile + " to " + outputFileFull); + copiedFiles.Add(new DictionaryEntry(inputFile, outputFileFull)); + return (outputFile.StartsWith(".") ? "" : "." + Path.DirectorySeparatorChar) + outputFile; + } + } +} diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/VSNet/SolutionInputConverter.cs b/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/VSNet/SolutionInputConverter.cs new file mode 100644 index 0000000000..dcf346f2ff --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/VSNet/SolutionInputConverter.cs @@ -0,0 +1,251 @@ +// +// +// +// +// +// + +using System; +using System.Collections; +using System.Text; +using System.Text.RegularExpressions; +using System.IO; +using System.Windows.Forms; +using System.Reflection; +using System.Security.Permissions; +using System.Resources; + +using System.Xml; +using System.Xml.Xsl; + +using ICSharpCode.Core; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Gui; + +using ICSharpCode.SharpDevelop.Commands; +using ICSharpCode.SharpDevelop.ProjectImportExporter.Converters; +using ICSharpCode.SharpDevelop.ProjectImportExporter.Dialogs; + +namespace ICSharpCode.SharpDevelop.ProjectImportExporter.Converters +{ + public class SolutionInputConverter : AbstractInputConverter + { + string projectTitle; + string projectInputDirectory; + string projectOutputDirectory; + string combineOutputFile; + + public override string FormatName { + get { + return "Visual Studio.NET 7 / 2003 Solutions"; + } + } + + public override string OutputFile { + get { + return combineOutputFile; + } + } + + + public override bool CanConvert(string fileName) + { + string upperExtension = Path.GetExtension(fileName).ToUpper(); + return upperExtension == ".SLN"; + } + + public override bool Convert(string solutionInputFile, string outputPath) + { + projectTitle = projectInputDirectory = projectOutputDirectory = combineOutputFile = null; + + ArrayList projects = ReadSolution(solutionInputFile); + ArrayList convertedProjects = new ArrayList(); + for (int i = 0; i < projects.Count; ++i) { + DictionaryEntry entry = (DictionaryEntry)projects[i]; + this.projectTitle = entry.Key.ToString(); + + string projectFile = entry.Value.ToString(); + + string projectInputFile = Path.Combine(Path.GetDirectoryName(solutionInputFile), projectFile); + this.projectOutputDirectory = Path.Combine(outputPath, Path.GetDirectoryName(projectFile)); + + if (!File.Exists(projectFile)) { + using (ChooseProjectLocationDialog cpld = new ChooseProjectLocationDialog()) { + cpld.FileName = projectFile; + DialogResult res = cpld.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm); + if (res == DialogResult.OK) { + projectInputFile = projectFile = cpld.FileName; + this.projectOutputDirectory = Path.Combine(outputPath, Path.GetFileNameWithoutExtension(projectFile)); + entry = new DictionaryEntry(entry.Key, Path.Combine(Path.GetFileNameWithoutExtension(projectFile), Path.ChangeExtension(Path.GetFileName(projectFile), ".prjx"))); + projects[i] = entry; + } else { + continue; + } + } + } + + string projectOutputFile = Path.Combine(projectOutputDirectory, Path.ChangeExtension(Path.GetFileName(projectFile), ".prjx")); + + if (!Directory.Exists(projectOutputDirectory)) { + Directory.CreateDirectory(projectOutputDirectory); + } + + this.projectInputDirectory = Path.GetDirectoryName(projectInputFile); + switch (Path.GetExtension(projectFile).ToUpper()) { + case ".VBPROJ": + ConvertProject(projectInputFile, projectOutputFile, "VBSolutionConversion.xsl"); + convertedProjects.Add(entry); + break; + case ".CSPROJ": + ConvertProject(projectInputFile, projectOutputFile, "CSSolutionConversion.xsl"); + convertedProjects.Add(entry); + break; + default: + + + StringParser.Properties["ProjectFile"] = projectFile; + MessageService.ShowError("${res:ICSharpCode.SharpDevelop.ProjectImportExporter.Converters.SolutionInputConverter.CantConvertProjectFileError}"); + break; + } + } + combineOutputFile = Path.Combine(outputPath, Path.ChangeExtension(Path.GetFileName(solutionInputFile), ".cmbx")); + WriteCombine(combineOutputFile, convertedProjects); + return true; + } + + void ConvertResource(string inputFile, string outputFile) + { + Hashtable resources = new Hashtable(); + + // read .resx file + try { + Stream s = File.OpenRead(inputFile); + ResXResourceReader rx = new ResXResourceReader(s); + IDictionaryEnumerator n = rx.GetEnumerator(); + while (n.MoveNext()) { + if (!resources.ContainsKey(n.Key)) { + resources.Add(n.Key, n.Value); + } + } + + rx.Close(); + s.Close(); + } catch (Exception e) { + + MessageService.ShowError(e, "Can't read resource file " + inputFile +"\nCheck file existance."); + } + + // write .resources file + try { + ResourceWriter rw = new ResourceWriter(outputFile); + foreach (DictionaryEntry entry in resources) { + rw.AddResource(entry.Key.ToString(), entry.Value); + } + rw.Generate(); + rw.Close(); + } catch (Exception e) { + + MessageService.ShowError(e, "Can't generate resource file " + outputFile +"\nCheck for write permission."); + } + } + + void ConvertProject(string inputFile, string outputFile, string resourceStreamFile) + { + SolutionConversionTool solutionConversionTool = new SolutionConversionTool(projectTitle, projectInputDirectory, projectOutputDirectory); + + XsltArgumentList xsltArgumentList = new XsltArgumentList(); + xsltArgumentList.AddParam("ProjectTitle", "", projectTitle); + xsltArgumentList.AddExtensionObject("urn:convtool", solutionConversionTool); + + + + + try { + ConvertXml.Convert(inputFile, + new XmlTextReader(new StreamReader(Assembly.GetCallingAssembly().GetManifestResourceStream(resourceStreamFile), Encoding.UTF8)), + outputFile, + xsltArgumentList); + } catch (XmlException) { + // try it again with the system encoding instead of UTF-8 + ConvertXml.Convert(inputFile, + new XmlTextReader(new StreamReader(Assembly.GetCallingAssembly().GetManifestResourceStream(resourceStreamFile), Encoding.UTF8)), + outputFile, + xsltArgumentList, + Encoding.Default); + } + + foreach (DictionaryEntry entry in solutionConversionTool.copiedFiles) { + string srcFile = entry.Key.ToString(); + string dstFile = entry.Value.ToString(); + if (File.Exists(srcFile)) { + if (!Directory.Exists(Path.GetDirectoryName(dstFile))) { + Directory.CreateDirectory(Path.GetDirectoryName(dstFile)); + } + if (Path.GetExtension(srcFile).ToUpper() == ".RESX") { + ConvertResource(srcFile, dstFile); + } else { + if (srcFile.ToLower() == dstFile.ToLower()) continue; + try { + File.Copy(srcFile, dstFile, true); + File.SetAttributes(dstFile, FileAttributes.Normal); + } catch (Exception e) { + + MessageService.ShowError(e, "Can't Copy file from " + srcFile +" to " + dstFile +". Copy it manually."); + } + } + } + } + solutionConversionTool.copiedFiles = new ArrayList(); + } + + ArrayList ReadSolution(string fileName) + { + StreamReader sr = File.OpenText(fileName); + Regex projectLinePattern = new Regex("Project\\(.*\\)\\s+=\\s+\"(?.*)\",\\s*\"(?<Location>.*)\",", RegexOptions.Compiled); + ArrayList projects = new ArrayList(); + while (true) { + string line = sr.ReadLine(); + if (line == null) { + break; + } + Match match = projectLinePattern.Match(line); + if (match.Success) { + projects.Add(new DictionaryEntry(match.Result("${Title}"), match.Result("${Location}"))); + } + } + sr.Close(); + return projects; + } + + void WriteCombine(string fileName, ArrayList projects) + { + StreamWriter sw = File.CreateText(fileName); + sw.WriteLine("<Combine fileversion=\"1.0\" name=\"" + Path.GetFileNameWithoutExtension(fileName) + "\" description=\"Converted Visual Studio.NET Solution\">"); + string firstEntry = null; + sw.WriteLine("<Entries>"); + foreach (DictionaryEntry entry in projects) { + if (firstEntry == null) { + firstEntry = entry.Key.ToString(); + } + sw.WriteLine("\t<Entry filename=\"." + Path.DirectorySeparatorChar + Path.ChangeExtension(entry.Value.ToString(), ".prjx") + "\" />"); + } + sw.WriteLine("</Entries>"); + sw.WriteLine("<StartMode startupentry=\"" + firstEntry + "\" single=\"True\"/>"); + sw.WriteLine("<Configurations active=\"Debug\">"); + sw.WriteLine("<Configuration name=\"Debug\">"); + foreach (DictionaryEntry entry in projects) { + sw.WriteLine("\t<Entry name=\"" + entry.Key + "\" configurationname=\"Debug\" build=\"False\" />"); + } + sw.WriteLine("</Configuration>"); + sw.WriteLine("<Configuration name=\"Release\">"); + foreach (DictionaryEntry entry in projects) { + sw.WriteLine("\t<Entry name=\"" + entry.Key + "\" configurationname=\"Release\" build=\"False\" />"); + } + sw.WriteLine("</Configuration>"); + sw.WriteLine("</Configurations>"); + sw.WriteLine("</Combine>"); + sw.Close(); + } + } +} diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/VSNet/SolutionOutputConverter.cs b/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/VSNet/SolutionOutputConverter.cs new file mode 100644 index 0000000000..8f2bdd92bb --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/VSNet/SolutionOutputConverter.cs @@ -0,0 +1,199 @@ +// <file> +// <copyright see="prj:///doc/copyright.txt"/> +// <license see="prj:///doc/license.txt"/> +// <owner name="Mike Krueger" email="mike@icsharpcode.net"/> +// <version value="$version"/> +// </file> + +using System; +using System.Collections; +using System.IO; +using System.Reflection; +using System.Xml; +using System.Xml.Xsl; +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Gui; + +namespace ICSharpCode.SharpDevelop.ProjectImportExporter.Converters +{ + public class SolutionOutputConverter : AbstractOutputConverter + { + Hashtable GUIDHash = new Hashtable(); + Hashtable typeGUIDHash = new Hashtable(); + Hashtable configHash = new Hashtable(); + + static Hashtable projectTypeGUIDHash = new Hashtable(); + static Hashtable languageNameHash = new Hashtable(); + + static SolutionOutputConverter() + { + projectTypeGUIDHash[".csproj"] = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"; + projectTypeGUIDHash[".vbproj"] = "{F184B08F-C81C-45F6-A57F-5ABD9991F28F}"; + languageNameHash[".csproj"] = "CSHARP"; + languageNameHash[".vbproj"] = "VisualBasic"; + } + + public override string FormatName { + get { + return "Visual Studio.NET 2003 Solutions"; + } + } + + string CreateGUID(string projectFileName) + { + string name = Path.GetFileNameWithoutExtension(projectFileName); + string result = (string)GUIDHash[name]; + if (result == null) { + result = String.Concat('{', Guid.NewGuid().ToString().ToUpper(), '}'); + GUIDHash[name] = result; + } + return result; + } + + + string GetVSNetProjectFileExtension(string projectFileName) + { + XmlTextReader reader = new XmlTextReader(projectFileName); + reader.MoveToContent(); + if (reader.MoveToAttribute("projecttype")) { + switch (reader.Value) { + case "C#": + return ".csproj"; + case "VBNET": + return ".vbproj"; + default: + throw new System.NotSupportedException("Project type " + reader.Value + " is currently not supported."); + } + } + return ".csproj"; + } + + public override void ConvertCombine(IProgressMonitor progressMonitor, string inputCombine, string outputPath) + { + string inputPath = Path.GetFullPath(Path.GetDirectoryName(inputCombine)); + + Combine combine = new Combine(); + combine.LoadCombine(inputCombine); + + StreamWriter streamWriter = new StreamWriter(Path.Combine(outputPath, Path.ChangeExtension(Path.GetFileName(inputCombine), ".sln"))); + streamWriter.WriteLine("Microsoft Visual Studio Solution File, Format Version 8.00"); + + ArrayList projects = Combine.GetAllProjects(combine); + if (progressMonitor != null) { + progressMonitor.BeginTask("Convert", projects.Count + 2); + } + foreach (ProjectCombineEntry project in projects) { + string projectFileName = Path.GetFullPath(Path.Combine(inputPath, project.Filename)); + string relativeFileName = projectFileName.Substring(inputPath.Length + 1); + string newExtension = GetVSNetProjectFileExtension(projectFileName); + //CreateGUID(projectFileName); + streamWriter.WriteLine("Project(\"{3}\") = \"{1}\", \"{2}\", \"{0}\"", + CreateGUID(projectFileName), + project.Name, + Path.ChangeExtension(relativeFileName, newExtension), + projectTypeGUIDHash[newExtension]); + typeGUIDHash[Path.GetFileNameWithoutExtension(projectFileName)] = projectTypeGUIDHash[newExtension]; + streamWriter.WriteLine("\tProjectSection(ProjectDependencies) = postProject"); + streamWriter.WriteLine("\tEndProjectSection"); + } + if (progressMonitor != null) { + progressMonitor.Worked(1); + } + foreach (ProjectCombineEntry project in projects) { + string projectFileName = Path.GetFullPath(Path.Combine(inputPath, project.Filename)); + string relativeFileName = projectFileName.Substring(inputPath.Length + 1); + ConvertProject(null, projectFileName, Path.Combine(outputPath, Path.GetDirectoryName(relativeFileName))); + if (progressMonitor != null) { + progressMonitor.Worked(1); + } + } + streamWriter.WriteLine("EndProject"); + streamWriter.WriteLine("Global"); + + streamWriter.WriteLine("\tGlobalSection(SolutionConfiguration) = preSolution"); + SortedList allConfigs = new SortedList(); + foreach (ProjectCombineEntry project in projects) { + string projectFileName = Path.GetFullPath(Path.Combine(inputPath, project.Filename)); + foreach (string config in (ArrayList)configHash[projectFileName]) { + allConfigs[config] = "1"; + } + } + foreach (DictionaryEntry entry in allConfigs) { + streamWriter.WriteLine("\t\t{0} = {0}", entry.Key); + } + streamWriter.WriteLine("\tEndGlobalSection"); + streamWriter.WriteLine("\tGlobalSection(ProjectConfiguration) = postSolution"); + foreach (ProjectCombineEntry project in projects) { + string projectFileName = Path.GetFullPath(Path.Combine(inputPath, project.Filename)); + foreach (string config in (ArrayList)configHash[projectFileName]) { + string name = Path.GetFileNameWithoutExtension(projectFileName); + streamWriter.WriteLine("\t\t{0}.{1}.ActiveCfg = {1}|.NET", GUIDHash[name], config); + streamWriter.WriteLine("\t\t{0}.{1}.Build.0 = {1}|.NET", GUIDHash[name], config); + } + } + streamWriter.WriteLine("\tEndGlobalSection"); + streamWriter.WriteLine("\tGlobalSection(ExtensibilityGlobals) = postSolution"); + streamWriter.WriteLine("\tEndGlobalSection"); + streamWriter.WriteLine("\tGlobalSection(ExtensibilityAddIns) = postSolution"); + streamWriter.WriteLine("\tEndGlobalSection"); + streamWriter.WriteLine("EndGlobal"); + streamWriter.Close(); + if (progressMonitor != null) { + progressMonitor.Done(); + } + } + + public override void ConvertProject(IProgressMonitor progressMonitor, string inputProject, string outputPath) + { + if (progressMonitor != null) { + progressMonitor.BeginTask("Convert", 3); + } + + string newExtension = GetVSNetProjectFileExtension(inputProject); + string frameworkPath = System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory(); + if (!frameworkPath.EndsWith(Path.DirectorySeparatorChar.ToString())) + frameworkPath += Path.DirectorySeparatorChar; + + XsltArgumentList xsltArgumentList = new XsltArgumentList(); + xsltArgumentList.AddParam("LanguageName", "", languageNameHash[newExtension]); + xsltArgumentList.AddParam("FrameworkPath", "", frameworkPath); + SolutionOutputConverterTool solutionConversionTool = new SolutionOutputConverterTool(); + solutionConversionTool.projectGUIDHash = GUIDHash; + solutionConversionTool.projectTypeGUIDHash = projectTypeGUIDHash; + xsltArgumentList.AddExtensionObject("urn:convtool", solutionConversionTool); + + string outputFile = Path.Combine(outputPath, Path.ChangeExtension(Path.GetFileName(inputProject), newExtension)); + if (!Directory.Exists(Path.GetDirectoryName(outputFile))) { + Directory.CreateDirectory(Path.GetDirectoryName(outputFile)); + } + if (progressMonitor != null) { + progressMonitor.Worked(1); + } + + ConvertXml.Convert(inputProject, + new XmlTextReader(Assembly.GetCallingAssembly().GetManifestResourceStream("ProjectToVSNetProjectConversion.xsl")), + outputFile, + xsltArgumentList); + if (progressMonitor != null) { + progressMonitor.Worked(1); + } + + foreach (string fileName in solutionConversionTool.copiedFiles) { + string srcFile = Path.Combine(Path.GetDirectoryName(inputProject), fileName); + string dstFile = Path.Combine(outputPath, fileName); + if (srcFile.ToLower() == dstFile.ToLower()) continue; + if (File.Exists(srcFile)) { + if (!Directory.Exists(Path.GetDirectoryName(dstFile))) { + Directory.CreateDirectory(Path.GetDirectoryName(dstFile)); + } + File.Copy(srcFile, dstFile, true); + File.SetAttributes(dstFile, FileAttributes.Normal); + } + } + configHash[inputProject] = solutionConversionTool.configurations; + if (progressMonitor != null) { + progressMonitor.Done(); + } + } + } +} diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/VSNet/SolutionOutputConverterTool.cs b/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/VSNet/SolutionOutputConverterTool.cs new file mode 100644 index 0000000000..d0fa28c3b8 --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/VSNet/SolutionOutputConverterTool.cs @@ -0,0 +1,91 @@ +// <file> +// <copyright see="prj:///doc/copyright.txt"/> +// <license see="prj:///doc/license.txt"/> +// <owner name="Mike Krüger" email="mike@icsharpcode.net"/> +// <version value="$version"/> +// </file> + +using System; +using System.Collections; +using System.IO; +using System.Text; +using System.Security; +using System.Security.Permissions; + +using System.Windows.Forms; + +using MSjogren.GacTool.FusionNative; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.ProjectImportExporter.Commands; + +namespace ICSharpCode.SharpDevelop.ProjectImportExporter.Converters +{ + public class SolutionOutputConverterTool + { + public ArrayList copiedFiles = new ArrayList(); + public ArrayList configurations = new ArrayList(); + public Hashtable projectGUIDHash; + public Hashtable projectTypeGUIDHash; + + public string AddConfig(string config) + { + configurations.Add(config); + return config; + } + + public string VerifyFileLocation(string itemFile) + { + if (itemFile.Length == 0) { + return String.Empty; + } + copiedFiles.Add(itemFile); + if (itemFile.StartsWith(@".\")) { + itemFile = itemFile.Substring(2); + } + return itemFile; + } + + public string ConvertBuildAction(string buildAction) + { + switch (buildAction) { + case "EmbedAsResource": + return "EmbeddedResource"; + } + return buildAction; + } + + public string FileNameWithoutExtension(string txt) + { + return Path.GetFileNameWithoutExtension(txt); + } + + public string Negate(string txt) + { + if (txt.ToUpper() == "TRUE") { + return false.ToString(); + } + return true.ToString(); + } + + public string GetProjectGUID(string projectFileName) + { + string result = (string)projectGUIDHash[projectFileName]; + if (result == null) { + result = String.Concat('{', Guid.NewGuid().ToString().ToUpper(), '}'); + projectGUIDHash[projectFileName] = result; + } + return result; + } + + public string GetPackageGUID(string projectFileName) + { + string result = (string)projectTypeGUIDHash[projectFileName]; + if (result == null) { + result = String.Concat('{', Guid.NewGuid().ToString().ToUpper(), '}'); + projectTypeGUIDHash[projectFileName] = result; + } + return result; + } + } +} diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/VSNet/VSProjectInputConverter.cs b/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/VSNet/VSProjectInputConverter.cs new file mode 100644 index 0000000000..f824cbafa1 --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/Converters/VSNet/VSProjectInputConverter.cs @@ -0,0 +1,168 @@ +// <file> +// <copyright see="prj:///doc/copyright.txt"/> +// <license see="prj:///doc/license.txt"/> +// <owner name="Mike Krüger" email="mike@icsharpcode.net"/> +// <version value="$version"/> +// </file> + +using System; +using System.Collections; +using System.Text; +using System.Text.RegularExpressions; +using System.IO; +using System.Windows.Forms; +using System.Reflection; +using System.Security.Permissions; +using System.Resources; + +using System.Xml; +using System.Xml.Xsl; + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.SharpDevelop.Gui; + +using ICSharpCode.SharpDevelop.Commands; +using ICSharpCode.SharpDevelop.ProjectImportExporter.Converters; +using ICSharpCode.SharpDevelop.ProjectImportExporter.Dialogs; + +namespace ICSharpCode.SharpDevelop.ProjectImportExporter.Converters +{ + public class VSProjectInputConverter : AbstractInputConverter + { + string projectTitle; + string projectInputDirectory; + string combineOutputFile; + + string projectOutputDirectory; + + public override string FormatName { + get { + return "Visual Studio.NET 7 / 2003 C# and VB.NET Projects"; + } + } + + public override string OutputFile { + get { + return combineOutputFile; + } + } + + public override bool CanConvert(string fileName) + { + string upperExtension = Path.GetExtension(fileName).ToUpper(); + return upperExtension == ".VBPROJ" || upperExtension == ".CSPROJ"; + } + + public override bool Convert(string solutionInputFile, string outputPath) + { + this.projectOutputDirectory = outputPath; + string projectOutputFile = Path.Combine(projectOutputDirectory, Path.ChangeExtension(Path.GetFileName(solutionInputFile), ".prjx")); + + projectTitle = Path.GetFileNameWithoutExtension(solutionInputFile); + projectInputDirectory = Path.GetDirectoryName(solutionInputFile); + combineOutputFile = Path.Combine(outputPath, Path.ChangeExtension(Path.GetFileName(solutionInputFile), ".prjx")); + + switch (Path.GetExtension(solutionInputFile).ToUpper()) { + case ".VBPROJ": + ConvertProject(solutionInputFile, projectOutputFile, "VBSolutionConversion.xsl"); + break; + case ".CSPROJ": + ConvertProject(solutionInputFile, projectOutputFile, "CSSolutionConversion.xsl"); + break; + default: + + MessageService.ShowError("${res:ICSharpCode.SharpDevelop.ProjectImportExporter.Converters.SolutionInputConverter.CantConvertProjectFileError}"); + break; + } + + return true; + } + + void ConvertProject(string inputFile, string outputFile, string resourceStreamFile) + { + SolutionConversionTool solutionConversionTool = new SolutionConversionTool(projectTitle, projectInputDirectory, projectOutputDirectory); + + XsltArgumentList xsltArgumentList = new XsltArgumentList(); + xsltArgumentList.AddParam("ProjectTitle", "", projectTitle); + xsltArgumentList.AddExtensionObject("urn:convtool", solutionConversionTool); + + + + + try { + ConvertXml.Convert(inputFile, + new XmlTextReader(new StreamReader(Assembly.GetCallingAssembly().GetManifestResourceStream(resourceStreamFile), Encoding.UTF8)), + outputFile, + xsltArgumentList); + } catch (XmlException) { + // try it again with the system encoding instead of UTF-8 + ConvertXml.Convert(inputFile, + new XmlTextReader(new StreamReader(Assembly.GetCallingAssembly().GetManifestResourceStream(resourceStreamFile), Encoding.UTF8)), + outputFile, + xsltArgumentList, + Encoding.Default); + } + + foreach (DictionaryEntry entry in solutionConversionTool.copiedFiles) { + string srcFile = entry.Key.ToString(); + string dstFile = entry.Value.ToString(); + if (File.Exists(srcFile)) { + if (!Directory.Exists(Path.GetDirectoryName(dstFile))) { + Directory.CreateDirectory(Path.GetDirectoryName(dstFile)); + } + if (Path.GetExtension(srcFile).ToUpper() == ".RESX") { + ConvertResource(srcFile, dstFile); + } else { + if (srcFile.ToLower() == dstFile.ToLower()) continue; + try { + File.Copy(srcFile, dstFile, true); + File.SetAttributes(dstFile, FileAttributes.Normal); + } catch (Exception e) { + + MessageService.ShowError(e, "Can't Copy file from " + srcFile +" to " + dstFile +". Copy it manually."); + } + } + } + } + solutionConversionTool.copiedFiles = new ArrayList(); + } + + void ConvertResource(string inputFile, string outputFile) + { + Hashtable resources = new Hashtable(); + + // read .resx file + try { + Stream s = File.OpenRead(inputFile); + ResXResourceReader rx = new ResXResourceReader(s); + IDictionaryEnumerator n = rx.GetEnumerator(); + while (n.MoveNext()) { + if (!resources.ContainsKey(n.Key)) { + resources.Add(n.Key, n.Value); + } + } + + rx.Close(); + s.Close(); + } catch (Exception e) { + + MessageService.ShowError(e, "Can't read resource file " + inputFile +"\nCheck file existance."); + } + + // write .resources file + try { + ResourceWriter rw = new ResourceWriter(outputFile); + foreach (DictionaryEntry entry in resources) { + rw.AddResource(entry.Key.ToString(), entry.Value); + } + rw.Generate(); + rw.Close(); + } catch (Exception e) { + + MessageService.ShowError(e, "Can't generate resource file " + outputFile +"\nCheck for write permission."); + } + } + + } +} diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/Dialogs/ChooseProjectLocationDialog.cs b/src/AddIns/Misc/ProjectImporterExporter/Project/Dialogs/ChooseProjectLocationDialog.cs new file mode 100644 index 0000000000..c1cac8f90c --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/Dialogs/ChooseProjectLocationDialog.cs @@ -0,0 +1,66 @@ +// <file> +// <copyright see="prj:///doc/copyright.txt"/> +// <license see="prj:///doc/license.txt"/> +// <owner name="Mike Krueger" email="mike@icsharpcode.net"/> +// <version value="$version"/> +// </file> + +using System; +using System.Collections; +using System.Reflection; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Gui.XmlForms; +using ICSharpCode.SharpDevelop.ProjectImportExporter.Converters; + +namespace ICSharpCode.SharpDevelop.ProjectImportExporter.Dialogs +{ + public class ChooseProjectLocationDialog : BaseSharpDevelopForm + { + public string FileName { + get { + return ControlDictionary["fileNameTextBox"].Text; + } + set { + ControlDictionary["fileNameTextBox"].Text = value; + } + } + + public ChooseProjectLocationDialog() + { + SetupFromXmlStream(Assembly.GetCallingAssembly().GetManifestResourceStream("ChooseProjectLocationDialog.xfrm")); + Icon = null; + ControlDictionary["okButton"].Click += new EventHandler(OkButtonClick); + ControlDictionary["browseButton"].Click += new EventHandler(BrowseProject); + + } + + void OkButtonClick(object sender, EventArgs e) + { + if (!FileUtilityService.IsValidFileName(FileName)) { + MessageService.ShowError("${res:ICSharpCode.SharpDevelop.ProjectImportExporter.Dialogs.ImportProjectDialog.InputFileInvalidError}"); + return; + } + + if (FileUtilityService.TestFileExists(FileName)) { + DialogResult = DialogResult.OK; + } + } + + void BrowseProject(object sender, EventArgs e) + { + using (OpenFileDialog fdiag = new OpenFileDialog()) { + fdiag.AddExtension = true; + fdiag.Filter = StringParser.Parse("${res:SharpDevelop.FileFilter.AllFiles}|*.*"); + fdiag.Multiselect = false; + fdiag.CheckFileExists = true; + if (fdiag.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) { + ControlDictionary["fileNameTextBox"].Text = fdiag.FileName; + } + } + } + } +} diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/Dialogs/ExportProjectDialog.cs b/src/AddIns/Misc/ProjectImporterExporter/Project/Dialogs/ExportProjectDialog.cs new file mode 100644 index 0000000000..8300365d39 --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/Dialogs/ExportProjectDialog.cs @@ -0,0 +1,179 @@ +// <file> +// <copyright see="prj:///doc/copyright.txt"/> +// <license see="prj:///doc/license.txt"/> +// <owner name="Mike Krueger" email="mike@icsharpcode.net"/> +// <version value="$version"/> +// </file> + +using System; +using System.Collections; +using System.Reflection; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Internal.Project; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Gui.XmlForms; +using ICSharpCode.SharpDevelop.ProjectImportExporter.Converters; + + +namespace ICSharpCode.SharpDevelop.ProjectImportExporter.Dialogs +{ + public class ExportProjectDialog : BaseSharpDevelopForm, IProgressMonitor + { + ArrayList outputConvertes; + + public ExportProjectDialog() : this(null, null) + { + + } + + public ExportProjectDialog(string formatName) : this(formatName, null) + { + + } + + public ExportProjectDialog(string formatName, string projectName) + { + SetupFromXmlStream(Assembly.GetCallingAssembly().GetManifestResourceStream("ExportProjectDialog.xfrm")); + Icon = null; + ControlDictionary["outputLocationBrowseButton"].Click += new EventHandler(BrowseOutputLocation); + ControlDictionary["startButton"].Click += new EventHandler(StartConversion); + + outputConvertes = RetrieveOutputConverters(); + FillOutputFormat(formatName); + FillProjectList(projectName); + ((RadioButton)ControlDictionary["singleProjectRadioButton"]).CheckedChanged += new EventHandler(RadioButtonChecked); + ((RadioButton)ControlDictionary["wholeCombineRadioButton"]).CheckedChanged += new EventHandler(RadioButtonChecked); + + RadioButtonChecked(null, null); + ControlDictionary["outputLocationTextBox"].Text = PropertyService.Get("ICSharpCode.SharpDevelop.ProjectImportExporter.Dialogs.ExportProjectDialog.OutputPath", "C:\\output"); + } + + void FillOutputFormat(string formatName) + { + int index = 0; + for (int i = 0; i < outputConvertes.Count; ++i) { + AbstractOutputConverter outputConverter = (AbstractOutputConverter)outputConvertes[i]; + ((ComboBox)ControlDictionary["outputFormatComboBox"]).Items.Add(StringParser.Parse(outputConverter.FormatName)); + if (formatName == outputConverter.FormatName) { + index = i; + } + } + ((ComboBox)ControlDictionary["outputFormatComboBox"]).SelectedIndex = index; + } + + void FillProjectList(string projectName) + { + IProjectService projectService = (IProjectService)ICSharpCode.Core.ServiceManager.Services.GetService(typeof(IProjectService)); + if (projectService.CurrentOpenCombine == null) { + return; + } + + ArrayList allProjects = Combine.GetAllProjects(projectService.CurrentOpenCombine); + int index = 0; + for (int i = 0; i < allProjects.Count; ++i) { + ProjectCombineEntry entry = (ProjectCombineEntry)allProjects[i]; + ((ComboBox)ControlDictionary["projectListComboBox"]).Items.Add(entry.Project.Name); + if (entry.Project.Name == projectName) { + index = i; + ((RadioButton)ControlDictionary["singleProjectRadioButton"]).Checked = true; + } + } + if (allProjects.Count > 0) { + ((ComboBox)ControlDictionary["projectListComboBox"]).SelectedIndex = index; + } + } + + void RadioButtonChecked(object sender, EventArgs e) + { + SetEnabledStatus(((RadioButton)ControlDictionary["singleProjectRadioButton"]).Checked, "projectListComboBox"); + } + + + ArrayList RetrieveOutputConverters() + { + ArrayList converters = new ArrayList(); + Assembly asm = Assembly.GetCallingAssembly(); + foreach (Type t in asm.GetTypes()) { + if (!t.IsAbstract && t.IsSubclassOf(typeof(AbstractOutputConverter))) { + converters.Add(asm.CreateInstance(t.FullName)); + } + } + return converters; + } + void BrowseOutputLocation(object sender, EventArgs e) + { + FolderDialog fd = new FolderDialog(); + if (fd.DisplayDialog("Choose combine output location.") == DialogResult.OK) { + ControlDictionary["outputLocationTextBox"].Text = fd.Path; + } + } + + void StartConversion(object sender, EventArgs e) + { + string outputPath = ControlDictionary["outputLocationTextBox"].Text; + + if (!FileUtilityService.IsValidFileName(outputPath)) { + MessageService.ShowError("${res:ICSharpCode.SharpDevelop.ProjectImportExporter.Dialogs.ImportProjectDialog.OutputFileInvalidError}"); + return; + } + + if (!FileUtilityService.IsDirectory(outputPath)) { + MessageService.ShowError("${res:ICSharpCode.SharpDevelop.ProjectImportExporter.Dialogs.ImportProjectDialog.OutputPathDoesntExistError}"); + return; + } + IProjectService projectService = (IProjectService)ICSharpCode.Core.ServiceManager.Services.GetService(typeof(IProjectService)); + AbstractOutputConverter outputConverter = (AbstractOutputConverter)outputConvertes[((ComboBox)ControlDictionary["outputFormatComboBox"]).SelectedIndex]; + if (((RadioButton)ControlDictionary["singleProjectRadioButton"]).Checked) { + ArrayList allProjects = Combine.GetAllProjects(projectService.CurrentOpenCombine); + IProject project = ((ProjectCombineEntry)allProjects[((ComboBox)ControlDictionary["projectListComboBox"]).SelectedIndex]).Project; + outputConverter.ConvertProject(this, projectService.GetFileName(project), outputPath); + } else { + outputConverter.ConvertCombine(this, projectService.GetFileName(projectService.CurrentOpenCombine), outputPath); + } + + MessageService.ShowMessage("${res:ICSharpCode.SharpDevelop.ProjectImportExporter.Dialogs.ExportProjectDialog.ConversionDoneMessage}"); + + PropertyService.Set("ICSharpCode.SharpDevelop.ProjectImportExporter.Dialogs.ExportProjectDialog.OutputPath", ControlDictionary["outputLocationTextBox"].Text); + } + + #region IProgressMonitor interface + int curWork = 0; + public void BeginTask(string name, int totalWork) + { + ((ProgressBar)ControlDictionary["progressBar"]).Minimum = 0; + ((ProgressBar)ControlDictionary["progressBar"]).Maximum = totalWork; + ((ProgressBar)ControlDictionary["progressBar"]).Value = curWork = 0; + } + public void Worked(int work) + { + curWork += work; + ((ProgressBar)ControlDictionary["progressBar"]).Value = curWork; + } + + public void Done() + { + ((ProgressBar)ControlDictionary["progressBar"]).Value = ((ProgressBar)ControlDictionary["progressBar"]).Maximum; + } + + public bool Canceled { + get { + return false; + } + set { + + } + } + + public string TaskName { + get { + return "Export"; + } + set { + + } + } + #endregion + } +} diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/Dialogs/ImportProjectDialog.cs b/src/AddIns/Misc/ProjectImporterExporter/Project/Dialogs/ImportProjectDialog.cs new file mode 100644 index 0000000000..b1e37b1df7 --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/Dialogs/ImportProjectDialog.cs @@ -0,0 +1,123 @@ +// <file> +// <copyright see="prj:///doc/copyright.txt"/> +// <license see="prj:///doc/license.txt"/> +// <owner name="Mike Krger" email="mike@icsharpcode.net"/> +// <version value="$version"/> +// </file> + +using System; +using System.IO; +using System.Collections; +using System.Reflection; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Gui.XmlForms; +using ICSharpCode.SharpDevelop.ProjectImportExporter.Converters; +using ICSharpCode.Core; + +namespace ICSharpCode.SharpDevelop.ProjectImportExporter.Dialogs +{ + + + public class ImportProjectDialog : BaseSharpDevelopForm + { + ArrayList inputConvertes; + + public ImportProjectDialog() + { + SetupFromXmlStream(Assembly.GetCallingAssembly().GetManifestResourceStream("ImportProjectDialog.xfrm")); + Icon = null; + + ControlDictionary["startButton"].Click += new EventHandler(StartConversion); + ControlDictionary["projectBrowseButton"].Click += new EventHandler(BrowseProject); + ControlDictionary["outputLocationBrowseButton"].Click += new EventHandler(BrowseOutputLocation); + + inputConvertes = RetrieveInputConverters(); + + foreach (AbstractInputConverter converter in inputConvertes) { + ((RichTextBox)ControlDictionary["formatsRichTextBox"]).AppendText(StringParser.Parse(converter.FormatName) + Environment.NewLine); + } + } + + ArrayList RetrieveInputConverters() + { + ArrayList converters = new ArrayList(); + Assembly asm = Assembly.GetCallingAssembly(); + foreach (Type t in asm.GetTypes()) { + if (!t.IsAbstract && t.IsSubclassOf(typeof(AbstractInputConverter))) { + converters.Add(asm.CreateInstance(t.FullName)); + } + } + return converters; + } + + void BrowseProject(object sender, EventArgs e) + { + using (OpenFileDialog fdiag = new OpenFileDialog()) { + fdiag.AddExtension = true; + fdiag.Filter = StringParser.Parse("${res:SharpDevelop.FileFilter.VSNetSolutionFiles}|*.sln;*.csproj;*.vbproj|${res:SharpDevelop.FileFilter.BorlandStudioFiles}|*.bdsproj;*.bdsgroup|${res:SharpDevelop.FileFilter.AllFiles}|*.*"); + fdiag.Multiselect = false; + fdiag.CheckFileExists = true; + if (fdiag.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) { + ControlDictionary["projectTextBox"].Text = fdiag.FileName; + + string projectDefaultPath = PropertyService.Get("ICSharpCode.SharpDevelop.Gui.NewProjectDialog.DefaultPath", Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "SharpDevelop Projects")); + ControlDictionary["outputLocationTextBox"].Text = Path.Combine(projectDefaultPath, Path.GetFileNameWithoutExtension(fdiag.FileName)); + } + } + } + + void BrowseOutputLocation(object sender, EventArgs e) + { + FolderDialog fd = new FolderDialog(); + if (fd.DisplayDialog("Choose combine output location.") == DialogResult.OK) { + ControlDictionary["outputLocationTextBox"].Text = fd.Path; + } + } + + void StartConversion(object sender, EventArgs e) + { + string inputFile = ControlDictionary["projectTextBox"].Text; + string outputPath = ControlDictionary["outputLocationTextBox"].Text; + + if (!FileUtilityService.IsValidFileName(inputFile)) { + MessageService.ShowError("${res:ICSharpCode.SharpDevelop.ProjectImportExporter.Dialogs.ImportProjectDialog.InputFileInvalidError}"); + return; + } + + if (!FileUtilityService.IsValidFileName(outputPath)) { + MessageService.ShowError("${res:ICSharpCode.SharpDevelop.ProjectImportExporter.Dialogs.ImportProjectDialog.OutputFileInvalidError}"); + return; + } + + try { + if (!Directory.Exists(outputPath)) { + Directory.CreateDirectory(outputPath); + } + } catch (Exception) {} + + if (!FileUtilityService.IsDirectory(outputPath)) { + MessageService.ShowError("${res:ICSharpCode.SharpDevelop.ProjectImportExporter.Dialogs.ImportProjectDialog.OutputPathDoesntExistError}"); + return; + } + + if (FileUtilityService.TestFileExists(inputFile)) { + foreach (AbstractInputConverter converter in inputConvertes) { + if (converter.CanConvert(inputFile)) { + if (converter.Convert(inputFile, outputPath)) { + MessageService.ShowMessage("${res:ICSharpCode.SharpDevelop.ProjectImportExporter.Dialogs.ImportProjectDialog.ConversionDoneMessage}"); + DialogResult = DialogResult.OK; + if (((CheckBox) ControlDictionary["openAfterImportCheckBox"]).Checked) { + IProjectService projectService = (IProjectService)ICSharpCode.Core.ServiceManager.Services.GetService(typeof(IProjectService)); + projectService.OpenCombine(converter.OutputFile); + } + } + return; + } + } + MessageService.ShowError("${res:ICSharpCode.SharpDevelop.ProjectImportExporter.Dialogs.ImportProjectDialog.NoConverterFoundError}"); + } + } + } +} diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/Resources/CSSolutionConversion.xsl b/src/AddIns/Misc/ProjectImporterExporter/Project/Resources/CSSolutionConversion.xsl new file mode 100644 index 0000000000..ff85b78103 --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/Resources/CSSolutionConversion.xsl @@ -0,0 +1,133 @@ +<?xml version="1.0"?> +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:convtool="urn:convtool"> + <xsl:param name="ProjectTitle"/> + <xsl:template match="/VisualStudioProject/CSHARP"> + <Project name = "{$ProjectTitle}" + standardNamespace="{Build/Settings/@RootNamespace}" + description = "" + newfilesearch = "None" + enableviewstate = "True" + version = "1.1" + projecttype = "C#"> + + <!-- Transform Contents --> + <Contents> + + <xsl:for-each select="Files/Include/File[@BuildAction ='Compile']"> + <xsl:choose> + <xsl:when test="@Link"> + <File name = "{convtool:VerifyFileLocation(@Link)}" + buildaction="Compile" + subtype = "Code"/> + </xsl:when> + <xsl:otherwise> + <File name = "{convtool:VerifyFileLocation(@RelPath)}" + buildaction="Compile" + subtype = "Code"/> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + + <!-- convert 'resources' --> + <xsl:for-each select="Files/Include/File[@BuildAction ='EmbeddedResource']"> + <xsl:choose> + <xsl:when test="@Link"> + <xsl:choose> + <xsl:when test="@DependentUpon"> + <File name = "{convtool:ImportDependentResource(@Link,@DependentUpon,/VisualStudioProject/CSHARP/Build/Settings/@RootNamespace)}" + buildaction="EmbedAsResource" + subtype = "Code"/> + </xsl:when> + <xsl:otherwise> + <File name = "{convtool:ImportResource(@Link,/VisualStudioProject/CSHARP/Build/Settings/@RootNamespace)}" + buildaction="EmbedAsResource" + subtype = "Code"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="@DependentUpon"> + <File name = "{convtool:ImportDependentResource(@RelPath,@DependentUpon,/VisualStudioProject/CSHARP/Build/Settings/@RootNamespace)}" + buildaction="EmbedAsResource" + subtype = "Code"/> + </xsl:when> + <xsl:otherwise> + <File name = "{convtool:ImportResource(@RelPath,/VisualStudioProject/CSHARP/Build/Settings/@RootNamespace)}" + buildaction="EmbedAsResource" + subtype = "Code"/> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + + <!-- Non-buildable files part of the project --> + <xsl:for-each select="Files/Include/File[(@BuildAction ='None') or (@BuildAction ='Content')]"> + <xsl:choose> + <xsl:when test="@Link"> + <File name = "{convtool:VerifyFileLocation(@Link)}" + buildaction="Nothing" + subtype = "Code"/> + </xsl:when> + <xsl:otherwise> + <File name = "{convtool:VerifyFileLocation(@RelPath)}" + buildaction="Nothing" + subtype = "Code"/> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </Contents> + + <DeploymentInformation target="" script="" strategy="File" /> + + <!-- Transform Settings --> + <xsl:apply-templates select="Build/Settings"/> + + <!-- Transform References --> + <xsl:apply-templates select="Build/References"/> + </Project> + </xsl:template> + + <!-- Transform settings (easy) --> + <xsl:template match="Settings"> + <Configurations active="Debug"> + <xsl:for-each select="Config"> + <Configuration runwithwarnings="{convtool:Negate(@TreatWarningsAsErrors)}" name="{@Name}"> + <CodeGeneration runtime="MsNet" + compiler="Csc" + warninglevel="{@WarningLevel}" + includedebuginformation="{convtool:EnsureBool(@DebugSymbols)}" + optimize="{convtool:EnsureBool(@Optimize)}" + unsafecodeallowed="{convtool:EnsureBool(@AllowUnsafeBlocks)}" + generateoverflowchecks="{convtool:EnsureBool(@CheckForOverflowUnderflow)}" + mainclass="{../@StartupObject}" + target="{../@OutputType}" + definesymbols="{@DefineConstants}" + generatexmldocumentation="False" + win32Icon="{convtool:VerifyFileLocation(../@ApplicationIcon)}" /> + <Execution commandlineparameters="" + consolepause="True" /> + <Output directory="{convtool:VerifyFileLocation(@OutputPath)}" + assembly="{../@AssemblyName}" /> + </Configuration> + </xsl:for-each> + </Configurations> + </xsl:template> + + <!-- Transform references (a bit like frungy) --> + <xsl:template match="References"> + <References> + <xsl:for-each select="Reference[@AssemblyName]"> + <xsl:if test="convtool:ShouldGenerateReference('True', @AssemblyName, @HintPath)"> + <Reference type = "{convtool:GenerateReferenceType(@AssemblyName, @HintPath)}" + refto = "{convtool:GenerateReference(@AssemblyName, @HintPath)}"/> + </xsl:if> + </xsl:for-each> + <xsl:for-each select="Reference[@Project]"> + <Reference type = "Project" + refto = "{@Name}"/> + </xsl:for-each> + </References> + </xsl:template> +</xsl:stylesheet> diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/Resources/ChooseProjectLocationDialog.xfrm b/src/AddIns/Misc/ProjectImporterExporter/Project/Resources/ChooseProjectLocationDialog.xfrm new file mode 100644 index 0000000000..fc6cdcb6a8 --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/Resources/ChooseProjectLocationDialog.xfrm @@ -0,0 +1,57 @@ +<Components version="1.0"> + <System.Windows.Forms.Form> + <Name value="XmlForm1" /> + <ShowInTaskbar value="False" /> + <FormBorderStyle value="FixedDialog" /> + <ClientSize value="{Width=456, Height=90}" /> + <MinimizeBox value="False" /> + <DockPadding value="" /> + <Text value="${res:ICSharpCode.SharpDevelop.ProjectImportExporter.Dialogs.ChooseProjectLocation.DialogName}" /> + <AcceptButton value="okButton [System.Windows.Forms.Button], Text: ${res:Global.OKButtonText}" /> + <CancelButton value="cancelButton [System.Windows.Forms.Button], Text: ${res:Global.CancelButtonText}" /> + <Controls> + <System.Windows.Forms.Button> + <Name value="cancelButton" /> + <Location value="{X=376,Y=64}" /> + <Size value="{Width=72, Height=23}" /> + <Text value="${res:Global.CancelButtonText}" /> + <Anchor value="Bottom, Right" /> + <TabIndex value="4" /> + <DialogResult value="Cancel" /> + </System.Windows.Forms.Button> + <System.Windows.Forms.Button> + <Name value="okButton" /> + <Location value="{X=296,Y=64}" /> + <Size value="{Width=72, Height=23}" /> + <Text value="${res:Global.OKButtonText}" /> + <Anchor value="Bottom, Right" /> + <TabIndex value="1" /> + </System.Windows.Forms.Button> + <System.Windows.Forms.Button> + <Name value="browseButton" /> + <Location value="{X=416,Y=32}" /> + <Size value="{Width=32, Height=23}" /> + <Text value="..." /> + <Anchor value="Top, Right" /> + <TabIndex value="3" /> + </System.Windows.Forms.Button> + <System.Windows.Forms.TextBox> + <Name value="fileNameTextBox" /> + <Anchor value="Top, Left, Right" /> + <TabIndex value="2" /> + <Location value="{X=0,Y=32}" /> + <Size value="{Width=408, Height=20}" /> + <Text value="" /> + </System.Windows.Forms.TextBox> + <System.Windows.Forms.Label> + <Name value="label1" /> + <Text value="${res:ICSharpCode.SharpDevelop.ProjectImportExporter.Dialogs.ChooseProjectLocation.DescriptionLabel}" /> + <TextAlign value="BottomLeft" /> + <Anchor value="Top, Left, Right" /> + <TabIndex value="0" /> + <Size value="{Width=448, Height=24}" /> + <Location value="{X=0,Y=8}" /> + </System.Windows.Forms.Label> + </Controls> + </System.Windows.Forms.Form> +</Components> \ No newline at end of file diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/Resources/ExportProjectDialog.xfrm b/src/AddIns/Misc/ProjectImporterExporter/Project/Resources/ExportProjectDialog.xfrm new file mode 100644 index 0000000000..9c0ad486af --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/Resources/ExportProjectDialog.xfrm @@ -0,0 +1,139 @@ +<Components version="1.0"> + <System.Windows.Forms.Form> + <Name value="MyForm" /> + <ShowInTaskbar value="False" /> + <FormBorderStyle value="FixedDialog" /> + <StartPosition value="CenterParent" /> + <ClientSize value="{Width=570, Height=288}" /> + <MinimizeBox value="False" /> + <DockPadding value="" /> + <Text value="${res:AddIns.ProjectImportExporter.ExportProjectDialog.DialogName}" /> + <AcceptButton value="startButton [System.Windows.Forms.Button], Text: ${res:Global.StartButtonText}" /> + <CancelButton value="cancelButton [System.Windows.Forms.Button], Text: ${res:Global.CancelButtonText}" /> + <MaximizeBox value="False" /> + <Controls> + <System.Windows.Forms.Button> + <Name value="button1" /> + <Location value="{X=16,Y=240}" /> + <Size value="{Width=16, Height=16}" /> + <Text value="+" /> + <TabIndex value="8" /> + </System.Windows.Forms.Button> + <System.Windows.Forms.Label> + <Name value="label2" /> + <Text value="Export progress:" /> + <TextAlign value="BottomLeft" /> + <Anchor value="Top, Left, Right" /> + <TabIndex value="6" /> + <Size value="{Width=544, Height=16}" /> + <Location value="{X=16,Y=192}" /> + </System.Windows.Forms.Label> + <System.Windows.Forms.GroupBox> + <Name value="groupBox" /> + <TabIndex value="5" /> + <Location value="{X=16,Y=72}" /> + <Anchor value="Top, Left, Right" /> + <Size value="{Width=544, Height=112}" /> + <Text value="${res:AddIns.ProjectImportExporter.ExportProjectDialog.ExportGroupBox}" /> + <Controls> + <System.Windows.Forms.ComboBox> + <Name value="projectListComboBox" /> + <Anchor value="Top, Left, Right" /> + <TabIndex value="2" /> + <Location value="{X=24,Y=83}" /> + <Size value="{Width=516, Height=21}" /> + <DropDownStyle value="DropDownList" /> + </System.Windows.Forms.ComboBox> + <System.Windows.Forms.RadioButton> + <Name value="singleProjectRadioButton" /> + <Location value="{X=8,Y=54}" /> + <Size value="{Width=528, Height=24}" /> + <Text value="${res:AddIns.ProjectImportExporter.ExportProjectDialog.SingleProjectComboBox}" /> + <Anchor value="Top, Left, Right" /> + <TabIndex value="1" /> + </System.Windows.Forms.RadioButton> + <System.Windows.Forms.RadioButton> + <Name value="wholeCombineRadioButton" /> + <Location value="{X=8,Y=30}" /> + <Checked value="True" /> + <Size value="{Width=528, Height=24}" /> + <Text value="${res:AddIns.ProjectImportExporter.ExportProjectDialog.WholeCombineComboBox}" /> + <TabStop value="True" /> + <Anchor value="Top, Left, Right" /> + <TabIndex value="0" /> + </System.Windows.Forms.RadioButton> + </Controls> + </System.Windows.Forms.GroupBox> + <System.Windows.Forms.ComboBox> + <Name value="outputFormatComboBox" /> + <Anchor value="Top, Left, Right" /> + <TabIndex value="4" /> + <Location value="{X=152,Y=40}" /> + <Size value="{Width=408, Height=21}" /> + <DropDownStyle value="DropDownList" /> + </System.Windows.Forms.ComboBox> + <System.Windows.Forms.Label> + <Name value="label" /> + <Text value="${res:AddIns.ProjectImportExporter.ExportProjectDialog.OutputFormatLabel}" /> + <TextAlign value="MiddleRight" /> + <TabIndex value="3" /> + <Size value="{Width=144, Height=23}" /> + <Location value="{X=8,Y=40}" /> + </System.Windows.Forms.Label> + <System.Windows.Forms.Button> + <Name value="outputLocationBrowseButton" /> + <Location value="{X=530,Y=8}" /> + <Size value="{Width=32, Height=21}" /> + <Text value="..." /> + <Anchor value="Top, Right" /> + <TabIndex value="2" /> + </System.Windows.Forms.Button> + <System.Windows.Forms.TextBox> + <Name value="outputLocationTextBox" /> + <Anchor value="Top, Left, Right" /> + <TabIndex value="1" /> + <Location value="{X=152,Y=8}" /> + <Size value="{Width=370, Height=21}" /> + <Text value="" /> + </System.Windows.Forms.TextBox> + <System.Windows.Forms.Label> + <Name value="label" /> + <Text value="${res:AddIns.ProjectImportExporter.ExportProjectDialog.OutputLocationLabel}" /> + <TextAlign value="MiddleRight" /> + <TabIndex value="0" /> + <Size value="{Width=144, Height=23}" /> + <Location value="{X=8,Y=8}" /> + </System.Windows.Forms.Label> + <System.Windows.Forms.Button> + <Name value="cancelButton" /> + <Location value="{X=490,Y=258}" /> + <Text value="${res:Global.CancelButtonText}" /> + <Anchor value="Bottom, Right" /> + <TabIndex value="11" /> + <DialogResult value="Cancel" /> + </System.Windows.Forms.Button> + <System.Windows.Forms.Button> + <Name value="startButton" /> + <Location value="{X=410,Y=258}" /> + <Text value="${res:Global.StartButtonText}" /> + <Anchor value="Bottom, Right" /> + <TabIndex value="10" /> + </System.Windows.Forms.Button> + <System.Windows.Forms.ProgressBar> + <Name value="progressBar" /> + <Size value="{Width=544, Height=23}" /> + <Anchor value="Top, Left, Right" /> + <TabIndex value="7" /> + <Location value="{X=16,Y=208}" /> + </System.Windows.Forms.ProgressBar> + <System.Windows.Forms.GroupBox> + <Name value="groupBox1" /> + <TabIndex value="19" /> + <Location value="{X=24,Y=240}" /> + <Anchor value="Top, Left, Right" /> + <Size value="{Width=536, Height=16}" /> + <Text value="Additional options" /> + </System.Windows.Forms.GroupBox> + </Controls> + </System.Windows.Forms.Form> +</Components> \ No newline at end of file diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/Resources/ImportProjectDialog.xfrm b/src/AddIns/Misc/ProjectImporterExporter/Project/Resources/ImportProjectDialog.xfrm new file mode 100644 index 0000000000..d219d9ed46 --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/Resources/ImportProjectDialog.xfrm @@ -0,0 +1,108 @@ +<Components version="1.0"> + <System.Windows.Forms.Form> + <Name value="MyForm" /> + <ShowInTaskbar value="False" /> + <FormBorderStyle value="FixedDialog" /> + <StartPosition value="CenterParent" /> + <ClientSize value="{Width=442, Height=255}" /> + <MinimizeBox value="False" /> + <DockPadding value="" /> + <Text value="${res:AddIns.ProjectImportExporter.ImportProjectDialog.DialogName}" /> + <AcceptButton value="startButton [System.Windows.Forms.Button], Text: ${res:Global.StartButtonText}" /> + <CancelButton value="cancelButton [System.Windows.Forms.Button], Text: ${res:Global.CancelButtonText}" /> + <MaximizeBox value="False" /> + <Controls> + <System.Windows.Forms.CheckBox> + <Name value="openAfterImportCheckBox" /> + <Location value="{X=152,Y=64}" /> + <Checked value="True" /> + <Size value="{Width=280, Height=24}" /> + <Text value="${res:AddIns.ProjectImportExporter.ImportProjectDialog.OpenAfterInputCheckBox}" /> + <CheckState value="Checked" /> + <Anchor value="Top, Left, Right" /> + <TabIndex value="10" /> + </System.Windows.Forms.CheckBox> + <System.Windows.Forms.RichTextBox> + <Name value="formatsRichTextBox" /> + <Anchor value="Top, Bottom, Left, Right" /> + <ReadOnly value="True" /> + <Size value="{Width=426, Height=88}" /> + <Location value="{X=8,Y=128}" /> + <Text value="" /> + <TabIndex value="7" /> + </System.Windows.Forms.RichTextBox> + <System.Windows.Forms.Label> + <Name value="label4" /> + <Text value="${res:AddIns.ProjectImportExporter.ImportProjectDialog.SupportedFormatsLabel}" /> + <TextAlign value="BottomLeft" /> + <Anchor value="Top, Left, Right" /> + <TabIndex value="6" /> + <Size value="{Width=426, Height=23}" /> + <Location value="{X=8,Y=104}" /> + </System.Windows.Forms.Label> + <System.Windows.Forms.Button> + <Name value="outputLocationBrowseButton" /> + <Location value="{X=402,Y=40}" /> + <Size value="{Width=32, Height=21}" /> + <Text value="..." /> + <Anchor value="Top, Right" /> + <TabIndex value="5" /> + </System.Windows.Forms.Button> + <System.Windows.Forms.TextBox> + <Name value="outputLocationTextBox" /> + <Anchor value="Top, Left, Right" /> + <TabIndex value="4" /> + <Location value="{X=152,Y=40}" /> + <Size value="{Width=242, Height=21}" /> + <Text value="" /> + </System.Windows.Forms.TextBox> + <System.Windows.Forms.Label> + <Name value="label2" /> + <Text value="${res:AddIns.ProjectImportExporter.ImportProjectDialog.OutputLocationLabel}" /> + <TextAlign value="MiddleRight" /> + <TabIndex value="3" /> + <Size value="{Width=152, Height=23}" /> + <Location value="{X=0,Y=40}" /> + </System.Windows.Forms.Label> + <System.Windows.Forms.Button> + <Name value="projectBrowseButton" /> + <Location value="{X=402,Y=8}" /> + <Size value="{Width=32, Height=21}" /> + <Text value="..." /> + <Anchor value="Top, Right" /> + <TabIndex value="2" /> + </System.Windows.Forms.Button> + <System.Windows.Forms.TextBox> + <Name value="projectTextBox" /> + <Anchor value="Top, Left, Right" /> + <TabIndex value="1" /> + <Location value="{X=152,Y=8}" /> + <Size value="{Width=242, Height=21}" /> + <Text value="" /> + </System.Windows.Forms.TextBox> + <System.Windows.Forms.Label> + <Name value="label" /> + <Text value="${res:AddIns.ProjectImportExporter.ImportProjectDialog.ProjectInputLabel}" /> + <TextAlign value="MiddleRight" /> + <TabIndex value="0" /> + <Size value="{Width=144, Height=23}" /> + <Location value="{X=8,Y=8}" /> + </System.Windows.Forms.Label> + <System.Windows.Forms.Button> + <Name value="cancelButton" /> + <Location value="{X=362,Y=225}" /> + <Text value="${res:Global.CancelButtonText}" /> + <Anchor value="Bottom, Right" /> + <TabIndex value="9" /> + <DialogResult value="Cancel" /> + </System.Windows.Forms.Button> + <System.Windows.Forms.Button> + <Name value="startButton" /> + <Location value="{X=282,Y=225}" /> + <Text value="${res:Global.StartButtonText}" /> + <Anchor value="Bottom, Right" /> + <TabIndex value="8" /> + </System.Windows.Forms.Button> + </Controls> + </System.Windows.Forms.Form> +</Components> \ No newline at end of file diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/Resources/ProjectImporterExporter.addin b/src/AddIns/Misc/ProjectImporterExporter/Project/Resources/ProjectImporterExporter.addin new file mode 100644 index 0000000000..55b39ed9bf --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/Resources/ProjectImporterExporter.addin @@ -0,0 +1,48 @@ +<AddIn name = "Project Importer/Exporter" + author = "Mike Krueger" + copyright = "GPL" + url = "unknown" + description = "imports/exports forgein project files" + version = "1.0.0"> + + <Runtime> + <Import assembly="ProjectImporterExporter.dll"/> + </Runtime> + <Path name = "/SharpDevelop/Workbench/MainMenu/File"> + <MenuItem id = "ImportSeparator" insertafter="SaveAll" insertbefore="PrintSeparator" type = "Separator" /> + <MenuItem id = "ImportProject" + label = "${res:XML.MainMenu.FileMenu.ImportSolution}" + description = "${res:XML.MainMenu.FileMenu.ImportSolution.Description}" + class = "ICSharpCode.SharpDevelop.ProjectImportExporter.Commands.ImportProjectCommand" /> + <Condition iscombineopen="True" action="Disable"> + <MenuItem id = "ExportProject" + label = "${res:XML.MainMenu.FileMenu.ExportSolution}" + description = "${res:XML.MainMenu.FileMenu.ExportSolution.Description}" + class = "ICSharpCode.SharpDevelop.ProjectImportExporter.Commands.ExportProjectCommand" /> + </Condition> + </Path> + + <Path name = "/SharpDevelop/Views/ProjectBrowser/ContextMenu/ProjectBrowserNode"> + <MenuItem id = "Convert" insertafter="SetAsStartupProject" label = "${res:ICSharpCode.SharpDevelop.Commands.Convert}"> + <MenuItem id = "Convert to C#" + label = "${res:ICSharpCode.SharpDevelop.Commands.VBConvertProjectToCSharp}" + class = "ICSharpCode.SharpDevelop.ProjectImportExporter.Commands.ExportProjectToCSharpCommand"/> + <MenuItem id = "Convert to VB.NET" + label = "${res:ICSharpCode.SharpDevelop.Commands.CharpConvertProjectToVB}" + class = "ICSharpCode.SharpDevelop.ProjectImportExporter.Commands.ExportProjectToVBNetCommand"/> + </MenuItem> + </Path> + + + <Path name = "/SharpDevelop/Workbench/MainMenu/Project"> + <MenuItem id = "Convert" insertafter="SetAsStartupProject" label = "${res:ICSharpCode.SharpDevelop.Commands.Convert}"> + <MenuItem id = "Convert to C#" + label = "${res:ICSharpCode.SharpDevelop.Commands.VBConvertProjectToCSharp}" + class = "ICSharpCode.SharpDevelop.ProjectImportExporter.Commands.ExportProjectToCSharpCommand"/> + <MenuItem id = "Convert to VB.NET" + label = "${res:ICSharpCode.SharpDevelop.Commands.CharpConvertProjectToVB}" + class = "ICSharpCode.SharpDevelop.ProjectImportExporter.Commands.ExportProjectToVBNetCommand"/> + </MenuItem> + </Path> + +</AddIn> diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/Resources/ProjectToVSNetProjectConversion.xsl b/src/AddIns/Misc/ProjectImporterExporter/Project/Resources/ProjectToVSNetProjectConversion.xsl new file mode 100644 index 0000000000..ef576e96df --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/Resources/ProjectToVSNetProjectConversion.xsl @@ -0,0 +1,110 @@ +<?xml version="1.0"?> +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:convtool="urn:convtool"> + <xsl:param name="ProjectGUID"/> + <xsl:param name="LanguageName"/> + <xsl:param name="FrameworkPath"/> + <xsl:template match="/Project"> + <VisualStudioProject> + <xsl:element name = "{$LanguageName}"> + + <xsl:attribute name = "ProjectType">Local</xsl:attribute> + <xsl:attribute name = "ProductVersion">7.10.3077</xsl:attribute> + <xsl:attribute name = "SchemaVersion">2.0</xsl:attribute> + <xsl:attribute name = "ProjectGuid"><xsl:value-of select = "$ProjectGUID"/></xsl:attribute> + + <Build> + <Settings + ApplicationIcon = "{Configuration/CodeGeneration/@win32icon}" + AssemblyKeyContainerName = "" + AssemblyName = "{Configuration/Output/@assembly}" + AssemblyOriginatorKeyFile = "" + DefaultClientScript = "JScript" + DefaultHTMLPageLayout = "Grid" + DefaultTargetSchema = "IE50" + DelaySign = "false" + OutputType = "{Configuration/CodeGeneration/@target}" + PreBuildEvent = "" + PostBuildEvent = "" + RootNamespace = "{@standardNamespace}" + RunPostBuildEvent = "OnBuildSuccess" + StartupObject = "{Configuration/CodeGeneration/@mainclass}" + > + <xsl:for-each select="Configurations/Configuration"> + <Config + Name = "{convtool:AddConfig(@name)}" + AllowUnsafeBlocks = "{CodeGeneration/@unsafecodeallowed}" + BaseAddress = "285212672" + CheckForOverflowUnderflow = "{CodeGeneration/@generateoverflowchecks}" + ConfigurationOverrideFile = "" + DefineConstants = "{CodeGeneration/@definesymbols}" + DocumentationFile = "" + DebugSymbols = "{CodeGeneration/@includedebuginformation}" + FileAlignment = "4096" + IncrementalBuild = "false" + NoStdLib = "{CodeGeneration/@nostdlib}" + NoWarn = "{CodeGeneration/@nowarn}" + Optimize = "{CodeGeneration/@optimize}" + OutputPath = "{Output/@directory}" + RegisterForComInterop = "false" + RemoveIntegerChecks = "false" + TreatWarningsAsErrors = "{convtool:Negate(@runwithwarnings)}" + WarningLevel = "{CodeGeneration/@warninglevel}" + /> + </xsl:for-each> + </Settings> + <References> + <Reference + Name = "System" + AssemblyName = "System" + HintPath = "{$FrameworkPath}System.dll" + /> + <Reference + Name = "System.Data" + AssemblyName = "System.Data" + HintPath = "{$FrameworkPath}System.Data.dll" + /> + <Reference + Name = "System.XML" + AssemblyName = "System.Xml" + HintPath = "{$FrameworkPath}System.XML.dll" + /> + <Reference + Name = "System.Drawing" + AssemblyName = "System.Drawing" + HintPath = "{$FrameworkPath}System.Drawing.dll" + /> + <Reference + Name = "System.Windows.Forms" + AssemblyName = "System.Windows.Forms" + HintPath = "{$FrameworkPath}System.Windows.Forms.dll" + /> + <xsl:for-each select="References/Reference[@type='Assembly']"> + <Reference + Name = "{convtool:FileNameWithoutExtension(@refto)}" + AssemblyName = "{convtool:FileNameWithoutExtension(@refto)}" + HintPath = "{convtool:VerifyFileLocation(@refto)}" + /> + </xsl:for-each> + <xsl:for-each select="References/Reference[@type='Project']"> + <Reference + Name = "{@refto}" + Project = "{convtool:GetProjectGUID(@refto)}" + Package = "{convtool:GetPackageGUID(@refto)}" + /> + </xsl:for-each> + </References> + </Build> + <Files> + <Include> + <xsl:for-each select="Contents/File[@buildaction!='Exclude' and @subtype!='Directory']"> + <File + RelPath = "{convtool:VerifyFileLocation(@name)}" + BuildAction = "{convtool:ConvertBuildAction(@buildaction)}" + /> + </xsl:for-each> + </Include> + </Files> + </xsl:element> + </VisualStudioProject> + </xsl:template> +</xsl:stylesheet> diff --git a/src/AddIns/Misc/ProjectImporterExporter/Project/Resources/VBSolutionConversion.xsl b/src/AddIns/Misc/ProjectImporterExporter/Project/Resources/VBSolutionConversion.xsl new file mode 100644 index 0000000000..4ea204dd43 --- /dev/null +++ b/src/AddIns/Misc/ProjectImporterExporter/Project/Resources/VBSolutionConversion.xsl @@ -0,0 +1,121 @@ +<?xml version="1.0"?> +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:convtool="urn:convtool"> + <xsl:param name="ProjectTitle"/> + <xsl:template match="/VisualStudioProject/VisualBasic"> + <Project name = "{$ProjectTitle}" + standardNamespace="{Build/Settings/@RootNamespace}" + description = "" + newfilesearch = "None" + enableviewstate = "True" + version = "1.1" + projecttype = "VBNET"> + + <!-- Transform Contents --> + <Contents> + + <xsl:for-each select="Files/Include/File[@BuildAction ='Compile']"> + <xsl:choose> + <xsl:when test="@Link"> + <File name = "{convtool:VerifyFileLocation(@Link)}" + buildaction="Compile" + subtype = "Code"/> + </xsl:when> + <xsl:otherwise> + <File name = "{convtool:VerifyFileLocation(@RelPath)}" + buildaction="Compile" + subtype = "Code"/> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + + <!-- convert 'resources' --> + <xsl:for-each select="Files/Include/File[@BuildAction ='EmbeddedResource']"> + <xsl:choose> + <!-- VB.NET in VS has a different resource management than C# --> + <xsl:when test="@Link"> + <File name = "{convtool:ImportDependentResource(@Link,@DependentUpon,/VisualStudioProject/VisualBasic/Build/Settings/@RootNamespace)}" + buildaction="EmbedAsResource" + subtype = "Code"/> + </xsl:when> + <xsl:otherwise> + <File name = "{convtool:ImportDependentResource(@RelPath,@DependentUpon,/VisualStudioProject/VisualBasic/Build/Settings/@RootNamespace)}" + buildaction="EmbedAsResource" + subtype = "Code"/> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + + <!-- Non-buildable files part of the project --> + <xsl:for-each select="Files/Include/File[(@BuildAction ='None') or (@BuildAction ='Content')]"> + <xsl:choose> + <xsl:when test="@Link"> + <File name = "{convtool:VerifyFileLocation(@Link)}" + buildaction="Nothing" + subtype = "Code"/> + </xsl:when> + <xsl:otherwise> + <File name = "{convtool:VerifyFileLocation(@RelPath)}" + buildaction="Nothing" + subtype = "Code"/> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </Contents> + + <DeploymentInformation target="" script="" strategy="File" /> + + <!-- Transform Settings --> + + <xsl:for-each select="Build/Settings"> + <Configurations active="Debug"> + <xsl:for-each select="Config"> + + <Configuration runwithwarnings="{convtool:Negate(@TreatWarningsAsErrors)}" name="{@Name}"> + + <xsl:element name = "CodeGeneration" > + <xsl:attribute name = "includedebuginformation"><xsl:value-of select = "convtool:EnsureBool(@DebugSymbols)"/></xsl:attribute> + <xsl:attribute name = "optimize"><xsl:value-of select = "convtool:EnsureBool(@Optimize)"/></xsl:attribute> + <xsl:attribute name = "generateoverflowchecks"><xsl:value-of select = "convtool:EnsureBool(@CheckForOverflowUnderflow)"/></xsl:attribute> + <xsl:attribute name = "rootnamespace"><xsl:value-of select = "../@RootNamespace"/></xsl:attribute> + <xsl:attribute name = "mainclass"><xsl:value-of select = "../@StartupObject"/></xsl:attribute> + <xsl:attribute name = "target"><xsl:value-of select = "../@OutputType"/></xsl:attribute> + <xsl:attribute name = "definesymbols"><xsl:value-of select = "@DefineConstants"/></xsl:attribute> + <xsl:attribute name = "generatexmldocumentation">False</xsl:attribute> + <xsl:attribute name = "win32Icon"><xsl:value-of select = "convtool:VerifyFileLocation(../@ApplicationIcon)"/></xsl:attribute> + <xsl:attribute name = "imports"><xsl:for-each select="/VisualStudioProject/VisualBasic/Build/Imports/Import"><xsl:value-of select = "@Namespace"/>,</xsl:for-each></xsl:attribute> + </xsl:element> + + <VBDOC outputfile="" + enablevbdoc="False" + filestoparse="" + commentprefix="" /> + <Execution consolepause="True" + commandlineparameters="" /> + <Output directory="{@OutputPath}" + assembly="{../@AssemblyName}" /> + </Configuration> + </xsl:for-each> + </Configurations> + </xsl:for-each> + + <!-- Transform References --> + <xsl:apply-templates select="Build/References"/> + </Project> + </xsl:template> + + <!-- Transform references (a bit like frungy) --> + <xsl:template match="References"> + <References> + <xsl:for-each select="Reference[@AssemblyName]"> + <xsl:if test="convtool:ShouldGenerateReference('True', @AssemblyName, @HintPath)"> + <Reference type = "{convtool:GenerateReferenceType(@AssemblyName, @HintPath)}" + refto = "{convtool:GenerateReference(@AssemblyName, @HintPath)}"/> + </xsl:if> + </xsl:for-each> + <xsl:for-each select="Reference[@Project]"> + <Reference type = "Project" + refto = "{@Name}"/> + </xsl:for-each> + </References> + </xsl:template> +</xsl:stylesheet> diff --git a/src/AddIns/Misc/RegExpTk/Project/Configuration/AssemblyInfo.cs b/src/AddIns/Misc/RegExpTk/Project/Configuration/AssemblyInfo.cs new file mode 100644 index 0000000000..c3205b582f --- /dev/null +++ b/src/AddIns/Misc/RegExpTk/Project/Configuration/AssemblyInfo.cs @@ -0,0 +1,32 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following +// attributes. +// +// change them to the information which is associated with the assembly +// you compile. + +[assembly: AssemblyTitle("RegExpTk")] +[assembly: AssemblyDescription("Regular expression toolkit")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("www.icsharpcode.net")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("(c) 2004 Markus Palme")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has following format : +// +// Major.Minor.Build.Revision +// +// You can specify all values by your own or you can build default build and revision +// numbers with the '*' character (the default): + +[assembly: AssemblyVersion("2.0.0.1")] + +// The following attributes specify the key for the sign of your assembly. See the +// .NET Framework documentation for more information about signing. +// This is not required, if you don't want signing let these attributes like they're. +[assembly: AssemblyDelaySign(false)] +[assembly: AssemblyKeyFile("")] diff --git a/src/AddIns/Misc/RegExpTk/Project/RegExpTk.addin b/src/AddIns/Misc/RegExpTk/Project/RegExpTk.addin new file mode 100644 index 0000000000..cbc9166722 --- /dev/null +++ b/src/AddIns/Misc/RegExpTk/Project/RegExpTk.addin @@ -0,0 +1,20 @@ +<AddIn name = "Regular expressions toolkit addin" + author = "Markus Palme" + copyright = "GPL" + url = "unknown" + description = "Testing toolkit for regular expressions" + version = "1.0.0"> + + <Runtime> + <Import assembly="RegExpTk.dll" /> + </Runtime> + + <Path name = "/SharpDevelop/Workbench/MainMenu/Tools"> + <MenuItem id = "RegExpTk" + insertafter = "ShowObjectBrowser" insertbefore = "Separator4" + label = "${res:XML.MainMenu.ToolsMenu.RegularExpressionToolkit}" + description = "${res:XML.MainMenu.ToolsMenu.RegularExpressionToolkit.Description}" + class = "Plugins.RegExpTk.RegExpTkCommand" + /> + </Path> +</AddIn> diff --git a/src/AddIns/Misc/RegExpTk/Project/RegExpTk.csproj b/src/AddIns/Misc/RegExpTk/Project/RegExpTk.csproj new file mode 100644 index 0000000000..74b1bc52f6 --- /dev/null +++ b/src/AddIns/Misc/RegExpTk/Project/RegExpTk.csproj @@ -0,0 +1,68 @@ +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>8.0.41115</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{64A3E5E6-90BF-47F6-94DF-68C94B62C817}</ProjectGuid> + <AssemblyName>RegExpTk</AssemblyName> + <OutputTarget>Library</OutputTarget> + <WarningLevel>4</WarningLevel> + <NoStdLib>False</NoStdLib> + <NoConfig>False</NoConfig> + <RunPostBuildEvent>OnSuccessfulBuild</RunPostBuildEvent> + <OutputType>Library</OutputType> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>True</DebugSymbols> + <Optimize>True</Optimize> + <AllowUnsafeBlocks>False</AllowUnsafeBlocks> + <CheckForOverflowUnderflow>True</CheckForOverflowUnderflow> + <OutputPath>..\..\..\..\..\AddIns\AddIns\Misc\RegExpTk\</OutputPath> + <TreatWarningsAsErrors>False</TreatWarningsAsErrors> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugSymbols>True</DebugSymbols> + <Optimize>True</Optimize> + <AllowUnsafeBlocks>False</AllowUnsafeBlocks> + <CheckForOverflowUnderflow>True</CheckForOverflowUnderflow> + <OutputPath>..\..\..\AddIns\Misc\RegExpTk\</OutputPath> + <TreatWarningsAsErrors>False</TreatWarningsAsErrors> + </PropertyGroup> + <ItemGroup> + <Compile Include="Src\Commands\MenuCommand.cs" /> + <Compile Include="Src\Dialogs\MainWindow.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Src\Dialogs\GroupForm.cs"> + <SubType>Form</SubType> + </Compile> + <EmbeddedResource Include="Resources\RegExpTkGroupForm.xfrm" /> + <EmbeddedResource Include="Resources\RegExpTkMainForm.xfrm" /> + <Compile Include="Configuration\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj"> + <Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project> + <Name>ICSharpCode.SharpDevelop</Name> + <Private>False</Private> + </ProjectReference> + <ProjectReference Include="..\..\..\..\Main\Core\Project\ICSharpCode.Core.csproj"> + <Project>{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}</Project> + <Name>ICSharpCode.Core</Name> + <Private>False</Private> + </ProjectReference> + </ItemGroup> + <ItemGroup> + <None Include="RegExpTk.addin"> + <CopyToOutputDirectory>True</CopyToOutputDirectory> + </None> + </ItemGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.XML" /> + </ItemGroup> + <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> +</Project> \ No newline at end of file diff --git a/src/AddIns/Misc/RegExpTk/Project/RegExpTk.csproj.user b/src/AddIns/Misc/RegExpTk/Project/RegExpTk.csproj.user new file mode 100644 index 0000000000..96135953c3 --- /dev/null +++ b/src/AddIns/Misc/RegExpTk/Project/RegExpTk.csproj.user @@ -0,0 +1,13 @@ +<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <StartProgram>..\..\..\..\..\bin\SharpDevelop.exe</StartProgram> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <StartProgram>..\..\..\..\..\bin\SharpDevelop.exe</StartProgram> + </PropertyGroup> + <PropertyGroup> + <LastOpenVersion>8.0.41115</LastOpenVersion> + <ProjectView>ShowAllFiles</ProjectView> + <ProjectTrust>0</ProjectTrust> + </PropertyGroup> +</Project> \ No newline at end of file diff --git a/src/AddIns/Misc/RegExpTk/Project/Resources/RegExpTkGroupForm.xfrm b/src/AddIns/Misc/RegExpTk/Project/Resources/RegExpTkGroupForm.xfrm new file mode 100644 index 0000000000..3c8376b180 --- /dev/null +++ b/src/AddIns/Misc/RegExpTk/Project/Resources/RegExpTkGroupForm.xfrm @@ -0,0 +1,125 @@ +<Components version="1.0"> + <System.Windows.Forms.Form> + <Name value="GroupsForm" /> + <FormBorderStyle value="FixedToolWindow" /> + <ClientSize value="{Width=328, Height=218}" /> + <DockPadding value="" /> + <Text value="Groups" /> + <Controls> + <System.Windows.Forms.Button> + <Name value="CloseButton" /> + <Location value="{X=208,Y=184}" /> + <ClientSize value="{Width=112, Height=24}" /> + <Text value="${res:Global.OKButtonText}" /> + <TabIndex value="4" /> + </System.Windows.Forms.Button> + <System.Windows.Forms.ListView> + <Name value="GroupsListView" /> + <GridLines value="True" /> + <TabIndex value="2" /> + <View value="Details" /> + <FullRowSelect value="True" /> + <Location value="{X=8,Y=8}" /> + <ClientSize value="{Width=308, Height=164}" /> + <Columns> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader" /> + <Text value="${res:RegExpTk.MainDialog.StringColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader2" /> + <Text value="${res:RegExpTk.MainDialog.StartColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader3" /> + <Text value="${res:RegExpTk.MainDialog.LengthColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader4" /> + <Text value="Länge" /> + </System.Windows.Forms.ColumnHeader> + </Columns> + </System.Windows.Forms.ListView> + </Controls> + </System.Windows.Forms.Form> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader3" /> + <Text value="${res:RegExpTk.MainDialog.LengthColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader2" /> + <Text value="${res:RegExpTk.MainDialog.StartColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader7" /> + <Text value="${res:RegExpTk.MainDialog.LengthColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader6" /> + <Text value="${res:RegExpTk.MainDialog.StartColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader5" /> + <Text value="${res:RegExpTk.MainDialog.LengthColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader4" /> + <Text value="Länge" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader9" /> + <Text value="${res:RegExpTk.MainDialog.StringColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader8" /> + <Text value="${res:RegExpTk.MainDialog.StartColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader" /> + <Text value="${res:RegExpTk.MainDialog.StringColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader20" /> + <Text value="${res:RegExpTk.MainDialog.LengthColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader12" /> + <Text value="Länge" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader13" /> + <Text value="${res:RegExpTk.MainDialog.StringColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader10" /> + <Text value="Länge" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader11" /> + <Text value="${res:RegExpTk.MainDialog.StringColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader16" /> + <Text value="${res:RegExpTk.MainDialog.StartColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader17" /> + <Text value="${res:RegExpTk.MainDialog.LengthColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader14" /> + <Text value="Länge" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader15" /> + <Text value="${res:RegExpTk.MainDialog.StringColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader18" /> + <Text value="Länge" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader19" /> + <Text value="${res:RegExpTk.MainDialog.StartColumn}" /> + </System.Windows.Forms.ColumnHeader> +</Components> \ No newline at end of file diff --git a/src/AddIns/Misc/RegExpTk/Project/Resources/RegExpTkMainForm.xfrm b/src/AddIns/Misc/RegExpTk/Project/Resources/RegExpTkMainForm.xfrm new file mode 100644 index 0000000000..1923f5d030 --- /dev/null +++ b/src/AddIns/Misc/RegExpTk/Project/Resources/RegExpTkMainForm.xfrm @@ -0,0 +1,650 @@ +<Components version="1.0"> + <System.Windows.Forms.Form> + <Name value="MainForm" /> + <ShowInTaskbar value="False" /> + <ClientSize value="{Width=456, Height=526}" /> + <Font value="[Font: Name=Tahoma, Size=11, Units=3, GdiCharSet=1, GdiVerticalFont=False]" /> + <DockPadding value="" /> + <Text value="Regular expression toolkit" /> + <Controls> + <System.Windows.Forms.StatusBar> + <Name value="StatusBar" /> + <TabIndex value="1" /> + <ClientSize value="{Width=456, Height=16}" /> + <Location value="{X=0,Y=510}" /> + </System.Windows.Forms.StatusBar> + <System.Windows.Forms.TabControl> + <Name value="ModesTabControl" /> + <Anchor value="Top, Bottom, Left, Right" /> + <TabIndex value="0" /> + <Font value="[Font: Name=Microsoft Sans Serif, Size=8, Units=3, GdiCharSet=1, GdiVerticalFont=False]" /> + <ClientSize value="{Width=440, Height=496}" /> + <Location value="{X=8,Y=8}" /> + <TabPages> + <System.Windows.Forms.TabPage> + <Name value="TestingTabPage" /> + <DockPadding value="" /> + <Text value="${res:RegExpTk.MainDialog.TestTab}" /> + <ClientSize value="{Width=432, Height=470}" /> + <Location value="{X=4,Y=22}" /> + <Controls> + <System.Windows.Forms.GroupBox> + <Name value="groupBox2" /> + <TabIndex value="6" /> + <Location value="{X=8,Y=160}" /> + <Anchor value="Top, Left, Right" /> + <ClientSize value="{Width=416, Height=120}" /> + <Controls> + <System.Windows.Forms.CheckBox> + <Name value="ReplaceCheckBox" /> + <Location value="{X=8,Y=0}" /> + <ClientSize value="{Width=208, Height=16}" /> + <Text value="${res:RegExpTk.MainDialog.Replace}" /> + <TabIndex value="6" /> + </System.Windows.Forms.CheckBox> + <System.Windows.Forms.Label> + <Name value="ReplacementStringLabel" /> + <Text value="${res:RegExpTk.MainDialog.Replacement}" /> + <TabIndex value="7" /> + <ClientSize value="{Width=232, Height=16}" /> + <Location value="{X=16,Y=24}" /> + </System.Windows.Forms.Label> + <System.Windows.Forms.TextBox> + <Name value="ReplacementStringTextBox" /> + <Anchor value="Top, Left, Right" /> + <TabIndex value="8" /> + <Location value="{X=16,Y=40}" /> + <ClientSize value="{Width=380, Height=16}" /> + <Text value="" /> + </System.Windows.Forms.TextBox> + <System.Windows.Forms.Label> + <Name value="ReplaceResultLabel" /> + <Text value="${res:RegExpTk.MainDialog.ReplaceResult}" /> + <TabIndex value="9" /> + <ClientSize value="{Width=224, Height=16}" /> + <Location value="{X=16,Y=69}" /> + </System.Windows.Forms.Label> + <System.Windows.Forms.TextBox> + <Name value="ReplaceResultTextBox" /> + <Anchor value="Top, Left, Right" /> + <TabIndex value="10" /> + <Location value="{X=16,Y=88}" /> + <ClientSize value="{Width=380, Height=16}" /> + <Text value="" /> + </System.Windows.Forms.TextBox> + </Controls> + </System.Windows.Forms.GroupBox> + <System.Windows.Forms.TextBox> + <Name value="RegularExpressionTextBox" /> + <Anchor value="Top, Left, Right" /> + <ClientSize value="{Width=380, Height=18}" /> + <Font value="[Font: Name=Courier New, Size=10, Units=3, GdiCharSet=1, GdiVerticalFont=False]" /> + <Location value="{X=8,Y=24}" /> + <Text value="" /> + <TabIndex value="2" /> + </System.Windows.Forms.TextBox> + <System.Windows.Forms.Button> + <Name value="quickInsertButton" /> + <Location value="{X=400,Y=24}" /> + <ClientSize value="{Width=24, Height=22}" /> + <Text value=">" /> + <Anchor value="Top, Right" /> + <TabIndex value="3" /> + </System.Windows.Forms.Button> + <System.Windows.Forms.RichTextBox> + <Name value="InputTextBox" /> + <HideSelection value="False" /> + <Anchor value="Top, Left, Right" /> + <ClientSize value="{Width=363, Height=68}" /> + <ScrollBars value="ForcedVertical" /> + <Location value="{X=8,Y=80}" /> + <Text value="" /> + <TabIndex value="5" /> + </System.Windows.Forms.RichTextBox> + <System.Windows.Forms.ListView> + <Name value="GroupListView" /> + <GridLines value="True" /> + <Anchor value="Top, Bottom, Left, Right" /> + <TabIndex value="14" /> + <View value="Details" /> + <FullRowSelect value="True" /> + <Location value="{X=8,Y=320}" /> + <ClientSize value="{Width=412, Height=132}" /> + <HideSelection value="False" /> + <Columns> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader" /> + <Text value="${res:RegExpTk.MainDialog.StringColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader2" /> + <Text value="${res:RegExpTk.MainDialog.StartColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader3" /> + <Text value="${res:RegExpTk.MainDialog.EndColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader4" /> + <Text value="${res:RegExpTk.MainDialog.LengthColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader49" /> + <Text value="${res:RegExpTk.MainDialog.GroupsColumn}" /> + </System.Windows.Forms.ColumnHeader> + </Columns> + </System.Windows.Forms.ListView> + <System.Windows.Forms.Button> + <Name value="OkButton" /> + <Location value="{X=348,Y=288}" /> + <ClientSize value="{Width=75, Height=24}" /> + <Text value="${res:Global.OKButtonText}" /> + <Anchor value="Top, Right" /> + <TabIndex value="13" /> + </System.Windows.Forms.Button> + <System.Windows.Forms.CheckBox> + <Name value="IgnoreCaseCheckBox" /> + <Location value="{X=128,Y=292}" /> + <ClientSize value="{Width=200, Height=16}" /> + <Text value="${res:RegExpTk.MainDialog.IgnoreCase}" /> + <TabIndex value="12" /> + </System.Windows.Forms.CheckBox> + <System.Windows.Forms.CheckBox> + <Name value="MultilineCheckBox" /> + <Location value="{X=8,Y=292}" /> + <ClientSize value="{Width=112, Height=16}" /> + <Text value="${res:RegExpTk.MainDialog.Multiline}" /> + <TabIndex value="11" /> + </System.Windows.Forms.CheckBox> + <System.Windows.Forms.Label> + <Name value="InputLabel" /> + <Text value="${res:RegExpTk.MainDialog.Input}" /> + <TabIndex value="4" /> + <ClientSize value="{Width=200, Height=16}" /> + <Location value="{X=8,Y=64}" /> + </System.Windows.Forms.Label> + <System.Windows.Forms.Label> + <Name value="RegularExpressionLabel" /> + <Text value="${res:RegExpTk.MainDialog.Regex}" /> + <TabIndex value="1" /> + <ClientSize value="{Width=184, Height=16}" /> + <Location value="{X=8,Y=8}" /> + </System.Windows.Forms.Label> + </Controls> + </System.Windows.Forms.TabPage> + <System.Windows.Forms.TabPage> + <Name value="CompileTabPage" /> + <DockPadding value="" /> + <Text value="${res:RegExpTk.MainDialog.CompileTab}" /> + <ClientSize value="{Width=432, Height=470}" /> + <Location value="{X=4,Y=22}" /> + <Controls> + <System.Windows.Forms.GroupBox> + <Name value="groupBox" /> + <TabIndex value="20" /> + <Location value="{X=8,Y=176}" /> + <Anchor value="Top, Left, Right" /> + <ClientSize value="{Width=416, Height=8}" /> + </System.Windows.Forms.GroupBox> + <System.Windows.Forms.Splitter> + <Name value="splitter" /> + <TabIndex value="19" /> + <ClientSize value="{Width=3, Height=470}" /> + <Location value="{X=0,Y=0}" /> + </System.Windows.Forms.Splitter> + <System.Windows.Forms.CheckBox> + <Name value="PublibVisibleCompileCheckBox" /> + <Location value="{X=8,Y=152}" /> + <ClientSize value="{Width=248, Height=16}" /> + <Text value="${res:RegExpTk.MainDialog.PublicVisible}" /> + <TabIndex value="24" /> + </System.Windows.Forms.CheckBox> + <System.Windows.Forms.Button> + <Name value="CreateAssemblyFileCompileButton" /> + <Location value="{X=312,Y=432}" /> + <ClientSize value="{Width=112, Height=24}" /> + <Text value="${res:RegExpTk.MainDialog.CreateAssembly}" /> + <Anchor value="Bottom, Right" /> + <TabIndex value="32" /> + </System.Windows.Forms.Button> + <System.Windows.Forms.Label> + <Name value="ClassNameCompileLabel" /> + <Text value="${res:RegExpTk.MainDialog.Classname}" /> + <Anchor value="Top" /> + <TabIndex value="22" /> + <ClientSize value="{Width=216, Height=16}" /> + <Location value="{X=200,Y=104}" /> + </System.Windows.Forms.Label> + <System.Windows.Forms.Label> + <Name value="NamespaceCompileLabel" /> + <Text value="${res:RegExpTk.MainDialog.Namespace}" /> + <TabIndex value="20" /> + <ClientSize value="{Width=176, Height=16}" /> + <Location value="{X=8,Y=104}" /> + </System.Windows.Forms.Label> + <System.Windows.Forms.TextBox> + <Name value="ClassNameCompileTextBox" /> + <Anchor value="Top, Right" /> + <TabIndex value="23" /> + <Location value="{X=200,Y=120}" /> + <ClientSize value="{Width=212, Height=16}" /> + <Text value="" /> + </System.Windows.Forms.TextBox> + <System.Windows.Forms.TextBox> + <Name value="NamespaceCompileTextBox" /> + <Anchor value="Top, Left, Right" /> + <TabIndex value="21" /> + <Location value="{X=8,Y=120}" /> + <ClientSize value="{Width=180, Height=16}" /> + <Text value="" /> + </System.Windows.Forms.TextBox> + <System.Windows.Forms.CheckBox> + <Name value="MultilineCompileCheckBox" /> + <Location value="{X=224,Y=232}" /> + <ClientSize value="{Width=152, Height=16}" /> + <Text value="${res:RegExpTk.MainDialog.Multiline}" /> + <TabIndex value="30" /> + </System.Windows.Forms.CheckBox> + <System.Windows.Forms.CheckBox> + <Name value="RightToLeftCompileCheckBox" /> + <Location value="{X=224,Y=264}" /> + <ClientSize value="{Width=160, Height=16}" /> + <Text value="${res:RegExpTk.MainDialog.RightToLeft}" /> + <TabIndex value="31" /> + </System.Windows.Forms.CheckBox> + <System.Windows.Forms.CheckBox> + <Name value="EcmaScriptCompileCheckBox" /> + <Location value="{X=224,Y=200}" /> + <ClientSize value="{Width=168, Height=16}" /> + <Text value="${res:RegExpTk.MainDialog.ECMA}" /> + <TabIndex value="29" /> + </System.Windows.Forms.CheckBox> + <System.Windows.Forms.CheckBox> + <Name value="SingleLineCompileCheckBox" /> + <Location value="{X=8,Y=232}" /> + <ClientSize value="{Width=160, Height=16}" /> + <Text value="${res:RegExpTk.MainDialog.Singleline}" /> + <TabIndex value="26" /> + </System.Windows.Forms.CheckBox> + <System.Windows.Forms.CheckBox> + <Name value="ExplicitCaptureCompileCheckBox" /> + <Location value="{X=8,Y=296}" /> + <ClientSize value="{Width=160, Height=16}" /> + <Text value="${res:RegExpTk.MainDialog.ExplicitCapture}" /> + <TabIndex value="28" /> + </System.Windows.Forms.CheckBox> + <System.Windows.Forms.CheckBox> + <Name value="IgnoreWhitespaceCompileCheckBox" /> + <Location value="{X=8,Y=264}" /> + <ClientSize value="{Width=160, Height=16}" /> + <Text value="${res:RegExpTk.MainDialog.IgnoreWhitespace}" /> + <TabIndex value="27" /> + </System.Windows.Forms.CheckBox> + <System.Windows.Forms.CheckBox> + <Name value="IgnoreCaseCompileCheckBox" /> + <Location value="{X=8,Y=200}" /> + <ClientSize value="{Width=208, Height=16}" /> + <Text value="${res:RegExpTk.MainDialog.IgnoreCase}" /> + <TabIndex value="25" /> + </System.Windows.Forms.CheckBox> + <System.Windows.Forms.Button> + <Name value="ChooseAssemblyFileCompileButton" /> + <Location value="{X=392,Y=72}" /> + <ClientSize value="{Width=24, Height=20}" /> + <Text value="..." /> + <Anchor value="Top, Right" /> + <TabIndex value="19" /> + </System.Windows.Forms.Button> + <System.Windows.Forms.TextBox> + <Name value="AssemblyFileCompileFileTextBox" /> + <Anchor value="Top, Left, Right" /> + <TabIndex value="18" /> + <Location value="{X=8,Y=72}" /> + <ClientSize value="{Width=364, Height=16}" /> + <Text value="" /> + </System.Windows.Forms.TextBox> + <System.Windows.Forms.Label> + <Name value="AssemblyFileCompileLabel" /> + <Text value="${res:RegExpTk.MainDialog.Assembly}" /> + <TabIndex value="17" /> + <ClientSize value="{Width=208, Height=16}" /> + <Location value="{X=8,Y=56}" /> + </System.Windows.Forms.Label> + <System.Windows.Forms.TextBox> + <Name value="RegularExpressionCompileTextBox" /> + <Anchor value="Top, Left, Right" /> + <TabIndex value="16" /> + <Location value="{X=8,Y=24}" /> + <ClientSize value="{Width=404, Height=16}" /> + <Text value="" /> + </System.Windows.Forms.TextBox> + <System.Windows.Forms.Label> + <Name value="RegularExpressionCompileLabel" /> + <Text value="${res:RegExpTk.MainDialog.Regex}" /> + <TabIndex value="15" /> + <ClientSize value="{Width=176, Height=16}" /> + <Location value="{X=8,Y=8}" /> + </System.Windows.Forms.Label> + </Controls> + </System.Windows.Forms.TabPage> + </TabPages> + </System.Windows.Forms.TabControl> + </Controls> + </System.Windows.Forms.Form> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader39" /> + <Text value="${res:RegExpTk.MainDialog.EndColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader12" /> + <Text value="${res:RegExpTk.MainDialog.LengthColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader13" /> + <Text value="End" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader10" /> + <Text value="Length" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader11" /> + <Text value="String" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader16" /> + <Text value="String" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader17" /> + <Text value="Start" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader14" /> + <Text value="End" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader15" /> + <Text value="Start" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader18" /> + <Text value="Start" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader19" /> + <Text value="Length" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader65" /> + <Text value="${res:RegExpTk.MainDialog.LengthColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader64" /> + <Text value="${res:RegExpTk.MainDialog.StartColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader67" /> + <Text value="${res:RegExpTk.MainDialog.StartColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader66" /> + <Text value="${res:RegExpTk.MainDialog.EndColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader61" /> + <Text value="End" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader63" /> + <Text value="String" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader62" /> + <Text value="String" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader69" /> + <Text value="${res:RegExpTk.MainDialog.StartColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader68" /> + <Text value="${res:RegExpTk.MainDialog.LengthColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader7" /> + <Text value="${res:RegExpTk.MainDialog.StringColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader78" /> + <Text value="${res:RegExpTk.MainDialog.GroupsColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader52" /> + <Text value="${res:RegExpTk.MainDialog.EndColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader74" /> + <Text value="${res:RegExpTk.MainDialog.StartColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader75" /> + <Text value="${res:RegExpTk.MainDialog.StringColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader76" /> + <Text value="${res:RegExpTk.MainDialog.LengthColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader77" /> + <Text value="${res:RegExpTk.MainDialog.StartColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader70" /> + <Text value="Length" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader71" /> + <Text value="End" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader72" /> + <Text value="${res:RegExpTk.MainDialog.EndColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader79" /> + <Text value="${res:RegExpTk.MainDialog.StartColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader60" /> + <Text value="String" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader" /> + <Text value="${res:RegExpTk.MainDialog.StringColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader47" /> + <Text value="Start" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader46" /> + <Text value="Length" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader45" /> + <Text value="Length" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader44" /> + <Text value="Start" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader43" /> + <Text value="End" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader3" /> + <Text value="${res:RegExpTk.MainDialog.EndColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader2" /> + <Text value="${res:RegExpTk.MainDialog.StartColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader40" /> + <Text value="${res:RegExpTk.MainDialog.StringColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader6" /> + <Text value="${res:RegExpTk.MainDialog.StartColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader5" /> + <Text value="${res:RegExpTk.MainDialog.EndColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader4" /> + <Text value="${res:RegExpTk.MainDialog.LengthColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader49" /> + <Text value="${res:RegExpTk.MainDialog.GroupsColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader9" /> + <Text value="${res:RegExpTk.MainDialog.StringColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader8" /> + <Text value="${res:RegExpTk.MainDialog.StartColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader73" /> + <Text value="${res:RegExpTk.MainDialog.StartColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader56" /> + <Text value="End" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader57" /> + <Text value="Length" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader54" /> + <Text value="String" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader55" /> + <Text value="String" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader50" /> + <Text value="Length" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader51" /> + <Text value="Start" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader58" /> + <Text value="Start" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader21" /> + <Text value="${res:RegExpTk.MainDialog.LengthColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader20" /> + <Text value="${res:RegExpTk.MainDialog.EndColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader23" /> + <Text value="${res:RegExpTk.MainDialog.StringColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader22" /> + <Text value="${res:RegExpTk.MainDialog.GroupsColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader25" /> + <Text value="${res:RegExpTk.MainDialog.LengthColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader24" /> + <Text value="${res:RegExpTk.MainDialog.StartColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader27" /> + <Text value="${res:RegExpTk.MainDialog.StringColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader26" /> + <Text value="${res:RegExpTk.MainDialog.EndColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader29" /> + <Text value="${res:RegExpTk.MainDialog.LengthColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader28" /> + <Text value="${res:RegExpTk.MainDialog.GroupsColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader42" /> + <Text value="End" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader48" /> + <Text value="${res:RegExpTk.MainDialog.StringColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader31" /> + <Text value="${res:RegExpTk.MainDialog.EndColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader32" /> + <Text value="${res:RegExpTk.MainDialog.LengthColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader33" /> + <Text value="${res:RegExpTk.MainDialog.GroupsColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader34" /> + <Text value="${res:RegExpTk.MainDialog.StringColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader35" /> + <Text value="${res:RegExpTk.MainDialog.EndColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader36" /> + <Text value="${res:RegExpTk.MainDialog.LengthColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader37" /> + <Text value="${res:RegExpTk.MainDialog.GroupsColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader38" /> + <Text value="${res:RegExpTk.MainDialog.EndColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader41" /> + <Text value="${res:RegExpTk.MainDialog.StringColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader53" /> + <Text value="${res:RegExpTk.MainDialog.LengthColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader59" /> + <Text value="${res:RegExpTk.MainDialog.GroupsColumn}" /> + </System.Windows.Forms.ColumnHeader> + <System.Windows.Forms.ColumnHeader> + <Name value="columnHeader30" /> + <Text value="${res:RegExpTk.MainDialog.StringColumn}" /> + </System.Windows.Forms.ColumnHeader> +</Components> \ No newline at end of file diff --git a/src/AddIns/Misc/RegExpTk/Project/Src/Commands/MenuCommand.cs b/src/AddIns/Misc/RegExpTk/Project/Src/Commands/MenuCommand.cs new file mode 100644 index 0000000000..6863abba2d --- /dev/null +++ b/src/AddIns/Misc/RegExpTk/Project/Src/Commands/MenuCommand.cs @@ -0,0 +1,23 @@ +// <file> +// <copyright see="prj:///doc/copyright.txt"/> +// <license see="prj:///doc/license.txt"/> +// <owner name="Markus Palme" email="MarkusPalme@gmx.de"/> +// <version value="$version"/> +// </file> + +using System; +using ICSharpCode.SharpDevelop; + +namespace Plugins.RegExpTk { + + public class RegExpTkCommand : AbstractMenuCommand + { + + public override void Run() + { + using (RegExpTkDialog dialog = new RegExpTkDialog()) { + dialog.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm); + } + } + } +} diff --git a/src/AddIns/Misc/RegExpTk/Project/Src/Dialogs/GroupForm.cs b/src/AddIns/Misc/RegExpTk/Project/Src/Dialogs/GroupForm.cs new file mode 100644 index 0000000000..e35a9c6a97 --- /dev/null +++ b/src/AddIns/Misc/RegExpTk/Project/Src/Dialogs/GroupForm.cs @@ -0,0 +1,47 @@ +// <file> +// <copyright see="prj:///doc/copyright.txt"/> +// <license see="prj:///doc/license.txt"/> +// <owner name="Markus Palme" email="MarkusPalme@gmx.de"/> +// <version value="$version"/> +// </file> + +using System; +using System.Collections; +using System.Windows.Forms; +using System.Text.RegularExpressions; + +using ICSharpCode.SharpDevelop.Gui.XmlForms; + +namespace Plugins.RegExpTk { + + public class GroupForm : BaseSharpDevelopForm + { + public GroupForm(Match match) + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.RegExpTkGroupForm.xfrm")); + + ListView groupsListView = (ListView)ControlDictionary["GroupsListView"]; + ((Button)ControlDictionary["CloseButton"]).Click += new EventHandler(CloseButton_Click); + foreach(Group group in match.Groups) + { + ListViewItem groupItem = groupsListView.Items.Add(group.Value); + groupItem.SubItems.Add(group.Index.ToString()); + groupItem.SubItems.Add((group.Index + group.Length).ToString()); + groupItem.SubItems.Add(group.Length.ToString()); + } + } + + protected override void SetupXmlLoader() + { + xmlLoader.StringValueFilter = new SharpDevelopStringValueFilter(); + xmlLoader.PropertyValueCreator = new SharpDevelopPropertyValueCreator(); + xmlLoader.ObjectCreator = new SharpDevelopObjectCreator(); + } + + void CloseButton_Click(object sender, EventArgs e) + { + Close(); + } + } + +} diff --git a/src/AddIns/Misc/RegExpTk/Project/Src/Dialogs/MainWindow.cs b/src/AddIns/Misc/RegExpTk/Project/Src/Dialogs/MainWindow.cs new file mode 100644 index 0000000000..c926b6e89e --- /dev/null +++ b/src/AddIns/Misc/RegExpTk/Project/Src/Dialogs/MainWindow.cs @@ -0,0 +1,342 @@ +// <file> +// <copyright see="prj:///doc/copyright.txt"/> +// <license see="prj:///doc/license.txt"/> +// <owner name="Markus Palme" email="MarkusPalme@gmx.de"/> +// <version value="$version"/> +// </file> + +// thanks to Chris Wille who contributed +// the compile stuff + +using System; +using System.Collections; +using System.Windows.Forms; +using System.Text.RegularExpressions; +using System.Drawing; +using System.Reflection; +using System.IO; + +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Gui.XmlForms; +using ICSharpCode.Core; + +namespace Plugins.RegExpTk { + + public class RegExpTkDialog : BaseSharpDevelopForm + { + + class QuickInsert + { + string name; + string text; + + public QuickInsert(string name, string text) + { + Name = name; + Text = text; + } + + public string Name + { + get { + return name; + } + set { + name = value; + } + } + + public string Text + { + get { + return text; + } + set { + text = value; + } + } + } + + + private ErrorProvider compileErrorProvider; + private ContextMenuStrip quickInsertMenu = new ContextMenuStrip(); + private ContextMenuStrip matchListViewContextMenu = new ContextMenuStrip(); + + public RegExpTkDialog() + { + SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("Resources.RegExpTkMainForm.xfrm")); + + ArrayList quickies = new ArrayList(); + quickies.Add(new QuickInsert("Ungreedy star", "*?")); + quickies.Add(new QuickInsert("Word character value", "\\w")); + quickies.Add(new QuickInsert("Non-word character value", "\\W")); + quickies.Add(new QuickInsert("Whitespace character", "\\s")); + quickies.Add(new QuickInsert("Non-whitespace character", "\\S")); + quickies.Add(new QuickInsert("Digit character", "\\d")); + quickies.Add(new QuickInsert("Non-digit character", "\\D")); + + foreach (QuickInsert insert in quickies) { + MenuCommand cmd = new MenuCommand(insert.Name, new EventHandler(quickInsert)); + cmd.Tag = insert.Text; + quickInsertMenu.Items.Add(cmd); + } + + matchListViewContextMenu.Items.Add(new MenuCommand("Show groups", new EventHandler(MatchListViewContextMenu_Clicked))); + + ((Button)ControlDictionary["OkButton"]).Click += new EventHandler(OkButton_Click); + ((CheckBox)ControlDictionary["ReplaceCheckBox"]).CheckedChanged += new EventHandler(ReplaceCheckBox_CheckedChanged); + ((ListView)ControlDictionary["GroupListView"]).SelectedIndexChanged += new EventHandler(GroupListView_SelectedIndexChanged); + ((ListView)ControlDictionary["GroupListView"]).DoubleClick += new EventHandler(GroupListView_DoubleClick); + ((ListView)ControlDictionary["GroupListView"]).MouseUp += new MouseEventHandler(GroupListView_MouseUp); + ((Button)ControlDictionary["ChooseAssemblyFileCompileButton"]).Click += new EventHandler(ChooseAssemblyFileCompileButton_Click); + ((Button)ControlDictionary["CreateAssemblyFileCompileButton"]).Click += new EventHandler(CreateAssemblyFile); + ((Button)ControlDictionary["quickInsertButton"]).MouseDown += new MouseEventHandler(showQuickInsertMenu); + ((Button)ControlDictionary["quickInsertButton"]).Image = ResourceService.GetBitmap("Icons.16x16.PasteIcon"); + + ReplaceCheckBox_CheckedChanged((CheckBox)ControlDictionary["ReplaceCheckBox"], null); + + this.AcceptButton=(Button)ControlDictionary["OkButton"]; + + this.StartPosition=FormStartPosition.CenterScreen; + this.Width=Screen.PrimaryScreen.WorkingArea.Width / 2; + + ((TextBox)ControlDictionary["RegularExpressionTextBox"]).TextChanged+=new EventHandler(SetRegEx); + + } + + + private void SetRegEx(object sender, EventArgs ea) { + ((TextBox)ControlDictionary["RegularExpressionCompileTextBox"]).Text=((TextBox)ControlDictionary["RegularExpressionTextBox"]).Text; + } + + + void GroupListView_DoubleClick(object sender, EventArgs e) + { + if(((ListView)ControlDictionary["GroupListView"]).SelectedItems.Count > 0) { + Match match = (Match)((ListView)ControlDictionary["GroupListView"]).SelectedItems[0].Tag; + showGroupForm(match); + } + } + + void MatchListViewContextMenu_Clicked(object sender, EventArgs e) + { + Match match = (Match)((ListView)ControlDictionary["GroupListView"]).SelectedItems[0].Tag; + showGroupForm(match); + + } + + void showGroupForm(Match match) + { + GroupForm groupform = new GroupForm(match); + groupform.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm); + } + + void GroupListView_MouseUp(object sender, MouseEventArgs e) + { + if(e.Button == MouseButtons.Right && ((ListView)ControlDictionary["GroupListView"]).SelectedItems.Count > 0) { + Point cords = new Point(((ListView)ControlDictionary["GroupListView"]).Left + e.X, ((ListView)ControlDictionary["GroupListView"]).Top + e.Y + 30); + matchListViewContextMenu.Show(this, cords); + } + } + + protected override void SetupXmlLoader() + { + xmlLoader.StringValueFilter = new SharpDevelopStringValueFilter(); + xmlLoader.PropertyValueCreator = new SharpDevelopPropertyValueCreator(); + xmlLoader.ObjectCreator = new SharpDevelopObjectCreator(); + } + + private void quickInsert(object sender, EventArgs e) + { +//// Alex: changed to text box + ((TextBox)ControlDictionary["RegularExpressionTextBox"]).SelectedText += (string)((MenuCommand)sender).Tag; + } + + private void showQuickInsertMenu(object sender, MouseEventArgs e) + { + ((TextBox)ControlDictionary["RegularExpressionTextBox"]).Select(); + Point cords = new Point(((Button)ControlDictionary["quickInsertButton"]).Left + e.X, ((Button)ControlDictionary["quickInsertButton"]).Top + e.Y + 30); + quickInsertMenu.Show(this, cords); + } + + private void CreateAssemblyFile(object sender, EventArgs e) + { + RegexOptions options = RegexOptions.Compiled; + + if(compileErrorProvider != null) { + compileErrorProvider.Dispose(); + compileErrorProvider = null; + } + compileErrorProvider = new ErrorProvider(); + + // validate input + + bool error = false; + + if(((TextBox)ControlDictionary["ClassNameCompileTextBox"]).Text == "") { + compileErrorProvider.SetError((TextBox)ControlDictionary["ClassNameCompileTextBox"], ResourceService.GetString("RegExpTk.Messages.ClassNameMissing")); + error = true; + } + + if(ControlDictionary["RegularExpressionCompileTextBox"].Text == "") { + compileErrorProvider.SetError((TextBox)ControlDictionary["RegularExpressionCompileTextBox"], ResourceService.GetString("RegExpTk.Messages.RegexMissing")); + error = true; + } + + if(((TextBox)ControlDictionary["AssemblyFileCompileFileTextBox"]).Text == "") { + compileErrorProvider.SetError((TextBox)ControlDictionary["AssemblyFileCompileFileTextBox"], ResourceService.GetString("RegExpTk.Messages.FilenameMissing")); + error = true; + } + + + + string file_ = ((TextBox)ControlDictionary["AssemblyFileCompileFileTextBox"]).Text; + + if(! FileUtility.IsValidFileName(((TextBox)ControlDictionary["AssemblyFileCompileFileTextBox"]).Text)) { + compileErrorProvider.SetError((TextBox)ControlDictionary["AssemblyFileCompileFileTextBox"], ResourceService.GetString("RegExpTk.Messages.FilenameInvalid")); + error = true; + } + + if(error) return; + + // set options + if(((CheckBox)ControlDictionary["IgnoreCaseCompileCheckBox"]).Checked) + options = options | RegexOptions.IgnoreCase; + + if(((CheckBox)ControlDictionary["SingleLineCompileCheckBox"]).Checked) + options = options | RegexOptions.Singleline; + + if(((CheckBox)ControlDictionary["IgnoreWhitespaceCompileCheckBox"]).Checked) + options = options | RegexOptions.IgnorePatternWhitespace; + + if(((CheckBox)ControlDictionary["ExplicitCaptureCompileCheckBox"]).Checked) + options = options | RegexOptions.ExplicitCapture; + + if(((CheckBox)ControlDictionary["EcmaScriptCompileCheckBox"]).Checked) + options = options | RegexOptions.ECMAScript; + + if(((CheckBox)ControlDictionary["MultilineCompileCheckBox"]).Checked) + options = options | RegexOptions.Multiline; + + if(((CheckBox)ControlDictionary["RightToLeftCompileCheckBox"]).Checked) + options = options | RegexOptions.RightToLeft; + + try { + Regex re = new Regex(((TextBox)ControlDictionary["RegularExpressionCompileTextBox"]).Text, options); + } catch (ArgumentException ae) { + MessageBox.Show(ResourceService.GetString("RegExpTk.Messages.CreationError") + " " + ae.Message); + return; + } + + RegexCompilationInfo rci = new RegexCompilationInfo(((TextBox)ControlDictionary["RegularExpressionCompileTextBox"]).Text, + options, + ((TextBox)ControlDictionary["ClassNameCompileTextBox"]).Text, + ((TextBox)ControlDictionary["NamespaceCompileTextBox"]).Text, + ((CheckBox)ControlDictionary["PublibVisibleCompileCheckBox"]).Checked); + + AssemblyName asmName = new AssemblyName(); + asmName.Name = Path.GetFileNameWithoutExtension(((TextBox)ControlDictionary["AssemblyFileCompileFileTextBox"]).Text); + + RegexCompilationInfo[] rciArray = new RegexCompilationInfo[] { rci }; + + try { + Regex.CompileToAssembly(rciArray, asmName); + } catch (ArgumentException ae) { + MessageBox.Show(ResourceService.GetString("RegExpTk.Messages.CompilationError") + " " + ae.Message); + } + + string aboluteFileName = Path.GetFullPath(((TextBox)ControlDictionary["AssemblyFileCompileFileTextBox"]).Text); + ((StatusBar)ControlDictionary["StatusBar"]).Text = ResourceService.GetString("RegExpTk.Messages.FileCreated") + " " + aboluteFileName; + } + + private void ChooseAssemblyFileCompileButton_Click(object sender, EventArgs e) + { + SaveFileDialog sfd = new SaveFileDialog(); + + sfd.InitialDirectory = "c:\\"; + sfd.Filter = "Assemblies (*.dll)|*.dll"; + sfd.DefaultExt = "dll"; + sfd.CheckPathExists = true; + + if (sfd.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) { + ((TextBox)ControlDictionary["AssemblyFileCompileFileTextBox"]).Text = sfd.FileName; + } + } + + private void OkButton_Click(object sender, System.EventArgs e) + { + MatchCollection matches = null; + RegexOptions options = new RegexOptions(); + + ((TextBox)ControlDictionary["RegularExpressionTextBox"]).ForeColor = System.Drawing.Color.Black; + + if(((CheckBox)(ControlDictionary["IgnoreCaseCheckBox"])).Checked) { + options = options | RegexOptions.IgnoreCase; + } + + if(((CheckBox)(ControlDictionary["MultilineCheckBox"])).Checked) { + options = options | RegexOptions.Multiline; + } + + ((ListView)ControlDictionary["GroupListView"]).Items.Clear(); + + try { + matches = Regex.Matches(((RichTextBox)ControlDictionary["InputTextBox"]).Text, ((TextBox)ControlDictionary["RegularExpressionTextBox"]).Text, options); + if(((CheckBox)ControlDictionary["ReplaceCheckBox"]).Checked) { + ((TextBox)ControlDictionary["ReplaceResultTextBox"]).Text = Regex.Replace(((RichTextBox)ControlDictionary["InputTextBox"]).Text, ((TextBox)ControlDictionary["RegularExpressionTextBox"]).Text, ((TextBox)ControlDictionary["ReplacementStringTextBox"]).Text, options); + } + } + catch(Exception exception) { + ((TextBox)ControlDictionary["RegularExpressionTextBox"]).ForeColor = System.Drawing.Color.Red; + ((StatusBar)ControlDictionary["StatusBar"]).Text = exception.Message; + return; + } + + if(matches.Count != 1) { + ((StatusBar)ControlDictionary["StatusBar"]).Text = matches.Count.ToString() + " " + ResourceService.GetString("RegExpTk.Messages.Match"); + } else { + ((StatusBar)ControlDictionary["StatusBar"]).Text = matches.Count.ToString() + " " + ResourceService.GetString("RegExpTk.Messages.Matches"); + } + + RichTextBox inputBox = (RichTextBox)ControlDictionary["InputTextBox"]; + + TextBox dummy = new TextBox(); + dummy.Text = inputBox.Text; + inputBox.Text = dummy.Text; + + inputBox.Select(0, inputBox.Text.Length); + inputBox.SelectionColor = Color.Black; + inputBox.SelectionFont = dummy.Font; + + foreach (Match match in matches) { + inputBox.Select(match.Index, match.Length); + inputBox.SelectionColor = Color.Blue; + + ListViewItem lvwitem = ((ListView)ControlDictionary["GroupListView"]).Items.Add(match.ToString()); + lvwitem.Tag = match; + lvwitem.SubItems.Add(match.Index.ToString()); + lvwitem.SubItems.Add((match.Index + match.Length).ToString()); + lvwitem.SubItems.Add(match.Length.ToString()); + lvwitem.SubItems.Add(match.Groups.Count.ToString()); + } + inputBox.Select(0, 0); + } + + private void GroupListView_SelectedIndexChanged(object sender, System.EventArgs e) + { + try + { + ((RichTextBox)ControlDictionary["InputTextBox"]).Select(System.Convert.ToInt32(((ListView)ControlDictionary["GroupListView"]).SelectedItems[0].SubItems[1].Text), + System.Convert.ToInt32(((ListView)ControlDictionary["GroupListView"]).SelectedItems[0].SubItems[3].Text)); + } catch { + } + } + + private void ReplaceCheckBox_CheckedChanged(object sender, System.EventArgs e) + { + ((TextBox)ControlDictionary["ReplaceResultTextBox"]).Enabled = ((CheckBox)ControlDictionary["ReplaceCheckBox"]).Checked; + ((TextBox)ControlDictionary["ReplacementStringTextBox"]).Enabled = ((CheckBox)ControlDictionary["ReplaceCheckBox"]).Checked; + } + + } +} diff --git a/src/AddIns/Misc/RegExpTk/RegExpTkPad.cs.old b/src/AddIns/Misc/RegExpTk/RegExpTkPad.cs.old new file mode 100644 index 0000000000..2af1ae14f5 --- /dev/null +++ b/src/AddIns/Misc/RegExpTk/RegExpTkPad.cs.old @@ -0,0 +1,37 @@ +// <file> +// <copyright see="prj:///doc/copyright.txt"/> +// <license see="prj:///doc/license.txt"/> +// <owner name="Markus Palme" email="MarkusPalme@gmx.de"/> +// <version value="$version"/> +// </file> +using System; +using System.Drawing; +using System.Collections; +using System.Diagnostics; +using System.ComponentModel; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Gui.Dialogs; +using ICSharpCode.SharpDevelop.Gui; + +using ICSharpCode.Core.AddIns; +using ICSharpCode.Core.AddIns.Codons; +using ICSharpCode.Core.Properties; + +namespace Plugins.RegExpTk { + + public class RegExpTkCommand : AbstractMenuCommand + { + + public override void Run() + { + RegExpTkDialog dialog = new RegExpTkDialog(); + dialog.ShowDialog(); + } + } + + public class RegExpTkDialog : Form + { + + } +} diff --git a/src/AddIns/Misc/StartPage/Project/Configuration/AssemblyInfo.cs b/src/AddIns/Misc/StartPage/Project/Configuration/AssemblyInfo.cs new file mode 100644 index 0000000000..f762b257af --- /dev/null +++ b/src/AddIns/Misc/StartPage/Project/Configuration/AssemblyInfo.cs @@ -0,0 +1,32 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following +// attributes. +// +// change them to the information which is associated with the assembly +// you compile. + +[assembly: AssemblyTitle("StartPage")] +[assembly: AssemblyDescription("VS style Start Page for #develop")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Georg Brandl")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("(C) 2002")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has following format : +// +// Major.Minor.Build.Revision +// +// You can specify all values by your own or you can build default build and revision +// numbers with the '*' character (the default): + +[assembly: AssemblyVersion("2.0.0.1")] + +// The following attributes specify the key for the sign of your assembly. See the +// .NET Framework documentation for more information about signing. +// This is not required, if you don't want signing let these attributes like they're. +[assembly: AssemblyDelaySign(false)] +[assembly: AssemblyKeyFile("")] diff --git a/src/AddIns/Misc/StartPage/Project/Src/ICSharpCodePage.cs b/src/AddIns/Misc/StartPage/Project/Src/ICSharpCodePage.cs new file mode 100644 index 0000000000..564c3c0332 --- /dev/null +++ b/src/AddIns/Misc/StartPage/Project/Src/ICSharpCodePage.cs @@ -0,0 +1,668 @@ +using System; +using System.IO; +using System.Collections; +using System.Text; +using System.Windows.Forms; +using System.Xml; + + +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Project; + +namespace ICSharpCode.StartPage +{ + public enum ColorScheme + { + blue, + red, + green, + brown, + orange + } + + public class MenuItem + { + public string Caption, URL; + + public MenuItem(string strCaption, string strUrl) + { + Caption = strCaption; + URL = strUrl; + } + } + + public class ICSharpCodePage + { + ColorScheme _ColorScheme; + + string startPageLocation; + + string m_strMainColColor, m_strSubColColor; + int m_nLeftTopImageWidth, m_nRightTopImageWidth; + bool m_bShowMilestoneContentImage; + + private int nTotalColumns = 0; + + string m_strTitle, m_strMetaDescription, m_strMetaKeywords, m_strMetaAuthor, m_strMetaCopyright; + string m_strStaticStyleSheet, m_strRightBoxHtml; + + bool m_bShowLeftMenu, m_bShowRightBox, m_bShowContentBar; + string m_strContentBarText, m_strTopMenuSelectedItem, m_strLeftMenuSelectedItem; + string m_strVersionText, m_strVersionStatus; + + public string PrimaryColor + { + get { return m_strMainColColor; } + } + + public string SecondaryColor + { + get { return m_strSubColColor; } + } + + public string Title + { + get { return m_strTitle; } + set { m_strTitle = value; } + } + + public bool ShowMilestoneContentImage + { + get { return m_bShowMilestoneContentImage; } + set { m_bShowMilestoneContentImage = value; } + } + + public string MetaDescription + { + get { return m_strMetaDescription; } + set { m_strMetaDescription = value; } + } + + public string MetaKeywords + { + get { return m_strMetaKeywords; } + set { m_strMetaKeywords = value; } + } + + public string MetaAuthor + { + get { return m_strMetaAuthor; } + set { m_strMetaAuthor = value; } + } + + public string MetaCopyright + { + get { return m_strMetaCopyright; } + set { m_strMetaCopyright = value; } + } + + public string StaticStyleSheet + { + get { return m_strStaticStyleSheet; } + set { m_strStaticStyleSheet = value; } + } + + public string ContentBarText + { + get { return m_strContentBarText; } + set { m_strContentBarText = value; } + } + + public bool ShowLeftMenu + { + get { return m_bShowLeftMenu; } + set { m_bShowLeftMenu = value; } + } + + public bool ShowRightBox + { + get { return m_bShowRightBox; } + set { m_bShowRightBox = value; } + } + + public bool ShowContentBar + { + get { return m_bShowContentBar; } + set { m_bShowContentBar = value; } + } + + private ArrayList TopMenu; + private ArrayList LeftMenu; + + public virtual void PopulateTopMenu() + { + + + TopMenu.Add(new MenuItem(StringParser.Parse("${res:StartPage.StartMenu.Name}"), "/Start/opensection")); + TopMenu.Add(new MenuItem(StringParser.Parse("${res:StartPage.ChangeLogMenu.Name}"), "/ChangeLog/opensection")); + TopMenu.Add(new MenuItem(StringParser.Parse("${res:StartPage.AuthorsMenu.Name}"), "/Authors/opensection")); + TopMenu.Add(new MenuItem(StringParser.Parse("${res:StartPage.HelpWantedMenu.Name}"), "/HelpWanted/opensection")); + } + + public virtual void PopulateLeftMenu() + { +// LeftMenu.Add(new MenuItem("Start", "/OpenSource/SD/AnnouncementList.asp")); +// LeftMenu.Add(new MenuItem("ChangeLog", "/OpenSource/SD/WhatsNew.asp")); +// LeftMenu.Add(new MenuItem("Authors", "/OpenSource/SD/NewsHistory.asp")); +// LeftMenu.Add(new MenuItem("Readme", "/OpenSource/SD/NewsHistory.asp")); +// LeftMenu.Add(new MenuItem("Help Wanted", "/pub/relations/")); + } + + public string TopMenuSelectedItem + { + get { return m_strTopMenuSelectedItem; } + set { m_strTopMenuSelectedItem = value; } + } + + public string LeftMenuSelectedItem + { + get { return m_strLeftMenuSelectedItem; } + set { m_strLeftMenuSelectedItem = value; } + } + + public string VersionText + { + get { return m_strVersionText; } + set { m_strVersionText = value; } + } + + public string VersionStatus + { + get { return m_strVersionStatus; } + set { m_strVersionStatus = value; } + } + + public string RightBoxHtml + { + get { return m_strRightBoxHtml; } + set { m_strRightBoxHtml = value; } + } + + public virtual void RenderRightBoxHtml(StringBuilder builder) + { + builder.Append(m_strRightBoxHtml); + } + + public ICSharpCodePage() + { + ColorScheme = ICSharpCode.StartPage.ColorScheme.blue; + + TopMenu = new ArrayList(); + PopulateTopMenu(); + TopMenuSelectedItem = "Home"; + + LeftMenu = new ArrayList(); + PopulateLeftMenu(); + LeftMenuSelectedItem = ""; + + Version v = System.Reflection.Assembly.GetEntryAssembly().GetName().Version; + VersionText = "milestone " + v.Major + "." + v.Minor; + VersionStatus = "Beta"; + + RightBoxHtml = ""; + + StaticStyleSheet = startPageLocation + "/Layout/default.css"; + MetaAuthor = "Christoph Wille - christophw@alphasierrapapa.com"; + MetaCopyright = "(c) 2001-2002 AlphaSierraPapa"; + + ShowLeftMenu = false; + ShowRightBox = false; + ShowContentBar = true; + } + + public ColorScheme ColorScheme + { + get { return _ColorScheme; } + set + { + _ColorScheme = value; + m_bShowMilestoneContentImage = false; + + switch (_ColorScheme) + { + case ColorScheme.blue: + m_nLeftTopImageWidth = 292;//412; + m_nRightTopImageWidth = 363; + m_strSubColColor = "#C2E0FB"; + m_strMainColColor = "#A8C6E3"; + m_bShowMilestoneContentImage = true; + break; + case ColorScheme.red: + m_nLeftTopImageWidth = 214;//334; + m_nRightTopImageWidth = 438; + m_strSubColColor = "#a7a9ac"; + m_strMainColColor = "#d7797d"; + break; + case ColorScheme.brown: + m_nLeftTopImageWidth = 294;//415; + m_nRightTopImageWidth = 359; + m_strSubColColor = "#EEE9E2"; + m_strMainColColor = "#D5D0C9"; + break; + case ColorScheme.green: + m_nLeftTopImageWidth = 259;//450; + m_nRightTopImageWidth = 325; + m_strSubColColor = "#E7EDBB"; + m_strMainColColor = "#CED4A2"; + break; + case ColorScheme.orange: + m_nLeftTopImageWidth = 191;//311; + m_nRightTopImageWidth = 460; + m_strSubColColor = "#F4D97B"; + m_strMainColColor = "#E7CD6F"; + break; + } + } + } + + public virtual void RenderHeaderSection(StringBuilder builder) + { + builder.Append("<html><head><title>"); + builder.Append(Title); + builder.Append("\r\n"); + builder.Append("\r\n"); + + + + + builder.Append("\r\n"); + builder.Append("\r\n"); + builder.Append("\r\n\r\n\r\n\r\n\r\n\r\n\r\n"); + } + + public virtual void RenderPageEndSection(StringBuilder builder) + { + builder.Append("\r\n\r\n"); + } + + public virtual void RenderPageTopSection(StringBuilder builder) + { + builder.Append("
      "); + builder.Append("\r\n"); + builder.Append("\r\n"); + builder.Append("\r\n"); + builder.Append("\r\n
       
      \r\n"); + builder.Append(""); + builder.Append("
      "); + builder.Append("\r\n"); + builder.Append("\r\n"); + + int nTopMenuElements = TopMenu.Count; + foreach (MenuItem de in TopMenu) + { + --nTopMenuElements; + + builder.Append("\r\n"); + } + else + { + builder.Append("\">"); + builder.Append(de.Caption); + builder.Append("\r\n"); + } + + if (0 != nTopMenuElements) + { + builder.Append("\r\n"); + } + } + + builder.Append("
      "); + builder.Append(de.Caption); + builder.Append("
      \r\n"); + } + + public virtual void RenderLeftMenu(StringBuilder builder) + { + builder.Append(""); + builder.Append(""); + builder.Append(""); + builder.Append(""); + + int nLeftMenuElements = LeftMenu.Count; + foreach (MenuItem de in LeftMenu) + { + --nLeftMenuElements; + builder.Append(""); + + if (0 == String.Compare(de.Caption, m_strLeftMenuSelectedItem, true)) + { + builder.Append("\r\n"); + builder.Append("\r\n"); + } + else + { + builder.Append("\r\n"); + builder.Append("\r\n"); + } + + if (0 != nLeftMenuElements) + { + builder.Append("\r\n"); + } + } + + builder.Append("
      "); + builder.Append(de.Caption); + builder.Append("
      "); + builder.Append(de.Caption); + builder.Append("
      "); + builder.Append(""); + } + + public virtual void RenderFirstPageBodySection(StringBuilder builder) + { + builder.Append("
      \r\n"); + + if (ShowContentBar) + { + nTotalColumns = 1; + builder.Append(""); + + if (ShowLeftMenu) + { + builder.Append(""); + builder.Append(""); + nTotalColumns += 2; + } + + builder.Append("\r\n"); + + if (ShowRightBox) + { + builder.Append(""); + if (ShowMilestoneContentImage) + { + builder.Append(""); + } + else + { + builder.Append(""); + } + nTotalColumns += 2; + } + + builder.Append(""); + } + + builder.Append(""); + if (ShowLeftMenu) + { + RenderLeftMenu(builder); + } + + builder.Append("\r\n"); + if (ShowRightBox) + { + RenderRightBox(builder); + } + + builder.Append("\r\n"); + + string strSubColor2Use = "#ffffff"; + if (ShowLeftMenu) + { + builder.Append(""); + builder.Append("\r\n"); + } + + builder.Append( "\r\n"); + + if (ShowRightBox) + { + builder.Append(""); + builder.Append("\r\n"); + } + builder.Append("\r\n"); + builder.Append("
      "); + builder.Append(ContentBarText); // TODO for virtual + builder.Append("
      \r\n"); + builder.Append(""); + builder.Append(""); + builder.Append(""); + builder.Append(""); + builder.Append("
      \r\n"); + + + } + + public virtual void RenderFinalPageBodySection(StringBuilder builder) + { + builder.Append("
      "); + builder.Append(""); + builder.Append("Copyright ©2000-2004 IC#SharpCode. Released under the terms of the GNU General Public License.
      \r\n"); + } + + public virtual void RenderRightBox(StringBuilder builder) + { + builder.Append("\r\n"); + builder.Append(""); + builder.Append(""); + builder.Append(""); + builder.Append("
      "); + builder.Append(""); + builder.Append(""); + builder.Append(""); + builder.Append(""); + builder.Append("
      "); + builder.Append(VersionText); + builder.Append("
      "); + builder.Append(VersionStatus); + builder.Append("
      "); + builder.Append(""); + builder.Append(""); + builder.Append(""); + builder.Append("
      "); + RenderRightBoxHtml(builder); + builder.Append("
      "); + } + public string[] projectFiles; + + StringBuilder projectSection = null; + public void RenderSectionStartBody(StringBuilder builder) + { + + if (projectSection == null) { + projectSection = new StringBuilder(); + projectSection.Append("
      \n"); + projectSection.Append(String.Format("\n", + StringParser.Parse("${res:StartPage.StartMenu.NameTable}"), + StringParser.Parse("${res:StartPage.StartMenu.ModifiedTable}"), + StringParser.Parse("${res:StartPage.StartMenu.LocationTable}") + )); + + try { + // Get the recent projects + projectFiles = new string[FileService.RecentOpen.RecentProject.Count]; + for (int i = 0; i < FileService.RecentOpen.RecentProject.Count; ++i) { + string fileName = FileService.RecentOpen.RecentProject[i].ToString(); + // if the file does not exist, goto next one + if (!System.IO.File.Exists(fileName)) { + continue; + } + projectFiles[i] = fileName; + projectSection.Append("\n"); + } + } catch {} + projectSection.Append("
      {0}{1}{2}
      "); + projectSection.Append(""); + projectSection.Append(Path.GetFileNameWithoutExtension(fileName)); + projectSection.Append(""); + projectSection.Append(""); + System.IO.FileInfo fInfo = new System.IO.FileInfo(fileName); + projectSection.Append(fInfo.LastWriteTime.ToShortDateString()); + projectSection.Append(""); + projectSection.Append(fileName); + projectSection.Append("


      "); + projectSection.Append(String.Format("\n", + StringParser.Parse("${res:StartPage.StartMenu.OpenCombineButton}") + )); + projectSection.Append(String.Format("\n", + StringParser.Parse("${res:StartPage.StartMenu.NewCombineButton}") + )); + projectSection.Append("


      "); + } + builder.Append(projectSection.ToString()); + } + + public void RenderSectionAuthorBody(StringBuilder builder) + { + try { + builder.Append("

      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 A=>Px# literal 0 HcmV?d00001 diff --git a/doc/technotes/TechicalWritingMadeEasier.sxw b/doc/technotes/TechicalWritingMadeEasier.sxw new file mode 100644 index 0000000000000000000000000000000000000000..fb70bdc491b587562f48de4abe229b907ee6cde1 GIT binary patch literal 49204 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 P8OU-G;5~3Yr$9Uab7$hL literal 0 HcmV?d00001 diff --git a/setup/Corsavy.nsi b/setup/Corsavy.nsi new file mode 100644 index 0000000000..7eb1bcfe9a --- /dev/null +++ b/setup/Corsavy.nsi @@ -0,0 +1,228 @@ +!verbose 3 + +!define PRODUCT_NAME "SharpDevelop" +!define PRODUCT_VERSION "Corsavy Alpha" +!define PRODUCT_PUBLISHER "ic#code" +!define PRODUCT_WEB_SITE "http://www.icsharpcode.net/opensource/sd/" +!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\SharpDevelop.exe" +!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\SharpDevelop" +!define PRODUCT_UNINST_ROOT_KEY "HKLM" + +!define MUI_WELCOMEFINISHPAGE_BITMAP "wizard-image.bmp" +!define MUI_UNWELCOMEFINISHPAGE_BITMAP "wizard-image.bmp" + +BrandingText "© 2000-2004 ic#code, http://www.icsharpcode.net/" +SetCompressor lzma +CRCCheck on + +; File Association defines +!include "fileassoc.nsh" + +; MUI 1.67 compatible ------ +!include "MUI.nsh" + +; MUI Settings +!define MUI_ABORTWARNING +!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" +!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" + +; Welcome page +!insertmacro MUI_PAGE_WELCOME +; License page +!insertmacro MUI_PAGE_LICENSE "..\doc\license.txt" +; Directory page +!insertmacro MUI_PAGE_DIRECTORY +; Instfiles page +!insertmacro MUI_PAGE_INSTFILES +; Finish page +!define MUI_FINISHPAGE_RUN "$INSTDIR\bin\SharpDevelop.exe" +!define MUI_FINISHPAGE_RUN_TEXT "Run #develop" +!insertmacro MUI_PAGE_FINISH + +; Uninstaller pages +!insertmacro MUI_UNPAGE_CONFIRM +!insertmacro MUI_UNPAGE_INSTFILES +!insertmacro MUI_UNPAGE_FINISH + +; Language files +!insertmacro MUI_LANGUAGE "English" + +; Reserve files +!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS + +; MUI end ------ + +Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" +OutFile "Setup.exe" +InstallDir "$PROGRAMFILES\SharpDevelop" +InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" +ShowInstDetails show +ShowUnInstDetails show + +; .NET Framework check +; http://msdn.microsoft.com/netframework/default.aspx?pull=/library/en-us/dnnetdep/html/redistdeploy1_1.asp +; Section "Detecting that the .NET Framework 1.1 is installed" +Function .onInit + ReadRegDWORD $R0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322" Install + StrCmp $R0 "" 0 CheckPreviousVersion + MessageBox MB_OK "Microsoft .NET Framework 1.1 was not found on this system.$\r$\n$\r$\nUnable to continue this installation." + Abort + + CheckPreviousVersion: + ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" + StrCmp $R0 "" CheckOSVersion 0 + MessageBox MB_OK "An old version of SharpDevelop is installed on this computer, please uninstall first.$\r$\n$\r$\nUnable to continue this installation." + Abort + + CheckOSVersion: + Call IsSupportedWindowsVersion + Pop $R0 + StrCmp $R0 "False" NoAbort 0 + MessageBox MB_OK "The operating system you are using is not supported by SharpDevelop (95/98/ME/NT3.x/NT4.x)." + Abort + + NoAbort: +FunctionEnd + +Section "MainSection" SEC01 + SetOutPath "$INSTDIR" + SetOverwrite ifnewer + + ; Those files are included with the installer + File /r ..\AddIns + File /r ..\bin + File /r ..\data + File /r ..\doc + + CreateDirectory "$SMPROGRAMS\SharpDevelop" + CreateShortCut "$SMPROGRAMS\SharpDevelop\SharpDevelop.lnk" "$INSTDIR\bin\SharpDevelop.exe" + CreateShortCut "$DESKTOP\SharpDevelop.lnk" "$INSTDIR\bin\SharpDevelop.exe" + + CreateShortCut "$SMPROGRAMS\SharpDevelop\SharpDevelop Help.lnk" "$INSTDIR\doc\help\sharpdevelop.chm" + + ; Add default file associations + ; CreateFileAssociation extension extType extDef exeCmd defIcon + ${CreateFileAssociation} ".cmbx" "SD.cmbxfile" "#Develop Combine" "$INSTDIR\bin\SharpDevelop.exe" "$INSTDIR\data\resources\filetypes\cmbx.ico" + ${CreateFileAssociation} ".prjx" "SD.prjxfile" "#Develop Project" "$INSTDIR\bin\SharpDevelop.exe" "$INSTDIR\data\resources\filetypes\prjx.ico" +SectionEnd + +Section -AdditionalIcons + WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" + CreateShortCut "$SMPROGRAMS\SharpDevelop\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url" + CreateShortCut "$SMPROGRAMS\SharpDevelop\Uninstall.lnk" "$INSTDIR\uninst.exe" +SectionEnd + +Section -Post + WriteUninstaller "$INSTDIR\uninst.exe" + WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\bin\SharpDevelop.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\bin\SharpDevelop.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" + + ; ExecShell "" "$INSTDIR\bin\tools\GacUtil2 /i ..\nunit.core.dll" "" SW_SHOWMINIMIZED + ; ExecShell "" "$INSTDIR\bin\tools\GacUtil2 /i ..\nunit.framework.dll" "" SW_SHOWMINIMIZED + + ; now finally call our post install tasks + ExecWait '"$SYSDIR\cscript.exe" "$INSTDIR\bin\setup\PostInstallTasks.vbs"' +SectionEnd + +Section Uninstall + Delete "$DESKTOP\SharpDevelop.lnk" + Delete "$SMPROGRAMS\SharpDevelop\*.*" + + ; ExecShell "" "$INSTDIR\bin\tools\GacUtil2 /u ..\nunit.core.dll" "" SW_SHOWMINIMIZED + ; ExecShell "" "$INSTDIR\bin\tools\GacUtil2 /u ..\nunit.framework.dll" "" SW_SHOWMINIMIZED + + ; first, remove all dependencies from the GAC etc + ExecWait '"$SYSDIR\cscript.exe" "$INSTDIR\bin\setup\PreUninstallTasks.vbs"' + + RMDir "$SMPROGRAMS\SharpDevelop" + RMDir /r "$INSTDIR" + + ; NOTE: this application configuration deletion is now deactivated post-1.0 releases + ; RMDir /r "$APPDATA\.ICSharpCode" + + DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" + DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" + + ; File association removal + ${RemoveFileAssociation} ".cmbx" "SD.cmbxfile" + ${RemoveFileAssociation} ".prjx" "SD.prjxfile" +SectionEnd + +; GetWindowsVersion, taken from NSIS help, modified for our purposes +Function IsSupportedWindowsVersion + + Push $R0 + Push $R1 + + ReadRegStr $R0 HKLM \ + "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion + + IfErrors 0 lbl_winnt + + ; we are not NT + ReadRegStr $R0 HKLM \ + "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber + + StrCpy $R1 $R0 1 + StrCmp $R1 '4' 0 lbl_error + + StrCpy $R1 $R0 3 + + StrCmp $R1 '4.0' lbl_win32_95 + StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98 + + lbl_win32_95: + StrCpy $R0 'False' + Goto lbl_done + + lbl_win32_98: + StrCpy $R0 'False' + Goto lbl_done + + lbl_win32_ME: + StrCpy $R0 'False' + Goto lbl_done + + lbl_winnt: + + StrCpy $R1 $R0 1 + + StrCmp $R1 '3' lbl_winnt_x + StrCmp $R1 '4' lbl_winnt_x + + StrCpy $R1 $R0 3 + + StrCmp $R1 '5.0' lbl_winnt_2000 + StrCmp $R1 '5.1' lbl_winnt_XP + StrCmp $R1 '5.2' lbl_winnt_2003 lbl_error + + lbl_winnt_x: + StrCpy $R0 'False' + Goto lbl_done + + lbl_winnt_2000: + Strcpy $R0 'True' + Goto lbl_done + + lbl_winnt_XP: + Strcpy $R0 'True' + Goto lbl_done + + lbl_winnt_2003: + Strcpy $R0 'True' + Goto lbl_done + + lbl_error: + Strcpy $R0 'False' + lbl_done: + + Pop $R1 + Exch $R0 + +FunctionEnd + diff --git a/setup/SharpDevelop.wxs b/setup/SharpDevelop.wxs new file mode 100644 index 0000000000..fbbde3bad3 --- /dev/null +++ b/setup/SharpDevelop.wxs @@ -0,0 +1,479 @@ + + + + + + + + No + + + < &Back + &Next > + &Finish + + OK + Cancel + + Br&owse... + &Exit + &Ignore + &Install + &Remove + &Repair + &Reset + &Resume + &Retry + &Return + + &Yes + &No + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {&DlgFontBold8} + {&VerdanaBold13} + DlgFont8 + + + + + + + +

d;Q)*jD=j91(4E>#z37w zx{(~zoL2E#<#9_f1@8#73AlJ;q2)*PIAR9#@>@s^g5QZ;~T@zF@q zaa!@!Y8=ofkRuq*WHowr%G_$52c!wq*U3l9Pn$~z4M~VM0&$9IvczPGbb0=KUrI7r zLaVmgi$I!U-b%Y)A78DW0C|deD{bWJb$S5`oqzgc~YAHZj1EFfvBk?}e1-?HN zQdAC9)Jq;fF=c~p7fPSz`d3sdrX z4tFv`MZ~RB5;0G*a}_CWx3cm`qYfc71c;69W#rYVO@21etwf0(mU(?~4Y z6PAja-t;B#BJ4lNSqEqWH(Yo(gWoh1h@Uur@`=~ssS3*0{6WgJdB;Zz^OzmyqvEzS z_W-rI9ltBp5j4;H4`~)(c9js7eL&^1KS-rqkFg)%adY1|`Mbnr2;!sdobii&AGPhz z2DJtSgTx!L(pAYN$POTm{)221OADz_BROxWu8Oa0$3R~Kb|> zG{SU)mZqLWk#kuj4pu5RjFsG0{$8$io&kLVlMlv0&nVgVgyC=A*Oy6n4-yQjG?K~z zS>JvDWkSso-OFY!`XRf}c44A`mE0B`gZw^Bb-PAhe!h};f4f1tpIBO?>$DY69iFO# z4ugsX3H~XSa0^gokm_iI zO^op3TV^z4VAGGfDTOpyU3asKix>GXOku@p~m&56UL~A#O>Ou)2tO zBe$}2EB6!7WmqzobSd&vOQHB*O!z|LnSS=t{3>nUmf{+gpAq60)oC~QjpdA_HlMf| z5Cm5giWVOSJGGG&1yz5_{3WV*!zu*TC+9*TdMRrF$_z?GSP+~<@uUd9WPsm}$Bjnu zQC{V2MQe-!aD>!dd<*~q1{EK_BY^ivLqHmLuw~gx8SoUKG$_&j9m@F5Z5PlOrdVawXzpqGof!YxuH>i`KM9z&$o)VH%X7M=A_^g!?-!z6ibs<(~>oUs1WehB# z6IyGFxW~Hq4RPL7nJUKpuiFKd1_=f=5fUOn-CWR(-WuprMB1*9ee*c=(v7$t5F3>5 zD%Y)4FXiuT;u4QalgQRU`d8i#XG2mvBI*yDtKD)(rv-9AAPu*x28XGO2@xrfENj$ znBVKpZ)8%tjQpU&u+&pZmlEa$D>xq($jvtKO^Y5-aIv5X0^c}(#`mN3K$&4>LsBT? zOqAa=ZHvE|64n{cSi9kG`FU@jKOie<5!8JdS&Pidm@C=ja+1XEL&#i@k9*HQu1cn2}#i4d){~xFsgu;?sak9aE#GWiV(lri)Y4!utb!Kn?fGc=tj& zC`L`kGSFdANvm67)MQ96yzCAZ#GgOf2jm8o@rg&y`k~H{F95AE-MX$t>%uFa*XaOu zc*bdq$QU(+*FfP^BYN26Qz++5k3gFdvqgQR#rLb9fjA}2SDO;;YFaHIP5G1+kR0&D z?1b}^c2F2j7u6=L{y9HrGiWS3aaI*SAFu#IW7c}wg5Xo{#BP!Nuo90ovbX1k6>qQg z{wD&dSy3I7rJ$}#4C@LK*x+R&aRXw5wihIj+SM;lH}H#~Im+_EGB!Zw6t`{}WdKl4 zH=@r_;$|eh2z0s4-@`q~;ALvHZ*lb4PsTFE?r9H;>+d4kM;ZYBIQ|$cUA{mn}SlMT+XE zgk1SrZ?#qw0tqRpqY@3$Y3%Gol&(b@-4&gmC8$YBtw@L(scTXVbflnGD77Je%~u!5 zjTr8=k?Gp7a0Nmmmey*7;@c>6_ih7#+K2^%8nsx_$G7?cK%0_U&r^0>I0hqw5FLO6 z{>_OEhkLaRjs-P_P0}VVl)A=IBDN%d@0AyV5+mxpD?$>V9mPYlV&%&5S>MAe+kxDe z?#&i(x3F=g)Nm?g7Bf4FSwEFSBzVsnFnuMtMd_ z%~Eq9HG1kMA!Uce&W*RMc@T+DWKa`O9RwIXhfos0Z9ewr;*%ZP3e_tmWUPFCMjb$Q z0inTFj=qFViIDSTKAT2XtAjw90%|1=(R77m*Ln#znR#*2s3GeXA4bHf zpppS3Sz-{#JNs#u09WHBVl4 zS0GGiuRu3O4zKJP1Ci^>Jp^UZCs$?4VnFxAUKr>|VBS6{WGIPKJF(%0@>mH}Ua|7G z%5};-o&iGH2Vjyp?ye$3`m`PzQ`!MYXH8vY}bxe%>V6e1m zeGj|t19F4hqi)tJizf-SZhbuq#0Et|WvVF7>WTBtjE?*2659AXT6YXxt3H&DK&b1@ z;A)Tj4Tuf$$ZEvevem7xve}qbHZW692rWNrE}x+b#a`P5(Ax1o&My*Vpf!-iTuSPHJ zg>!<;GK`-|3;`;Gf~hhgQ|96!TKf_4UEwSsG^iubtdw`Nq<3WLPMBroSp;+m4Cm<9 zQr^$9N7`u@mxSp?BQ;XFW6k?93`uNog)7pBjVVupZt@y{9I>5#7$g`}0w#_NvOnf0 zs95IQyH`Ffa{~kzRG}n}0Hrd@vi}UEiRdNBkyKlcMd|8hZAjc>FJ4%q3YU#*4S>jKD+UfTJ!zC_B@g^xZRC{^l z-BKL-1+WQZi3x$_Nqo)=f{;~7oh5da+UO-i%xWF)^imml#H-(Jm$7Z3a? zspdGO+~nYngGXFi;)5&819Wrk%aa0Hd8fo4JAhObe@Ow^5cGNKSd*+-;w&XMeH&o~ zY-!$Dp&QVuY|Pkb<1<=GfCmUrMO9-HAWjtWARoJQCGw!;$x&pwwrWHGq^nZE`~XSf zwT``@C!{0IStzOP576pvc~W3&=Z^8kqSO^$0T&`{DZJ?wp~bfmphOi8Q;HDDK9r1@ zk~|)3^FdpD3jo^9aPh@ws*>)N#s;q3h};I?Dz}{!nJBMSCSS(^HW{u?I^uaE(AQpu9@bgiE+xRnYwIb}woR4GyCwuzlWxlETA%fT^v7 zZ;7vTQ{jQzrOAm({{r|30QD0GfLk}pgEwR#sjCuI)&?R4)rJT+P4)1g6mC=D=G})# zuq_y#T^pd-^5nCJx@qOrb^x+Q(7sj)Me2`mq>%O-#Qa?Jq|zz79>5xcYn1nL;VTcD zs=b=h)7U`p9MIMNMt48B8E96IhA8p=8JeXuSsDNm`5|dmU(mSmKj*9bG7?T})e_Ln z-LW;|KfwRzxyxoKz9VcW=!yByIVq*ciPh2Lpn6#fQq6H$?8K@qP-$1(#t`#bo{*95 z5j9om;D7#)P%BZ$&fh~(1@ftgJXtKB-(Rq1{P)@zQ$v+hFpoLw7rmP{Z>8%*eu^0d zk79|m%EeR+=w0=n>w+=@@DUZi(}yFVc;0_bvCM7VzV->IT=Jh&Dej4gM~`T0gwn$9 z)=pWkDq$AWCVe_9dsU%M{PEP3up!Yl)Ve22Ry>e`hebFuVZD?hXf{x&>i8Ltz~2!h zGbsinq@03rw#`Rg2F0}$#EpJVnPgFlJAG;guRCmS2CeF|=#9rO-L&d9OG$uNK~c(u zKz$T(dC#MRG8Yrazf|?(^&nE3eX^oi0J-{Tf|SNCW;8r=DV~xo?!D+%t`4AYL5g`= z-ITD2a;2g474pAztKLM=x%q#9PDAqU!Zs;sz=`Lvtd$)>QM>|^8$sd|sp7MP+NC2G zeB!RH^zWjzd~%{5e}mFx3Dy$x0)G)#hP60Mp795+fW=d;Fn= z+MpUTT~c^y4WGvzk2{kQaXWg!aSoUFjrlQa>AVy^FHg)}rFjN1w{FUG84gSgr6QxfBP|cfSnN!**CM8v;qGF;L;5t(ZIM4pEx4!1vAp+JJQ+{ zmDRqO-x(pEq%Q9bN!-YZ%PrNH%hLq9Fqp-^McKgBbxT=Yx5)3U(sc`Vny9WeVZYm^ z(FLLwK$KU5U@r0wkggk==ps|D&~@Dc@2ch>YlyDdFp1^vxJ4x)2MCkRRTl&aVG>zYto4o2w>t zGe01}u2alcrJJ`T=2jLi-zZHe@EdbN=s;pf?j5%^$?6mY5c1^f3EZqwB5uQl>rtZX zxV)tH3R_^CS(m&X#)r&9OT27dmp_dUnNJ@TbA9d2#&@_>6$n&j&U094f|qUm)acc{zJhw9#dxoZ0D>}QrANE zCw@Q`>4+QU`8D27_rk^TkImt_g3(08IaH3v>VtKp5YH7no1-|&<@IkE^#n=E7r^ZX z`rto>Uakx;18w-9K+C!-KH@7TLtFu$Xn+j_;~|#@6UCumHWYS}YSD-uh)-o?(e`hc zEE2?3iEkL>;3qRynh%lECbhif3VIAkh!PBELtLJ_2N)Bh6hMNcmN> z^Xm%fONRwY@hKuMz#Rtx$?!f(71XzC$2dRiuf^=kKpUE}%x((Va)|ZQLVOR1qm5*9 z`WDPChJ6B$FLMwILGa-^hYLP2$|_%{r(M-PPI-B7(}W|TQu%)X?bH-zi`;nCW==vZ zN!=*Lbw!=Zh_DI%k}gtkE$%RVU>{)Tlzasd1+rT8WeKHEg}SmJf!X`*bm zatW@EC4Ym$$^SzX%2DtWC`+E58IO0m0#92SRg)_S3C#KkNDj) z-1LzQPhV!R12iQsA4o1uvizR@r~J_+u}bu-$$u#`T{Kmu{Z0Ackd)CQc8ubVkNjV2!+`R7vF0|AsPeP{g5FS6>6j*uf9unm5zeT6Cq*3462fsS1Uuh;Z*68XHh5Pc}woPiBHgQ+QWTE zvGfs(O{E3slizSqV=Ql(RBB{-9sQ4ZqDwxND7^K5BOzVXRHjq^L)2JN30LEJBd$kT zW4VLOkt77QF~3-wyTxKDulzPK+B^i*8Os|bmpWOy*Mcfzd86b|rAxmGx8Wzpj1ygW z#D$A&(fjZwTExEvw^DkXCFr_VpO0Dr8jZ(4W6&te_9AFARBFi^3@$I#TLlRdmv7-x78=V0`5FLZye8_9Li(~b^t}j*Yu?EN|y{5wKtv*PaLPD z>WgK`kL~al1=m^nWa--BPixulDU@Y84wM5}c&j>gMxWcoNyWtnk)%I`wd z?ttjKPM>s#b~0XmqYrn|Xq4r<3$z(4zezrAx+Gkob4vI*Z3*)Mz~ZBc{OE`4KRpzE z@|*>Vh8o@TCY~Z$dVhlwjl2?eHjHCDZ~jRDLxR4=+kb{pz#QJ)qP0Sx0i|l;!*3e~yp3 zq+N-EeE!$ut&7ge^d58?zm}2v1}@m|kd9YY)>`^UKzesei5Q=Fiez1z21<+{;}b`T zE@`#vZcN`6j>ygf=~7oQejcm7LZ8n#1-gvKCpFf@(k097Bj_<+Kf@4ubV+Y%593kQ z0QC`{Pb787xK`p$zt|ts%z8e%ep z8eMWb2%3zwkH@2{;tYRR$cycd_ha~RY949k0bYG_%Iue{>2~EfOk#+N~@%@zFs2iC(WjmM1lgCRxr|gN;`tC!H2u659%j<{3%zbWvm+4__g~c%IZ)RLWBQ zKknWIPO_^i7q3l{NixYKnLNk?LW*JNo`IQ~B!&>1p_7^Eo|(=(o$i@LjF9TC>Ykde zu4<~PC)0_E$|F3)2Z)G*3f#m8A|hhI2Z{{n6;VM{@Bvp;l#7BA@p13<@&CTH&OUpe zQ|FvMRb4X-{~y0FT~%kVz4qGcz1H66eqcAK2Ax4*m$c7s7$5}?!8-GtZ+9DURI_*g zo~FS+4eSOLXs;GKx36nDgDd*22CKyV1a5;W`dQqP8dRe@n)F24o<0c-2UVsS1cq*3 zU$AuU&@O3jZz;Uz!5sr!Q$$6 z`l{tZ;jwd$o=H1j2Bw3GpdB^iiTJ3EyU%{`Oz6Eh zO;*M#X+M7fxDDECIgE@SZ*Zs~$7f%a6~!*;iL^ak|IpyIVAA|~F?9Pn2FwPPg|o8I zFJ?)5`#In@r~AgCK5KZ`?}fxC2cS7{Eoq;`uoAi?OhF+463l%D<(;M^^d@3 zP)#J=?OZN~b!r^d4Jk-6tWr`eEQUsHi1r z-u$?^{rd`V8dTKMKTb(I`K#YGNZrNTE*8bpVKs#f7`&5@cPG`+Qme&(t7F+@*ueo5 z&C;dq=C$8FxT=}nX1E&s+>Y)5UW4-aSBF>9uKp0P8&oyH_hI6^@BfyzgXU!e>!$Fh zTNxF%SsQ`Ept>pYHHGTuy?k)WeK0t>oxC5o4JtHSJ#I-m z{CZ$GC|<;!3P zlXZ3YO&~^CgwMh*Egq_*H`71^YEu80PvxjlQW$A=@i&0^yS@Q1cf9bQ!1%rAIL1jl z^3hifE(7X##P@9N+n$^$UWEKp`qO2;`0By+6ZVUh+uJc3$217}a414HXQaxLtGjj)snjZT?rnZTM7^W&FJ? zPw?7s`+5)yftTqjtQ{E5Cms|yuAl$kfXT_UZMTE75%KSW_ixR%qtm9o;x!q!Dcix> zQ{RpCpTvK?OnW1yP4BtSH?IoNy{n-67GSYj4sciS^ZW%OA}PS z;)8Z8vA2MXzd=b6HRXPg)^cS1ahz$4Y0I1^~tcQRQ*l+N~E@C=^5p24Cp0u<8Q z56%P;)DlwRk|k+}x_4$LusV{agnC1Y>c~pO48UfopW`4-3l3D&I3~-S4>!*86#WMN zYsMzW?~%UG$6S0b%WX=H!pFa3rrW5$51VftSj>k zTsDW`u-FbP-Z3zWINHbG(6j^8sDu`oFS})~%HJ*jElzql4bABx(2l*+_W{q3oFjPh zy~&g_%U_GYFUt2j@x&?N3|66{@7j9o8*(Lf&3>TvZmi@3-*9_k9kllY`wxA?VIO}x z-0xu(sV9VcQLwaCjF2dF)}Jd$3>W`4j>6Y~!rKNyNS;@21S)&6ps{&LJT9g@mja`* z6TeWo^8e>T<*SO`jbvNAVT?EmjHZ&-Oe^RvwfJpJpBk?AGCdu6HKEqEiJA=>5F9SiQj?@G%m_9JSDM}U7HagR+^kjP3h`_5$R>*+65@vzkUd=SstaZU_h4g}J> zP}8^9Lh8oA|Ar|CV#aGmEM~q3cmyo!GQ95H&knz@0>8)l*x=srOT$HbaeR+i-*U!O z5ij?({_<_#KWI#?SgUV33HGXhmeZiAjT;t0J<^xLs`&?f6I1kC%`fRa3iMT*=Pag7 z8_kGnQZ=;W=yEI0ld@Jg>uo*lgQU@vz;-&>si2sov8 zY@A)3jzL%Ql5f>6e|8S+qEai$U4IR{(oZ^`4T{Cxb|;r#1a9v>Bl=FA=vnN|9GpF7 ziLAxjDHhM?cMbgPtHtSA(7~F6q_UtI4*;J8>D4tD)y=aPGF$alAMGK%wx{XPMUO zT|{ZEy4i*izHi}YTTTJnGousJsho^$^re2U2VQ4JntH=4%B9-#{g!hCH-Epa-u@}z z)=zGHWeeOJ-7G#I20mxTj`W9*^Q->nIfEHrBInEGr-0en*49Zf$>g2W*4>)V$N4kB zd9V?w_56CH`SM{$mLKCthn*6{Vgo(*H{s&FqqRK7ljRlMh%lT7-Ttg~7Pr50i; zvl&R^NnriHa}aClzD22nreXeaVE))ShdDEK6>!IKDas1&RZ%~4InvmxSy(?-vii$u-1h>@ek$&R#Bxlm6?-N$8_4UB)e^gW>xY5o znTd|_Qt^XA`541R89WkpCRTV~)*uJZ^?hXCb z%F}y4M2kf) z_;z=%Q=I5PYCSsce!GHjD-zWGAT+dX0Q;z zO24LnG^FU}mi-txjd9vXe~ATrU{p;S?UxIc}SWSUiOEH{o0#5xDSu9Szx+9HLDMqW{{xfcu9p_cW zOtpX+->;}?JjaL628R8Fg#BYUfxY7{^F7J+SR&4x&c8WF*LhUdPTi+xZB*OYM0T$$ zz4eFsvpl`;D2=jzKFDHhk4i+teCkJ+BydjK1HkvOv$8Y2;p^ybrRG z)85oy2)-IBO+bDcVl%3+$n*yEd zJKUjX!^RGFV;#r8Gk6`3COM7**R#!smK(U^Ey2d7DdUNx4zPQd>Aj6{HI&ScT}jT- zkq2CV=Bt5mKY`iV!dT;yD9&#I&WrsMnMzsjSl9*UhE4--ADV#(@z4+(TGjbh6UzQ4 zy65l4q^S~|H&qbcfTNn@+0LNA)K%FaIa$u)qGmU^iLJB42c3jLHASC4~@SnX~w znsRpdqrj`5QW^a!u9t7PrPk*eJtl1J0TEgNO%|#)Apg=owl;wDn#HF%iSOLG;LiY` zeo{DR3ZJyozKYDH)drG6P+*aPT2X=$npu`_2?Nf1980K*8y0* zbwS#{0+%ymlA^dc4>*k~Yk#D_^k}cUwK67Y7+wnu`w9Mg#n6g5)8N)-T022kbQ|#K zCrvwOJksbi3jF#w^VL6kmaXr>#IHLGg5@^I&YVVy`+?D`&jLowa?DDE!)T6CtcI5? z>+)i0Hm58X9s)M~6vlhqnS9u!(d>J^jx_7W{0m=4nssB7Mzbe@Wj}XX3}R=yv9t#8 z=|9?E>%f`CDvgHE0k+?FMr3tmGn|IgG;r!C&(}@CDd+^f{!yDKSV4?tJ>ovKo_V$B zRv&=BsTtm=VUIV{zZDqw)1a3RtUuF-4vW%EFPqioPgZ)_ImAX#W>8gYM7uDkOIRJK zgJW&Qf^=Av&*bFj^ICBuUq^q7Vqqo0N$0;{b-!|kSI63mtqiJ;bankGe(^)JX*%3h zj}N`IKkX8oH+y$hhre69<*3&J=YCq2SA(<9b5S_{>Y|)z4;%7|BUbdH=l>u3I;_Iq zr@^e^1LyE6oV;7PBoy_PBnTH=MFhOzypLDQAeL(jZp88wZH2H7D>GF2yjYoi>D96O00k532jOA zsy4k<+Gc$jbLo93jP(zIHVyp8tM+K2`MHHoh8?iTb%8{U_+?=6Xe!4J9*ZcBQCu$m z@j~JLZdZvLs%{3CQGr;d~D z!neuAwt3b^scj+`r#&+4x8P>;x)`qB{px?>wFNDa?hZVCUgSev)G1t#X;EM4ZCZAq z*tQCP5_MlK0yadZ;p22}j3e|>On+){(>uW0O~&3^Dg<_A5eas9J2c*o$&al(d367} zg_~kg!GC^0{rdo&Ly*%zTPBJA?p9~{^FJ^Rj(x;;k3T0RYAX0X{+rc?RqUu+oBcNa zbUV`vF@qkDq>qE1zfvPGeXe?{$8~otWV6ekY)jrfGE{-uD9Bk$%CY zbNg=s?8$z?9tMUjX)M?G{nD6OSZWsZxG{}_g*NJ*T4$pC%^07jDMw%RBQ^eiE?&2lFR-Cpi;!iZWS+k+9?F3 z5^x(#*zF z9$8YQ755{)34o^Z17c4*qYuSNX*n&Q;`xsq0K79lV7l(y(fEDFM*(JkelUFb)C~To zJ35O`_1OM?TRP=@O`wT5YcHG_IlWs=$1DzrPR}%OnG+w3*HO0u3`s%eFc(16769%| zUTPLV+A`8^9$V9tt)RMlF#j@r>{!WQ1gEUd-t<=iP>OhEVZ}FswZ(Ou#GcaO|nX}-npHF z0Ppl{9QKUjZQrUsL7a&s{%{WLV4%#pq zJm%B}kP3$8+*`(YOvcqQblRJ}-3thN2%X-uTfoZz;t6vAmWVjtR}>AU*uYh>v9>2XC;L1{r*@sIX6?Ee?0+~50@bO)o|WfRyqrYXJ(fP4D|sBYKs zkRV%s6854WV64qpj1B_GbiY8z^yEpsoLw_B$&~yyO!G+Z)7S}kev$_xj$!lI*{$gi zio!e?yn**E=$ew8BYRNnI8dk$5(S$#(s07XQg*_h$An`C1>dOR%c@N{iO($QNk zdgKDsA*{GSN|G-Xz>1DK;h(|P~dL45<@pa(W!6v zDYPJ;nW-(yECgH_o%mKv+{eChbu+NFOXA`)Zl1D4oHe$y>NbL6GJy<4Q29&itZ6SxGC#FBF0Qm8!Hxk; z=9+ylZo@u|VYlU--A^4qiGi7{MiiM|c*f7HID?r$wfY_c7ed{}Ft%kcv z@L$XiKsy%Hk=Br#O!*`L+?5Xl9{`hv&int5-m##)VnG1R+w#zO zyKrsq09d1~N)JXGyR)$$08B;dB9;r=03atT*(Dqk(d0c;cVci)yWrjt=(2Kq0b~W$ zWM#nyDVCY<#n2Tb+zw@|IvvX2BN&)d{y4CK-6reWc|V>XWzF~P4rl&sew1~nmB#1% zZ0?P+&YC-q_aFwZpg}F6sD$mDk78I(`r3>S`FpnTAq>p9r#iq9=#%;9)S(vHhu_uH zoO}(C9s2tinsc3;vmFk6+0W%3Xe(w4;Jp}_lL0C4RC!dv+#EU)r+b-~UY}j*-S5uL zMRXT6ZDa?(5`#bfn#(K91jSEkp*|>KJH`I3m zSvIx)_Y6Q}N{RzPZDgI!m*q$LZqSvPV@skR$d9xoR@_T|93V3J*CA~|sO)^8_kojO z!%E?g^AC(_hJVDsOnc){C5rZrC9Ze@M<;TxGb(P^Vqm7YxmoR9F=TqZ$7Z3h6~lA# zRdl%BW4vh$ATnL1ZVVV;^R5{FvQYR|0LZkp=>QxSFYO(RNl^kbz=RI@D*+%=IIV_a z+!C#I{rF0A`$LsI835Tn*mmKk03dS{;{fO&(bLjW@h|o=zf*pWcpn6SOfF!GjV*V~ zU%109yattrJs!ZXzXK4N+;6k>HZe{8Mk;gww)6`ts3w1~bJFg>u*`Uv28JFj?|rxn z4`;5?f0!-T3`qDUJ=dVTdnGiZAgr@;4~AuOR&<#E>Dw_hQ?~qvqgh3wjg|L?vSo=y z4BMM!52N$iVQqNt%mt`i>sv9~g{9sW;ec7Ldo2L0u+L5$-i(J=*k|{!4doMTwmEmfPy9o7h63D!`w?VtHeB7IlL75A;sHut~2lDj8D|;Je^~?`p zSZ3zS&Ss7A&tkw4>kn9ui`B$wSu|CB2UmBqs8zvwsQ9#*tGi~Rr479p_q_l+J9w}= zfI=M}9=)eF7pRNH0_tDye@z}{;P zgCuNns$q|4q*xoa*A=VHXMEJg9VNBWK^)g6Ur|dL7pL#s6QdcM?7mtI%{z zSn6(Lo$=M)jMe_hH{@!$gLLq1p54lstE-P=Z9jRAt&O_B3InADW{2xh;QHos1Xrgi zEKTdc?rmonJL}X~>uB9}hmCe0*;;K|-YG;c%f8v`Az=BDa~{k1DqM8qxZxF8$!~oF ztc2}a?r4~rdab0pwY(W?dFwf_mI-lhX?5ck?&pEwubtBvvXzPb3AADC0OzYpd}_ZR zD|q8MumUHmR&)HuIkNjvz3bENQ^4>?&jH%mC@RjKe+&HHcMju6Z!-C{4F7P>W6l81 zdD~8B{R=REa1gF~bOLqfeV3oVGZ)WHylZTH%KLal=GSk27kb+xsrqiD8-UlnYM*Tb ziX!g6#EP|g9^bI>QX9cvGuG{7f75@N18Ws_0{Ga)Es|BVFSJ6eU{iT5cj-s~_fLFaiQIIbL$ef&-zUSSk{-Xe!Lrh7xY_NU- z!1BR7fFFx4LpLC*1JZy;H;cIyo1bVG9s%gx{ez}6%4RyA<9{Y}m@^JsSv+(Ac7OlK}Y;^=l2C6rm+3nZElYfkfrU#9^PULU! zUt*e7=r+|HmZ#f=e*n1s{bOyxvE7ULw^rd_0B~pj0BzFozW`{6l0I_{#5SDdSdVK(o0Ki@O0XW|GfjkNzIrL+6 z8n>J>Qf2W|)87w}Ijm+BWKVO zDLA0RW7J4N;$JcM3hhdM6&EVP7G4pJMrI3?9il*xg`cJ&Z47`1bt6-Q6c_`)7IS-vMAOKY$jN zsb{0(l62m$ppzjlpmAh{4nQWZ!l2x%XF`ED;!ry>UTGAH7`{9IoNT?~>0)-Q@g`tR z?XeB4S{MSTyYhl^c}zXGY4N!OKyvSf|8`4T!rTD>d-G!914w!u=C=UYt@(l3+mjc1 zp~QZWjtL*OiugOT1R%LL_5ilC4iNOyC^6N-!@Uf*UXJT&e+`E3%)9c#n4QO&$QSfp zd9SY?Z+auZcyuT~p;b%>`9Xjg?GFQnEmVVl z&>INq!Q&Xld?R0?nJ7fh6}rvavvBr9=jcnDk@ zPCknviFzS@2!Htkh9$~Fe3)WGRT4$@9|2%LfAl@5agc)MjC-r+L78@=X|thtsc;mZ zDuO=yuK2V*vHsWK7G(pp;9WMKy@)!c`_A`qEdLGz_zKu|1JXWHtx7m6tHq^J02EnD zUw#rmi;pXT?E#=;y)RqS3E7K22+-n@^oFBr*>YG`0P1iymdt><8lS2W_RR6}7Jbui zeEb4{-W~taQcYQizgmfNi`82dD0@w4BTLg)tc+tCI0rhu&p!g7;smABFb$~1%Te(i z0Cr^M1t(4A#{{IQZxVh6VDDc&SpTYz?&9M6FiHK)OyZk5w-X=3go}fokYr=iXdJHH ztG~mf_r-tgX33RyC`wA^)0q-t`1k+L!~{gxO34KuL`A0G73>3`WrRX?=x>@^-hoK$ z8C%j7_Fn;T1twZSrKX|5HXBV!`)qvMY5>}E20p+M06dD~Cl)Et8;j#!|JA1|DZmLSc@O?aBY6?oBtbEP2;l&DmlOOt(asqeG;Zah?%{%n%P#S zEo(vAmPC99K-`-jgs;ZatFug7%we+k0C84<;_<+$N)D=mnd0b+adlAOrf0FT-xzMNwKaP!IlqC*$+&C0vG zI{44t_tb`L@}AUA;gtYz`^vLYn^FDvXul;N!anm<3qONFDV*<4t)0%&tcXw>G0NXyP-$gabC4}& ze>vYg^f`IXk2$?|;a@Q*$DSr(QuuJLp;UufAaNwQ7(-LklD|3D@VbFlVc=a!$dsUN z^)_D?nHkTyKH#|YT%SIB97uFiZpOeAxzz*8dI)%!WQto~XpkSl=1x26Ork@nx699O8kO2L6peWgxL{S6% zQA~y)XK>h005lcM&eOwH0kFkvd^L+pV*E`>WEERqjgA$48068kyL2k|; z$MD1rO&-p>m(`Nl)T!@-JO*IM$3f=D3BcKm<4%ntzoQU?UU zM7Dhm6>~rCeYbkFvW4$>lbWVsm_?!MLN|-??(e#V^$w`}W%i!{I5<`-!2Q`J= zrV@bmj5pcGN}?l08s0DL2k*2gEZ&m4+6Z!_bUL{GxOO%FO9nY2B158#nJ(_xZUwv&{f%BqA5hZ(w@z^n$oxn z0PfBPFfNSKk#s^Gq-W(XZCMj57W7*5GXAYT&rMPp~+;OQvtBk-w)k)OpM}DS{wbdZHf1LEkNCoO|@=N7LT97;1wKI>TBkG^fiF4*2ruT3+~Y?s(uLo zN3*d>188yjbAVVO@`-{t3OtyMvn~)@GU}=H`h2fTP6Kc8z4~`i9nM~|cE9;jYrnBT zh5_VQe?V4}*XIFrqP(h4WN#AVxg4er__82U(zU>*aozy{PL$XDfbH^Id2w|5n0-^z z*mXMX>}pEp$M4LGV>)1q<8K4hy-8aXU#{{Yle4rV@n4hi{4{_k=6K@6vw>S&FZp;% z{xJ@YZ8J=8vx()KK*JqKNZ13&uAY%b-J38?F4oFBjm5u`7qBy5-78DdPY(icE}l&X zY;pYFyg0fTHXn{}$%|t;V2k7D0qXudJe#cK^2yl0V3I^*8((g|Ni6PrelI8PQESi} z2fq}PX)CAb;ZX3JeRJ>25xcvzW_I-?KP|irMFDejjaGf z+wZ$e3THgkxqx3D#4q-VY0=7;{65~VU;!V%S9Bz7QAt(GG(fnz^kxhg?PY*F{YKDy zrQa<8acp%U(v;m^fZpF5XuTYZ+n|jAYzW|<>auG9SQ#Y1G|V5tM7Q@g5lfIwSc0Fz z(1ZOAO~dB>0QsDBkmKMn(#tZ+SMm65`5#x7;90)^z`%_CiqGQ)rXjxO4{)TqH%z$U zn=$O}-iM`OaT~zh(F-^-obB_v7lRM?J2(xaX#m~X3s8G`lm^>&qvru;di7vh8WJF%@@!KGn6Hz=$-g7u?=!dk(lVf|y6W&m8n)1K5(jMW<8o_67b06YM$ z=?0v(l0O*KO5*yd@P`9hNgQz6N^Zi01K5*p)zKKtO1c53t>k+Lvl8}VYm0@|Nq;ez zm2?A6Tgl&J!i?ypTf4INj2Uy>s)3;y(M#6QG;A*VRFB~Zi&o5@KN|yk3PlO8no?;7|30A?g1dIy-c(9dC_ zBk8_O-ie|)#dhKRKSGsy@Lq5&agP{JNUMPQzj2Je z8^C(PI15-B#&5Rz55=tzGjK=h=6yFsKaYcD{L^+GiV zI!d=00P0EqrU6RB^b{uO$qW)d#;2XaJ1{iEC-2?@H#7~KpX-%w4kZ6_?}PoVUg?$w zC=JsuV1k~+E7@uLFM#PuwfkU*Gu&+P20I9p)_pp&pwPV`1jhU8c*5r<49+MhWDicG zQVBqN5^sCSejNjQvY~ch8YUe89O*?OEkJb=z6Zm5@_D1f)3ACoz-E+yx{2<-!jMc+=pN$VzhwiWe+HOLOOp?b51Ka}>RXN%3jYo8 z85#2A^d~o8Zwa$l`r!8hJeA>t_?HT?jHh>rbz;hbr#dhG%nC70?`uk$bU&u!9q3nK zx{Q3`pw@UqXu?+Tn=s*k_l(6jdmYUz#4kbBWrK}J@%4RQ7c5w-^|AOMuz1;7rv;0O^Ps_a;iYJE zqQ&?K@aWkvxh;35$8LU<@AVo?W@O2h?D(1i0-wO7nJJ%=o*zYyTFYGJTk2 zP`qbjzVPoD+_Ud+2)tAQ4O?N~!`eSxAxuibp&LxP5MPZ6GK%-fdN64M=H26)@mv7U z3<8p{r!%(zVC>Xm$DUQRI{+**4crSbGLM2M^F-V7zYP=h%(rP+XHCR&+V+hvGnll| zt1j(lQnvb4pgWHj<}qbP?@#j9=bO^{Ic-dl8SNzR*>UX211J}>CcwLaoJ_uEH2^iN zj2_4SF#zm?MHNG>bvkKyCxB%pUXqp@cNvnk-LC_5?*=X(>=NE_qFqFG?ld#|`@rJC zUb)l)w+^J8B(BcwbM|*0<&E0c&z#-qKB1PMkUT(V`Vkw*YJ2o z3M~FOBS2m}%#P6i#L$csSk}7hL?oX&BuP zpc$pXZj9KTy$mm~ilCP_ebcY`4gkq;Hu3>U!|;0mJR>F74SWh%@iy_#V_=4nN*|bp z$&&!s)9z{PPA*5a_|JRXJ%4Z-MppsoNG~j*H|kphIDz5YVHvl9AZ10H{U`&R)b!vN$3lZNGg zuLeuLDq{>Z-BlR=i&bFhz@%Y$8^CW$XJDn7<-vn^ID_!fhZ!nTU-Ohel$J-cmy{Pw z+LBHHe1_JHgVzJVZ04tpc@%>)Y+m-@G>m=-Kr?h$Hc&0EdXBu zf@Ei>HNt;{$1`?6{x}UVOGhWcLOgUtZ*~^{<0n4rzrX8q0G-iR&?{*7wvn`@o4?Gg z`}aDbzL{?v>zV-I0j|UWPFqPG6J{v+?v=#vP~BcM?tbYrJXS8muG&~KfD!^tq8Qoy{(h=sa z<_mgdlwQEO3@{l^MqV&!SiS+^b0`tL=A&IWjmL8^fqk4+JGMR1GiFdwDf}S-WOVG< z<)i~hTgYDka7JKY0sF7#pmm%B(P}o_GUZ;AU&~h5|A_uUj^V9{y_KEM01O7kADP!GW>!3fYLC1Cnm^9>U2+F zFKbbgK%bJwcUhzOI6!3>@NQ637{n|AqulAjXL}#6t}&aPT7@rTc!vE?n%y6sMxXx% z*q$W88XIRnHvCOyT-}WszoG5&FT=OmZ3}>9NL zlc5m(NA1i>VA2SEv>z-fHYX!kp6mz9ZZK(Bz82s!cs!X1Y~f&od8hDm7@onTD-BP> z>U{tk)<2wJE@56<*5#WoMJ*RTp8w%n3zaW;m3%9&J3w`&hc&ch!zp>iZMq+1MxFGZ z0Jv%Ed*ubkY4{>-ZDZ!?ak?Vz8)gw$^>FX;eFD>jx!+!<;WcExgTc4=jwAa-K82y7 zVahwNHJ$c_Ri6Wp&^gZwgh3YLM>cwY5dcCS%?rTY!SK%*9{Toqhv(Uq!ry{AFOipV zb%1IM$kI7wiH&)fCFneIDf6-nIqA>aS}eb(N8c%210ZJo_^HKat5a>2i-%jy6V>^S zxj6jFTz0fmDR;`nq1k3@q1-W7*w5|LPt2b@{n(tjd}zGUE-!S#(U%YHt=7xM$?`(I z)|jg{%=(E1JHuiy!wsk3w7A#+*y=21F4h(V1AY98p6N&aJbxIv(1zO<;W6bH8Kjw{I?)^<&l98YU?h+sg~nO*~k*cnXgtXy4UI?_a4|^tTgAB z7OIU-xkD0si=CoXtTu{Rsw}(KXjG4%ew;`YJLNen0UIV01H#q_1dIY{nlmHYNhdC7 z?SXQwQQTE8x7+5<$;IkSZMFtN0n+j!p5{LK@cHystfg70HcEiCfX^e_`7D7wZGwDM z1XUZAa;pO3%+}_XT8jLZ9S!hdqXKxHYH`=(uF{do!^QGarwM)~Z8mLdG-qT8K;3Yp zI!mqq3-R%V_DmDoGhM3G>t;^?sU48F(vtHSS^`a4-s2)a;fRKOt3nd8NFqdYxLZdvNg zoqinLxYXezSh)~cM%Esz+C9By3aFfZyi*)*wogAcUu_K&z8SMK3ZE!}2%=a%2~O`6 zH^|ei@`hq#87xuHWd+%iw!4WQE}mMX<^V-fpX z2H2C~ulJ5e1t9pPjXlB~*u?50R@dU7g=z&K7i#m(degE5_T*%(U2Y3O9{^M*BRB4> z9>*G>TEf|cj}%FBaA&pMIsMoI=w1YO%{LboDYF!4?|JBs>1wA{p6_4|a^Y;Xj=4Bf zxn1RQEoIjo(>1jlwUehGH^Y;s9|J?!<;a)d`kS}jwmBF-vb{lOeVqxE6$pwo0}J+?T~F@Q92n){22*tu;u4 zdR@1wQ7)Nh9h$4vJGHq^5nEMVn6583$_o*Am6Ca8@DP|zwEaSPanYX=k6Z%s&bMkO z3E7;tyH+>n9Vu7LMU&PJtUdh-FmZW*a}GA)&_Z$Yc)7JWRy_&kS~OQp)*+)*yv3uC z;l>aYin;1owbh3H@fEJQXx~tCk*dO+e-Maz6I>WPZo)q<-WP0g*{t7Ru2i6&pu09c z1njC0o9pzefHL@6_GPB?uvs@*#cqSusI6M&a{DoO)Lb(O9;NWMT1$&ig|o9fKi7f{XwQO!xIfj7 zdG=mmKQK>a35>cO(9W)3>&QI*@?{cfp&$}3YfHFADtQlTE~g4{fS(L@2J@@S*12- z7a+i)={lX@k);k)TDvwo3(YhTJzB1mrpcg+V(=ZH4loJHHWM7&}3%a_@VtyCC# z*5-*^8(V1ByN`C@<$h`@gPsZGPsYILmWD_ z`Ep&r;PERDEzGHWDi>5+Bj$1AGeL#!3T2B#Di;Y$6{OGwgcf7etOIHhER3Z$@L1CW z`$VfsW(Ao^plYSo0o6-u*D4=3PCq`^gfG%k7pNg>ZoXcd0X%NP1|{|eou>>nrfgX< zmy!wR>*Niv&QNscpmW7`#qb?5n;?+2liV)qH0WDSLPOSAF8hXU#EkENl)A5gzc^{C zaAoz@AUO$%O-EUI#=+29Hppt0Z57yvxp+VPIpPA`_$OqKMlQ6mlyvHy<7H9ee6nP= zCa(gE@>kKebL@m&I#G2n^#?H$fp`KquxnImCu^0ZDm|6xM#FIp*CC^u;FQB57Qh;^ z*J*d4?9}g~nLPb?tJpaG7}ivz6T{6@y0vAAj%>WJZ04j8RkJV-fWe zt(S#qlEMOFpqOlx9MTdtlN6eq5h-|PQaG}+C1{<|czaDkmAUXJh`xdg_CP5MNMyU=v6{WVh`Ji%?Y+tp5Xr&R8^eBW8^ZeaFr3%luN^f?B zah8Y6;O`rDfB{5Ls6ALNR)INUNtofH{H7kNDiQk|*6`5H5098%dP=e$4WA2irXtm)Z2!ULXhc5zM+Ac0FE|T1&L#fEsQtV(4R0k3kcNEK~^N4U4 z|AtsJiW~MLuG|HG5)!;&i%iogL$A^$mR$_yftOu}StDmq%H=@@)?(w}8bhbniqn`K zOwFJHwhT`b6M7R-ko<-F50{(M(!Ssuj3@;@+$D|}BW4Y31(?!YI0aW6VZXU-$I0pH z9MNdQo{pHWoEKq91}&j23RfD&qF{z<9W?WN0#M(96kZKw2j*$O&~)$GVR^ed5Xo8agGj}`(!F&JgoV+<5uWea1GwsJJLMW=4GgS9e_ z9s}vb?SnV5pdsjSOd8UT8z-VKlVcNA4VvGqG94=c}2pMD&C z8NkDu?=GJ#PtLSzi@+Xq#=M%r0fUvyZ4+~iro`lJxD(}VZCFXL#ymqAp>i={lg*6> zAyOjC3BQh*#2a}U5|mmBSRc}{2wuMd7Ov~F7i123~tG9_nN zEHy+<;W;EMdc?f({A4}W^)TaMRT!aZYCGk2BrbHI3F&qm2C0Rl64va8e{c~(4+KW3 z*(w!}i4)T`tv~?@kx*pvkebIDwwTA$gi1rYq`82NY|JUw5e1cINBsq%W|5vTWq)oN zS*?1zx>ZKE>q{M*y4zCh!2A_wYQVp=_DCR+z8C|qP(nnP9$z}SRAD&SXcy;ONEK~? za0eo{iOeChZjSh76t1OC4be4(8A2-dmk~acT!(4`E;@o!FcIAQavdDpMI;cLLKMYC zy>@!#cpgD@wFR2M+r)!R*9E$nsh1)sg8$zdDn< zGDgg~U24>jmn0Pg+ZyE-bGc#9Qk*Lx@NMw1(q29LmKGlZO@y@~v_XABU$=mj^6m0;L-~2A8gjyd*6b(ftTm+AfM*kL=m$ z$KacoizW34#e`UYQcMzT758PtJT3SfV+sCPGFR<%ZbcxzBj&>3OEbJPl+np(jR)cRdq$Ko{KwCDxfCnZ#;KG0-r5|tUKVR5>)YF#GK=rKKyT=dmrR?e~Z zkjbu?wCOVXxXc%>?@Aq+%cCiRvbiGqMYCnDJRnvb$~epmnCt9!qAF~h1}EBh5s|q% z$-J8NT}*4P>iP-=hzkQ=a(~^|D!G($u?OLR5p_-A4Kmb~8Z96u8WOB#;@gwG#~Ipk~ao=m)fc2DsPRJ<+t4ss?1wG*<*uwds&l zi=(4v&Cx|@o{rPSmj^5d2S`$C<_aX2r(4T($yMKZd%Jm3*d^E-+8ik(vlIbDhrCF` zT&Ir?No9y!LK{>^-OyaSa|y|JkQikgzxZUX9@;N{lV~mEy-;IVT#VL{E*6$Nq`Y6M>S&0M^*imC*R(};o3T!*K^ zFPOP%m^G8E{GoC*K^to>I{ix2dyyFN{*qbN?yf@sp<-AG3jQV?uiOnMp1cAm!3Ls` z#ZOkKG2ohUbvEQFjI#Y5Lpxe?QvU~i_XWjAb4dVw2$JGHfWgdFhwEkLAw<{Mkyi`_ zq-69%wlG(EUqJJS^19;S5?wZ$WR!WApw8C0Z;&D~m${D&UeHcLl_pgNlv-q=;b+PR zT-!OwD2fo_rz_nE@*0`Wtasm8R4%m&M!;Sc=okCzRggfbRkn*lMS1ArAxDH}J!ZbMJQo(ais)m}5VY~2i|Kdljlk!pOR0$dPxufdU0w8!xn@UF`Ue@e zpcGu3oM~dZD-R=`#llwz0~6Wrf{D&QhO)dF;{OXHuoT~h4M7T(`W09M2Pihw4zbWJ z@|;xfuwi&oproOBojkq4df(_u2$IX@hH!ZT0JLz6+w7^Ap=lT)B=4A}Y+N=kzSg}6Hgx!W(20wbyO_8`6xS3TK)>2Iuv;1#n~kgfUP#d zq8H*Zv4Iy39a)-g)#lBGC{2Uc=FRm-kPk)>g?6pL;cdwiK<*iP5v3OQvc#}h1Z~hw zQAX;9evCl9{y@8e&{ckqY5q%fUHY53F<2#(bO#{@LUhDS$U|bGi#1g4S>C3F3Np3u zeJh(-IM(-o*#XGw?l{?c?SWfw4_1@fYYn=O1m6l=5z(e(?$ z=`f+iAWO8dxkePwjHW39%?ZYOrrn4lB8VY0frP>ZK4VU7#5`|kH#UzbFTmdl5o&`l z2tQgj?oiwuW<%PK;1BWE;GTmRQKIchD$9txGd81OpR%c`3e>>Ta9ZML%60=rVd3Y}|u4b&#RNI#}~? zf6C@csZj^1uAxqoeGV7xL|%a|irI*`M3UKbKOhtgt&o~$I|LHs&|^h(KA0hxDyc3Z zPu*#uJWesT;^9)+=2;WyxdhM7x1gKIrBsj5)e$dq3!x#nUxKK!xuT&CsjVZTTvTaG z?M2ktr4vJRrC<*+CEU#k_X$-H^z~Ke5#fc6fY#NzgeJ5OM-fAzeGV+OkDpkox1kqp zq`-z!SoDw*2sp)xA#7ka-ojpo4{+%*6O22WOoJ7wHyT~o(@4wCQU}^{0eluDsT&9| zLGq0|<~uAW(Xhe;tj#$mQqAfR^uM_-d}^q&G(BCdPX~UtS?_)cT2IXRyHS&ZzlZ`? zp!+XZ{v;?8Z-gu?BpNZ->=7$Sld%Ijnl1!;aZ4S@+GK>C@Mxy-dX<~SnjHpt;RWv-SVnsYCx5JN(n z{g-y}V3A0}&ux(=&ydfxbOv1;@ToWrVGD}6BV|+|;oN5WY4l>Cc@c{)fje1GFjs4* zb<93K{n$>ZZE5g@0g8D}X0336^a)Ado;bSep{iq0);bTvTu3tvS0V1-Y=VT_j0Z;w@IwYRU+QU#k@GxQ3&C}o;Imb>QAYLI6@Z)*o zr>cnAYN*jRJ5VMU9B5XS>Shf*2mV4WD?O&@V@HmqZmv2C#i9}}ed25+H&=x@xZ>oH zZ4+M?m?bK+MRe5gjiAi?Lt@#Hs8U^7MsKPgxLdV(9Ho;DONxs8oN+hYfIOFQe$wTH_~u&U&7 zHrhi`1*6s-X*Su!RfRJ(Q#G!`8bZnLXzj4RYzXTo4ncqLje9jmKq@Hv$c79BBD^l} zHj6{_XUr9rbqGLsXYE*vjuVZnxx)QT+QN+qv^PI+w~iV zc~B?0b$I!*i`O~^J6QugK@&#tRiwA1ADQPl&_q2H_WZ90`53Fg&pB#25}_42VAe6$@1ycp!C;6ajsX+7CD${v=kzP2 z5l4e5(eU(n;ciM%1P&WpYaoR5-MZ!gbVcV*Qyha6KZg!YolhL+U@$idbH2`uv8F8! zkXJYiVZfbXMqS)o%{v4RrL2J(4HehoILoUVs=(z%D#Kb?DI5X@HXdq9t7x{K!1iLS z0@lbTXG(|+9CgS*Oj_XBh^QNoio65FOJp!OG3rDTQmrMm=L#8 z*U;53hS`(A;W1ZvnFz2WG762h*SLPEZOswu6Lznkw`a#L@2N|II6$&Z_JfWHelbx% z%s*oJc0w@i1!51(c~i^CvyPQv*I0sDY?~|KWKctcKd{5>7{7GrpcZZ9_h*U|!atc3 z54*cTSq)YZ;N7sNv7|?;;71)^f=Qey?ngX?78fi6&H@?0Yz;`<)&7C=1bmhMSjj0u~)(Zdk;B!b~!ax})khQW`8O-H4S^?vU9R%-WY9O7t4RV)>ccsK;xiEXEdB2KKMKsJMp>^T@&b|=*4kce@l zmDtLvXg&`7SXNT}HWB9qoM>WBvaQYjge%=r@SV|H4tKGP&I-E2%t1wFVNdGjQgNbE zEu%R@_>5 zAd6$l<^sGga1ONA6DKuvkjILf0=0`84rxHIBj~|v6v6RWqZ}%zk2P2xdf{-I4V4|st@`YSU7&dphlI%O02b25 ztcyHtZn4tW2$Sw11*i))2)E1#MjN(@qIo(xC0QL3H<4yX^0)!<&FjrLBM@n3gpvhE zBYQ=Ml23yDQ!(2Bf8L&83{D#eZ%KVtm`<2TTj&upP>n-1aD$J+fq-R)8n3eZiKZKs z3&b**o;j4KP6h}B6$umQ?s?kB5C0eSS;n z7W)t$;29t6rsa;}t+yT63DKk+E+IC9c$bQYS?zBW58qb2wRHQQy${N?x9s6_@XNPC z5*k(XlK~%CVB~{f_^QI_-+VLt*Le-@gbyq=RYyRp(&uhL{0~i&t6;pT$AT4ui)T7b;fi{+V(IqEGB4|bJ-ih&mJu(|blw_|PmS=5$d%X6o2;9-xk0CpZW zsBRICLH1xXFt4S5guDS#g1snBmg6NMBm%s_nurZs(c>*UZI`H(-OvzNRDhMNoi2dn z@6>*P99RKxfKLKN;jdJ91vFx8WIdKDWa`FAg^`Rn&Mk34mIKU>8Tkz00so{kd9eUkG(AWWr4)s(CbEEox;-3r!aRAoF;+zCUb$7f+>r(sQ&i<@@t+K--& z^U3FCgCdQxYASl>C(kFJs;v@92(1I~8tldCZytz$30Ovp(*mlG|#1ro?kplmPKiGPb?3WJdv2c#l|Y`&yuyoH-JQ*z({$NNwT!`^9r)Etn21>8e+$2Q4sNIeIJ4x1a6n&`;T z1M4)=5-v|s%z1bWUVbnKeJ^tX@|K7aZi0^+NPU^rXfh(SCU1VwsQU)@ zfXvU<}MEs+A@bD!489|F!&EP(^|OOOj*;91&@)(9A}VCBiOJgK;9FbXe58i7jYE)b%t-%WN&`mrE+?SO3H zoOTVhIx%PP-?c%tZPtv*_hyZ>@s!b-;9^*_cDtl8P~<72LF8x$t%%T#W{vuas2&Hg z^<~Q3)>~y+nV!|0xj+<(StATrb^|UD`grl88nX+Bw9ITSvL`{zrL0bXGm$I-zqzD5-;wec`Fza*xD>F8mr2`Gz|72|!eOEM8#PZkw2x@Wts`cQ)=$y1F{QZ< zvyK{v>nO4;gsq2w*vT(Y)<$=cZq_$rOST49fKDr8bodH%jo_%lbFFr8Hb=!C`d!cL z@S&19EW4@C2L_AQ4Gu8lLwDUqQ_t*M-GJi~F>qM4LcA_aM$jk(F($GiZSz$l-Wr$( zk%rBH>l1vGe962p{9vSFfCQaJu}5;9O0b~d2t3UUJxx8p#HV;+h9yD?Eva%riX?g4 zC=UuABnY||@i1mbgoU6GjkWZ+w`y-|Ktq{SxE${9$(lVBTq$m1cn}0sbPez~F$bQA z+=A3Qv|Z4HP=;^x^JagwLjRaBPv8KJAi_Z~0{EKwWeQvg2a@KB;)m-aVPeqBpl_c+ z*fpwxco6B#hqrH&Z^ZQoGXPe;+gqztYNg`#okvD(3 zk4h6lS53gQfS|L`^R(Q|_rfHwPu%>1*$p;DbL$k;E;|qZ41B|wNE7{1%pzG@=6)EmP-L(&_&+Scd2qDXoR)Kz0Lji|N3pLk zx3J2zy8-;J2}^1zPO3UN8y3*FE{3v;4u^@ z7lY~^xp(tc$)|NlWcs*ny?7lGwBB3rA&!KBpd5J zuO}aU%HzDT6e+?^F(k>r@zF8-!tGXZ6GDUb2qNj|*P#Zr@^4S>WCCN}K@v;YRt>#H zTng6%6_w17 z8|TO8mFGcWsUfvTw(i|3nP=OTlk+vVgFdF(DJ*f={!|@?S{g@)zKmO_z#vOJtO;$L zgW?XvX!xf`QBnUCsIpbMp`HV8Wk&Vzgv#frp7+uc+ze3Xq^isHchp zC!?L&G0z_dU_7E_dC{jZ-$>J-~$V0-2&I5EvPqDGL_SB0+)g3(H8^|y1&xP z$JH}3p|#=^#U-r(j1tNaohy$(uDgkJnDV$8A<2P!I2IY z0FOh{K*gbJ27uiMA21yhZhvqBK8ZhrGB%i5DFlwHjkx=#7>01iQEQNLN|^5g zHRTYZhyuE$z$}|o!1BnKo26aST^N;rycKK~@lZ)h#55QHIpX4ADUd|(8wuTfw)xJ? zuYd%I6g*ZN-5S!aBoQ0>xp-IDNI-*0Ir8fk8@L)-joBS39AYTS~5pHsG>XCBuqY?1KC!c6MzkgRWkQ=fmQbG z53o;Hu&Q~^7z#OaAnDdn_|+i@ErWev*eqD{D^FnY_9t?Ev290)xwJnCSmZDQ4_dDC zq(0N?nsr@@yP)`|L9HTc6Uet9-%vs>no*pfMNM1@5DoYM0dqWD^HsPm!qek1Y?Wy^ zf__v58EZXk$S_@R4#Pi)u>~uVsU{i_#UMwhaK*#!*Wr@+gl|7rrwl!~qZ96fCv0j} zv4Rjkk!-eWyVfDMH{7)FN!>Q)y91i;UB(fWivK`hPQN|QgWhzihgaAR-=fA*D4ETH zI+hB18XxkRVe`B=5Ath||I}Hls;&>=nfoHFY3E^&~vqX@x zU@|90Oe$_tP%Nm~F@}wyB7qK-u5$E4!QWwQfFInX)b99BeY+sLacKGk+!gbYr$}Qj zomh%8ds%S{3X&@|Z9NEq;K~x%zz%Mjbu*P)FAz^atOlYxT1)z_;UJbNw>B};JQ@ZN z0<%DYXW>FE5JI zF~!m=GQz$&J=p{zZY$9$i)2V^lTN^nUbw7Vya$AftD9dCm|f&`1KFou)E#kTk`1xD zEv!PN9D1DExuct7pE^{p1U=x@R^(xc-2G?!BUH&eKZSQ{ZufM{sc9JdC=rIu7YE5P zg(% zjSu-;c2I*LXg5s`)kfVGfLrjh-UJiQfwL@7HcaYB|AX~wRLchfG;9{>;&+V+ycDvQ z#Cgbkgl+;b6QlzWUFLVJRi4|?sEpw{tLSrq=AHMfa1hjX%?}~9lGaTi-$9D{o6-5` z7(Q#SH6@lD61{YmTAC=LUNLVqT~AdJ;)D+=Dtt6hC)#B!nI}z|p|_A%)Q0QOJ>m^q z2#3*fk0_cq)1$Z}D6;IxAPO^RauRhfwtZ^L0uuY8qHs3?lIJD!KtQlO6qye2Mh@R* zJAAxDzf>Iz3lV&FM3(ETGHG4lmCvY)g7=tARJ|6_KtZq>7%f?y=w3W(e&M{cX1l@- zq(!p^40>G?F&drPdk}ML=WsQ{qw)25HtkGlm*NA*ky{Dmz?nYvE;K6SooYB5pT{KU zT#NZ9-%!HJ`uiU=&xBl_C8TOJJqAlQm%c2MmAY+hrcLlx75?dMO_1LS8p4=2(T?tj z%V9P{TSb={;czNJCfJ9ORQ%*1ZEKd@lne;kw|NH?6mC`g$zp`d1HTO_R1Ne1xjl)N zXNt|uBN0!W{#l&uf_TK+l^mS6vi($|n%hFEin*h)l&~B3$e|YQl7u^W+H^QLE@YN% z1jm+0wnl3xjzAf2QGq*+7NCX2rQpgFBuC2)z1P{<2u-o-6$kYGvCTT8SkxdLguF4Q zm9O-mQptR`6;UUM>SI`GlkI~;;9OW68gG0kNYz&>zN(i#PE8vJ#|(m$26TQDEsMi< zooyVt$?%MD-?~E|SU>Y2bJna6Q>AAjYH9Ug`PtSY-HP!r5VVlfQ#k1*;azqVXohU- ziOZvhuHSIjf--F0ZN~emuQ(966Fq2X@m01s6n@&7YLd0vz?O%}wh${iqz+OL{>Q&8 znR`6Hb2X)u*lfs~?8c!SFBzkRlk~NO&S;LT<6T2_^CKjg_n=fBRcJG<9O1Xa>d^3L z^s`SqnUu~t?gh}Cqn%vuD71P2$B^YFRpcoGuY5e94xA$y2(#j0>iOf;8xh?i;fSsf z7fVhs=$J)qxy=KF$li%A6*}NnH@qOD?LEP54USl`7|rfC#!1lsER*hL(+ste9`-{6 z4i6L4Ne=3#mLx9Ss&1`JBoiwpCG&P;)iu)}!CQyC8lFUFoXX3eLWL7y2PZuv1o=X; z7hSh55$iAOINoQW9VR4(;3OPvmy7M1!xg$AVM05k+Lpon#IQNcNG${)&v;^in3Ja* z7Brtf(G``U2(>^*9)+WD&wYsqBC!yD`eHp}fnEXZ(Fs^gDKgeZWnM&G2eem3B_V9Q z*no57NJb+e-L6*5d(GkSBg%H@j>mSp^bGqdae;T4cU}sM;a}FO%k?NLqc!dxHo~Es zthyg3yzJ`2D!ZGMvk+0bRmDY~Km`A}YlZc7PEs9zT>64+1)sOU-~dSr*U`T!WF&7f zfV)8{Ai}iqp#ykLQneM45-WKd9~!I9pj!rGd<&fFU7=Ya=*fvl9U2sr#!gFf>-4r0 z^ogNCyg2-lVRHwxIf$lTD7#4V&1zBhZ}MhPrG_i^mdyNAaEe!`g(6@G2B&Xjdu3|y zO&F>tE*lEP(;mr-H!skk?c=q@T}?EUGQ*ivp-6aa*nIa>#+@bVxl%D%omm3!ESC=B z)Y8myX(DNk(WGyE#T$gd)FZg+mc2ym5*1S`JxE>RDy;#5)FjNl^*!Sm zw?LGmgzr+@e&ppRu_s0o=V8ylMsl>=X%H?)6uT!1kn5l9QLa^}CEy8c;q>SvC0fph zmLT7|_zCI@o!pHMOjoteZ^!tp^q_|#UrZ5tRqvE~Ag(KDm&}s22_F6;%Ey}$ap;3i z5r(VhA2vJOyWnmM;RF`ic22;6B+Bs3BEx|XlqkL7s~B2sC%Nyn#XuQ7)N;4zPZ4bre(~xiw(o z<2FO?imeF+1Ew7ZBIIFiX*jtEoX$(($TKA5G58~K`q&DB*JKjLps}jT{$Q-__Rs@) zfz!pF+mPs*y9nVhY-NSlE3TBx_t|6%bhmvYjk;jyPg}kFPS+DXRqaJ9uFhp-;Q z=7+niXaA1uga>%k`{4Vl=~CtfE3sZOFk2cBD?Y)dfLaVvaP@)kRFsX-ONU>E&C9!p z6fNxJa4{whl>%rm41}7GDE3)87spmbkf><+aBmGOBd8 zF?h<65RmKoyYd0pRKyEt`#Ic1A`J2s1PH;K4S5p!Bsx$eq=y1!9ajz$OaGB}C(8w} zJnNrJHXMFW%NiBTUsqvcKGND2elMZ|USR46Xrz=i3-X*_epeZnD7 zZxoLEA-Cq5>~WMtX>J>j3?kY2L|WC*K4D$UN} zi8$Ida7*HHl;?tqzvax7?9DS(jU{o8{xWQySQXb~YVCkas049q3rVqZ#zoPhf$QQE z`%}OngVXjCp~WG0Y(}Uds!+7MzGN&V{@<2U$s^%Ii0IqM(C)!Q$Pw91jmJE=2nk;~ z8UIZJ_2S}Ka{;%7hIt&TEu*Phm&FNJI&Ythr*J4FcnTAzF0*GX zxs85U6cfvP-!a)ok_h*48;h!ID?luiA#a|n&jG8xzL8- zf;UvjJ1%kf9@+&40_ua+ZY)qPO~k=Mt4Cnto-nw1oAFX^>)&|8QcWAzOaDs4?1CPDjaG ze93H30t-XiTQ=q3DYR9Pj5SBbH8ms;VQ<-Y>_00-3alm^qLscfay)^}6NSZuT#XSG zZ|%BOZr(|g|G=SQmM8>Tie8_v4vJU9THM<|Z}g&VOef!&Yvt;{ zi#D4}c0EhqZG>;lI=;BpeY`9>$XpR#EEJqx^S(J8ylm%kTujSbL*=3s!dxE?!VBAq zyK&uyxs-p6HRtu6JeT186dk-#OYW6vrCbd|p}eQoIgac`Ka8vd-c828N_bm` zyL->O=TUT*Ff-7=ZcxQ=3-pt{q6nn_ve^fvArhe%0O=F%DvXqg*B*oVI3YdidcF_i zusc@FaR&k~my@b2IbU+J2&HEbGf|@8!w=A!^{O^)#)X?Yv?H6*xg#v z3w?1l4(<$+H>Tj_TjPy+yl2$hwEgreVHot#kb=NlaKbU8hL<72g5sI784dUXEu-#Y zYvAs#lEX12x$Z}=n+PA{O$>OCSUKDp?>ZbPHn%ws58GRVxN6x&z}FjPI>mrd1Ic(!d+I?$mb$(n7HM3l{ZyekoM! z_l4)aYf@fKVs9u1ILP`H|v=3Fu0FPHspQvuNKR z#d|W@9138(gNS|Gpwy0VHf7lsu6xH5a@l~|CGLs90mg2c4qqtwyln381f2uWsOYxGUCr`t$~z4% zsLK)>H!RS@j*9e|wKdp6YustB^==%K_e&|oTONhhx))>OR`lR~ee5(krf*CO9Q7{p zoi}uF8SjI!ag{ zGqe*5u>vI*uoAt5v4BVMB1B6U@tVxD$IuJ|O-?NVQG;sY-K#j7;M-z2M|iWS9cZqJ zwC#ppuUE8uicP^DQNK|igQq=4q#qn^vKnYT2H{_ENeeTxj4P+HYM69={b9-cvbR`sqx~DsVUs+`%1hzbRT{={fhnj_Z=D=KUgwfGoF=G z1s1M)+P)h^6$jKQUvQ#)*)FY};FVk9!_){|M(`>K?kT>)&-Unu#Oh=N8|akXc47sy zHN2pJJQbY=q_WCw?IvDoj#u!2-aOGl<3&nD2k_;rD%4v?5t)iEiHcMk*RNc#8}|=Y z&G}QUrK*{V=}f%@Q9QU(=A!xe@!aN=e96uDj=MEbMr;NuL zDUoDnycHe}JKqVyZZf%;8Tn#;eKGUFXbNex(O-!>AxhzW5HA@9ogWVy4QZA4MXvD# z7_FF`$XuxKC5XM#GkQ))3+m zkPas~1-;DU(De#^ezEs4Dj$}`8!@7OjR^)p|=F%}Jmyp;O@kAp^`|?;G81SdMJaDS{J-HUQ zh1%;8f-mrDTS|HhufXk?mmI>|NbCdR#s$A<$OH1rCCKckB~Dmx~^any*rzCF#rWg(&*4yLrhH&sJK_sK)cHi1XMCtAUhEOXEu5W zLkx6kxU2-y@~kXO*)*XYIb@)KTbqpx?V^IZ=ebFVN4E@G5UWVH+2ZhKu9IDswH3)A&w zq|l(R*i5o%~U?5 zs)6PrK|^&nSgIMS@*#PI%oB`Ll^4hh=ne8cU*<{j`>(b4KBpUy?Zj0Ur}x>nv-jHT zzSl}g3_qzoY^=pCqjqy=dvzxKR)YA`#M~MXD-lrg2d@x7(LS6mfMq@5l@rgAQo1n5 zTYp;H+eNZ!KHl>r21hKtlm{j~mQn`zOA1d9qp?bUpjHZ3+lw$oTvK!NOiIPqjvaFbU~Oi5U-uSYcMSqKwy6>79u;Y^7uSxIq` zc$c{_d0NwO`B9psu!q7G&Yf7slr1KL?SiA;J~8>uNgpMq4AETC6liIoQKfab!FDHy z9Y04g%55oi-|Ih0kulox;|42kD`2cW>y>nDf*)zW=EAO}KQ(k5(}q@-Y;O3W3?Y)8 zKkB8wvtL5*a`w-UjBJa`f@TO|l=(j#<9XM7(lyV9WY=-Hyy1#=#lnUgyPD)B(OeLN z#mJ`oHz%;a&WpM^!j?=+=+b^>Ps2Y{8k$B6cv0Hcif+Up$BwiY+t%?B>x z+7zd`XS00Gs;g@UY^{6bW}~RNF{BnogXE2gGv%o|ofRhElHQY?j? zvHY4g=tXYMz;Zo5)yux0*vVfa?0A^@G*UF$x**U}Euht^9 zEeqh9$r8MDZnf9I6@XA}h4w^%aIBpQBfwSR>Q4S97gjwVtspuxd*<^@)9{(Etq?)4 z7~adOMc7bJ^I_zXE^?)G#gAw0zna)0-2ba0ebYDb_HD-f&-pf}@)E z5Eeux`E6QdE+e~S#9g!@WAqfakQkimE16&riyidZoBkL z%NVtqD`ZN!`UxdD6tz?;f^x*BU#TtMcI!`_gSE9LX)xB0YL8yR_34y-_skSD_k=^IGWMe*IIID7ASTxge$&5`7@WgXhK8hwB735v?@? zqd6XNKAchR2NSoHMJ>E<${9~sXZT(eTlMF|8SQ@<(Z6V#d}m>ZEP1XHjU?{OX)X*= zR8P63vIR3ZU!z_akL3abjp?NmWpZNULd4$zSQn*e#ekLuypUujJH}yf1@6ugZHz1` z1ExuLEZv<7?-Vy*`XSJR*~s`C>%Ji?=y!GzV?A8Kzywif__x(=-rapLigPV2!tc-Qx5^R@qVRJoblWpgyeawB(eL*2R~6S5fN!g-FJ(m?>(T>`bWjJt}f z^k~sW(pfy-GpQ^ObSyj))Uoai(pEw3>!x6u3r~OM_DkpI4kiu({aZUM&Ku&r#_E}l zB*__K2{1WhrbRGA>aOggCGxW+i*f(LrAU(q4MM;n63_l;c-Kd#)1a91oUId<(Z9Qz zRgn9dZG(0A_g8p^Fg+7UutCbbm2QNskDDIUx%@g1S(FrRx^Je_bK#lK8U;emsyojS zIBlWdb-wn$CPVA=#21mo=-w8U-wYk1LX^g{!H1<=#yNM6J+ zz;OdL3Ri1K>=bI#WV(>cmtuuG;w3FfVgV$OWDFw6qgOuP)CQ(^tDwA6}s`w z8(Z`6fw4O!DMDE$osNjIwr?b1O5+2rRI>gUsPGYC%=oT+M$~G`i=2Zq4O}^$FzGL0 z*a6ix6F0tsi5^E66D!f)Z-b?Yhw+nuHC#0_%X0LCebS6MO~U1#a+VVo#_PH#sD-xh z{3o$4jzV~dHfmn?J!?N*S42^^t5L(rL=pE&UVb>?Hwp(G^m!VtXNU-EIbe{hOwdMgx8Wpy&DqG%@rlrf_u4TM(=&`gnJ!*(1wGn->~ zjyOM&Nv$lH(EOq!cwv+N`?r7jk8mxWPv$mjrnveaONcHk)Z;9O6h3Ro{k_ZwmP|C(Zr)`LVM@of@kZ`$(Plj6!0Kq_Q8>V;gN^W7bz|NPdl@;`{_2*?<&=&-E!$65q}n9NiJLECze1T~kAa&c`kF`- zhRbFk&GIeTVJi*a>v;p&j1qB=16C0we~mO=Y2X;T1(b~Sl!|=_ljvl$G{BRD8V*Bp zFdAOWD%J>#s?@_|hmo&WIB3nn&R7`A5@;BrTW4@WwVwe@wQ>UsdJt0#L^x9xlD)I& zn?{)K?)zOG%TM_q`>|$wPiNj2Yc8_@y_(N z$A(44f3Nn;QhtLxlw`Fw9ebWO8mH92u`{2Lf0C^Vx0%}OFe_X?fHz4KGHCfGO{i2| zrsX(k4ks*gTHt%78uWM%eYU9oGj)O;$#%}uBm%uSb6vS32;)Q90GoK^a4*IwjN{RX zUz~#oN5ZBRhRlIq2NBjncuTB>H-KKkgLwvayBW!uHm5S{HLSa`IS> z^yZv+!Ho^njP@5+<9Kg}eTzE|7H5;RfvekHoqJKViFnsGu4ts&VPM$_csN@;72`Ah z6vc&@Mq|u!Ejhc1d79|6O}P+_;Ip&s&D*g?@0rz+$%&!C9&!-c>_ zGwIY-`*?LyQ}M% z*!N!2f~U>)-ogG%`0)P6AD1=O_V;p&PJ*l{X>)y_AAULXxWB!jksDo&u)B_zm6+AC@9nicF57(LM!K^2B|~1Zi&nYU zmt4D=$vjC})o@{$24C(;`I76isT2^ll9734s_)%gtUZxn;A-y;&FS?%o?qO@D%&06 zo^<_1{VAurz6YK|M_In??6kNS;li$te`0XAy82lD-QiE8v;W%utoa`neC&_AF5H(I z_bXDuM~7c&;Wyg5Ghrh6-WuV8HAm$`PTrvx2%t3y5XhE7nj;JK`^(F<6^R!+VUpeI z;io#h!S*UElkADGV72Gqp)hCyjG7ES#z_YT6bb5&^~bX-;fp1?Pn+y!QSN6DC`BIdFsd>i8o!$)*% z0nwsJ9>lg51|sjl<&(9oCZ++3;?U3t12CZE%!@btJ8|MClzk2Pe9#MqD{#-qcF+tg z4EiRPEL^S@x_cE~CY6eYZZB0!jx}>I#E4m$%L4*`h6~xj*na-$bndQ;;M?hHXYubQ zLsVn+>!vvGqv>RSI>wnNj#TKwgm_o%RP>%@pELIm{u4*H)KWI?&rhF>;L|$GlUe5e z${sX6G~ym!sM||3X0Xs)gB6)2ML#Z%9}R- z5ko-6lC+z!L}Ctkn6P3&5+IKI4F{MjO=0v{$(UQq-355(O$V*x2}Kt;M_f=5xstj3 z?6-V%Ck!|=XNJrv?J!beq)Fjov?8S64u%~P;D%o;KdpzeZ~wv_j_|AJ+GK=)$4J-c zb;0g9^QnMHYCIlc!?whD6mVCeu?FxSg%6kDUc}g;iE6#cCU^sa+ReqeaN$X{9B#8k zG4=dr>wcrvMCpZ^r}En~Zwknu-Fv3tc?Eh(H^a$rtlQEubfa4qDcFz}K*HB0zhIiD z5&qGK+s9mz?PRsvMn0g!a$V4Dz@TuQ#2x{COWAK;7qT5=D;-!tNT7YVr!T#^ID7ae z_0-pq&J9;x1&K~6oN@9ZdOD|`&_xa)&1>pmlF6}j?$^6+Nu|vc$W;=PI#5*^B#8r3 zJ?Lqi4^P}R=y|ziXVi6w!+v1(BV5p^ruDGq@AbASU)<3PwwtlEkMdYD|K2iSKW{dr z=E9TI)Lp*EHdD^mrIm`ITZj6yz5<#n&?x#w25>K)j=lgIYNKiYY89;Y(ar6R+R9RW zr3P}Y-9*W|z41|a{%jY(?)CVN&65UNssez=wK@2-iXf|>+2|jmOODcNV?1=`w8{oA zBj^Z=iLvRtf}{BCgaP|2nRdd|l$;Bk`QER5#`G#aJHkNIv+8c{gzkE)R63)pDi3e$ z2|iEp+Plp$Tw~vQi#&i%qXVARL@OFH^Zl2&l#pupH5@q`LYZ4fE2b*xakM#Z?JGln zYM+Ll8sQi9dEh;mDD82|<9&1I4Pw8HQCbaYrjEB7oh|UH&I(;h`>y!u>hp`!`gH2% zQ-vUSm+EJ>?C3p%Dg$I48b5^jB$Pi%Ul_sM$dtSp=&}Qr#vcQ&)@5-t*`SqrE;VpR z>qO5w@9K9#CkL+C06Uc;T$RQ4!N4S6YSB~u76v%!Q7#JC`>R(z3-u^FDVIgY*uvq< zzczf3+5qt_IWCY#P6P?fK}R>7jk?;8aEq^%Wzr8V-Fy#&vG+Zm0b(uvasXnQIBv!B z%gDB!Fm-MiFXPQxL+-_KP*4=dz%*E3A|^)>#u{a_#?>@cM`gMEW^Z|Lj9^_ZE8*IC<&r7ROXXcw2^8nB2Pq)NM8UE0DCv+LN?afKVJ>COSXzYf zPL$YE4&>)LwHo;O58~5A@%NE7S7(y{+c8l}6mGwkcmzMX2w zCWyYTNeCTCTh{9ON@bbC6utihD5ZWOy?*}+b>L5EYj~t|C?kOL@?UAm6ht z;YqoXvCF)`C+z!=t{ck`2!LTQ+2?UMiq0Hz`p)bTUJ&N%;n1A)p0Jm(vS2)F9b=b_Jh)K! zDaxIi*Gnzx&BH|Le!|oX%b(2AImpHNE(3JLPmL(CkCV9-2S#d4gUb(KR--aLDUy?8 zyP8fX)ji7FuMW0lymh9B9MKa6k>=dPC^JIL=1DGX*LnuP8~eY^odnKMM6T>oA+7W= zwz)pN6m~%N87woR6x%xjvazT}K{`%*aX#&Z-a9jH1H|=J6r{{RWxs*k;rp?}*jqe9 zvLlBp$u;6`gbodGJJzo{Ya~GOHBT(^P+hV@4bB0}ggxRl?cvIDQb@J*_T(=-Yb%ZD zsKw6;U83-EHR|@>ZZ2V>XA$zasWzF;vNJzOp>{(D$hr+O6OuI+zbt3x`bi4>6dX z6FEjN-sY;5_JR|FXp^gyHMSbB^82fxRlk!U2c6b|qGSonOy*)N)yyfs3}a8<{uT5I zolGkg-p`eNVwG3#nUidD^X(5v;YhQ&%~Wnf7+b%9Q@%XERJebUmUJZg8kv?9YmL8Q z7vQlt3-e{c&tBUrBEhd=Zp(?a!bc|i-$fQQ4MCoj0dm@T)&nX4Rgm^3px4N9cw`@H zeQ_ZllvVn*DX|4d!KfRY=4~@5RW-!1&diBJ(ZX8BkgDJOZbS>MqD%&QH~EB@g^y1E_lt`n59!sUVs_l{h1qZ_$VM!ZhV%VuZU;hjdf zs(%45zD@3S7LQpR*T07afQ<+$7Kq%^G6;HK!7!Kc$f```>>*lGT}%Zh5LFGEg|5EX z_L-~FAvlAV#E~Ei2q&T1*4Pb4hq}vD>$G4Z8i?Z(!^It%`~@>`Bm8}wmhApmC0;EbGNTKqC)a$4!^P_tIFK}0&^9_djJ3c literal 0 HcmV?d00001 diff --git a/data/resources/StringResources.sl.resources b/data/resources/StringResources.sl.resources new file mode 100644 index 0000000000000000000000000000000000000000..8d09d16f6e6b50039284020d9f43203ecb613b48 GIT binary patch literal 190292 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 literal 0 HcmV?d00001 diff --git a/data/resources/StringResources.sr.resources b/data/resources/StringResources.sr.resources new file mode 100644 index 0000000000000000000000000000000000000000..41254aa58ebfdb7c192545aab81a38266d31f8b9 GIT binary patch literal 235321 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 =8j${Q1OdJ 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 a$0X|>5K|Ypl%&-tFH@>GFg8+a@_zx?-3J>0 literal 0 HcmV?d00001 diff --git a/data/resources/StringResources.tr.resources b/data/resources/StringResources.tr.resources new file mode 100644 index 0000000000000000000000000000000000000000..ce934463441a502704956419e5f1894f3fa4225b GIT binary patch literal 126779 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. */ + padding: 2px 15px 2px 22px; + width: 100%; + } +div#nsbanner /* Creates Nonscrolling banner region */ + { + position: relative; + left: 0px; + padding: 0px 0px 0px 0px; + border-bottom: 1px solid #999999; + } +div#nstext /* Creates the scrolling text area for Nonscrolling region topic */ + { + padding: 5px 10px 0px 22px; + } +div#scrbanner /* Creates the running head bar in a full-scroll topic */ + { /* Allows topic to scroll. */ + margin: 0px 0px 0px 0px; + padding: 0px 0px 0px 0px; + border-bottom: 1px solid #999999; + } +div#scrtext /* Creates the text area in a full-scroll topic */ + { /* Allows topic to scroll. */ + padding: 0px 10px 0px 22px; + } +div#bannerrow1 /* provides full-width color to top row in running head (requires script) */ + { + background-color: #99ccff; + } +div#titlerow /* provides non-scroll topic title area (requires script) */ + { + width: 100%; /* Forces tables to have correct right margin */ + padding: 0px 10px 0px 22px; + background-color: #99ccff; + } + +h1, h2, h3, h4 + { + font-family: Verdana, Arial, Helvetica, sans-serif; + margin-bottom: .4em; + margin-top: 1em; + font-weight: bold; + } +h1 + { + font-size: 120%; + margin-top: 0em; + } +div#scrollyes h1 /* Changes font size for full-scrolling topic */ + { + font-size: 150%; + } +h2 + { + font-size: 130%; + } +h3 + { + font-size: 115%; + } +h4 + { + font-size: 100%; + } +.dtH1, .dtH2, .dtH3, .dtH4 + { + margin-left: -18px; + } +div#titlerow h1 + { + margin-bottom: .2em + } + +table.bannerparthead, table.bannertitle /* General values for the Running Head tables */ + { + position: relative; + left: 0px; + top: 0px; + padding: 0px 0px 0px 0px; + margin: 0px 0px 0px 0px; + width: 100%; + height: 21px; + border-collapse: collapse; + border-style: solid; + border-width: 0px; + background-color: #99ccff; + font-size: 100%; + } +table.bannerparthead td /* General Values for cells in the top row of running head */ + { + margin: 0px 0px 0px 0px; + padding: 2px 0px 0px 4px; + vertical-align: middle; + border-width: 0px; + border-style: solid; + border-color: #999999; + background: transparent; + font-style: italic; + font-weight: normal; + } +table.bannerparthead td.product /* Values for top right cell in running head */ + { /* Allows for a second text block in the running head */ + text-align: right; + padding: 2px 5px 0px 5px; + } +table.bannertitle td /* General Values for cells in the bottom row of running head */ + { + margin: 0px 0px 0px 0px; + padding: 0px 0px 0px 3px; + vertical-align: middle; + border-width: 0px 0px 1px 0px; + border-style: solid; + border-color: #999999; + background: transparent; + font-weight: bold; + } +td.button1 /* Values for button cells */ + { + width: 14px; + cursor: hand; + } + +p + { + margin: .5em 0em .5em 0em; + } +blockquote.dtBlock + { + margin: .5em 1.5em .5em 1.5em; + } +div#dtHoverText + { + color: #000066; + } +.normal + { + margin: .5em 0em .5em 0em; + } +.fineprint + { + font-size: 90%; /* 90% of 70% */ + } +.indent + { + margin: .5em 1.5em .5em 1.5em; + } +.topicstatus /* Topic Status Boilerplate class */ + { + display: block; + color: red; + } +p.label + { + margin-top: 1em; + } +p.labelproc + { + margin-top: 1em; + color: #000066; + } + +div.tablediv + { + width: 100%; /* Forces tables to have correct right margins and top spacing */ + margin-top: -.4em; + } +ol div.tablediv, ul div.tablediv, ol div.HxLinkTable, ul div.HxLinkTable + { + margin-top: 0em; /* Forces tables to have correct right margins and top spacing */ + } +table.dtTABLE + { + width: 100%; /* Forces tables to have correct right margin */ + margin-top: .6em; + margin-bottom: .3em; + border-width: 1px 1px 0px 0px; + border-style: solid; + border-color: #999999; + background-color: #999999; + font-size: 100%; /* Text in Table is same size as text outside table */ + } +table.dtTABLE th, table.dtTABLE td + { + border-style: solid; /* Creates the cell border and color */ + border-width: 0px 0px 1px 1px; + border-style: solid; + border-color: #999999; + padding: 4px 6px; + text-align: left; + } +table.dtTABLE th + { + background: #cccccc; /* Creates the shaded table header row */ + vertical-align: bottom; + } +table.dtTABLE td + { + background: #ffffff; + vertical-align: top; + } + +MSHelp\:ktable + { + disambiguator: span; + separator:  | + prefix: | + postfix:   + filterString: ; + } + +div.HxLinkTable + { + width: auto; /* Forces tables to have correct right margins and top spacing */ + margin-top: -.4em; + visibility: visible; + } +ol div.HxLinkTable, ul div.HxLinkTable + { + margin-top: 0em; /* Forces tables to have correct right margins and top spacing */ + } +table.HxLinkTable /* Keep in sync with general table settings below */ + { + width: auto; + margin-top: 1.5em; + margin-bottom: .3em; + margin-left: -1em; + border-width: 1px 1px 0px 0px; + border-style: solid; + border-color: #999999; + background-color: #999999; + font-size: 100%; /* Text in Table is same size as text outside table */ + behavior:url(hxlinktable.htc); /* Attach the behavior to link elements. */ + } +table.HxLinkTable th, table.HxLinkTable td /* Keep in sync with general table settings below */ + { + border-style: solid; /* Creates the cell border and color */ + border-width: 0px 0px 1px 1px; + border-style: solid; + border-color: #999999; + padding: 4px 6px; + text-align: left; + } +table.HxLinkTable th /* Keep in sync with general table settings below */ + { + background: #cccccc; /* Creates the shaded table header row */ + vertical-align: bottom; + } +table.HxLinkTable td /* Keep in sync with general table settings below */ + { + background: #ffffff; + vertical-align: top; + } + +pre, div.syntax + { + margin-top: .5em; + margin-bottom: .5em; + } +pre, code, .code, div.syntax + { + font: 100% Monospace, Courier New, Courier; /* This is 100% of 70% */ + color: #000066; + } +pre b, code b + { + letter-spacing: .1em; /* opens kerning on bold in Syntax/Code */ + } +pre.syntax, div.syntax + { + background: #cccccc; + padding: 4px 8px; + cursor: text; + margin-top: 1em; + margin-bottom: 1em; + color: #000000; + border-width: 1px; + border-style: solid; + border-color: #999999; +/* ------------------------------------- */ +/* BEGIN changes to dtue.css conventions */ + font-weight: bolder; + letter-spacing: .1em; + } +.syntax span.lang + { + margin: 0; + font-weight: normal; + } +.syntax span.meta + { + margin: 0; + font-weight: normal; + font-style: italic; + } +.syntax a + { + margin: 0; + font-weight: normal; + } +/* END changes to dtue.css conventions */ +/* ----------------------------------- */ + +.syntax div + { + padding-left: 24px; + text-indent: -24px; + } + +.syntax .attribute + { + font-weight: normal; + } +div.footer + { + font-style: italic; + } +div.footer hr + { + color: #999999; + height: 1px; + } + +ol, ul + { + margin: .5em 0em 0em 4em; + } +li + { + margin-bottom: .5em; + } +ul p, ol p, dl p + { + margin-left: 0em; + } +ul p.label, ol p.label + { + margin-top: .5em; + } + +dl + { + margin-top: 0em; + padding-left: 1px; /* Prevents italic-letter descenders from being cut off */ + } +dd + { + margin-bottom: 0em; + margin-left: 1.5em; + } +dt + { + margin-top: .5em; + } + +a:link + { + color: #0000ff; + } +a:visited + { + color: #0000ff; + } +a:hover + { + color: #3366ff; + } + +img + { + border: none; + } + +/* Not in dtue.css. Used by NDoc's "ShowMissing..." options. */ +.missing + { + color: Red; + font-weight: bold; + } diff --git a/data/resources/css/SharpDevelopStandard.css b/data/resources/css/SharpDevelopStandard.css new file mode 100644 index 0000000000..2c089bf2a2 --- /dev/null +++ b/data/resources/css/SharpDevelopStandard.css @@ -0,0 +1,45 @@ +body /* This body tag requires the use of one of the sets of banner and/or text div ids */ + { + margin: 0px 0px 0px 0px; + padding: 0px 0px 0px 0px; + background: #ffffff; + color: #000000; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 70%; + width: 100%; + } + +table + { + margin: 0px 0px 0px 0px; + padding: 0px 0px 0px 0px; + background: #ffffff; + color: #000000; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 100%; + } + +h1, h2, h3, h4 + { + font-family: Verdana, Arial, Helvetica, sans-serif; + margin-bottom: .4em; + margin-top: 1em; + font-weight: bold; + } +h1 + { + font-size: 150%; + margin-top: 0em; + } +h2 + { + font-size: 130%; + } +h3 + { + font-size: 115%; + } +h4 + { + font-size: 100%; + } diff --git a/data/resources/filetypes/Filetypes.xml b/data/resources/filetypes/Filetypes.xml new file mode 100644 index 0000000000..2738936b8c --- /dev/null +++ b/data/resources/filetypes/Filetypes.xml @@ -0,0 +1,12 @@ + + + ${res:ICSharpCode.FiletypeRegisterer.SharpDevelopCombineFileAssozisation} + ${res:ICSharpCode.FiletypeRegisterer.SharpDevelopProjectFileAssozisation} + ${res:ICSharpCode.FiletypeRegisterer.CSharpSourceFileAssozisation} + ${res:ICSharpCode.FiletypeRegisterer.VBNetSourceFileAssozisation} + ${res:ICSharpCode.FiletypeRegisterer.JavaSourceFileAssozisation} + ${res:ICSharpCode.FiletypeRegisterer.XMLFormFileAssozisation} + ${res:ICSharpCode.FiletypeRegisterer.ResXResourceFilesFileAssozisation} + ${res:ICSharpCode.FiletypeRegisterer.BinaryResourceFilesFileAssozisation} + ${res:ICSharpCode.FiletypeRegisterer.XmlFileAssozisation} + diff --git a/data/resources/filetypes/c.ico b/data/resources/filetypes/c.ico new file mode 100644 index 0000000000000000000000000000000000000000..2389e7bd2f08166effea43b195241a3c3c403cb0 GIT binary patch literal 4710 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 literal 0 HcmV?d00001 diff --git a/data/resources/filetypes/cs.ico b/data/resources/filetypes/cs.ico new file mode 100644 index 0000000000000000000000000000000000000000..2389e7bd2f08166effea43b195241a3c3c403cb0 GIT binary patch literal 4710 zcmeH~KWJN56o-#ql)Tt+>`0lMrCt;=WU(_l^$?0}4D#Z5_YevOgHhr6Pb+B%sfJ*I zhk%!mp_C#|UV^g}5sVGRM2qMUJQy272g{ON6*<)9_B;1IC6XgIX&We%oagiIJMZ`1 zbMHI4(tQ>QNm#C2xgu&eLLy(#2BCa;USx)QeSNmT8Tbf z^Qq;O5Dj54G#^@E!p||vO+P?MFM6#%+PJ5imWV8+9G~G1L z*Lr$XAF2<>do(s?EUs}aTo|HF*9s2{o=7HRQfUU!{&UBEd&~{8W->Ylx>Aq7<>%mC zyytYCC>}OMzIOKD!2|ou+bb)weea&E;D+m4!1r$5l5N^;TCLj(ZJKxmH*lZqQw2U% z;Qw5K(51Jg&lz&w*rgy2`Q|j@2H?l8>*|eA$k#hur^|KhEvpk;=<2zwcWm5grS6W) zL5zOc?e28CU0)Bo&czNV+|lV=^7Dt!haKmF6XusMn2#O*T*$G%cW>q!@_+t<$kYct`D_$w1!M1UlX{HlbyK`i zNSTv(%@~HLqd$zNOl^ahd>$Kcrtnq4jM*{ja~j9Lj+?@UX7F@_cJFVH?}YeRi;bns z@qO)oZ06E_Y%*gS*TJ!rG1>bCVqdng?eEJP8{0o^ar^ns=_jJ$iO9Ks>$~L0|Anj0 z7%tv}e};dKr*LzFIrQN}ct|dCW*LWV{o3??%3R@#@V}jN=hUf@9qB75F{)BK#)&I=p7jK`%ouKusyvlqSs zzXxB0--KU>&%x*5m*E%Sr{G872Xw8#8+Ze6;0?TiXF@wn=ouf^BR;MKAJ_P}NCkcm zz6iewzYd>+KV$jGKKvH^Dts0`0Y3?U#_}O=QP$v>;HTk-;bZV;6{u+T;kV#d;j{2m z+DyW?FHq4`;P>E*@SE`K@D%5a0u?F58oq>2U+ncY7{8nyjuN!)2shyQST#vk`eCbg3iXbD zcz76$a>o1{Is6Pk|CGaVP%0fX)W#6Lo?J{tZhn*0E>kdH5pQDzb?AEOA z)#oFJ$u7;mm`dt0z^okT-fZNs%R!&t1!$5x{q=j*o1LH43C!*SSUvjs4{MF}Usl=k zW_OdjzFv!z%6@u_xT;41x*B?mELK18qTcLc(7(AiTfFu^@D8H$PM|j>X9PEDfoOC# c8nMt3_beb77T&Ki$-gL zq(d635WHYY5?!JkN-6Tmm*8BA3Be9U#21l6@S#|c^dQwr;#d+5O#d^xl0Rxg3x)QO zw|YDK=Kbc)o42xNOyr|h(lm{vobeHTiPkgen?pp`(AU@J`hR0Y&kjpl(nLSC6aCzQ zad?(QA5_MZvZU_&-BLvOP%7m%xZ{zQmX^>;hfp69LOwxp$u4=@D>GaQkpr)&qOGOV zY1uaHw2_ZXJD%o_Y&SVqoHdhFw)O3;s2X=CDLDK*nXOUK!qNi!= zU4i2#*tY*@*RgKR-_`W9j`r5Wtdkw_;FV`bRN0%B9DYee#U*K5 zPBaR>mJ~)(+H};oY#E!YkG=TReTgTlf=jpZZyNd4TeX^~J@M=nNj_PvIjhQVSzjC< zmR)HTzir64c-;7YXj5F@l>T-jSd^?gNlNE6}V^!KSPJN~>veM?*fa#8toe|lLa=Z4O zY+cj=aJfNK+~L`59XZutK)N%+Ndgcx5l_huez%SZP@<~Dx8G0AbvNHv&2?|vDTTWy z0rxaO^p2=yr()8UU!hBTRQ5~7(W0r6YpCpR#M#S9ANtzh?}mN^{T!NviZevi2fYCG zQ9JHLsaDmvH}{WAJ*P-s@T=SQgFJUFtu3juf;@kz^A_CdxTOwY>IPd-^x*1woU`f`%3a1#{q}&aDwmKO`EzO*Aq^G&o9yBKQ^X^WYuuQ{czIUV#pSKLrl zuY)guUk1MjUPjM>o&!A%dK~l!=t0CUf?okY58eSk1%3?t74XC0&w-DC4}$LjkGKm9 z;Ag>4f*%4O1W(}iRtHrpf?okY58eSk1%3?t74XC0&!L(TR5OTb_JFT|Uk6_RzYKm6 zd=7jL{2cgc@Z;b|zz@pr3U~otfEVBecmW;>ts$X@cwM*gx~A~DMn{P%;Mc(yz%PSe z1fK(cz}JV0;8(!UgLlABfgb~Zz}E+H3$y@!7W^dmA@D))2NkFwir`nk&x3csqtapw z{Qdn7`%W^@_&lxjK zY?~&;=G-<-Ad+zXCPSZ}bE~9d4sbRg1-O3Z5Ac}Zw&ZY=mr7PFV3#>-j%R+q8DI%_ z`UDG<%O(;vI~wsj822-a>4+|c$KYiW^X5klY@}@mu!J(R%QmyTg>J8p1!A$7ZpBJg zN32vb&6rHTIo`tDwryJ+d6hZp#BILYZwGW&N;bEV125Y<#s?A`Cj06lW9N~iN)yFu z=1+kH#{|(&5{ab77}rg`6tl}_bAFykZ20x?fSe)xF-yc)DZtApke7dqGrW@DBVn6; zt@Z0Xft6b3wx41qLVtQT!g;@Dg#g%ikElU&{S@FAKf3_G*545t(B%$2DFfJyNg8lHt+k@AMW&rA{ejfp@^yz-V@w!JpTavnvAbU zLYf3nB3V+%69B;ib^VRM zywL~`Xd{fm4QN_Kj>RhUH@n=_=||sAd9!mg{yzWW-w_<~xBPo#x0|-!?iDZd|NNZt EC&?`@-2eap literal 0 HcmV?d00001 diff --git a/data/resources/filetypes/prjx.ico b/data/resources/filetypes/prjx.ico new file mode 100644 index 0000000000000000000000000000000000000000..7b3b17293f5e830243ca9a950098e866ed8a36f3 GIT binary patch literal 8854 zcmeI0zi(7W5Xa{Z{DXTw>@#4DG5GugVkdz_x_`i;$RA({DWV7k(kYTr8j3?g!dDRc z3MxZHtv3dqjR=Eas1h{L?E^ESmmbS&<)d%B!`=Z~Y?Q{>XtEwVAQmtA;O;?^je@?4{&^;1{+N1ENLsb2>T1_?jV6?5& zYISW_;Ood&;8!Y3j(2U6->KJhyb^}BZQ45WaNG11Uvac$n#%3lb*WeGZvEZ-9o%wx z`RDJYy2NB!h}nmfy>TL#(7a+LXnA>AnvDjfOesl2OSw!bNwY*tX~LIEC1=?{SN#q{ z+NPE=r9>fa*oLfnh)q~($lTnVJb3Ux%Gi_}O|Y9%#-`kCN)wDG?a0W8TaUMI-^%OP zuVs9ETq>1{yn6LY-n@AuPo6xHsi`TqUe~W*mtP+}l9w-E%GIk^rHo%!u3SmH(II;n zfx`%N8-d{RH|4A{=0V5Xix-`Ic2?ygQx~Bx=7I~;?oFnq@_G1~0DZOt zrF?#R3cfX;p%#OIQ8_a^x^%3bAFeV^PP%=G$riV!vg3bZ5k#O83SzVxMGN1z*1Fek998zAZ_Eu75_2iV|H z=S=5FcaNUw9O<0sT5G3a`XDNUPrakXtG=-vUFcS3>t7^p1_U~ABXhW)9_vES_$yHWE zyB=z%D*ct)v~XmTl?wdr9jDF6&d#>uopv3Q`idtTcF6_$HJt&fEUr7#&*Yp!#5Eg;YJd_tNUdYDAhHP$b%Hzk6Wo>Ou z_aI?|k!R1I$^HBH-T%g&J9p&i)2Fh!x+)JJJ`~NliMQOkbxRf(7v;u{8*=U1HCb3# zILyIQ*5q*LFan=l1SY2@p~7@0#|oD0pY1F^1qG?{2pfn(ntg69GTBVd$JY5Lf?_Zc`0`!spin3T=YsRWd0*~cyr9^~hcm$lD!x3n z$9i};I1^-oabNE2#}s=Y$Ob2ZK@@zsvv=6Jyi)+dm)rb`ecUOW4n`C9&hH?X%bCJp zFp{vxI8b>@;iPYmU(RnQM_~XLz4>!FH$RoyE5bl96ERQ~?L>tNNV@j!8-F$(>C$Mnz0Mi{*&gWQm2^2{*$|=8Zzj=7A#q`Q8zJ({l|gGZcm$v&mg&YH!+F*N10R` zmSmgS`pooB{P-iGgCXBZj7d!BgKR{fte%>@-s*1f(ew!@KPHF_oVx|C!g8sgwu!pI z-^c%!-^9 zM*Jz_x9A2RTb~j!;fj}-f(sq`TBUjoPQM5V6qR;K$C#F-hPvOZyaD zQM>U!jz$d5r_zoePhrb#3(XSm@4vl%?0=$TQopvhuqn85ztjKs#Yf+tf>k(J|IHsh zS2`eDO_bXAPX3PE z;bi;w!;e_{Y^>_DzSw%!Ciy{&ho7|khhMh#dAh}qz~d?S(TrI@_UrbE+VMX=>R6tPrPvWggz zExfbyr8FSHwa<6Y@9yGQ7ori3DT+e)DV@edw?q_%p3g@_!Gvgzy$DzVoX2L6J8T9b z6l1)@iV!fAWf_Fh{i!TD0`TK4Ui!AJ%=Cnc3lyyL0`gHBDB7+-)`spF5*jX|6ycgVFm73glOqz%PG+hNk)1bDSguBA}l04DqlT z3^f$YwR2bz{%g(!?w@<`d^w-z7f|M(i^YOOo_}rB+VRcf8(|L8lYPgjw@>!`3}3A6 k`Gw!Yf?w9pg{UEIYt=ZhFYT8_W;`{yQc52Jd2BVE_OC literal 0 HcmV?d00001 diff --git a/data/resources/filetypes/vb.ico b/data/resources/filetypes/vb.ico new file mode 100644 index 0000000000000000000000000000000000000000..b95d71ebc29d21165d7c4a1aeabb332897fdac33 GIT binary patch literal 4710 zcmeH~Pe>eB9LIm7uB&Tw-A!YwX{rdD<{0%-2qq!)j|u@VW@({Vq)0*V&@DCWA-hm8 z3#Bf2h~$!_Qc775#Y->^IBlO7BYT@|fe^*qBIEIqs=6 zedep5BDz=ULDN@}h~*Q``7cgpO#jsU8Por=%Wd}22)dak_-2YhqM6uqCPV*e`}di! zNF-7biRd{nPwMfHS|z-b<}R%h#ly~$ubhpKkIVV<=S8|uhpp@X=EeR#v9+%AR~Hf!C* zfbH$=BzdBk)Ka>&7pceAf_=t zS6yA*A&22G-*<+ix~j@qQ_C2ZZWtAnReD0&eG%{3Hu9XM+25lu->&i&Hs7Dm`90$M zk~5wDGVk83UDSS*4@=gb&rgq8`J?LD;?vpDUnrl}mtc=?4PfWb*q3MNVf{tLLRr3U z{v;kDS^m^~mt7JwU*-H;8rNp};SMcx5uvm--k7P8Z;TIcK|RwKv;Jp2n$TrJemj~T zUDFvd8kVX7_vc$%A8B7*42!(8(x2H{dr$jmjn}W-Q{x|pw6A6KUsUEYuF9C%t3I@@ z24BnMFS^wd!tB7+!#7%3Zoxu-rUY!t;HriR5AvNrIl&j3n+F3s?^EhmN z@zKM$X0s0Tx@%#1K~g_{Yp%b{^%jV^+|p}{>;W~A)DtCo4H8c&nO#*f5mz#@sHA63 zi7y7M+vKuH@RrEX6_LJxNN2yq6Yxv$Gw@OP0K6Y|fYuA&4c`IpgKvf>@9Zr61pEkm z54;c7T$V z58a^;p6a&@N@7n_!#^od=P#Jz7M`rKO*o7UcoDP1+U4~_(k|R_!#^FkB=nam*8jMqwoQEKl}lY4|(G<3qJur z0^bAggFmQ1ag~5yf}eqp!c%GGhc92CxJtpV!pGqk;pgBf&H)9AQ;1pG1Z{-I8w;M| z=vJmcj~+dewY4?5fB(MRy?a+~-@Yw3Z{CzxEGE~kU6aYlNzwlw1cN~t9UYaSp&_|& z;ezz_^~veer=_#AQ;r`$E-fuB($LVr6QRwuSKcgDi%-?Qo5-u`_jYmYJLLY;VTX@(+Q%OyaOo=iG(w!M9Lr!+tDr5TFiOd|uGV_0|3uK#>p&l*XAOEy|_(OiYoxy|i$=ASQ5GFcF9&M)cQ zDbP_jHy`F09lcYmC#R5@zTB8trZy$qM{hC}Z literal 0 HcmV?d00001 diff --git a/data/resources/filetypes/xfrm.ico b/data/resources/filetypes/xfrm.ico new file mode 100644 index 0000000000000000000000000000000000000000..340f9f7a7d423fb27b35badd90e73d21db7db978 GIT binary patch literal 3310 zcmc(hKTI1}9LInBkw6GxPMKh-g=$(=UGUJ2gdwWH6ANMMU}Y*&L}e9-Tg9FN>VPE= zj8RIfsxn=?AXplUrnVFzCQlI)NT>_=0LNzt_d4$4AK?F^cQLL958$8R5Aa0eKJV4{C&_Mea68^1HPgF0Nuc+( z|3tqJa{D>4-~5J_bl(FY<~3km45lMiV!v1N>&ur?w3TEJl<&%;l9#ZYc?6;Iyar zMdI5c(KV4sOe8!l#Y6Z4{04jqJ_bJvJA+TbkHe3_hv0|c$(zl>ufos4Pr`>_&6^5d z;00dbWm*p53-BB8Dfk%tEc^`olPsG<+OB3Lk+F z!z*|NuizEDf>-dm?bEhtYqS_`+VD2~0elfY55EPkvuB{w&~fM}bObs~{zLcz{04jq zJ_bJvKLbAnKMp?zAA%o(CvP?jzY0GGKM5a#7x?DtP_;w&0{jMi3O)uu3qJ!t1wT$T z$EaqAY7W8M@CWck_&od;dY zfZu>m!Bc593*WjxMPU9>Uud=eycQ_7HzB6q|{^=S~s!*<+#yGMmM9yvczhwTRMk3{?fJg+DPRa?@rQ~ z-qU^aJ5|>%E-o({$A8@X_s+}4-t|?S#_{eXmesHVv%XHBot>Bayb{*O`{Ygw^JQ@F zPv3e)E7-Aab-S%wmG@WI*H<2KTQ|SQA|7!|uSz1(T}S|!41T>_WqSGXmqg+3!nMfN z@%5!wU$ed*3TRdO`}^1b%D?8X2MNUSjsKumU*3NDbf9|xK=k7ipI*8`zxT5X{P0XJ zkk5U(b#iK1r?09@OHaQW=zk{8abJ&rex2Srez&mTT;#U9yE;$FU$V{q^3|`ju(0r| z3Sb+#+^ip$zW?^mSJm?}MK0OpTe@YPluA9PC!Sns9&c7*x{GULdTwpC=T`@qp>&hJ jh29{y(EX!Z<@Y6TIe&fW?)sX)*cEe`|FZw{|CE0L7B~0O literal 0 HcmV?d00001 diff --git a/data/resources/filetypes/xml.ico b/data/resources/filetypes/xml.ico new file mode 100644 index 0000000000000000000000000000000000000000..e5d84f07d12dc3c781f3b991ffcdadca8c49ed85 GIT binary patch literal 3310 zcmc(hKTI1}9LIkIB&-OLoS4W`D~eH6Wx+!?(kO}&@B$04b@0$3RHT(#?6_6V>X4u+ z!jgxKQA(?-GLshsOR;EbOHst+DPl4b>SBBt$2JM%_4D5O9~eidL;E}b-n)0-&-=aK z{qEg?NRRZ&<;#~v+w~ri&*;5gcl`GSkuSLB^=eh*caO;3J~+-b;l+D|3s~B;XEiYq zeiDnh9WAGlPN(U$pv+H{(q}k_zNDMFc^F_$tN#*v@R6}yzN2i%Q=QzpF?rANe5>a3 zljW}&KiJb_Wmmq^x(O@d_IAweBjQ=q*2q`td7rbVUa?-h->s9Ed$@%+>J+1&3VaE;RI7-|cIy@uG6>-o7g0#Et&sl6w03{?$98JZ2nI>c`j1%hyCX4SnIpt508g z>Uun^B2QljUV3VFGk$n+dE}m|HpbO(>N(!Nj33|B-*fI-lbFu;QuYNP%1@j#MF`ohRVW@u{xZu23^6QHil5>=#@=BI+ zO6D?3#@Ceil5pA++al3*k>E3tKuE+tCAl5=Ec^<596kg;3pmR?!u#Nd;fb3{ z!7stj!H>iHV9l2bUf=~@;AKj7;Ir^6@NxJM{4D%5{Df@F82l)_4}KWlfzQL|;4|=R z@JaY2d;&fSAA}FU`{5P5f>-bgUcoDPeQa~Ab3Ee+aZDNBfzQL|;4|=R@H%=DIsqMp z4nhZ@{lwpa&%&?3$KgZpv+&dK6Yyj3qwqfXVR+)EQt(UgbMWKvK6rsYT^*{n1D}Oo zfsez7;Ai2d;V0n7sOBiu^ij=Wy}{t~@HzMl{2F``J_(-bg zUcr;lHVLisxSsL2LOiaiDc&3SJbVs51HT5JgzvI_WCuPAzXBhJ55dpEciBF~%}EM= z34RWK9Nq`ttw1@o1D}OofseyeX*COfc7bxdeJPcP&%tNl*Wf8mmjdM|L<(QR=kRgd zhj%MbsZ^5P-CcR}=8bG^ZOP{5rmU{6N-~+0=g*%@B9V~Cj~`1k8kPC^c?kxCGBYzH zfj~fR-n=P(zh6d1M&!zsD>67Z$c_-HbTK2+ye*z-hYh__ILnIX*R4XKT04B_+IwvT zY@2Uc1&~wLt{1Gg7c148YllSYoKK9C);`~|N~NKpgR(Il>hyfe*ogqA=I@tE2jz?P zN_LrlB8QXnb$o8JEy+&Zs=PlsK0c~v(W%$}vek(Wy(YHZm$gNXO@wy6Tw{6p;TJpm zSN2%ssBrwQz5e}zTp1V`SpGBf(zbN~skY7kptCQpKYTdYHwYm5@kyIrJVGD(*#*9T zB!|ccZMwC$Z&~{rwMgXQH-iI@q*}Px-@d*MZx!AyEL0EE>wUc!_K9C~TKmiBR&ilr zVWS4%7`c2}FBHGK|Hnq{piGgAPPs$3ti58fe}AtoS5D7&SJCa^v9adD->Jd krP86Fkk8QDXY+n`%x?=$5}kT8b(3P}>)puw|NlSbAH>Bs$p8QV literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/EmptyFile.xcf b/data/resources/image/BitmapResources/BitmapResources-data/EmptyFile.xcf new file mode 100644 index 0000000000000000000000000000000000000000..1fa1709732db2ecf96a9e2ae03f002d8dfc28eb9 GIT binary patch literal 1421 zcmcJMUr1AN6vywKGB+zU`t!Vp9^8YW1@_Qee;%cmUc+?W%^P#G-I?OrP| z2udu6A#=tM5&{E3g(;SZ|FO`@KiBK#+P!YOzs}k2jY;;{fwS{D-*e8rXXiTD+B!?4 z&2F)?PKE+2)ExOJI8DRPF>up`c8Wp=I}V-;o&$bTV*|t!(0>YIp#vUU%+^*qm|};A ztpKDgFzetPAF)0SpsFaXK`$bX0O!9AHaat5XnVxV9LV*x!4V@Fp z1uHKIbD=q&FSrzng)Wu}LI|^vl`H41d@C=M34Ch_9u1Fxe>m&FXCeKsht)scL5J0A zutH7;E&`_S2#3w-$w<1EGl;p`(PC^7xj5lTaxWg+S)b%O<4;sVlWp}^bc(zBye< z;Ch&&IsS1n&1*~Hfag&H<+Y{x&*7UbijE_$2RoWNGVHv!ooN^u{&3^&TDlkTea-E! zIEEOoH_hwluWp#pRDV}h{jh0Rt?-(?)HU^^-{=>83K`05xi#k-PzF_EAn`qA#rL*% zAO#yI_LSI?kM{9>NkV|5;!NO9Pa=a`Kh~OGDQOk(ThogeHXyFtdK%Snk!#)7)Wuo% z!_7>?;_Qs`{`Yh*;1|}nierdV_U5oDtlApP4b*itvS3^ggDJ9|-ZCQn3@#+sRgz1T zSa554H3g*Z2I*jGIZ5(JGBBIK&^NV*;oX>mq34r~p?fHf;dLm6;bmYKLuYRkLh9KY dVj`;0W$vQd%_LPwL7JKegmzdG`0W$ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/ErrorReport.png b/data/resources/image/BitmapResources/BitmapResources-data/ErrorReport.png new file mode 100644 index 0000000000000000000000000000000000000000..6b53f1117488ad39d105eb5c5d0c3d3519abaa53 GIT binary patch literal 62438 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%0ARx_@tBgr)t;XLT3*FcTopVabApc1+_CsO`-|u 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 FO#qoGgXsVO literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.AdjustColor.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.AdjustColor.png new file mode 100644 index 0000000000000000000000000000000000000000..e33dc03e9dc13de0802946d5d04fc3b13dadc5aa GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*f$ty)Gwzs}{T3)#=IP=XV&Q)^$dik~kmK}a+n>4af-5&?Y}_umgf&|zxY5kx zS5 zTE*|KnW}#H?hA7{flFK5m&B*NNC+};s=MX`B7#hY-i ziB*LUmp?n9up@~h@=V*;8y;q|!h%kHJcTcgTnt%uX{Laz%(H~1jLA1U67w!8UTmzA hUUFQ-C}CS2=>%e|G=? literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.BoldText.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.BoldText.png new file mode 100644 index 0000000000000000000000000000000000000000..896e286d237f36e3efe60de280e8c6fedb3e5e10 GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*f$ty)Gwzs}{T3*w>*?YcV&R{hATjNM{e|!!27&Y3%ovt2&X({y%r>3z#Y01( jLk(Il8&)((sdX{DVX-oNIL)*3)YS-ll10LGj9X{3`>3YdqB% z>>={)Z~B>aZ>XcA+u!pSK_30j)MjSuP}ZYlj*o1iXBpmAhIg0Yy@Yu#+o}lg8f@k7d^01YLnUByrM^<@ z)|?dJ_A=J)AvM1S^KQ<RsOJ27YtDI<+v^Ak zF(g8?mvVcDFhu*p0g2L@s?MmI>Qr;l8O*3Er`2_Yg@}nT_jbn+EA`$GP|o9F+~ z#=aehf@_wEkl7qb8`tV)%Fb2t4K6BSP32I7eA1ZUph2TxYM9ER8XIX1=_LJqYdWDx znuNkA1#2pSoiO9sWExdiOO4(E?$9hw}R{f|pnbb`tf^0@>L%;#tgLEF-bt`_Nicag*3(kIMva5kD|mUDwQ z#x!2$%E+KJXs%wrd5+@rl?$mAm}|4&&*lm%3%{x9(b3t3UnYM}Te-Qf29iMX^KYjo zZ?E9jb61Go+J(6v7xEhy=9sFU{(+d^yFSc~k@WQV`Q+-20p^`f{&aB|nx6SaW8TBJ zKGd1_+=v-v-mAlD=Dn)TZSocwCLDdQje}?CN#^Z&O&H8u_w1>PGVg(iNAj2x(o-)| zoE~V7e37_0d3@LNWAk6W^Y+t*PaHg|xaxf$oIO;f#7RHJRa^CJulh!PKlAp5A3Hkm zZiCKLW5yHDoQ-!j^l>8+t@E_TNA}b*ZzJxh>q9gaJHR~6zW3?$6K}omb}RGF^cl=M z6V;iwu;^B;5&1Bp6dWiR6zKKK^o=MeG_K&I<6-s3;X;AmmlZRx3zi(k4&?L}AzE}Q zS(z|>L<$)qQ&1Qk=Kc{zah|03$k0p$nVRbn;md%obxD{JWDe8GG8KcaC`shq5k8L; H_=x=p;T-Z7 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.BrowserAfter.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.BrowserAfter.png new file mode 100644 index 0000000000000000000000000000000000000000..c1543df939747cb678c6056912ef349e51791c31 GIT binary patch literal 879 zcmV-#1CacQP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;LNtDV!tnO{ z1BM@ezrZc|{QDQfiH9FPtn}XQXdq^A0U&_j1{B^X>=*veS|H293%2p@hZA6NFZoP{ zZ4alTc=6}ozYIsO|9EgL@r)rr05O66{Oy6lndb)!g#Q0!c=YK45T6GtOw*dc;3b#A zP+_zR#Q-*DCI(T#?+OdgE=T|fAg}=o9xh1GF2{(aBz_4j)eo1T2V$*}Da#Q7jY z$_-aCure|+eE;`{;oYB~3^!h0F#rf4NHqQhqW`}cRQXL9^7ZE8jB{BY4TfUF`Cz!wK>2ikV%XvWCe=~gk`8`{z5ur@uhkpZ;dB60th~5I|r9>}4Ge2r}p#c=7cs zQ1S;jkp2Oahlfl&TyyD#42Ji>fCI^W1ky~GxIffI);9tK5IiA0c>h4bWuC=(B`sEg z|1AH(fn*`-#vsNa!!YySB!*wWH1h55ABG=5@jts57-sv=PmK3WSO5?}D0$)HlM4oE zE0gEH;kjkNE5`~p1Z3l{e}932_M73)IIH{oj{`30^$Z7!s3;>8(Z4Wl5(yssj002ovPDHLk FV1l7|kS72D literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.BrowserBefore.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.BrowserBefore.png new file mode 100644 index 0000000000000000000000000000000000000000..c165b435ed0d6c51567131e119859e2fd0ca5883 GIT binary patch literal 923 zcmV;M17!S(P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ<5lKWrRCwBA{Qv(y10?_;fLPE49(;eGu;A%}goAGn z+B5uuh#7JlT=0|j-{>IjZ~$FBKmakqT=3z~2Z6>rjrBLbTrcq8w`CAz;$V3F{T{=+ zA5Rz_eYwwY_0uZ`K^C0@9cDd+1|kL*U5-g+dT$tA!~*p z#bSnSkES#1f4UTI$j`rj8IE56@!(kE8AAaMfe!!y#Ps0X1BEls4;Bdh|I6^`(*+5X`#m{WaObnue-xU^~U626c0|XG$f`m1O2>fNe}I~Q16{fFUO&T^zrPu7yu4xn5(fw%7KXnJ41a-|g*l{9 zG=qSnbTmf1&$!*m@a^9p1`a-EFdra*SQvf+NiGJ4w?CdSEV)$+H{{!&PYm0iECjQ^ z12y~yLWmcBf?e|U)o-vIKmf5A2pC*=`*Vi_FFPB%ZR&KmPq?_yyGb8R!LZX4wZI0{{Yu$zRcbu^AjLFd4WuU~^-!Xjq`v>TSKMa3%F)+;bpPv}-nXmw406+l2^TNd^7Yx!?CeMGv zbIX8NjumVO$i`nle}i1`=kb3A-YWthdII|kVVXezAb=P^1|Z`Fhvz4l)Eb`W%w+n{ xp2GB>C63|0az@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;P)S5VRCwBA{Qv(y10?_;fLK7p)B~UYe}46fpyD^z zt}(P!c?)u|F@1oE0R#}(fPa7gGE{^qg9ZKq+5i6igVTTh{AKw0=O4qfw?7#cUt?fc zyzBn{ST_Yn4mM`6Apily1S0LkaWSxR@-lGp@G~&6 z^MEbb^+nKN!KR!0VJ-j&Ag}@dej^Nk0TAoQZ=j2SjPHLK82Y7VEFWlf#LJp4-7xAU0~qm<7V*p^kuL$^kw)D z^coBR1Q5gpzkY!=g7N7C3>+1K4BR=64F8`!U=S{FWRNNWvY$R+;E`iskTYXIF#sTd zz=8Pp=TBfjK?MHjJ23qBNMPXHv4BA$QV}fn-X($Io2UZAkG~K#e~}CT2q1_Te*J*E z0Ho+cc0a>E9s!7AZUKfzDg9va-+v)${{8&}Hvk}jpa%Q|D*)ktpFV({&Gh91!!L0K z2Ij9H7*r~OUib{;1LZ+31w}gy00a;d%nL9V`~~`z<>dpgv#-v%&+ytQf#Dx80)G90 zXa*bb2Vnp}06`KGFc#opplHBwd(wHhpKs*MXZZW^1H)H#0k8#-gop3~Kmb7k5gH31 z05a$gR5M5nY%5gr&%c-k00a=k1;CUDcL6jYVVYq92h#leA0&Yx8vqbMOfUmrfEg&l z!3?397#SE?m?1PPkk1HJ^A{-)0Ro5xk{A9mEb3oEbQVUA1%Lnp0M$h>b5GO?I{*Lx M07*qoM6N<$g5;_t8vp_YP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;GD$>1RCwBA{Qv(y10?_;fLK7p)B~UYe}46fpyD^z zt}(P!c?)u|F@1oE0R#}(fPa7gGE{^qg9ZKq+5i6igVTTh{AKw0=O4qfw?7#cUt?fc zyzBn{ST_Yn4mM`6Apily1S0LkaWSxR@-lGp@G~&6 z^MEbb^+nKN!KR!0VJ-j&Ag}@dej^Nk0TAoQZ=j2SjPHLK82ftq1i9kQ`ws})fq@EC2993}65h`sd#sWH|8j0$8)BWIovD zU;i)-00@TYfB!-A3k(1R5DO$P{AE}; ibtBPP7&#UI0t^5w%ocEA1TJ*|0000>)V- literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.BuildCombine.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.BuildCombine.png new file mode 100644 index 0000000000000000000000000000000000000000..2155f2fbbd62480ecae731fd6d7b7c1a8abec944 GIT binary patch literal 601 zcmV-f0;c_mP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-&q+iUBRiQr2*o@Ffrl)0fZ6;dY!!2u{j-=I0yg)5F^Mm z80T`{m&*T~|2KTQdG!XeVqD@U0!}aj1Q5ku00_X*yc_`t0znWRW^*7Vn%Y+lNAu?gk@$0@eLzIJ|lbLv=*}BR~KFUGNR8$T;~h z*hZU-!wf)m3~srHf&OM-2rM}Y=0{gS=(L8TU<3YxB!K`RfEe3X-uYh;q{Q$SYAeW} za2uii2fGC7fK!5=N<~c{C9we0M00000NkvXXu0mjfXY28W literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.BuildCurrentSelectedProject.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.BuildCurrentSelectedProject.png new file mode 100644 index 0000000000000000000000000000000000000000..e9c4dc351bcf94c4ec30db014f9d2c565b9f43d9 GIT binary patch literal 602 zcmV-g0;Tz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-&`Cr=RCwBA{Qv(y10?_;fS5pp#Rdx$Q%K1G51FhymS1kR+F^b_J)JmIks$WN{Gx$B!Riaex3~ znz8RY&QLrNaDow+T+@PcV0{1q#Kg?PhBct{I(e_-6aV_;6Q zr~Pu?mr5>mZ4F%Fzkyx=0e}Evm~r42%%A^}{rd9LUoij9>pv*sNACUx^D|pkgK2;O zVwke)P5={H{?njgG{(3hV<=;QYxnzvv6@;|F(4VVoOKuo`XLY$%#f9U_e z|4{lLg#HWT0~Mmk110|b`wP|w5I~HbtMC6W4pw0J4HWzh6a(R3e}EXs|M>?Z_7lnn z%K`D{&tDj}ZQj8!vp#|mAb^-aCV^};Nj}W*A4uC}9%ca97ardrmw`OZ^!FFTU!cx^z~}}g-@m_pF?{^^ ok%5zo7px8-fEX#w&Hw=h0I6cPo1bMT>Hq)$07*qoM6N<$f>qT5p8x;= literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.CDROM.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.CDROM.png new file mode 100644 index 0000000000000000000000000000000000000000..e8e7156467237b7b3a6e199a107012cda0424765 GIT binary patch literal 430 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*K?sZ)dz5yv0}U7Vba4!^@b8^$DAuCD|%Z3RT|6vq=W&L>3Z2u;MNAL)4V+q7{h{)8ptc37{Y)(Hnk1NO@{=h2^5CP|0xpA0+lrYoj5mU` zmWgzWF~;m?v9J}mE_E}i>UGAGcSa0F|MVVRwqV{9zxe6b^>Xr;?{e>*RnPeF%EZRT TW&e%=!;Qhy)z4*}Q$iB}@Oz)y literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.CancelIcon.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.CancelIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..2679b72338277397262f0f57c3c9854759e26fb4 GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*K?sZ)dz5yv0|m=GT^vI!{P#`@UJ<<;KZ|ry48?tpt zAEVJ$-DyEvrh2^nZg!Wc;*pu%t>ech&R|}3RIwHA{L1toK1>U2eGsWsS-%BWfCj` zLL!K|g&-Eff(Vu=EK-PW8El-x=D=co@6XJ#X(Y*qng8eCd+)!QyW5Hu?$<}JkBUe= zobNnDZgP!W!ruCmKSjFSpI=@RxiZcb$li-dG;7bo2i@AYv8!VfcarC;zeK82VdvhX z$!kHg`ulGH$ho2&^>a^1lQ^jO!+G=a;$5XwvENKy#Xrgd(Ng~w&Ogh&a=r3+R`w3Q z%Hivmc>r?WZr_l`h{%8_lS!J2M7{ruy#Mef-`@Q!L9!ngcPdXYJPf&M#iEF**0glP zCjsAsSCGYMrufhnjx_WcUDj9wV7=4S;#@S`q{2R@svrQklEK+PFuI+|mye$y;6fjeK!(3N$ts8*NZu98>^LQo4wwvV zBUqE56G<-hR0z}2qXX|m9ax|vo+A6HHj~UCS+9ds@l8LK4hlgxmG*&EcV^gh4y+S= zjaGetACNi80OCRyWEEG-WHZ=<0EKx%*55(AbEF48jxhk70LYp^i&cW%Y{NS#{*Ccw oKkqHgfB>;GILR<5PMiZTe-S6?YO7ZNKK_mxVRxbPcCNSa59|3h7XSbN literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.CloseFileIcon.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.CloseFileIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..2eb1d5ed355c25f109eeabad2281d28589c5eec7 GIT binary patch literal 1148 zcmc&yJxc>Y5SQmMKK6G-WzBqzNdTGqbnnNP#@+9>Uy#L+QM3f4%kd?R6C3@RwV)|N+Jf+ z9$nzMKtg5yXXFPY0GSR}lMu+uH9Q1Vb4&sK32%;GDL+ p*F~T}g$_0%FOSO7ih$xkK|lP5{Gj*Jct{*oN!rR4veo7C;Wvr=?{EMB literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.CommentRegion.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.CommentRegion.png new file mode 100644 index 0000000000000000000000000000000000000000..b3e1a8dca3195940b1009081a08130fc3b96f42e GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-MgqL32+R#}Etuz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;8c9S!RCwBA{Qv(y!^CYb{(t}Sl>r^Rxps{qJo>#C zzYu}H{}~v*{$gPG1EfEiHzQ zRd@fx!lg9d)lgiJ;{u2e5I|r9{s9g6{+of}$Rmgb5WhG?je(U3Vbd?5dEbE+Gy@Ho zvHRKnbY}@i31O}a009K`!cVZIu@nUV{r#Ka*B?yHAWJ~t^R=r2J(KsI2eAPH2;zcY z5HDPR19btA57NNRhN>CFj!*Jsc=3>dVaF~=%mM@u+zUT}ij)K(2HgJh8?5Q^C)5CA zWMp6v0IC5Q00RI41U29{!|#6#439oSV*=zQpp9prVGnr`BsM?*!3|*h#=xM$3K6`? z0ErQ8G3*As{D5Es1Q6VSRg0Fx1vvx+!Rg{5P~ksdz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ<9Z5t%RCwBA`2YVu0|-~uHvH$~WBM;8!}ov5!m?#B zab$e^&Vy;L?mqu*twsLl=SBPni2(!4)X`;+9v{bQz{4j` zDz@#|xvZzZ>puen!~fU_z5f6K#Bl!fy#Ib~9RD9ZI)<{}NqAT_P zP?697cqaw8+N+mWE&~W4Cf~5>jI9k4404(b43ko=7`_3e=5D#bprfk7(07TO;m&t{ z26;JthUZKo3>nkTG8l^qFtoJ$GrV|pWVx13SQJ12F@mE42(H~evhc}**0>wjpE6u| z^_?Ni(};nUos&U;laWD)=Rd>q_kS2#H~nV#dSV?zN>vU+L`^>X z=g!-~@ai`wLwT+XgD5{U!;i1u7&aVv%<%p9Zw6OG35J?@V}{=q8yO^(wWq`M0R#{e zjIny%Mut=G#TX90{m#J0&cg8T&tHbupMEg>{PvIG)Ror^Obl!cmv%2^;OAjrP*j%B zg6RVYAh;JmU`BJ#vZA`u$hJsR1`{m_1_m}ZhJ%-0G5q_@!tmhYX@pz$tfB=HK00h|hxEa0!>GM|~Gdz3qg+W??kwIRZhvDzvpA7e&ePJ-R(qll@3<3ZF zgpySM0Wmi)dQ5;g*IM@f$&P^ko66k&vjX`beCPK4ndr$IAb?O@01DQ18@DaL1EhBx zeavw08#{xViY7yXfilCo)f<*8t0<&1paFmYLJ0$8aOcv+Wk3FZVR(9MZ{+EFFBp8% z%NH1^$S0z!0|+3T2Ef4etLK;YO`FU3;>~A<%_|p1q00jV7ywPAnldYe0KEVJ002ov JPDHLkV1n^cuPy)p literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.CutIcon.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.CutIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..af459186e6baf0c2c514edd3a7d6caa073c234d5 GIT binary patch literal 672 zcmV;R0$=@!P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;7D+@wRCwBA{Qv(y10?_;fS8auC(d3C0AXwjFJHgs zu;?K?Jzkd5JfUa=Lymj-%MFk(Aivt7@iUCUUk{4K*85B0| zI9h-#zHHr|hMzxvD1hYA4FCur3>O&asBifA=}Y~~*Y6cTVj%j@-@o}fnkolC^5_Nt z1P~LtfU1)0MsX2dhJ`D)%?I(PFWfMnnc=U1fsX1zY+(ZsK#bU8p|NM~eQ_afg*P96 zZ{X+U3V8SN^M{hma7An`00`#UIXY+Q1^e&gA<{tVpQ5OqiZAb?QPL1F)i{tJ)48yLuN zT<9;dEQE^#1M$L>9|i`poEQ2FEeeqh009|vty$Y3M@0000zopr0KZaX!T&U>cv9IQL;A9|QA=x9ymw};5m4Tt5nStTwe<1ymfuYoZf#FpG1B2BJ1_tr`N%2SB z7#JA0db&7e#t z!M*2y`Qtr|CtQ~#G%zIn*qvE-NME__e*%vQ%aP+N8CAqH3*;hs6dDd3nSc4W?7o|v zd;Vvg_#od>pYLM)Q+?m_{EBq18;_&$6 z-g5A#yu$Uj@$wDtv>F(k9{ypz^~LbcgFn^_7#033)l2-RuJHG!*a}Ja9}Fx4Vf*XW z`Of$sHUFVK&;Mh>I~W*`w8&}i&yO?sQTD6huztd)hKKsz>dzi`xdP2He0zAyueRe= zJpUbkq^>yl^L+PjZn-|#KZ99vEsoCF$X>XBb&j~ L)z4*}Q$iB}*vs=~ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.DesignPanel.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.DesignPanel.png new file mode 100644 index 0000000000000000000000000000000000000000..1a6b25101f32dcaabd37e9aed32def7f3b6de0d6 GIT binary patch literal 310 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*f$ty)Gwzs}{T3)V-_yl0#KM2+WJA6N0}j`(&-`q|-QC&WH@E)S=yfp6*F(7R zIQy;2``2DxKi&|h-OAA>j za<)=9w@-mWTlAEj+Zfekjsm)tgZTgUwVJo+8Kh*J9mom@QHU$C5&P~xU zw|H?)7c*Mib#4F#JG0l0839NK^#>ZO0VM%i1_8xt23AV6GP0du>=bY3q7H&~5UeYV zTwK&8Y6Qs;VTB|JlB7v7LCTn-NQ$CpS_jQAIv6$(VA()0$Oa=)5aMt+$c4ik7mjdT zB*O9bJe~{i65^32@Vp@Kf&>Ls6GcH(G*M4fEQx|7iLxxoP=PKhlqIMls46h3!30JS zA_P$kD+nqIQdFqKu*&4A3Q}XSXadJHoJgn|=g=_50ON#=H60LZ2x|(~RE(n-$Mgcm zsh0otk8j}N%v1=RK03SR>G3@_P&Jsl{HD48TF5v$ z>;E}BWv0d|^G{cnJ1rPH1)Ju0)#LS%zxI#kl$O0eSlW3ex%;hU0o|#$KN8MvP5Yg5 zz2cPAYcjlO-_m+yxNy?;%n+a0(RXyIZ2tK7g2Lolug@&?cbuTy-PG-S8#A5L-Hzq1 zh+#BtjIW&UTikGYZfRuiNi<;lj6yTc;Rns$DWYO1bDj0y|8}9|u(We!+ojf;$@O=e zZ^nD}?J~8*lGFa@vtM5ZLkm?ScRfE=sW0rrSdpjcN&BY(Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGf5C8xR5CN?ty>$Qp0|QA!K~y+TWm9`h&0!e+ozivG zsLnBC%}On6!%*%H#!0uy(S=jFF0$1U#W>bEkzy1U`NND;%ObbbbQz~rvmqJ9j5(DV zims${I&~h;@6aFBw>^9JJ>UC0@AtmH?76R9<0omEW{{293FuIm6L!&YxVuC^Y z;Z(V4jU3pq1JG)LoE#uM9oV@O*uMQAB51y11-gCa;E`6XA7j!T90aUi4@-139w#Kg zvS<-3GiJc#>WX1^cMN-bqb4*I@b^c*uP+)sJ#k*E-eom0Y>U?X@$&-$15u^X;M32a zs7y{qry$@f@r}5mQlYW674<18=#k0rPAWydd=;z)@1vCHnLQg8FE4yz|6L{%dItwl z#TMEqzP@)KzW4S*Tt5;M(LQ-HUbwhG$J=EbKcW%d%=JT?hlkav+^tAH4k1g@lIMAhDJmwAllSrW}<<7 zgN+TI@D_I&i)gkbBnU#~;)ST-rjB?fk>EmnJUaXOtl|!x4raz*Y^j6;tfomBb9BTx znnWo#L8u5;=x@^XArCKcNFDzN*36#E$vtK4A09?OhkO6nF%*e;6vq;WQjNFjuA0b5oag=wd4D%IHR+mrsCo;oB^lCnoQ%pL^Px# literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FLOPPY.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FLOPPY.png new file mode 100644 index 0000000000000000000000000000000000000000..7aba41ca2906dbf99cb3a1ae951e99c33062893e GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*K?sZ)dz5yv0|mEux;Tbd_|KhukoSlJ56k3Pm7iMm*6~I?@btFRw^D8rE9RP% z+VXKj&LLf;>zPmHyj&*nxR&vOD~F@quEtimH|ESd4AOgl@-EOk`zZgwoiBVBW?hL| znyI(+i{&S0M=#Ha1I#9COxN%-bVVdEGWfZ=wg3PC literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FindIcon.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FindIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..e2d421efe2c885715a1611ff467b57dfba7e0013 GIT binary patch literal 714 zcmV;*0yX`KP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;KuJVFRCwBA{Qv(y10?_;fLL%z0F7nbd-Q(Gr91Bu zzWn?v!N|nKz|YC{LS2?;m7ASX5hGX$0|P(+F=BH8Nb|yVSC0K*VzyAx6ldU-o{`>txW{i;$$Pj=4V!~$o-XjnDelW9Gqy%U(=qm~_{9#~ac>0!= zflW||!Ny;c;VUbr!G`VEW`NWJ1Q1pOZan!ECa)pJaOX1v!|4|c3}62-Fi40qF!1v; zF#HBOPf1st;pX$NVIZ{t0faRS-hcij#V5|o@bD`G1BVa;0}l@a13T0cg&4M6kWehH}fu# zT7Uq;41-(C8x(|5N06S*E?~!l@*#H0l07*qoM6N<$f-~PJf&c&j literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FindIcon.xcf b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FindIcon.xcf new file mode 100644 index 0000000000000000000000000000000000000000..5dbc9e002a7a3c2b444bb04c7c217ad7578fe9e7 GIT binary patch literal 1288 zcmZ{jOH30{6ozLCNQ)Y4e5_~T0v0u}a&O{7S(r%T#ue0QZ2~Q!H35SOj}RiLm8j7| zNKuhDEm15IBn{F4eIP~J(n@_LR%5g_Knu2Y=6X&aW>CDzx%d0eeVo6yca*BCYNl4M zU=*rKmVzeD1oA-$nuhKWg!p76Jc0py7$O%!1aVZrM_~Oi&{8EFD^pdKD_NPcMs*QV z6r4kg3$?nsN|sTnb!?56mFrX*wYI3BP@$A-Dm67sVQP@oC@adD;^W1swhNSGrix%| z#V%X3^UVJNx7KQ_%jGJyk}1j7f@Ixp$xKdmS*_B6dHE$4UDs+93N5SqV-R=$n@VSP zZpHh^G`c-YFdoPR-nsZx1*>M6Vw}c%#5b$0B?-THT0b@-( z3mcx54}mqX3IFGGh7z5~K-Md)6_xJHi7uedBisDcjmD;q=RC(OyBdw^KY%gXOJwC6!A*}|izE9sm%Z;dR4LzL;eot;q zx1k!pZkr8!{YiQrqVhD}G`l?04?1}wf_m<;k=DlMjzLsO-r4IQVv^wJd(Cl@F91g> zBPPk2J1`?5dq~{YW9aIg0oool``5$XzDM{2X2(c;{mtjtfCY>7`!_yD)?-m`H>hN1 zb!Ft&xtG6a1r;MNcOqOqW50M)CB_TgvUhOWLR zpc3whtMxXp8h1}zsqc@YG2eKK!2W0*rqFc@j49XeTz2R3TXenR3nvm`-y*o?KCEKz z^FnRzbr?D9Kz1dN6ZXG(MX)C5$2EaP^wwveT*XrZOQ`f^=LbDbhjZDBPCLrZH2cwM z$GOtxgxvc9E#V&PTqhNLW%%M zNNy_l2xg)<*NbF=Z-Q$ulRUz$((rDhMnbHnC?Qc3O5R9l!t3ENr-)mU!nXtG(@;tZ R*@Tr405O$pcn_n5`VHMNIokjL literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FindInFiles.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FindInFiles.png new file mode 100644 index 0000000000000000000000000000000000000000..e178ffd7bcc6f3393c0aaf40e78c459b747f56c9 GIT binary patch literal 914 zcmV;D18w|?P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ<2uVaiRCwBA{Qv(y12zB@W!!u8e#@mh?-IWJ{42r8 z#KgeQ$@W5BmS>flol+4aSP26IKmai!8^8zzAiBPxfl)y>_~;)dW(yTfaRy#VUWRXf z7#QBX_{?zU;!6hZzuzxp#uyoa3;_rrxB+KpnfwQ_|NZ;N@LeK_;X0EmLx#Tw!~0(h z47YwTFx-F1z`)DHz#zoWz;I;qbp{o_|FZ%;wbB6shy|wEIPDDFCG$7lV35}kW4QB~ zf#KeJ1_l;B1_lXnAPrRg8)%=Bt~kTZ6L-UaO49)Xhy|f}7Tka*uZ$Vg?0Fd;eq~_b z5Mp590ou$C6la2j4FiW9FT<6?{{=v50Ro5x?1dkb7#RNk#R$kZUlI6E3 zfeVOPf81cW@s5vy`)4}?Gc$7tKmfsA00NR$iVO^&7clU$3o-nB_n+bRxkn7*viuBe zqMQsM4?cSTo#E}3y9{hV6Mwv33(_JF5I`({fquXL@CpM5Cnp2PX90%)k4`dtdBnt^ zt7OW+#KFXHp4=Bq-x%1$zcIYn zTgq_h*H;F7;LGP944HG7wgJ<^D}VrE`7ddG=E%+e>;JMyh)-{6yZZk9hu;hY0W&Be oy##uH7eD|p;>ym%0)PMm0E+}4Cz_~efB*mh07*qoM6N<$g1KLeb^rhX literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FindNextIcon.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FindNextIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..f20ba4aaabadb297af82e426e597bdc7532cf17c GIT binary patch literal 647 zcmV;20(kw2P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-{YgYYRCwBA{Qv(y10?_;fS8C?7&tv}J!3lKfBp)N z{|9aza8RsLyblrw2p|TK3rNBHZ|-+6oh|oYvY!7xhz}4zjHG%&uu$+lC;xwepFjUF zylwx&2oOLl#Ap(()*KsM(iygzI_ldkTtjfQx6b87%sT} z=wrCHsVu`setrfqUIqp^Nq&Z>d<+aXk3R?u5LQoN5JpuG5I`8|;KQdM!rwV~8U6xg zL|GXaq=B@uG|(kqe)D7VE2U@!bWKf8bLDM5j+N`W7oeN6+|*qA>Mo3sG}2po;OUg&-JEY1GGC&a>$ hmzV7UDR~1RzyR}x{pGBGfzAK`002ovPDHLkV1m4K7GwYb literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.AlignBottoms.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.AlignBottoms.png new file mode 100644 index 0000000000000000000000000000000000000000..b3f75f224cdb133c613831c9a1c56efdc1f7c2cf GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-Mgq!B|fh#}EtuX)4VB=EeIgK7gHjA?z{3~02RP1%| jFpkumoTUHAh=F15-y<bP0l+XkK#>Pq< literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.AlignCenters.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.AlignCenters.png new file mode 100644 index 0000000000000000000000000000000000000000..7ed1af02eabd973af4e41652e0963fae095a952d GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-Mgq!4OXu#}Etu}GftGU+hG^s_GQtY_XoU^u||p^Y_^N8y;XimSTk#r8a-lN%kjTwbwK afT2Zy(bj8^7KsDRXYh3Ob6Mw<&;$T1a7L#9 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.AlignLefts.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.AlignLefts.png new file mode 100644 index 0000000000000000000000000000000000000000..9fa9bafedbb2c99730fa1c297727bbada61d0d09 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-Mgq!E8?##}EtuDZtSb|(Oad(tyZ53r=(9=1*N$aU32hdsuPgg&ebxsLQ0Ns*GBLDyZ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.AlignMiddles.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.AlignMiddles.png new file mode 100644 index 0000000000000000000000000000000000000000..921cccaa0315482187a4b8b425702f88622e33a5 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-Mgq!Dvqx#}EtuX)<^SHuU1BN7F6NbBHn|K&* za%}F+V4jd`SMdCRR*Kyw@q|YbagNs=HZd9qJ4z+$F?0&PWldq8FxPVvzopr0F4Jm2LJ#7 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.AlignRights.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.AlignRights.png new file mode 100644 index 0000000000000000000000000000000000000000..60946941c830eb0132163df81c4c19fc9f6e4c46 GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-Mgq!30ki#}EtuZ0;q~jyA{;*>g-yO>huj~a5 zWK59oWD9u0RCDg|OV*fwZeqt@vrcfTX-JR=ILhF3Pr*v;1eZ(Ate)QU4VM`L^%yjd mwRRdY%=Y#uV!Ugt&hY2<;Y~Mg|11L9#o+1c=d#Wzp$Pz}%uEUZ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.AlignToGrid.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.AlignToGrid.png new file mode 100644 index 0000000000000000000000000000000000000000..d2630f82459ea5d623296adbc273a9a6af83de01 GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-Mgq!8T79#}Etu7bCCtu{n-NM+DlXoyJk(6fWl;2UDAQ~p#z{H&kK%2H zu9yZHfs~yLcNt<-Mgq!3<9q#}Etui?2?BE<}$BNILCa^fI*l!vn_E=BEzMI^9&Qzx?&tIFm%N-a9czuENW+r u6JNm2wasBk7o&^1Ld?sC4CWWh1Q@=)J-lhxVOf5loeZ9?elF{r5}E)8#7!*# literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.BringToFront.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.BringToFront.png new file mode 100644 index 0000000000000000000000000000000000000000..0c374aa93ef77741c8fdf39de416f0ecc6da163c GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-Mgq!9q_L#}EtuH`kQ$8uSK}O?93*)BL2<9mhxDx{V zjBPkt86BB9ma^_)OYp7?@m+bsbKa6Aet~JqQx-A^cIBwOZhN*KXgPzYtDnm{r-UW| DD_c)% literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.CenterHorizontally.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.CenterHorizontally.png new file mode 100644 index 0000000000000000000000000000000000000000..a0ee19b2afcf0f0349d1d1f23504c6a3f69e5445 GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-Mgq!3s|o#}Etu<-Mgq!7NV~#}EtuO5Ld(2@Py-JvMIwd!MSeV zHT}dJR2&{0n9IC6!NhF(15<|C+8t$#K8hz38&1F9afs0*J`hwWBu*>fVMJty85}Sb4q9e02;wdl>h($ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.DecreaseHorizontalSpace.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.DecreaseHorizontalSpace.png new file mode 100644 index 0000000000000000000000000000000000000000..e084158c5fd239ae008826c6fc073a7b6e90ebaf GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-Mgq!9q_L#}EtuzRyEgs9vm$@UT z;Ce&kkq~=!i|3-t2Em*s7qc)%>N%J-J~B`+bz^um>&w=q33}gwmNR&|`njxgN@xNA Db-hqX literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.DecreaseVerticalSpace.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.DecreaseVerticalSpace.png new file mode 100644 index 0000000000000000000000000000000000000000..00be5bee8800d992d023117db22ea326667920df GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-Mgq!E#R*#}Etuhgn}paUNwW-P@2O z71_vP#1QUqh(}$b_Xd+tG{YmGQz3>7v&}CEi`+Zo;&+aX;l;c!TN(FDzXCde!PC{x JWt~$(69A#rPu2hc literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.EqualizeHorizontalSpace.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.EqualizeHorizontalSpace.png new file mode 100644 index 0000000000000000000000000000000000000000..23bd38642a56f9ba69156d2390bb342c6dab1a4b GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-MgqK`&1i#}EtuSjGl}g6w3}M-h9Zu6<-Mgq!5mK)#}Etu^UYcm0Z%P!#rVbZ?EqK(-V#C{cIY|D{d_4V*Ihk@dEb= zt`l4?t0WpubGul}M>`0KG8;&*NMhL7$-xja?Zh-mZu4hAdl@`k{an^LB{Ts5IY>=z literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.IncreaseHorizontalSpace.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.IncreaseHorizontalSpace.png new file mode 100644 index 0000000000000000000000000000000000000000..c1f46dea4063ce98704370e13754cc6b0e09334f GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-Mgq!8}hF#}EtuW*Dy-F zN|<#qbH;a$lg(EHpD?A&=3vz_yr+`F)@8$Bd;FJlw!wp?K${snUHx3vIVCg!04T{$ AdjJ3c literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.IncreaseVerticalSpace.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.IncreaseVerticalSpace.png new file mode 100644 index 0000000000000000000000000000000000000000..22c3ea0d628141df588085f9f25f526ea1996f16 GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-Mgq!CFrj#}Etut&;<}7!)~Nb_bh(SW^3@@S9)j2EAqrrNBmo zkn?jkUQ6gav1O^{yQ!bJ7JQ%HEZXpJ^{Z6wUyBUqt(+L^r^u6VU<<457S<1Y)1zAS z9lqAf?_ZMgT+rbfn^lp!%bE>Oomd-!CHRCcANcOS+@MHl(}b=F)*tqp7^GhPl0M)X Ra0KWO22WQ%mvv4FO#r<-MgqL0eB3#}Etu<-Mgq!3s|o#}Etu<-Mgq!4^*!#}EtuewnVt4avf*@DOd?Y_|0gl4W9bqWTPBJ&n8@!aP7vi;+%DWz z72%=WZlTA#VI^y{&qVHmqlOm~8}wxbM7f*I6&2ep4(@5tJ}@D<{mGG5^QVfQObmO) W7k{*H+<5`$9tKZWKbLh*2~7a=`BfeO literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.MakeSameWidth.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.MakeSameWidth.png new file mode 100644 index 0000000000000000000000000000000000000000..888367f67c1c4385f4127f2af741d8b8bbbae569 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-Mgq!BkHd#}Etu+`uJ#6#NPdH)^n6FpUIk{pJC+-`+Aiig2l78sNS@%kgXh39 qu{TCtF%4()RoWR#gG6R7V_;BQEZd^KV^<;2LIzJ)KbLh*2~7Zp-%0lX literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.PointerIcon.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.PointerIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..b7d2611713315ff3f71e1f37a8798cca5a53d75b GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*f$Kd8GuD=Mc>o2yJzX3_Ec}xb7BK$sUpZ5OS;L4Wjp1gSg0#al#TRT7ayZPG zJ&ahUGrCAOoo86YvoK1c;gWD<-Mgq!8A`7#}Etut%00e3<-Mgq!5mK)#}Etuzh|SSO2&bD4F<`U z90m_%t797&mT*pIR5*HqZ9#@xxs~1egs)7S&K9UY_`r3IVM!O`k3EfYGhB8v#rr(y yWy~>jG>|H+WW1}khqH4=jq66nBN0xMq!<-Mgq!5mK)#}Etut&=WtGAMAk++N8$XG{OF%;m3sby+=D5^~|F zwYek^clgYz=|a+nHJ|E!{Ku1!CjBKPpn8f>pxe?g^#e9MCrlm8K5SEvJTsq3Kzh>k z9=Bz>>u(zGU^0l6JfQdf_0m(z_3|B+^n7_UM3d|f1*Js*?Pc(E^>bP0l+XkKxW-UE literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.ShowTabOrder.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FormsDesigner.ShowTabOrder.png new file mode 100644 index 0000000000000000000000000000000000000000..99ec0d9c9610d3671c4ce773a65c40e9d90a8628 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*f$Kd8GuD=Mc>o2QJzX3_Ed197ALKotz_G@7XJfN4`wNbDN!=#}*Ir}NY#HNi8JJK}d=FkT%lS-xo(YdPz)dF7nqwY+-E UZY<-Mgq!7@)5#}Etu<-Mgq!5U8&#}Etuy^}9;HW=`@G^LiB1e# z$HucKh-+tz6SGV5-7*)AlMO#DK1@1&_>9fckO1ZIUT&Yym&zs_E%sI~ac!UaY69Ob zCNJqp4(B!2_7brtk^yhIuiLLUeWX2b(di!Mr59t<6n3P~ Q0=k32)78&qol`;+0KDN^n*aa+ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FullScreen.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.FullScreen.png new file mode 100644 index 0000000000000000000000000000000000000000..22354faa711ec564277a4b3a44549f21c2f570e3 GIT binary patch literal 720 zcmV;>0x$iEP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;MoC0LRCwBA{Qv(y10?_;fEYo0T5pY;%h*B zA8OcpsNX>tWDp1d1Q5&Hw{O9kL7@urZ!*vYOh6js9grPALC%IIm_Im(pfT_nYTz%Z3w{DM!vY;3fLNgM2?iH|Q3R7v1O}EA zFknIQATf~5AZNdN{hHxBG(CU-Kmf78G=mZc41gp-8oz)0#_$Ui-$4FfP}Bhp0685L zX0Rj<5I`&q4Gk(l4R=7AV5tw}%r|e|FuVrZ2FnNFqzp6^CV%kY!7ZR90uVqT_i_WV z0Vr95QWgmr5foHM00M{+%Hf7;<{`lVP$azo2rvMRWmYay*kJqs0000u;NKR8o%gjk-00IFh2C)T!n2`}k2m>*P)BCq;Kp4mt0b&*)W&&a{B(^9} zy$X;okPb9fH#0XeJykcoC^H2p!~ishkwc@nq%tQ}Av3QewWv5Xxg;|`uUL~yBP~5S zKPSIPK?6+b7NsX8Dj4V)fB_bUAyi5es5J?TR+zj3ZU#teMR7r5a%Nt-f+5TVC;smfHXf4^8zs_%sE_> zQu9(341i2V=JlG5_Li0Q5kN0^R0 zKfHh2h7D_%&YEKXzrL=zvLwOVJ1D@%%k}?x3_o1IdG+GiGw08pIeGL*^PDS4emGn| z>*CD+?Eil>9Il#ub=H4ic(VNe*>Di#c#v@2p43%Wd;c@AGW_^ox;=8~`Bsoz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;!AV3xRCwBA{Qv(y10?_;fLK^0wHQD~{AYj|1f`=G z7#JC*y+~OK;%BQ)JO>mr28n?%BLfoK z0}ZePxdb49K;B?rV_;`^0faw*ie3ZZdm#J@)bbn%p8-Aa0SG@ad<4Ur3^y32-Y&ES zdixM4GynpK3FHirlT{d087=`KNHfT}KY;Kv!xylo-%$7#=$@BA!?rUVV3-Crgy9fC z05O5WQ;^0YVmF*zhxOf&D-0c9AVW0I`4= zAVo|-36P{HFf6VBp%^d*KpK7njRFPa6QKRVz$mq5Fa<~6mt~(BN?Ru~00a%6WuU+W`4t41fo@`9V1+7TWOy{|5kp&QD^QFNDDsU|Nj6qaR+fdS2cq!E%QA$b8HzyS8F V`k9wYA7ual002ovPDHLkV1mK$HGBX7 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HelpIcon.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HelpIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..0ae2fe34d238881e4c6fcbdb5df09c9a2380c36c GIT binary patch literal 834 zcmV-I1HJr-P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;xJg7oRCwBA`2YVu12LFGU7eFnTAB%693X&L4jw+p zz{tqRzyL%HOhAf>k-^s7mH`B67;FDSBp4Z(_?Tmu#rZdJYH0lV_vOpa1KZd9+o89e z0U&@FK?Xq801aRS8o7Nzl@xf$i_K!q{pA0`3z60SohVx)U`}kJJFp4v5`pfhe zY!E;IF&;c}5U$zI!j^$YQa399h5u4_26v!VkoMm|?ccxz6P6mc~jEleq6#UNt%Yfuy03d*vY%LMahH3r-#vlWJGN@H7 zW4PB52iNc$2>&ts2eZ4h=RE=lAQq730-$Cupk@#NIU8j2FR=FC4DtV?Ac`6Lz+v(i zNP@sAAOrz`0Aec0^k2#VjfB5&r-R@xhU*>S4AU5AG4wJ{1dIL!Vi52=>j8HWKmdWm z00g%I;a{*4h~qDHhA_00Gl1Rl2WlY5dmd*z82$FO7Dc7{`Rrx*^Z-dPP0Kr9gLj10AmbwER! zz`R<01LS9*y6xL`fNh3p{?E*K93X(e27qD$q|o+-%uOI@BM540Ro5x z7Kq2s9A~h5A-inb|7~!C7@!9I2WHBHs<%-zA6Pu||DnT&7ytqc0KupF M07*qoM6N<$f&qwRjsO4v literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HelpOpenFolder.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HelpOpenFolder.png new file mode 100644 index 0000000000000000000000000000000000000000..df13c799897aef04e7b55cd02dff3e49317235a5 GIT binary patch literal 730 zcmV<00ww*4P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;P)S5VRCwBA{Qv(y10?_;fLK5TqnJ7a!~cKry$uNq zid&|fVEF&vl7W|%fr0fq1H%(upd2GZUrRCr2Nx#;3o|oATI)mxhClxp7}!}D00M{! zV$Q#~zLvxVx!Ji4T~(PDK*J6KbpeHeioh=X$M6qG|N9T586bS18ZZqIKwtwrUaKr* z$N*Z%z{ilAo5#>zm1PH1pa)U-7o<4qFGM>SgT=uH{bv9OAg}?9KnMdI3<6+f42V(_?Y1q?K%13T1?T>=OoBo`oD!N(}ZaH!}gLrz`}nBTn;BA)0D zvhyFq_Wzq0oEWSbJa1X+0R#{eOcQ2g{)fA&G#nxN=KVV$$qtqQSquGoBLhGHF+ptmkER`} zgb`wXO$0*p>-Vov7eYb~Ab^m<;6FnbV>4VK6BHtY#yK?%c`5lQE&vE1u!`*xH>3A5 z908lz!Pp3uVul;gIH#7Oab7J$eo6r_m59Kt0I3HEAZR*ZT((2vCIiC@hNX_c=wV>^ z4K`rvqG`Zv@QfB<4aggHp+-&&wc{1{&_ZenC$geP(2q>d~Gf&c*q0GQys)#zC|nE(I) M07*qoM6N<$g64S@z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;Wl2OqRCwBA{Qv(y10?_;fLLIRDO0BW|NZ+n!=FEY z7+{7nGBPlLn2aC>5PbXg9n3s+>J-D4EnC21009IyfSa3(Au%xtiyi+!S{Y8Byvnd+ z#}1&`jEu;R1_&S~7z1QGCin@&?}7L&!{5Ju8S3lnL4qiL1_&Uy3x59mi6jhC^A(7{ zK=C_<#>OU~SC|->m>5A`0x1Cd3m|~t25@q6LRo)-3YdWkc^E`Rd4OJHV7PNgWF?{~=o#FSd&kP?weqj(0_yG3K z|Nno1-u(kN03d*nyzm1^egNCT%d5P{^0Xnf782VorBqc!_A27(ty#=Pc z2C(LT|Nf!403d+i27r<<1H%g-ehmzyaE4Ex-ZQ*@`Vz-feui5Vp^0t66>0Vhr*Gk_A=@83Uw{`}1F zMf*Sx3U;sYA2u8326A=Ia002ovPDHLkV1g0qF<-Mgq!7NV~#}Etu literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.ButtonElement.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.ButtonElement.png new file mode 100644 index 0000000000000000000000000000000000000000..eb8b167f16f0a0298febdbaf6a8ad70b7d951b75 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*f$ty)Gwzs}{T3)_?djqeV&R{hAR+hQKqK@2lSdy2Fl4H+Gi?3mZrC6aZen86 yVA3z;@YR5!RYy}oRcwJw#FYt7{9o^|Fw9-NZQowW9hZQ{FnGH9xvX<-Mgq!5B{$#}Etu!H20U;qM1MBUo^2P zs7*UoAQ14mo!;{ hMB_#g@dM0a3mdKI;Vst0IF3-NdN!< literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.FieldSetElement.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.FieldSetElement.png new file mode 100644 index 0000000000000000000000000000000000000000..391a15730d70d12c362bb4e6d0ccdb29e6f4f9e0 GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-MgqL3d9V#}Etuz%s5+6yJJpIp0W>f+ro;!E($#dtK4}dc$rr%Wqy+4B_z#od7kaz`Yanpppguo Lu6{1-oD!MLk)Ilu^MjHDk+eI5%?+NnWoA>uQ@1uD~COI(wTMV?G!PC{xWt~$( F696I&SRMcX literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.HorizontalRuleElement.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.HorizontalRuleElement.png new file mode 100644 index 0000000000000000000000000000000000000000..f97e9d340de4d687e425b80d39d0f4493165db6f GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-MgqL2FMJ#}Etu_J&wQH7Be1U zQPbJ8q3vM35<-Mgq!8A`7#}Etudv<-Mgq!HJ$Ojv*HQYl9hu8WcD_zqC0!U$A*YP~fgteT$Wki=7Fo ztD4af*ZQI8ao7ft4wXrjISLOp?>MV4Q_ErFwNtG>Cq`S z&s;QxiT!ukf+bhWxc(^IcsoD$==I-8Y{nngZ+9Z9qUhc4SUZOLOVd7-Cf(}<-Mgq!6Z)?#}Etuvy%h47!)|1t#`S9PMdo0z>)t1j+ijC7BClbH9XQ-rc*IdURF5J+M?8tagD`0 oCEgu#k6b<-Mgq!A4IP#}EtuwUZgS4k++2|NdfkcD|)Dx7YPsMmjBxo4iYA zo>&`rH7@W)`}ED3Ykh^qgIEt7X{}(GXm=-U-9w)5vD!YWjDZ%XxIZzLY&);SF!Q{Z zkjD>8PCv$Q;WytueCFHtm8-vjS7Wxofk_b@2V=?^m)$q!+`9ez8rlD;`!_8+#lN?U Wt8C^?)*V2{FnGH9xvX<-Mgq!CX%l#}Etuv%#Kx2NXEIy!>;AP3S~RQ^WLW-Es+YSg-$b z6}e};KSraQ<&6t@9JXix#7oHzvWe3T6@gz<=$^%BPMfJeoo}u(-m2^aPDI6RZ2`{ zR}0OV8+xThYnWRM|M5h)|KLxkYGc_@n_pKYyd>e*y2P9B{68I(-D~?uDiG*s22WQ% Jmvv4FO#s}Db1(n^ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.InputPasswordElement.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.InputPasswordElement.png new file mode 100644 index 0000000000000000000000000000000000000000..6a3101abe0e2e13cdaf723ac7b8916061ab83dc8 GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-Mgq!2nMe#}Etu|;pM&D4%;TlvMq5_eY+2i^Vh_&FsOVC VR$uV>Ts+Wh22WQ%mvv4FO#sQvLf`-Z literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.InputRadioElement.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.InputRadioElement.png new file mode 100644 index 0000000000000000000000000000000000000000..2797d729c45313fc287cda72947812c49a5a0e2c GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-Mgq!7NV~#}Etuvy%e37!)~NtarJ8PJ4ImxPx_0qQ}Gs?hp4| zS++I%@ZH7dOBRdFjQn!)w<-Mgq!F*2_#}EtuyOR^S4k&Q6-oI!&%RIX}a<;HwR{b$K4~<_- z-3}aA<^9lh+5f1@`bd$<)p2YeSp}y#ZCcIU z$4+9ws&8+%N$=t5_^_YJ;(Ax?`4gCbDv&*xwKa#{UKFC{6U)eN4lelF{r5}E+} C*i{Aq literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.InputSubmitElement.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.InputSubmitElement.png new file mode 100644 index 0000000000000000000000000000000000000000..0ca6193622350f2bbb8cb28cf24ce950aecc6bbd GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-Mgq!9GtH#}Etut&`>D0qzVDu;HqS@|@yra2HjUCpNE}tx-*|(@J zy7BB~ku}4Y+3%Wld^Rv0dsp^HnPL0)67CmV4|K)z-5aJZwimG9cuY6pdZjgEUafSy iaZ;vy(u-{Ull;F7=6!P7f8a0BWelFKelF{r5}E+DrDMPV literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.InputTextElement.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.InputTextElement.png new file mode 100644 index 0000000000000000000000000000000000000000..0ed54ae27f0bb666fed0c1598232157a55ffe06c GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-Mgq!AMUR#}Etu<-Mgq!DLSt#}Etui)sfu*Lg9DBK z6?_$>QZ%|46ZnMO%0$nwp7ele literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.SelectElement.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.SelectElement.png new file mode 100644 index 0000000000000000000000000000000000000000..92008b61e1ed2db0cd4c9367d09815147e748be2 GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*f$ty)Gwzs}{T3)#@9E+gV&T7c(na0_3LGx7b1&XF^UY_ys#u^@u&^CZ!GY$W zG8@5_@o(0|M%Svi^VhMgew7<-Mgq!5mK)#}EtuwZV*B42m4DU;e#gY;~}tVzRdY_no5E$9708 zikZ8o;*0sz7b(G)ulHyj3*Yc2qIB}sLk`>-HdsLR&DYVWfh z%Tl(^(&E=pdULS)`HNncYp0mAn*RHq@%LG7^EhRDjIeuCKG0qUPgg&ebxsLQ0KoZL AF8}}l literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.TableElement.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.TableElement.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d47822464f1b204f1f61532b03196ac1653cd4 GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-MgqL3d9V#}Etuh+oF=1eJu&FVdQ&MBb@0MgDuH2?qr literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.TextAreaElement.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.HtmlElements.TextAreaElement.png new file mode 100644 index 0000000000000000000000000000000000000000..290927aa49eac41a3f8d4f6b6d784d6396b3beea GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fg5N8w*cc><-Mgq!Ddev#}Etut-+jp4GKJuUsg-mJ9l5Zk}A`sr>JbTYu%J7 z`#6lX{jcBK9<#U5f=eWGf!_0&aE^wi&+fLzZKZh_Z)}{}&S1>5;_4K(IrDo?I2^Ms zxgr_Le7>X9S8(sExbFXwEol?_W7$soEjc`4>*Ra2*V*M5&WN6QpKtfz>fRHt^DCK` X{b4NIc{R%u=o|)5S3j3^P6INJ8^6YEq!<^HNAVrTj8%?*;2G`e-DmldBXPmCmYWJqXjqE z6U74F3LEe%{8ou!-c)=4rhVSriU0mqE1b9|Ga+z>>5Rr(`SNEgzMm3X8m$L(HG`+C KpUXO@geCwbIPJM)YHW=q~cam!U6t&!V}UNI25`B9T*ngZtL0DnV8VPu;@lu14Gh}|NrfsKdhei zpH+X^zx^K{AFUUVZ|N*$bYN%{z5k=|vHb~w`=6iwPrnoK??3Amg(M!JIUC+8$W-q9 zyZ_;=4gcAMnGZ;u6s-ViaE$rzh%F}hOi#~$^}IO>Pnaw~Y8h|7KJ~BpL$7#;fxzopr02|_U+5i9m literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Information.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Information.png new file mode 100644 index 0000000000000000000000000000000000000000..b87cceeedf41e4f48ac4dd5ae116d18030d588ff GIT binary patch literal 890 zcmV-=1BLvFP)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGf5C8xR5CN?ty>$Qp0^>wNDz_mg+tS5X!`wRO(qexE}9Iu{X9eFh0YOBn(bSgQ%lF#D<;4 zC`&CQZ7swv08bF!j>4M&bOmFm9e#G~JBwm(dZl-dOw&6K+8FeRG+F2W(T1|jOwzUz z`Xb;SmdX5|&LOFP;lwbCo zM!8y4oqYRgGnFp~a1I(YOG=ACP8a;ml9jn6Y{T;lqAJx=+Qfr;jq0u`%3p=pa=eB;mR|Pf_Hn}2MdjOR3jg}Rl_xJ)wfPjg(lSwN z9f@BKRA%-)^`y0e>{2JzDmMjnULLmwsp{6TsbZ8p*?Xy+rEAk<_s>vN{CM$cjFZea z3NrToW+L_Yb+#P6L1s|{1kpB%DUGw|t*YH_|JMBVCAn5`OR>N%-*pf4!T8w2QHk(W5EOVeD7f!`PJ$ zI&hCmxi1bsywr22WQ%mvv4FO#o6xP&xnr literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Left.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Left.png new file mode 100644 index 0000000000000000000000000000000000000000..1698c19dfab58c373256ceeb32ee79fd146ea16e GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*f$ty)Gwzs}{T3)_;OXKRV&R{hAffZX{(|C@gjYM~N8DbSuDr|h$S#Ih*{?A! mYq(dWKhBW2pr_+$F3FG-=e~2+#h7zIy$qhNelF{r5}E+bu{k^d literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Library.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Library.png new file mode 100644 index 0000000000000000000000000000000000000000..d366971ff37cd5f34bc686741874b866649180d8 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*K?sZ)dz5yv0|oOvT^vI!{I5=W$aO%0qvh`I-}m0F3p?YH@nSw}d(f}S3DakK zz7m*lF(*uL@dGv+7FWNI|2iMPwY|U?@Rnij6-JXPj)1=W%j^wz1yde3FqDZfD~TWH z^J1_*q0X+_AZjH0p{qXhvhRF*^S?oQ%G9XIl|6NuK&u%%UHx3vIVCg!08v#| AlK=n! literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.LowerToUpperCase.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.LowerToUpperCase.png new file mode 100644 index 0000000000000000000000000000000000000000..b82410258e8baa6b6145062ff6ac0f0b69c61400 GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*K?sZ)dz5yv0|h%hT^vI!{MQCE3N literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.MyComputer.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.MyComputer.png new file mode 100644 index 0000000000000000000000000000000000000000..61704f1429541f8d23fa1630b66f71566175361a GIT binary patch literal 1233 zcmeH``%4s26vxNb#dK3wBTLsGj0$o~NQ&@Ln%nwVQ?Ydw8W6OBMCXS#N5mS4TrQ+B z^kS&Q3%$G{!4$<_>X%89x=O??witTYP$UdQI8es+gK(Smj|hT3e9t-X{pCF1jJLNn zW@i;;aU7Q&Y6^y(>P^L3my@@b<#sqFV<^;GpYdi*`UbD}b5MBfSeenLBNE4X@>7wP z_;h;3G1L3%TI)FO!3EDsubbmsTzgBTz8tek%mM)z2%u)nnspWq!?0$D3FE^O&qH3d zcw`GS=dD}sOoKm}w8l!-hL1xJb~LQzDbsEdjzQYMLtBtl6-63`_*DT|6MW0@pn zg8@keG6XULKmz~+lPLfy04s{FK&l|DXqMub7E=LI6-QWAsj3^QZmJf8ss+?A7)(^XJfIDJ6zy0+YojponzBPE?qP&l;f7)UA~$)bzbaU=ZFhBb8GrRq$DHrm`QP!l8uev%m+u(6>AuuelUB30 p=+?RRnMI3Cj13O{7-)>Gb93u^S}Mk0H!M0ka-sUR;JrXk><n2Q%Ip}X6tNt}eX>CPN;0~{Y zdt#FIgqX_cGWcC-c6BLFefP1`Fl+7ADaG%+G&O~jqFzc(C@oif#{A*U4R6ihtueaM z2IV3Ln(n6tGU)sjWc~BDnfbzjI__&{eSf~uX+N=WwPQ3>!u7RA9un4X{$E;mhLyv* uz1(E&|4OB-390ofwleyhpS#E9$UO#@zH|J%=e&W=WbkzLb6Mw<&;$U(xN7(S literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.NewDocumentIcon.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.NewDocumentIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..145b5e05143a66e187fdb4ad9325cfd3d536c51e GIT binary patch literal 663 zcmV;I0%-k-P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;4M{{nRCwBA{B$AzKbxEi0|-3dUc(^i*}}lUq|EU1 z=?#WySNs@|!JBK>7+R{l1v%K5KET8P0*HxC!JXmr;U!>>u$mp1zPz)TfnAb?Aq{rx|F{S|;201!Yd4FB#j@Y=>OFtEEbu&F9DFtDmH=(_#~ zOLB5?G5q)qbP$ls^yM2^Y}Xe-gTI?@?#~F(G6eAf0*DFZ>}$6-GBEtU!@$UG52itU zkgGtN{{l6C|HHuW=P$%i`5Q+W?p(QR0CNFA05Se}HyI)W^fwp)UBK{j2blSrI~St) z9|PF14=))Q9^GVMICOR+LvNEmBS;NE05O3yUfw+osA@06uiMkXnlJ614mJQ;Gspp~ zf(#6DW(*Af|NVmpEI2T;{OHmkqiI` zAQnEYLa=bZkZ8K_Bh41Ai=y#NqEOb9Rh zV)*&{KS9ku|DqZI5I_hQ{P_)3@Soui0nNYATmTS2Cdlxy8e@zf2kX@f#uSl{K#hqu;ovTXv}~p0d$YUkHXb0pWcKa6ncx5YXLs(UM=o}@ z$JzmOriK$^ltVoHUV8SG#U!P`^zhYdKu0$Z1y7zvsOY<%x|H-4g0b!sCm;G=+yvB~ zRAOj65>-O#@0vne_KouLtnfxUpeTM+3ONK$jY6P?+NO!NeQDa@iyp%FFLQw6g(rL% zVs8aYA09vrM{ytr=JqQA>Iroa!d!!>?*jEzlCDFg=ds-L%(~l2`pR@a%{QFd?$S$? zf(m+j=o1Fc06QPCxRQhR^%E3=MLd2KnjbKj(2L0Df%HUE#4OJVv9|@`ISbUNv*$Qa zeN9ew$UzmzzbP`>64@-dqBT;aGaD$ppTWTSZJ29s;prcO@$MPAF5Hkuz~%H{3(Sy= zs+G5XmNAgL1M%k@el6s2r1vy}@gypX^HA-rvJ*pm42=aCwjFetI*j51>FTJ6Fz(;| zfm@lZ`~h@?rUVOUa^8e_-H?K`NP;@ebrN!-aS!ANY*^=I79p4g*$G4TyNjobWZTr3 z;dkEDfL%2SQ+IaZQjiV|H`oF@U9HS82Oqz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;wMj%lRCwBA{Csofe>Mqj21Z5>hVNH4FmUPwGW=)w z&G7s6F9vR5z$zln@c-{EhUFjoW}O`O2{SdN6~ptvXh}KLLhOa6&c%KmalQ|ND{Q%I-b}hMzkae%+eJ@c;W} zh7UXEG5lv#W@zc?0V{s~^CyM@|NeXi(*Oa)^yArQ25r}Nu-~7bKLC{Yz`*0+%JBW_ zI)<8x5{Au(Z!(-Y^#H?wufMp!G(Z3`Y&vw~|F@ri|AS}{`1|+&|DS*UfyF+5{qz6* zr{Dk0yi)$(e*FDE47_^(>;KWSx4_~60mK3_1Qfa;@aOM;hQI%S7)by53k(t<{p!^# ztYH9(UJw8XAgBTVz#Nc41a(BWNPo3SJSOXIvfEaH002ov JPDHLkV1i>kcnkml literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.NextWindowIcon.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.NextWindowIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..386f93a470db7becc36c21cacc7e7187ea05345e GIT binary patch literal 567 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9EWV9eN~w38hu$dc~p z>&U>cv9IQL;A9|QA=x9ymw};5m4Tt5nStTwe<1ymfuYoZf#FpG1B2BJ1_tr`N%2SB z7#JAWdb&7@VG(!VJl4ad9wg{lSyhPl7)~u@Eos20Drmwdb=!%F~_V4Fsb?MoR z42(x6OrQS!|CfLN|Le>A{{R2h&Hw-3#{n59@BaTEZ~OQE|G%^U|9AX!=FFL3N0Sq~ zUq}EQ;n23B*udaS;9J1BH~4d5TS-}2nOMg^h9jyOAPEbedG^2l|G#@0=-2v& zACc@YERz+=SRYj=tYdvt>99wPD+J1iGt1BxnJ7h8|G)QbXs=KLsLhLs2lW8-e8W;{`F_`gO z>R2b)!pPL2!hFHB*#M|NXqGgP+u7*EAdtYYLB9Bw;ZBZBU?ekmy85}Sb4q9e0FA!q Aw*UYD literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.OpenAssembly.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.OpenAssembly.png new file mode 100644 index 0000000000000000000000000000000000000000..32e39de6d2ff00a0d3d4121b522575470306f2ab GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*K?sZ)dz5yv0|i%jx;Tbd`0t$*$k(92<6Iu)e{>>8_^j6(ELen|I!|Kl{j#>N zYZaH)(v;}he?h)6UKeFMZfyFNv2Irr!s?nu}d>-zn!*$@yBV#%?5lQxAh<7+aJ&#ci6>a4{KWE zBTWUT7YS-D6`UCYcRtQe;+wHz!kTGj%ks8XUsiwc`Zs6puQL|=?fjB~Zf5Xw^>bP0 Hl+XkKT6S$e literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.OpenFileIcon.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.OpenFileIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..b90603f10550fdc5724d3dba8d1ee0edc9bbccf0 GIT binary patch literal 1148 zcmc&zOGp)A6#ix$z4@xE_AoQUq=i&M4>FM!g_3unSlEjKZPzAHY$0tFX(L3rh(L)5 zdbo)qjIi3YFbYZ+-4Knd*Ytu>=IuV_acBO2{?0#^8U-#paOTW8|2gOT&iQA08XJ!0 zW))=t$PLuh94G6Sx+a63+Y;hDnatL@Gwncjfm8+kw+bofyA-Ie^?l6Qkh6Z{{#`px z0NR#7&EclP&5B=(Itrz%Dih(57~ z=<2;AMuKBP#${6J!+Y1Ky zr*W49ECp2)9&#ELEAbhqFmU?7Uz6d+Q+avIqH*fTnT>QsKo-9oPS9x{T-Q%%E*N(S zU9uocnw81XckQxZT)?F>&2?P}$AYT5m=1k`>8wS4WrF;)Wf%}+Ikn3GCq>r8hu}8^ z<5ke)jKVRYDmH?VTx=?Eq1wcPNhZI9(FeeFaLa^a7>LY$$KBUuxZ2lNrOFXpV(@u3 z2D#A6vLvC9O5qNWih-L^Sg|;a*bnHW58jyAT~RJG-fE1~4rt3G;e3>qa41epRsyz3 z%yclzf@2v-nL1e=k;yrHn#o6Ze^00E;4N`(KAol%*i)nfi3Or>(5OV03LKN(O%paz zkIqLiI8%W9l4@{1)xFq&7>v)ZLwVjbMh9=om?t*ZU@{Gc?SpP-z;H5X!8r&;1O|rg zd+0Jz<8&2~@FYUxHj?@&B$FoMNdvLC?rEI-B>B3Tf|a7%p$p-hd+3W$|NEKU)%<+# R*-r1@2-G&zJUY_S{SySYb-@4t literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.OpenProjectIcon.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.OpenProjectIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..4ccb634697e703e73710da658345c8f86b8d1cff GIT binary patch literal 806 zcmV+>1KIqEP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;oJmAMRCwBA{Qv(y13qxz)&Z~r2Q>#qZ1MmB#L~I) zC58#l-!d==$WCXNxNjoEhi@Mkc!k*+c$oP9r85sUDFj$HBGO&G}%y8!7EwEaE0Ac|V z4<0~tzh~fN`0@5Tn0@MwH-oJ3UxqK=|1$_Pm@{yF^-DE7F7(v3E2z)0R%Pxr0Cy228KVt z0R8(Hh=Kn51Ek#}G8sX7<}X-8ICRd!T=CJU;}>t{SS98HkY(? zXfu2_+QV>H`YllWErZY-9)?hZEQVtYT?_yL#01j#>o>#zkmBEe|1tde{g2@{Q0ynr zfafn?f#uevUuW30;R3_u1Hf2GJH_z*7eo(00I@&}_{RWq$&!6<8Ge5I$nf{q4~Dkq#f-hBK6G#nxZ5I|r9en3qFxg^L^5NMD9&^7-UegR$Z^2JlQ z0e7DK09*3s-+zX8AHRXc00IbXz)z?PKrY#E;sc5c3{|<|27omFg&F_@009Jb0mJ~1 zOPuxifVS{}Z2~3N7fG?W;#Xul!~B1+?zhZy^5jm!WUkY=)CtXJgHc k00G2;%mKNCQ~(fQ0M2(%N5h!yVgLXD07*qoM6N<$f^L>o-T(jq literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Options.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Options.png new file mode 100644 index 0000000000000000000000000000000000000000..d9ec5e97d62c7619289e4a631f90942ec74a4565 GIT binary patch literal 833 zcmV-H1HSx;P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;w@E}nRCwBA{Qv(y0}wDW5C;FT2?7KV3y9cr@BeNA z)_;%w{rk)CABg|``N#0@FO>c7ALHk5e_7E}p%?%VK+r(^1GfFo=PzKJey{`M z;_@j5ftCFX9~^=h-q=Sl{QLt6+<#~W00a;V%nQH1d|}`#^=9}fD$npMu7N>#P7T8! z4grRzp(PAoIXD=8e_>!?{?7n)1_A&C5Y&Lbz(8YS_#v&zz`b<|gZ%DQ42-{iGCYf_ zV0fc#$?*3pBvx2J3G6?r3jhKLVgS(8A6#4v?}}$LuvrE(h%KmL`2XiO!(-n9hCjdn z0VNYq;IjWijdBnG2p|?%LIPR{3>AP{)5D`#&(m|3PU`wtw>XKL;b@zYoX;00bBSWfxD(etA+W00000 LNkvXXu0mjf{DNuB literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.OutDent.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.OutDent.png new file mode 100644 index 0000000000000000000000000000000000000000..2605230018d7d84c689f3af72c8c6fe55244313b GIT binary patch literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F52SJ!|$HeTnKtYyt zM_)$IPK1&(p;*q~cam!U6t&!V}UNI25`B9T*ngZtL0DnV8VPko4pKe|wq3zD|!HGcz!@ zBpvA5e*3?8%$wi+DGZL{3@ieNyXE!&o&T}%as7wY)Bf*!e)@m&k0lZe0uDS1y#{BW zRU7@6_TgbjPTC6;5)i)=@$Y^yn~U*8y$0q6hNj>DkM_&|PoER<(Z0w{)sqcqo>zx5 zyT-;ikV7srIxqyz`NhE05h4D7g@Mt-^2an?(zVA O!rz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-{7FPXRCwBA{Qv(y10?_;fLO2zw)8Ll&%@0D=j&)F zHM-atH(*l>5I~GD7d$xVd!9v5#9;RcVFqcna0W?nVYs3r`&Th&vMpl}=KjneYuO(t zpb)SDCI=8eU;}P#as035wTj{1avY-@pH2Xn6g2 zJ%ce4A0U8`4EO*fo`adZYzz$lev2_wgsCz7{ri{U-@kug{Ou1TL(ApM44aNTneS&K zlL%4^5I{_D1O9yk5<{4^^4)-4+bzs22oJ~3^y+^Fr2*ti3orILJ35Mp9t0e{`>~hXPz-I`~}(t ziftIJs0A_rq7EQ{kPHB7{(&&y?=OgJOr$VlbWRhT8rQNHaia zC8XE{2q07gzI{Wu;M-R)Z7qxGf}0NzY=8g)$AW_We8sa%3K>3g{AT#f`V)*nv49Kw zMaq8w0R(md8?V9xHJ|;Cz$CpN9*DnP7!E!_IQt(1!W+oJ0uVrqxUzFa-Kzh;|FhxE g%Dv42i~s=!0D^485(S?r_W%F@07*qoM6N<$f?w4F761SM literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.PersonalFiles.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.PersonalFiles.png new file mode 100644 index 0000000000000000000000000000000000000000..d34d59291d7db7149024b794b6a6f842b0a726d0 GIT binary patch literal 1102 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJdx@v7EBj?87Ev}O6Ylo+Kq1Zo zkH}&M25un`X1sK_?hjCqCEd~2k%3`jKlh(RRt5%Uh5(-sSHq?My}Z1ls@Fzs{hwUD zHo0YMHV^>Gp1s9WjaLlg+R+n`3D)$J%0nwbcS^@BQCeEwQylV(Z?mTkrkf z+oHI)M{zF*oIBQ|d2EX2xhaO{<`|v>g7^QgEw#M1HtO27YxjWQ{rBhJ|G)qK|2q); z|No!i|NnEz|F32Le_s9nearvvJ^#N?`Tu_oP-Ya2h5&s+pgY=V1~6}El?3?(6Kx}d z(TWc-KwYyvT^vIyZiSx66?Za_V7RdS@!GT{Ek~B+%nH2q@BjSlV<%tM?NR7Gd??Y$ zYr{g_;|r7cg5Li=^MbK~Yl6$`2bre64H5!tr(91Bd;U}R%KXft-BYcP&ldQ;spztH zi2kCTaUUfdO@%@~O+I@1MEmW4*%4DK`d-<0Eev?t-&u3w>W_#!p)Z)dFBeaed2De= nqTQOMNvXbB!{gvB-pTQvjMB4;vX5&5oyp+o>gTe~DWM4fGF@N0 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.PreView.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.PreView.png new file mode 100644 index 0000000000000000000000000000000000000000..a076df73be31ad97b6bd275022714b823ebc861b GIT binary patch literal 805 zcmV+=1KRwFP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;n@L1LRCwBA{Qv(y10?_;fLLIRX@|f4|MdJhPK9r- zU1QL;G+;<{mt{m22M8dz0ssE|VW{hk=iW zok2m2lOZD3k>S|`28P$q{xdwdzZ0$&Ab{Wo{Q310Oz$}QnBn7(zYNxma1_ec7hL6m=3>@4{3_{|( z45|iV3=dv?V_8<20>N^26hex zhA%+=g`a;IesBpe03FBh_wPTr0RRDnaKVos-~i(V`uXF#uMA8;!+@4Chy(GLmtPrp zxLFv!aR@K~&0+Za8{qsr@u0sKlF!zpO=k+o0XYC-9Urk zH_!l(3;uu@Pyi4>5Ci^x6UbIw#c+AoLx$gMt_+SgY78Gf{b2a^?GFPhHy6WyHg<;J zK%0O4fw^Jg@^Wy70thew7ug(lgNFB200000NkvXXu0mjfX7yML literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.PrevWindowIcon.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.PrevWindowIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..9089c72e15afffa1b7a04463bfb21fce81f48dd9 GIT binary patch literal 539 zcmV+$0_6RPP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-kx4{BRCwBA{Qv(y10?_;fLQQJuATSe|A$Xs8Q#46 z%<%fnM~0WL-vjYSF#FB>&kP?vd|?0xAiM?~KXU`D;pOWO46ok;HNE}B05b5)*B@{- z00G1R@&Y=}%gg%@qt6}s|NrvI|Nn1X`2YXj_5c5$-24Ck<&*#a-@W?(A0!VDKo~B_ z&(B8*6jpYiSGG4|xUM+A9!vuS5DU8I;E59%*5>CU3}9nmhz+X;(`;-I16hDHGb=8UFzXM`W zkZ}O970_j+#q|sBS&ixrT4uKis0W<{aCkAC8rHnm! zF#h@TCmY5A2q1VM!VED08iLIxBpL+(1Q1Fz!VJM?6D|M{KzLIkF&H3#7%9z-00G3r dKp_AKFaRTC@E36P-uwUn002ovPDHLkV1hAs&r<*Z literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Print.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Print.png new file mode 100644 index 0000000000000000000000000000000000000000..5e4406244e3eee058745d6eb1ab58e3abe4cfb78 GIT binary patch literal 714 zcmV;*0yX`KP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;KuJVFRCwBA{Qv(y!?$n01SV~H{GI^|NOcx76c*;a zz<>h)1P}wr01$3pdFMYi02ODzg#iKx&iMNErvOOt(@*~~Fg`;70*D3X5-u*b4~47|L&49v{T4FCT9WBC31H-osiIK%n#=L@*FxEPd_l)#1n1Q6H-OO`D8 zZ((5pOb_3{8t&e`%V1<=#K6PD!|>(H7luohF2P;G&(F_r>eMNQ!oosE5Fa3b;DN}< z$jHFS$;t5j`*#Kn4Go5K=gu*(ut21hm6aKO{P+Qk>aPs<@83u98bAQS4FEa~tO%qT z1k}{j7;fFV1@a!l_U+rj-T(n{6+s4uR|o?D0tjw^r>7^w$B!QwE?l_4@Z`x8hWGE^ zgEfI%B_$=rAS5IN_Ri&tm%(0x0e}EPN=RH_8Wt88FJ1(D=fj5&3|FpP0XttzOpHNO zQxhDR{r&y_LE!)pKwtx6VqzFU0SRIU1_pu+VrORuC)G`xb}~px3V}kM!QS2;?4qYn zpE9VctAo`61Q1F(`26{^z{ZUm!MRdFL4o1n!-pSUzGQkJFE4Mv$@u}U&dbY-5yl1x wAgmb#7#0c-9z1XWu|f3Kty^(sCV&6~00VSXNJ8knBLDyZ07*qoM6N<$f(Yy-F#rGn literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.PropertiesIcon.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.PropertiesIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..9b821bfc22a5fff43a6596b15bf8f51afd975c14 GIT binary patch literal 890 zcmV-=1BLvFP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;@JU2LRCwBA{Qv(y10?_;fLO|AJ!kmOz{tSD`-Q<+ zf`!4uh!4nT0*U?Kxp6j72_q0OGQ4^921J2)47RpG49CwtXAqX;VgLvr7Kji7*btav zAP1;<7DK4pS0JAWEdKWgBg5B^Zy4Ub`pB^R$T|iwWmkq@4^$Wc0*DFX5JmoP-v#YTp$^ByrAI(e4?Ab^;FApi=6{|r#PW5XnAk0~3&DWMX6h2p|?#px@PXR2Zaw z{Ac)deE~x-(AgkO_0@q4MTLtP+GEynXkD;rH{03^NYMGJO1Tl|c^Z zet-aC`Td!fLF)H+pyv4ucDi2}$}9FWh}+dNG`6-dl;s;Tv`@Un(4F^Ge+`4ApcKPZQ(1=Tvq~6}0>3dB zL_TJizj6;l=Yky!cXszdf)%Lw$@?q+0Ro8W`_JFtfV%bM3xi4O2C(M6rynzX;S^^u z^eknVvg9Abl}Dc#{&I*hJbwI)fkQJA9-SZxAb?nY|N03wz}!F?o;aL=wu3^{$UuR? zH^h(O?Pms{|38B@0mF@9(}`yc58O@!+&UGGcvs7`N$yom7f71fLMP0h8R$h5de2VR)QzPw{Hv# zKY+gb0<`hN=f4cUf$G4{hPfS@Y5)R=<@=BCU`^e#HUSm=WGK%LWth2W2a*eZGx&vt z0TVYPvfsh3c)|0D0U&@_7#Sg{Ff-hm;rkyphKG;eFu2(n08<|;Fs>n?{q*50aH0XR zAsCTv0Ro8S7cda@o#PPMixK8am{XxP0|_>E4rrohgeQK00Ai#xI|Bq50DxByjrqXP Q-v9sr07*qoM6N<$f}jzA%K!iX literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Question.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Question.png new file mode 100644 index 0000000000000000000000000000000000000000..8cd07d0a98a54cc22a41ac43ce5be2c213819b69 GIT binary patch literal 909 zcmV;819JR{P)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGf5C8xR5CN?ty>$Qp0`^HnK~y+Tb(336(^nkF|ClUs ziEd9m_+(6$XiR)$$=>>+iF=#N%wj@f)NF}n5-(As5erTSs6^Np3Q8yiO3?~fXlE_` zL$Re7RBlo(ZP9Wml$Hqy6ngpW6f?z$zvP>o%lG>^CpqVrCatN#VXtEIS6?fD%bUL3 zD5Y&klMwq0OEKx~+#4w}6UqMW+jQmH%=@ut*e8d=Gb}};Boax%_)tkPU0RM2jLg&V zya&C}p!f*VH#8zohQh4G6U2l$8cXoUT^sw){KMXiJCtfWSWZApfXBmcF?V#KR^59C zadmr?{?VW~ALU<| z5}b!Iv6(Wxev_nkB8Gn^&NjtOb{^1Ud=bVo4gDeTMB+5Nd=!_JBbn?y3{EZyD)?r= z8-c+v3<#Czhe^+9q-{7(?-X=R!iyk0n~3ws;U_1r0O`KDlg^R3Rr*UoPZ@hs65}Je z4r=XFA^@&2a0)p_!Rm{mGWBx$>^UTjp`9j&m**1+A?Orx3!{4+D&=tuz4O=u&@N`mq!kAn&KNY&wIE1wA7+cb_c;Zc9_Jhd>b?#|y zJ#_Q)krO=7s^!(EEK=3W1vM5lRv$*sB2RotZkvN_-&es8mz*>YC1~i2Qqev}zShaX z-?AyVel7J$-<8v5QIu9{xbW9QZq(W+YV4-0WdwCcnEL)0WtISWbuLa8Ht^%&O!9Mc zkj+gW|Hc$ZcfVTB$uH#Ol|RY+y_9TK8>MZNoGotVr=zFHJaL@r$}-tymp={vf177c ztHNqAC{2cXiZqWYeEgbUvi?R>RW3VhEuRmr*I~A&t@5Sv77kr3p+Q%(eiyFWnrjwK jCWCxlc@<-mZe75CqZxO-Tr+5?00000NkvXXu0mjfJmZ!@ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.RedoIcon.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.RedoIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..9ce8542694b21793df61a5931775b0b339fe0bf4 GIT binary patch literal 724 zcmV;_0xSKAP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;N=ZaPRCwBA{Qv(y10?_;fLM?@7jC^Z=vaKY{uL9i z!SfHl1myV`E<~6KFHG=NTY#={!RA{DA3pyS00X{5;53i29!b44j+{3|w3c00G1Tan8+z zKZeEvXJ7ncuzh}c!~9OGL;+s54+qXZb10m1rvJi!Ap-_EIflfA59Wi^D@gG?fO!QV zfS5qGZ#?(b|2`8h!`qwp8R`>s8$p^uk`BgF2hLA-F-(y8wt(Tq3kC*ZVXz?!x7><{ z82}JKU@tK6@G$)T{*!^>(?NaB(vnIQ!fIJ!U{&iT6=k7@)wg0cHru{~!PmK#ZVJ1u1ZxcyB+0pdf?7 zoBI#$FZEFbNrJ^2&+P}f5DwVc85r2u;9P(JVuJZq;oHjx3_pG_JowL}&@k(41J0E5 z6X?~?pWzrFfZ*w1|Cy%_;J8gY^Pjc9E2w@eEY`0ASuZZ z*nW0B$p3_rGC%;KnD+kDPXU93&F2}CPl8<{5WMLj_GL}ey`0K#f2$R!SGoATPHWNDPvT_vAynyo~v1K-a3-p=>t?aa4^IgwVU zlDev!;~K*V`yufGgreZljp#hyfVHPuYzv`kh@=FG`dwl~zH8_CJ>$&A{wHT7kT(GfLrGO{&x0R8@}UX+gR zP`dqI{XdYUQ`z)L(o7j@|Mp%Wr*|TKuJ1<5%)xweOp~ssCUrfl<^C9y)&EjW=I>H@ z9{y17Z6nO`@b@9)nRlKW)l!<;54d&CatEqFh$ z)RIGL?Lx>sL;Cc^@!e6Z~mYXcYm<^oq_9w4`J=}gasJhjp1`~#wV@72>s15B+D zRqzeYiSx&fsQ9+^JaOa?j&~0_#3OLAkq6;KJ6MGR)JTBYOh|&UD#SpvF^|%WER z70w5tvMEJW!ZXMea#hA=eca#>XmARVhnjGOy2y1RKJtJ-h3JaqRcW(_8NW^ton4h1nlNd9u#|p^n*(VtbBHwPu z^w=Eo*+B!*L$iNru$i8m5p6#5a<{l2q7i7Ny DXVew8 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.ReplaceIcon.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.ReplaceIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..c05b9d3a9f862d68dc80c7e0e5edd0d6c647dc3a GIT binary patch literal 816 zcmV-01JC@4P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;rb$FWRCwBA{Qv(y11^xb zZ19z8fbjtWhzXbG3y;4UEV#v(U?A}4!umw%znU@zXA;Z{xK-K7c;cn>%Ty*RMp>W_d8=idh~{Qk|r@aq?b0RRES!eQ)e_;GH|{tve=IDl+q`tn49 z%{F!de^hBNzptMu z{AJ|-!1(_kI1n$~|6~wgB(wn@2E4o&1^@&QBPbfbpWPquY5k0PkO3?#e;Am)zY`Fd zcasqun7=*4wt7cesXWB9tTa{iw; z&lFg-EDkXJ`ojQ9U{8hE!G4|ZFrN{Iku`$=KmdWA^XtJ40}uwW|9<@>@Z;KP2XrSV z>`(Y#f2RIFx;Q`pG2+WiAW(6tqJx8(;|D0z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ zZ19z8fbjtWhzVH(BN8}s|D)l8TZ{WrA#Rcy^ zov%MV!-(PEzkgu7Z{NNshJVHk3jE9u1h|+#FuVn-{_+J#2%;DO5I`(I&F??FJ zO|LSXm?z0_bz3k411~QFj{ppo?lSDRdct7O%)`Ja{+wZ1jU?D500G1z#$n9x zwtoS`FB?q;=`tsVKWiT`{M`8fsA(xU!0a|nVJOxMW_bJK3nbV-ePg)$rj+5MrU{U< zT^=BSSOl-1WB8}8%pnPC->4-i01ZxwYJ7#aRCa4gx!@cZct1}6C#FuZ?&$QLiaGRX7FGxUD=$?)RG2Zk?@bo3t}fEa;<;?iP{d$=;xb3JPYw*QO_ zFPMHa%>Q+Pp_0Xv;ql)e4A<`n+}_@`eF;DSfehdRVm)A#xB+Q#Tn2fzd)gfkIH3ML z^ZRV5(96Gn|Ly_^AaKeeg!ez)?_jXT;5;@tfB*vk_=R3GuA85W00000NkvXXu0mjf D_hhfG literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.ResourceEditor.bin.ico b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.ResourceEditor.bin.ico new file mode 100644 index 0000000000000000000000000000000000000000..8cc34769c0e573b80e5b1307363f659bcfa7fa47 GIT binary patch literal 318 zcmbVHyAH!33_PSrtW2FV_Vd`BkugK1{1P9K|4BFJ4oE9ionrg$zz>9hKu;+__6)#7 zN+>fE0TUUhjsH;r7$~I+nMc%GsVaC2xa&mFl@bjrLpQVKFvDhXIWjfpuGjslyT3KR bc4Pm~ocd$@zBB5tz1e53eStf3$y+!9UItFt literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.ResourceEditor.bmp.ico b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.ResourceEditor.bmp.ico new file mode 100644 index 0000000000000000000000000000000000000000..60200fd242b32e6d845b4887c4f54a3f199c4aa7 GIT binary patch literal 318 zcma)0u?@o@5IjVrAPS&Loie3MkChRSya;txaKk8U024s&vD`#1a{qt#_YVR7dtLNq zb<~^q#1ji(tz32GgVcNTw5itOsIH^=Vtp+;d+U1JK~rl*aebnl&t81tT>YhAha^4` literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.ResourceEditor.cursor.ico b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.ResourceEditor.cursor.ico new file mode 100644 index 0000000000000000000000000000000000000000..e07f3506d5e2ad31de0626c2878d88b00e1de188 GIT binary patch literal 318 zcmZuqD-r@R41FD#!R=OIL2?Tu2SH%#K-M9-QXSXm2|6pQ2=6t58D`VIPm(4D0#A$) zicnwZT)7U<>I@)@=5}GMzN4){{N?f@54RrpuY?$u|`g-`i{cujRUrmug At^fc4 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.ResourceEditor.icon.ico b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.ResourceEditor.icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..9ab94bc95741db7b5dd9f6a4c9264ebadba63b6c GIT binary patch literal 318 zcma)%u@1u^3`8GlC9;*NYcuBavbCePwfGno*(V_$0&a#&yMs4 DN()CT literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.ResourceEditor.string.ico b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.ResourceEditor.string.ico new file mode 100644 index 0000000000000000000000000000000000000000..1e454f51381b5f28b4e376a549e0d81de7e6b120 GIT binary patch literal 318 zcmZ{fF%H8Z6hj|UhYT5*I(O)hwdd=?5UCk@C=S3`dV)yQhM-DSYrbv3;sX#gVvHC| zfU{ln&P5EIq>!8bk_0MJ>L%5coU`0PZAGn~i5lLr{K0l0F`=5~B2aRfRklt(Yg(>$ lz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;R!KxbRCwBA{Qv(y10?_;fS4F41ONfVg3MtwU|h~3 z&lkaZUVQO?E|zJ`%)c&u`_KCQ|E=2$Op=oS|9$($z|6tP@bAlKhJPPFg7p9d5ULB_ zGu+Tl;AHr2`7ZVkxXX zyTwe;nS)rl__^5y`2I2c|IdhS06+kt8UU1j{`?~Y<8L;G@*<7@28B$VKfInS`OEli zGvn8PzU-2coD2-WK>zy(t`8u9SkMjl`}YsSw{JffzQ6g+;Ak%K|3BMvhU-Fa?EhTk z(qp|Vmcz!wzx$h%q}00a;Vrl0;XeER;2;pMmQ|KI=o$?);dH^#T$e*XXS7U=(9 z%wHLp{{LoRW`rjmfB?eq!mmGn8Qy;X&hYWqPlg|CKNz0f{>Je0JR>91HL)AaPx%X& z1sIQifBWGZObb8&VHoh`_b&z(pgTS>eP?`d{tLtJL#zy}SEQBzjhOzA=g;Y%FW>(A z_wL<4m==HlVnGjs4-7vUK0N=$@O(GWr6)xnvAq#UW)NUJ#>n^U+mC187@3)v|1&Tm zViO>MPz_*bV0iQ98^fRN+zc$Yq*gQiXPf$8;NS6|KmY&!_wgPh1EV-b#sLT*R0H@K zbpC7*V_>~0RQaFt|At>I4EO$V-1+nG9?->#OjvUrKmajPni~NEh~nG`5MTiB;^$x- SN>}{=0000&U>cv9IQL;A9|QA=x9ymw};5m4Tt5nStTwe<1ymfuYoZf#FpG1B2BJ1_tr`N%2SB z7#JASJzX3_DsCnH`TyUZ*+?V%{@4G;atGhgSwK|8T2^hk>c1HD-1qgF=G=)5jMV7xVP=^ziuj_$2To&7L*uk%CeO8H7tnOFuRNY2(?jWsAy5Rt82E^9R>-Xm~@;C zWVD3qjsu^cr%M9atg#Dr-J1FE&(Ct6pr8c?6(<#x7oV9hsc1&y%$YL}9yq{ow83}w zB?(5R4$iw*{{N4Z3|qgCz31F-o~*1a9xJO=2_N^@|6dfr!py+fBG?hWejan%E|KQB zb6J{q?2tHodb+;h9KKDG$JjU&rfK*a9$vNT?DNQoBa(IhQW&z57$5aJOs`3?sQIDR gHvb}{Ljxnj!W~VobMt4%0;7k))78&qol`;+0O@VGrT_o{ literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.SaveIcon.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.SaveIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..81acdcb989554a537d6f8d2866dc9365ef767f53 GIT binary patch literal 501 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9EWV9eN~w38hu$dc~p z>&U>cv9IQL;A9|QA=x9ymw};5m4Tt5nStTwe<1ymfuYoZf#FpG1B2BJ1_tr`N%2SB z7#J9{JzX3_DsCnH`TyUZS(QPdA;Q5W^7p#`=6&`F8@7ihZ`hD9;U{3zV;R-wU1T3R}J1uKWb8n%e2D51AZ z4Gd0(53cFPwRukNdvui{sF{a>siSoQlM_&z0Z+xhKRV8(Ta6F@{QO>G$r1^Px<5P4 zA2@pSsDkq1GZQ8i&1jrCb0(w2|AMa!j7M6|Uitq&QZj7)KK35JjxKLcPO n^-Ou@*1(XIv_OD?MS`L6NuuG)S4V7sQN-Zs>gTe~DWM4fmUX>M literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.SelectionArrow.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.SelectionArrow.png new file mode 100644 index 0000000000000000000000000000000000000000..39ec4f499a06a8eae408964e7766f3b851dfce9e GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*L8u6X8RJr;9|Hx;JY5_^Ed2LQy2yDzfyd?cU-JTmg~3bX6qml5Da<75WcS5( z@yX0I_bkT=odSAKv)=t+(hLyNTya%r(jF$6Bt}P-nJj!8&S*u3J=os2bL*bp5kFhr zZ+81JQ!!uIEOJM~!MP1zr3F~DE4&2`MmJqi(TWKB(EWhz?VH^NJGsL^USRNa^>bP0 Hl+XkKpjB7P literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.SideBarDocument.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.SideBarDocument.png new file mode 100644 index 0000000000000000000000000000000000000000..2d8840719152b55bbabad07fbe8718da879a1d8f GIT binary patch literal 575 zcmV-F0>J%=P)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGma{vGma{-JZxd#9M0jNntK~y+Tm6MB0!cZ8++kfsK zVUU3eYN*Nbk!YyX+^nXUOME0w^N~%{((J7mr+Zh9$X%ifA9s8^=l9(mb~ylB9LHhn zk41Exse}T^A{(&!_`q_x#OvEDo*thto6RtuOsGIFs{LJhgT7p?R#+^E`Q^(zof7kS z4DIGdH>+yP6k-70-xtQD^+dXNyIs9suh&s7Uu-}O!1K#9=JPr3@9uFs8euRPpwsD~ z*=%lrEf$OMIR@Z?n14=QKUb?&C?y5?LLRxCq-#t86B5=?8{)cujduGAjYb2NN(H6! z5@cD1C`w2R0vn)d8v4B++O4+fNdzH0|@sybMW_AfyEx#g7mqne zBK4hgBoYSC^YD7TaJgKt+lkq>1FLnL4KNFi)!X=y=!K%q|J3?cegY@eWA~8jd+-1N N002ovPDHLkV1f=I_q6~3 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.SmallIconsIcon.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.SmallIconsIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..a2c2910abd64f5c3b38a073a5efcc1cb67a286f8 GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*K?sZ)dz5yv0|om$T^vI!{O1O7@*Pm%P`>&9|B>@%g$E0!_ROqk+ImGu@b0DX z$p=fNlb@YFR=U6F-s!SwTUAO7S#OIAcI%Zfq$Iv{T@{*XrhfG=>w%_uLQ29{Rk>v3 z8FVdQ&MBb@0QjY1dH?_b literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.SplitWindow.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.SplitWindow.png new file mode 100644 index 0000000000000000000000000000000000000000..aaeed6a38748435b4b893f598214d7c920787d6b GIT binary patch literal 650 zcmV;50(Jd~P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;07*naRCwBA{Qv(y10?_;fLJTCAg}>ISAaS188{h!y!{SlKYq`|AS?Wr;mdc3P4`~@ z1!_h(_TS&%U>YERSQG>vFoe6CgE^q!`16m4;qRZnU|T@=*KZITsQK3)F#G2pApHyE z8gYh_+ExaD08CCv3IIR|ivIuONzFWsAT9^7|I74(D37Q>7QpBO(v9=@MQDFm0mSs- z161=r5dH_20BigUG6=-~3)T1+!T~xUkzd&0+^uK=)&42%ZH2eqC zf1!qe4F-w*g@gw{05QRw9uyP+44D56Q4yhF1*r*948MVf6lNuWZL2L!2a9*r=YkEJ z)>#ZT03d)EXRO%qKPlK1tOyiXAX|R@1_mB9uzvmq@&7<*P~d?A_&0=Z>+WL!2q1_H z{{4dn+J9&mfDA%}2PEKNVFM8d=>Y+N0D^nrFH9rQ|G%M%;I4vN0HeWS1Pud#00J8T z3Z#F3A%XZ898i$J0~-Ph`9J^Rw!;ho0e}Ev`3+3p&S5!NGs?Ty-{5Q^Q7)`%00M}S k(%c9TKuio20)PMm04evZnW!&8XaE2J07*qoM6N<$f*lV6(*OVf literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.StopProcess.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.StopProcess.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc4a7c08c9625d974dd90f0715ca010f0f91327 GIT binary patch literal 699 zcmV;s0!00ZP)|r)d^SF=yz4!atIJESvzaQs(ha+CT_|hSkk=a{$802Xq(N11?>qzCUsi<%`lkS|AaF~@fLN&wHnimVB_ zsmfKY00}uw$VkXYRBhVfzkU+lN*|XaSu9++MMM zTj|Dm;WRs2u2n0UQfjzAYFJQz_>>+UFi-mgLTW=t#hP~Ad)W^3z{PN({Dak`ijui- zx5s71YIhw-t!o3|C&uy@yUhLT>^wUk0s#=r{H}FwvZhv~su3jx7$AX=ASb+mw{Ql= zXyeC=-0_~GOj=d$>-uozY+{y1B4Qu{5jY~Bpco-g2r>i}bK}v|nY0qmM?TG8xTvYQ hYUX*T)#Q(F{{RSRb+n}sQ8NGl002ovPDHLkV1nnSI_&@e literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.SubTypes.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.SubTypes.png new file mode 100644 index 0000000000000000000000000000000000000000..82bfe26d712654038ca4d7d2ffebf7191c4dbffd GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*K?sZ)dz5yv0|oOvT^vI!{O?X`gTe~DWM4f;N(?z literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.SuperTypes.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.SuperTypes.png new file mode 100644 index 0000000000000000000000000000000000000000..831e43bb11a86385c87c740f6f666fa61746a5d6 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*K?sZ)dz5yv0|iSwT^vI!{FhE*KL&0vgVyOT7La}&#qBMd4W>WFU8GbZ8({Xk{QrNlj4iWF>9@00CV|L_t(|+NIMmYg2I) z#^ERbA|xSTy$Kf_tmveRyF#G^gy7;J_!RQWbnJL*su>7>Xd z#1?bIjYHzlSjAXL@CRo*?|aUH_w4u!aU3g^O7c8cC=^tyRh3FbmStGp7K;TOVAtjxV0Szo3zNwNZlJh@!Fhl1pM)ri;28N9x?|)~6baMm6b^B+g~1_C zLI^^h=kOYDG21|Vgctalrs-Lbk|a5;*Xv(!71vhbxkx;~t5&O(Etkt*Q4S#(4u@Mu vdFy9tx7+j8*%wnR7S(DsA%yc0o{lfqN03CEi zSad^gZEa<4bO1wgWnpw>WFU8GbZ8({Xk{QrNlj4iWF>9@009z7L_t(|+NIOIN@GzJ z#qnQG3U4lf=uJ3w0qv%l2N)1+w4EoI(kJpU1Ph-a4`3&Vg^ z>bhQjwJb}*o^ULj3sd1i_$OQor@|khSC-{+%TMAnVJ<#Am%@?I%Q?St2t(myh4{6} zp|Anz$>{*UP+H9o{Ki(!Sz0U>u#ZijXCIrB$wZn?r?7)!4TI literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.TestRunner.Red.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.TestRunner.Red.png new file mode 100644 index 0000000000000000000000000000000000000000..b5320012195873a386e4b7e1ace6aa5c63bcf856 GIT binary patch literal 484 zcmVWFU8GbZ8({Xk{QrNlj4iWF>9@00BrzL_t(|+LeN~E;m3=vm|#6>s);vO6T8VVXD4iHKjDy;BDL~I#BycGNdhlCK1 zwB4WC)y#aK4KT(Kh9PBH;&~pOPKP*-$@6^et@oSwoMnAr2n>J&pa90e6>z(6%v+Xa z>szBJLg7^5Ug1UIU7=F=Pm@87xmBju-K2~V?zQ1~t zh%7`#3YQ8`uEtY^JB2g1xmB<7rq7fBDc?WFU8GbZ8({Xk{QrNlj4iWF>9@00BQqL_t(|+LhC>ic?V( zh2ig>L`Xt{n1qX@wsXLCtgJO)oOLYTWvOp3GU%OZexT`c!TFv$FOX4{37)GPfrNd7XO(OrOv&8##NL|-|)=oUyF}xXa zoVc?-ykLrlxM8;nZsEati#{eebajn!n9%EeR&WhB_XzmQU+@#(_Xs%K^p~!Aw@1Kg z?VnDk3L3oJBcQ>Hs-l!aq9hIyudeWnO$Xa#8>D{X?v9YAgKYu5Ue9GA2Z^J^>%_MX z=Z}eJ9c+tjl(#=q!SxQV5&AgA37V>MG8hcBZTtUQ8Vm;J^SM&Wd7ZPrrQb&U>cv9IQL;A9|QA=x9ymw};5m4Tt5nStTwe<1ymfuYoZf#FpG1B2BJ1_tr`N%2SB z7#JAaJzX3_DsCnH`TyUZS(QPdA>smSg-Yq-uFFl+jEs$q|NQ*i{_uFee1a59n(lqs zzfXTYO+E37k*S0636sRLX%{-P^77b>Y#S}uI?hg5`d?g3>>v9|M==%-1rg?~?Ci!V z#sc4&Kc*?>XPhBSelK?dj>!sA*tu;$-fK zmuLRSIw445AJ>ud4?lf>XK1j1-O7Psp~Q#3zsnUWd9q%oD(vGt^8Mkb|NjgPYJPlR zJj&3(aERkbGkajmgC7T(+x~~IGe}@ja$rbY@#gjG!x#QM;XM4`yiHL|CXmya9ZDo6ppSSGc&USr(fURN;}ur+bf%uGB6%# z((WuOE;eRiWi|Zs>uY!7$45skCL1|07(SfzjPvd5 z*{uIwUhdChU;pn&CW8aRLmuXUWv4pI;<=K}N9+<-MgqL03-~#}Etu%x_d;FlrFuxXx3;dP37BdB#!=wm<*t z-`N{VqzLBnNU+5zs4+NZ6|g9!PC{x JWt~$(698hsJ3{~f literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.UMLImplementation.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.UMLImplementation.png new file mode 100644 index 0000000000000000000000000000000000000000..1eeb2d3b445b12d391e9acbd35ca114e41c01085 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fv*IF8M9S3Ujqt8d%8G=SokOZIsajPqY{G=gE))SANlzAiqB4Da;LqLH+kj2oB`yt!k|Ml<-Mgq!9GtH#}Etut&_R=8Vop`kN|!8TO}y9;^}%T{tF5L92SS1)BZ24Q%#*9ln^vMWl^MX zn~g}%X~{j$HVYllDtj!E^4jsr-2{U#@eZjf|AilN+&jTBqwhnc;}e_tdyNd6mo&U_ j{22S9asJ+0j}_;2E=_FjReG-ibQy!EtDnm{r-UW|E}3Rg literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.UnderlineText.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.UnderlineText.png new file mode 100644 index 0000000000000000000000000000000000000000..0012aac521730f347977cde6c48f12fc10daf8b4 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*f$ty)Gwzs}{T3+b?CIhdV&R{hATjNM{e|!o5>GsHk}7QZFE^~=m@VPw?8fWR zVwKu>WP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;ib+I4RCwBA{Qv(y10itW>@x=ttsu$!KtYQ40kRxG z05MigJJWyf^)G{PJIRRw4hkD!5+6SQ5}2_3a>2wCU-Cb2@Cz_7F)=W_eaqk=_UAx< zwo##hn(zgXI)DITw5dAtU&Y>-;oZ^W2R1fZI)Vf*+&mMfZzcN5kfS2t9Kmakl_`$$%^%GEzg$-=;g3Y%Q9NRDNf1qxxz`zI; zxO{~nfbrpm0;#tX1fJae0Ct^}fPW!gTw#=h~>*~U?6_^&T!${ zD}w_UUO6!6XfrUpe8mvJ_in@dR>wq;GhyKZ^0$K;&w&G<85}?Zq z3}3%8d=L;5U=RR`y?V`%AoqR2{A#B}1|k4J05LKA1{v^$fq|Eof#Lmo27$ZRKFEu5 zK5UqEwgH46Jo~JG95V;5eE>(P0Na1C%K!q1h2ba2fN#K%28JdhBf|$}ErG_f4E10g zfB!NZymH)r|0FkX?0}+`L0lXx9$+8{j>iVqy3KwEfj9?Ct|9R8Zi00E^nj4Ug*? zWMvr`o%l{ogjD-9Na(ZCx;q_q6z%WZN6IcLCkpKb2NGK_TG&^Q* z+kb&g%7B5HnL**h;|J&Gcp1WC2Oxl02-yzS{9hQXS>Wxn59`}(1CgT^Ab^+%834*a zV8(+74E^!y@H_wm00G1ROJ%t5`%gaw95T1n8-A$Gx*6mii zv0I-+>XWb_1bh=K16c^JR>y5H5PBt8=)-`JmJ&pa3=G|$Y127=C!0u$>m_IIcfRv; zzuY;Kv6q&$6~odjd(jkFYTpku&651l~i!Xc%Dxc2{mOIHfZ^M;+xXp@7pK%PI0>~jJ+>4}_F@5^6u~Zp(_mWNI^ahfH57R!yC`ySVBGM_&C@vy( zOefXfZ|&D%^Yc=XPaHtoGU(28NQCZdriF2Bqo7>3O#gGd^M3vM<^=uq_{jYen~0qV;0cFrxDsm+Y+}J np>7$)3PHfAxUXWO$^aoIgjy<70GOSGc;FD}_};oIM8?EFvNjXa literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.UpperToLowerCase.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.UpperToLowerCase.png new file mode 100644 index 0000000000000000000000000000000000000000..0577402f6f97346e4deb14e51a83d0626ad7f481 GIT binary patch literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*K?sZ)dz5yv0|mQ1T^vI!{I^aHiBQQvkYaHt2+HJ epFBUf+kB^4w&$CZpO}EoV(@hJb6Mw<&;$TQvu3RT literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Warning.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.16x16.Warning.png new file mode 100644 index 0000000000000000000000000000000000000000..3dc66814f06d799bf447ddb059b83bc4cef15d25 GIT binary patch literal 776 zcmV+j1NZ!iP)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGf5C8xR5CN?ty>$Qp0&z)1K~y+Tl~P+slVKSC{+;LM zg;GjEpcD~81xcll^ovW8dB68#Y@KB>z2bw*hlGItFuz{ThWx_( zb|Dg0ArMfYs_MS*Um`BsS>Eer0J0Gct6?zYqPeLNtU z;MtVG+{{IO-p0Y>N=D^X5&HVlfRGgRx;*Ibv|jnAhQ*F*EreM)Iot}zfD(m8cM~qAKD6=fw{nEc^l40FcbpPU4EJtGp_1){=D=~l zPF##1Be>};sMQK>F&;g9$+Nk^Je}hW!}nnke!S=62#s(U?UA7%`v{C(mk^@D)w_>k z1mB6!-=2Yz(iVZ)2hZ`7J;@mFz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ<|4BqaRCwBAWFP`GY`x|A!88kW-$~2$V!CFm{jNYunURlMQi>r;hlPQU?;u0Z zm8T4^c=Uqa=*9XyII};--NFP7|fejGoyczChwtVKkS2vi9CEqdFNvJav zDmpU!W`4zRtcW4Sl`1g&Jam=A;W z0t66~K-Zo06PJBuAH33L5MXp*kYSEwSpK}0Ve0K{hNqv57#@FOV|e>Dih+T%jDg{o z1kfcb8UAte1U!EE>I=vKfB*nN0KWeO{_gcK0QdO-_3%mnDhy@-n%qtR_5K9_1pU0pvM1CWq}%RF#P}03-q%C1H-%93=D4r85kb! zU=aRo#URIE&A|GewX0T%X=;ceg;Mc6)`aeOLaAdCvV>TdG~nB1r`p@H%!03Zv+_t z5I`*7|1dCodvfnR*Y71R-<7=Iy|3I1ee5n=hu@JEWB;VsiIh94h4Fh${^{^r;H-@(5G0RavU z1^WE~^zP{Q0`}nS0srys1q%`6{QUf&0{;5p0RIH@@87@r0*Hn2!W!SdU%pkGxW~cB z^7{4`#?PO`__(;Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGf5C8xR5CN?ty>$Qp2*621K~z{rjaLUyRc9K#nh0u) z#>8%nSdy#)qOi6k#zHg}EHlw$GZw(OF-{am1B zga~SctOMezJFDRdmUs4i_dXb&pyth-x&OWQzu!6E`Tq9WlosbHf97X)wE~@V1&aCY zJBoRIgVN!dK~W3_r2&MwnNr`gyYk4|QqkMlwo%O5{h5$j9}(~}{Cm?{)PM953{$26 zOO^nxu7JBc;OPl$-VCf+1AOxh@WmG}j31Bsp+j+V{@AW z;F+Z*Fl!d@-FLv2EkIx(aQH9~6$KnU3WSFPp`n_9ty=*%H?8m2Uuz=h8b16GMWaR{ z>%zIuUX*AH0o98a0X8(^@~ShY%XKuR=! zJ}_qvU~dnM8U=jt0SX2U!0GttR^2cWP_=F~43fFjTkLdk0XA;bYVP5oWw~@IFmE0( zZJO3^>Qv3CxpRT9zS79$-Gm8hDfHIX&|6p_*`hzro{DWDqDeqS)Irp
9E%YMNE z)q$tX>XDn*HxUWmer znN7TE@+^4+lQ^1o-q*)YFN5tZnMmt4J;{M<{FjKShC_s3oe28saulNBl;( ze)%PSNJ&9hMh1?FYdw47F`cTROXa*?>)su^yL86>(4eMLr~<02EOB@6V1V^ft>hp) z#KD(9^2T3!RTV<$MrAVrx7fZ*loG2r`VXX~sokFuN6N}@VfAY0nf0w6Jy1sSOYgjc z96IRiFbz2w$tt%}b~+Z05W+W#-KNhnTr#biGMgc zAu=O(Fhy0HotO&SMgd)+$C!G zq15|2QOGsEgqiD`5lLwtw#XZ}&Z(*s;o=a9u8_2-eS72*DV#m0c|FDFHiHJ@AeVb3 zw{IU@WQ~fMaRpIDi+(36#k$vCLz&U){7IAWOKmNlv_dKlG!VaW0m^0n0ukM&4K9)B z5=k%enngFx60vNbWRQTzECc3T1ag!lCYS#N?d2n%Bl1h3Xn|HY>1qxQ&8O? zRHi?1rig35kmnN@2_3)Hkx-CLq;cIyAfnk$A_g;Qe;-dMsdON@LkDD%P)8IKrMxet z$`S@CHj-!Z8pl20&Z9>vyTM>kAwQ9n7Zijn_Tjizh2+wKToUF8IpZX@ZHp5`1lw_R z!GekVczZxe8)l6&QXf9dCd95nqFC(X2aE{JSw{8uNk}!_siF}ztWUzA~ z10)eHTuh?U(_4^V;!^!9cRpEgnlDy)m6h1NVg(ZT?K$En;yB|)5c`OOBwtDN>(>{- z0sc@fb1p`Z{3sF27pK@sY&=P<;l>i3o!ye08DH&dj4^ps=&3-^s&96j!*X&(Rlgg^T0+Gen}X zZz^}s@&^x4->h$GeLdoMQVM6E14J-M0~p_*=t|6)H3RAA&%|f~yxfsM0b-A+jUl4B zA*B}-#F#9@6DO(yCG$pz*jN$71*rVqJrlX{wzk;IcY%Z-1q3nvJYIWr?}qhmtF*nK z@o*45z(O4$``Gy~@uS!`WQba0`Q=TYjwn8hHzJOKP7-o2qU2qooQ{mYIBsaW`D_p2 zV-(=d{+-w!J9;Fd!uOjBNZKEwPLp5(JBg4VhznfZvU%hd8;^=J;t&G~qKRXKkc-vw zO%Bfir?@Ej3MsLj*v3BMz-YE5`;{w}@lcYXZO6@zM`7HdA}Jt%okh9W7es^*B0xwQ z5n*hLQ-_E!;$Os0Be4kZB(@l{pUbN`r~Bm3SjOmZ(*sF!5q^{H)v>UPBK-N0*eEp= zG2%$5@hXIkE(x)?CVeGqZ(^&FdhqU?qY$Lhl&>`^J_D_@Z;0ym5l@#SFTO8+Oy-XcK zf_ps&ArpwrLgsGFSlZHeHNP9qYkMy9w%qc!d2B*KUV4j!U;4jrm)~|c+E~Ml!M2MV zganr?8%c#&u+8|~g?+{o9XO-<@aQ#b=5%$%E7E1P%Js@Wr{{QPTo+H literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.32x32.Information.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.32x32.Information.png new file mode 100644 index 0000000000000000000000000000000000000000..1af48b2d6d11cd111d120362bfb4a982d56851d2 GIT binary patch literal 2393 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 literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/BitmapResources-data/Icons.32x32.Warning.png b/data/resources/image/BitmapResources/BitmapResources-data/Icons.32x32.Warning.png new file mode 100644 index 0000000000000000000000000000000000000000..3d12316635d5954170fcc56ff700916f3bf1f495 GIT binary patch literal 1905 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