diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..1ff0c42
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,63 @@
+###############################################################################
+# Set default behavior to automatically normalize line endings.
+###############################################################################
+* text=auto
+
+###############################################################################
+# Set default behavior for command prompt diff.
+#
+# This is need for earlier builds of msysgit that does not have it on by
+# default for csharp files.
+# Note: This is only used by command line
+###############################################################################
+#*.cs     diff=csharp
+
+###############################################################################
+# Set the merge driver for project and solution files
+#
+# Merging from the command prompt will add diff markers to the files if there
+# are conflicts (Merging from VS is not affected by the settings below, in VS
+# the diff markers are never inserted). Diff markers may cause the following 
+# file extensions to fail to load in VS. An alternative would be to treat
+# these files as binary and thus will always conflict and require user
+# intervention with every merge. To do so, just uncomment the entries below
+###############################################################################
+#*.sln       merge=binary
+#*.csproj    merge=binary
+#*.vbproj    merge=binary
+#*.vcxproj   merge=binary
+#*.vcproj    merge=binary
+#*.dbproj    merge=binary
+#*.fsproj    merge=binary
+#*.lsproj    merge=binary
+#*.wixproj   merge=binary
+#*.modelproj merge=binary
+#*.sqlproj   merge=binary
+#*.wwaproj   merge=binary
+
+###############################################################################
+# behavior for image files
+#
+# image files are treated as binary by default.
+###############################################################################
+#*.jpg   binary
+#*.png   binary
+#*.gif   binary
+
+###############################################################################
+# diff behavior for common document formats
+# 
+# Convert binary document formats to text before diffing them. This feature
+# is only available from the command line. Turn it on by uncommenting the 
+# entries below.
+###############################################################################
+#*.doc   diff=astextplain
+#*.DOC   diff=astextplain
+#*.docx  diff=astextplain
+#*.DOCX  diff=astextplain
+#*.dot   diff=astextplain
+#*.DOT   diff=astextplain
+#*.pdf   diff=astextplain
+#*.PDF   diff=astextplain
+#*.rtf   diff=astextplain
+#*.RTF   diff=astextplain
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9491a2f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,363 @@
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+##
+## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
+
+# User-specific files
+*.rsuser
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Mono auto generated files
+mono_crash.*
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+[Ww][Ii][Nn]32/
+[Aa][Rr][Mm]/
+[Aa][Rr][Mm]64/
+bld/
+[Bb]in/
+[Oo]bj/
+[Oo]ut/
+[Ll]og/
+[Ll]ogs/
+
+# Visual Studio 2015/2017 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+
+# Visual Studio 2017 auto generated files
+Generated\ Files/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUnit
+*.VisualState.xml
+TestResult.xml
+nunit-*.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# Benchmark Results
+BenchmarkDotNet.Artifacts/
+
+# .NET Core
+project.lock.json
+project.fragment.lock.json
+artifacts/
+
+# ASP.NET Scaffolding
+ScaffoldingReadMe.txt
+
+# StyleCop
+StyleCopReport.xml
+
+# Files built by Visual Studio
+*_i.c
+*_p.c
+*_h.h
+*.ilk
+*.meta
+*.obj
+*.iobj
+*.pch
+*.pdb
+*.ipdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*_wpftmp.csproj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# Visual Studio Trace Files
+*.e2e
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# AxoCover is a Code Coverage Tool
+.axoCover/*
+!.axoCover/settings.json
+
+# Coverlet is a free, cross platform Code Coverage Tool
+coverage*.json
+coverage*.xml
+coverage*.info
+
+# Visual Studio code coverage results
+*.coverage
+*.coveragexml
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# Note: Comment the next line if you want to checkin your web deploy settings,
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
+# NuGet Packages
+*.nupkg
+# NuGet Symbol Packages
+*.snupkg
+# The packages folder can be ignored because of Package Restore
+**/[Pp]ackages/*
+# except build/, which is used as an MSBuild target.
+!**/[Pp]ackages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/[Pp]ackages/repositories.config
+# NuGet v3's project.json files produces more ignorable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
+AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+*.appx
+*.appxbundle
+*.appxupload
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!?*.[Cc]ache/
+
+# Others
+ClientBin/
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.jfm
+*.pfx
+*.publishsettings
+orleans.codegen.cs
+
+# Including strong name files can present a security risk
+# (https://github.com/github/gitignore/pull/2483#issue-259490424)
+#*.snk
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+ServiceFabricBackup/
+*.rptproj.bak
+
+# SQL Server files
+*.mdf
+*.ldf
+*.ndf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+*.rptproj.rsuser
+*- [Bb]ackup.rdl
+*- [Bb]ackup ([0-9]).rdl
+*- [Bb]ackup ([0-9][0-9]).rdl
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+node_modules/
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
+*.vbw
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# CodeRush personal settings
+.cr/personal
+
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc
+
+# Cake - Uncomment if you are using it
+# tools/**
+# !tools/packages.config
+
+# Tabs Studio
+*.tss
+
+# Telerik's JustMock configuration file
+*.jmconfig
+
+# BizTalk build output
+*.btp.cs
+*.btm.cs
+*.odx.cs
+*.xsd.cs
+
+# OpenCover UI analysis results
+OpenCover/
+
+# Azure Stream Analytics local run output
+ASALocalRun/
+
+# MSBuild Binary and Structured Log
+*.binlog
+
+# NVidia Nsight GPU debugger configuration file
+*.nvuser
+
+# MFractors (Xamarin productivity tool) working folder
+.mfractor/
+
+# Local History for Visual Studio
+.localhistory/
+
+# BeatPulse healthcheck temp database
+healthchecksdb
+
+# Backup folder for Package Reference Convert tool in Visual Studio 2017
+MigrationBackup/
+
+# Ionide (cross platform F# VS Code tools) working folder
+.ionide/
+
+# Fody - auto-generated XML schema
+FodyWeavers.xsd
\ No newline at end of file
diff --git a/AutoTrackR2.sln b/AutoTrackR2.sln
new file mode 100644
index 0000000..c4b5916
--- /dev/null
+++ b/AutoTrackR2.sln
@@ -0,0 +1,22 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.12.35521.163 d17.12
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutoTrackR2", "AutoTrackR2\AutoTrackR2.csproj", "{31093634-8FBB-4BC6-BEA4-DAD6C11404F3}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{31093634-8FBB-4BC6-BEA4-DAD6C11404F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{31093634-8FBB-4BC6-BEA4-DAD6C11404F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{31093634-8FBB-4BC6-BEA4-DAD6C11404F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{31093634-8FBB-4BC6-BEA4-DAD6C11404F3}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/AutoTrackR2/App.xaml b/AutoTrackR2/App.xaml
new file mode 100644
index 0000000..a94f622
--- /dev/null
+++ b/AutoTrackR2/App.xaml
@@ -0,0 +1,362 @@
+<Application x:Class="AutoTrackR2.App"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:local="clr-namespace:AutoTrackR2"
+             StartupUri="MainWindow.xaml">
+    <Application.Resources>
+        <FontFamily x:Key="Orbitron">/AutoTrackR2;component/Fonts/Orbitron-Bold.ttf#Orbitron</FontFamily>
+        <FontFamily x:Key="Roboto">/AutoTrackR2;component/Fonts/Roboto-Regular.ttf#Roboto</FontFamily>
+
+        <FontFamily x:Key="DynamicFont">"{}"</FontFamily>
+
+        <!-- Default theme -->
+        <Color x:Key="AccentColor">#00A9E0</Color>
+        <Color x:Key="BackgroundDarkColor">#0F1A2B</Color>
+        <Color x:Key="BackgroundLightColor">#1D2D44</Color>
+        <Color x:Key="TextColor">#FFFFFF</Color>
+
+        <SolidColorBrush x:Key="TextBrush" Color="{DynamicResource TextColor}" />
+        <SolidColorBrush x:Key="AccentBrush" Color="{DynamicResource AccentColor}" />
+        <SolidColorBrush x:Key="BackgroundDarkBrush" Color="{DynamicResource BackgroundDarkColor}" />
+        <SolidColorBrush x:Key="BackgroundLightBrush" Color="{DynamicResource BackgroundLightColor}" />
+
+        <!-- Define the Style for Window -->
+        <Style TargetType="Window" x:Key="CustomWindowStyle">
+            <Setter Property="Template">
+                <Setter.Value>
+                    <ControlTemplate TargetType="Window">
+                        <Border BorderBrush="{DynamicResource AccentBrush}" BorderThickness="2" CornerRadius="10" Background="{DynamicResource BackgroundLightBrush}">
+                            <Grid>
+                                <ContentPresenter HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
+                            </Grid>
+                        </Border>
+                    </ControlTemplate>
+                </Setter.Value>
+            </Setter>
+        </Style>
+
+        <!-- Tab Button Style -->
+        <Style x:Key="TabButtonStyle" TargetType="Button">
+            <Setter Property="Foreground" Value="{DynamicResource TextBrush}"/>
+            <Setter Property="Background" Value="{DynamicResource BackgroundDarkBrush}"/>
+            <Setter Property="BorderBrush" Value="{DynamicResource AccentBrush}"/>
+            <Setter Property="BorderThickness" Value="2"/>
+            <Setter Property="Cursor" Value="Hand"/>
+            <Setter Property="Padding" Value="10"/>
+            <Setter Property="Margin" Value="5"/>
+            <Setter Property="FontFamily" Value="{StaticResource Orbitron}"/>
+            <Setter Property="Template">
+                <Setter.Value>
+                    <ControlTemplate TargetType="Button">
+                        <Border Background="{DynamicResource BackgroundDarkBrush}" BorderBrush="{DynamicResource AccentBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="5">
+                            <!-- ContentPresenter will automatically inherit Foreground from Button -->
+                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
+                        </Border>
+                    </ControlTemplate>
+                </Setter.Value>
+            </Setter>
+            
+        </Style>
+
+
+        <!-- General Button Style -->
+        <Style x:Key="DisabledButtonStyle" TargetType="Button">
+            <Setter Property="Foreground" Value="Gray"/>
+            <Setter Property="Background" Value="{DynamicResource BackgroundDarkBrush}"/>
+            <Setter Property="BorderBrush" Value="Gray"/>
+            <Setter Property="BorderThickness" Value="2"/>
+            <Setter Property="FontWeight" Value="Bold"/>
+            <Setter Property="Cursor" Value="Hand"/>
+            <Setter Property="Padding" Value="5"/>
+            <Setter Property="Template">
+                <Setter.Value>
+                    <ControlTemplate TargetType="Button">
+                        <Border Background="{DynamicResource BackgroundDarkBrush}" BorderBrush="{DynamicResource AccentBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="5">
+                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                        </Border>
+                    </ControlTemplate>
+                </Setter.Value>
+            </Setter>
+        </Style>
+
+        <Style x:Key="ButtonStyle" TargetType="Button">
+            <Setter Property="Foreground" Value="{DynamicResource TextBrush}"/>
+            <Setter Property="Background" Value="{DynamicResource BackgroundDarkBrush}"/>
+            <Setter Property="BorderBrush" Value="{DynamicResource AccentBrush}"/>
+            <Setter Property="BorderThickness" Value="2"/>
+            <Setter Property="FontWeight" Value="Bold"/>
+            <Setter Property="Cursor" Value="Hand"/>
+            <Setter Property="Padding" Value="5"/>
+            <Setter Property="Template">
+                <Setter.Value>
+                    <ControlTemplate TargetType="Button">
+                        <Border Background="{DynamicResource BackgroundDarkBrush}" BorderBrush="{DynamicResource AccentBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="5">
+                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                        </Border>
+                    </ControlTemplate>
+                </Setter.Value>
+            </Setter>
+        </Style>
+
+        <!-- Title Bar Button Style -->
+        <Style x:Key="TitleButtonStyle" TargetType="Button">
+            <Setter Property="Foreground" Value="{DynamicResource TextBrush}"/>
+            <Setter Property="Background" Value="{DynamicResource BackgroundDarkBrush}"/>
+            <Setter Property="BorderBrush" Value="{DynamicResource AccentBrush}"/>
+            <Setter Property="BorderThickness" Value="2"/>
+            <Setter Property="FontWeight" Value="Bold"/>
+            <Setter Property="Cursor" Value="Hand"/>
+            <Setter Property="Template">
+                <Setter.Value>
+                    <ControlTemplate TargetType="Button">
+                        <Border Background="{DynamicResource BackgroundDarkBrush}" 
+                        BorderBrush="{DynamicResource AccentBrush}" 
+                        BorderThickness="2" 
+                        CornerRadius="5" 
+                        Margin="0,1,4,1">
+                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
+                        </Border>
+                    </ControlTemplate>
+                </Setter.Value>
+            </Setter>
+        </Style>
+
+        <!-- Custom Style for Rounded TextBox -->
+        <Style x:Key="RoundedTextBox" TargetType="TextBox">
+            <Setter Property="Foreground" Value="{DynamicResource TextBrush}"/>
+            <Setter Property="Background" Value="{DynamicResource BackgroundDarkBrush}"/>
+            <Setter Property="BorderBrush" Value="{DynamicResource AccentBrush}"/>
+            <Setter Property="FontFamily" Value="{StaticResource Roboto}"/>
+            <Setter Property="Height" Value="30"/>
+            <Setter Property="Padding" Value="5"/>
+            <Setter Property="VerticalContentAlignment" Value="Center"/>
+            <Setter Property="HorizontalAlignment" Value="Stretch"/>
+            <Setter Property="BorderBrush" Value="{DynamicResource AccentBrush}"/>
+            <Setter Property="BorderThickness" Value="2"/>
+            <!-- The actual border with rounded corners -->
+            <Setter Property="Template">
+                <Setter.Value>
+                    <ControlTemplate TargetType="TextBox">
+                        <Border Background="{DynamicResource BackgroundDarkBrush}"
+                        BorderBrush="{DynamicResource AccentBrush}"
+                        BorderThickness="{TemplateBinding BorderThickness}"
+                        CornerRadius="5">
+                            <ScrollViewer x:Name="PART_ContentHost"/>
+                        </Border>
+                    </ControlTemplate>
+                </Setter.Value>
+            </Setter>
+        </Style>
+
+        <!-- Custom Style for Slider -->
+        <Style x:Key="ThreePositionSlider" TargetType="Slider">
+            <Setter Property="Height" Value="40" />
+            <Setter Property="Width" Value="160" />
+            <Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
+            <Setter Property="Background" Value="{DynamicResource BackgroundDarkBrush}" />
+            <Setter Property="BorderBrush" Value="{DynamicResource AccentBrush}" />
+            <Setter Property="BorderThickness" Value="2" />
+            <Setter Property="Template">
+                <Setter.Value>
+                    <ControlTemplate TargetType="Slider">
+                        <Grid Width="120" Height="30" HorizontalAlignment="Left" Margin="58,-6,0,0">
+                            <!-- Track Background -->
+                            <Border Background="{DynamicResource BackgroundDarkBrush}" BorderBrush="{DynamicResource AccentBrush}" BorderThickness="2" CornerRadius="15" Margin="0,0,-5,-4" />
+
+                            <!-- Track -->
+                            <Track x:Name="PART_Track">
+                                <Track.Thumb>
+                                    <Thumb x:Name="PART_Thumb"
+                                   Width="22" 
+                                   Height="22"
+                                   Margin="6,4,1,0">
+                                        <Thumb.Template>
+                                            <ControlTemplate TargetType="Thumb">
+                                                <Ellipse Fill="{DynamicResource AccentBrush}" />
+                                            </ControlTemplate>
+                                        </Thumb.Template>
+                                    </Thumb>
+                                </Track.Thumb>
+                                <Track.DecreaseRepeatButton>
+                                    <RepeatButton Background="Transparent" BorderBrush="Transparent" IsHitTestVisible="False"/>
+                                </Track.DecreaseRepeatButton>
+                                <Track.IncreaseRepeatButton>
+                                    <RepeatButton Background="Transparent" BorderBrush="Transparent" IsHitTestVisible="False"/>
+                                </Track.IncreaseRepeatButton>
+                            </Track>
+                        </Grid>
+                    </ControlTemplate>
+                </Setter.Value>
+            </Setter>
+        </Style>
+
+        <!-- Toggle Slider Style -->
+        <Style x:Key="ToggleSliderStyle" TargetType="Slider">
+            <Setter Property="Height" Value="40" />
+            <Setter Property="Width" Value="160" />
+            <Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
+            <Setter Property="Background" Value="{DynamicResource BackgroundDarkBrush}" />
+            <Setter Property="BorderBrush" Value="{DynamicResource AccentBrush}" />
+            <Setter Property="BorderThickness" Value="2" />
+            <Setter Property="Template">
+                <Setter.Value>
+                    <ControlTemplate TargetType="Slider">
+                        <Grid Width="50" Height="30" HorizontalAlignment="Left" >
+                            <!-- Track Background -->
+                            <Border Background="{DynamicResource BackgroundDarkBrush}" BorderBrush="{DynamicResource AccentBrush}" BorderThickness="2" CornerRadius="15" Margin="0,0,-5,-4" />
+
+                            <!-- Track -->
+                            <Track x:Name="PART_Track">
+                                <Track.Thumb>
+                                    <Thumb x:Name="PART_Thumb"
+                                        Width="22" 
+                                        Height="22"
+                                        Margin="6,4,1,0">
+                                        <Thumb.Template>
+                                            <ControlTemplate TargetType="Thumb">
+                                                <Ellipse Fill="{DynamicResource AccentBrush}" />
+                                            </ControlTemplate>
+                                        </Thumb.Template>
+                                    </Thumb>
+                                </Track.Thumb>
+                                <Track.DecreaseRepeatButton>
+                                    <RepeatButton Background="Transparent" BorderBrush="Transparent" IsHitTestVisible="False"/>
+                                </Track.DecreaseRepeatButton>
+                                <Track.IncreaseRepeatButton>
+                                    <RepeatButton Background="Transparent" BorderBrush="Transparent" IsHitTestVisible="False"/>
+                                </Track.IncreaseRepeatButton>
+                            </Track>
+                        </Grid>
+                    </ControlTemplate>
+                </Setter.Value>
+            </Setter>
+        </Style>
+
+        <!-- False toggle theme -->
+        <Style x:Key="FalseToggleStyle" TargetType="Slider">
+            <Setter Property="Height" Value="40" />
+            <Setter Property="Width" Value="160" />
+            <Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
+            <Setter Property="Background" Value="{DynamicResource BackgroundDarkBrush}" />
+            <Setter Property="BorderBrush" Value="Gray" />
+            <Setter Property="BorderThickness" Value="2" />
+            <Setter Property="Template">
+                <Setter.Value>
+                    <ControlTemplate TargetType="Slider">
+                        <Grid Width="50" Height="30" HorizontalAlignment="Left" >
+                            <!-- Track Background -->
+                            <Border Background="{DynamicResource BackgroundDarkBrush}" BorderBrush="{DynamicResource AccentBrush}" BorderThickness="2" CornerRadius="15" Margin="0,0,-5,-4" />
+
+                            <!-- Track -->
+                            <Track x:Name="PART_Track">
+                                <Track.Thumb>
+                                    <Thumb x:Name="PART_Thumb"
+                                Width="22" 
+                                Height="22"
+                                Margin="6,4,1,0">
+                                        <Thumb.Template>
+                                            <ControlTemplate TargetType="Thumb">
+                                                <Ellipse Fill="Gray" />
+                                            </ControlTemplate>
+                                        </Thumb.Template>
+                                    </Thumb>
+                                </Track.Thumb>
+                                <Track.DecreaseRepeatButton>
+                                    <RepeatButton Background="Transparent" BorderBrush="Transparent" IsHitTestVisible="False"/>
+                                </Track.DecreaseRepeatButton>
+                                <Track.IncreaseRepeatButton>
+                                    <RepeatButton Background="Transparent" BorderBrush="Transparent" IsHitTestVisible="False"/>
+                                </Track.IncreaseRepeatButton>
+                            </Track>
+                        </Grid>
+                    </ControlTemplate>
+                </Setter.Value>
+            </Setter>
+        </Style>
+
+        <!-- Modern Rounded ScrollBar Style -->
+        <Style TargetType="ScrollBar">
+            <Setter Property="Width" Value="5" />
+            <Setter Property="Template">
+                <Setter.Value>
+                    <ControlTemplate TargetType="ScrollBar">
+                        <Grid>
+                            <Track Name="PART_Track" IsDirectionReversed="true" Width="12" Margin="5,0,0,0">
+                                <!-- Decrease Repeat Button -->
+                                <Track.DecreaseRepeatButton>
+                                    <RepeatButton Background="Transparent" BorderBrush="Transparent" BorderThickness="0">
+                                        <RepeatButton.Template>
+                                            <ControlTemplate TargetType="RepeatButton">
+                                                <Grid x:Name="RepeatButtonGrid">
+                                                    <VisualStateManager.VisualStateGroups>
+                                                        <VisualStateGroup Name="CommonStates">
+                                                            <VisualState Name="Normal">
+                                                                <Storyboard>
+                                                                    <DoubleAnimation Storyboard.TargetProperty="Opacity" Storyboard.TargetName="RepeatButtonGrid" To="1" Duration="0:0:0"/>
+                                                                </Storyboard>
+                                                            </VisualState>
+                                                            <VisualState Name="MouseOver">
+                                                                <Storyboard>
+                                                                    <DoubleAnimation Storyboard.TargetProperty="Opacity" Storyboard.TargetName="RepeatButtonGrid" To="0" Duration="0:0:0.1"/>
+                                                                </Storyboard>
+                                                            </VisualState>
+                                                        </VisualStateGroup>
+                                                    </VisualStateManager.VisualStateGroups>
+                                                </Grid>
+                                            </ControlTemplate>
+                                        </RepeatButton.Template>
+                                    </RepeatButton>
+                                </Track.DecreaseRepeatButton>
+
+
+                                <!-- Thumb (Handle) -->
+                                <Track.Thumb>
+                                    <Thumb>
+                                        <Thumb.Template>
+                                            <ControlTemplate TargetType="Thumb">
+                                                <Grid>
+                                                    <Border
+                                                Background="{DynamicResource BackgroundBrush}"
+                                                BorderBrush="{DynamicResource AccentBrush}"
+                                                BorderThickness="2"
+                                                CornerRadius="3" />
+                                                </Grid>
+                                            </ControlTemplate>
+                                        </Thumb.Template>
+                                    </Thumb>
+                                </Track.Thumb>
+
+                                <!-- Increase Repeat Button -->
+                                <Track.IncreaseRepeatButton>
+                                    <RepeatButton Background="Transparent" BorderBrush="Transparent" BorderThickness="0">
+                                        <RepeatButton.Template>
+                                            <ControlTemplate TargetType="RepeatButton">
+                                                <Grid x:Name="RepeatButtonGrid">
+                                                    <VisualStateManager.VisualStateGroups>
+                                                        <VisualStateGroup Name="CommonStates">
+                                                            <VisualState Name="Normal">
+                                                                <Storyboard>
+                                                                    <DoubleAnimation Storyboard.TargetProperty="Opacity" Storyboard.TargetName="RepeatButtonGrid" To="1" Duration="0:0:0"/>
+                                                                </Storyboard>
+                                                            </VisualState>
+                                                            <VisualState Name="MouseOver">
+                                                                <Storyboard>
+                                                                    <DoubleAnimation Storyboard.TargetProperty="Opacity" Storyboard.TargetName="RepeatButtonGrid" To="0" Duration="0:0:0.1"/>
+                                                                </Storyboard>
+                                                            </VisualState>
+                                                        </VisualStateGroup>
+                                                    </VisualStateManager.VisualStateGroups>
+                                                </Grid>
+                                            </ControlTemplate>
+                                        </RepeatButton.Template>
+                                    </RepeatButton>
+                                </Track.IncreaseRepeatButton>
+                            </Track>
+                        </Grid>
+                    </ControlTemplate>
+                </Setter.Value>
+            </Setter>
+        </Style>
+
+    </Application.Resources>
+</Application>
diff --git a/AutoTrackR2/App.xaml.cs b/AutoTrackR2/App.xaml.cs
new file mode 100644
index 0000000..85786d2
--- /dev/null
+++ b/AutoTrackR2/App.xaml.cs
@@ -0,0 +1,14 @@
+using System.Configuration;
+using System.Data;
+using System.Windows;
+
+namespace AutoTrackR2
+{
+    /// <summary>
+    /// Interaction logic for App.xaml
+    /// </summary>
+    public partial class App : Application
+    {
+    }
+
+}
diff --git a/AutoTrackR2/AssemblyInfo.cs b/AutoTrackR2/AssemblyInfo.cs
new file mode 100644
index 0000000..b0ec827
--- /dev/null
+++ b/AutoTrackR2/AssemblyInfo.cs
@@ -0,0 +1,10 @@
+using System.Windows;
+
+[assembly: ThemeInfo(
+    ResourceDictionaryLocation.None,            //where theme specific resource dictionaries are located
+                                                //(used if a resource is not found in the page,
+                                                // or application resource dictionaries)
+    ResourceDictionaryLocation.SourceAssembly   //where the generic resource dictionary is located
+                                                //(used if a resource is not found in the page,
+                                                // app, or any theme specific resource dictionaries)
+)]
diff --git a/AutoTrackR2/Assets/AutoTrackR.png b/AutoTrackR2/Assets/AutoTrackR.png
new file mode 100644
index 0000000..db26bab
Binary files /dev/null and b/AutoTrackR2/Assets/AutoTrackR.png differ
diff --git a/AutoTrackR2/Assets/D3VL.png b/AutoTrackR2/Assets/D3VL.png
new file mode 100644
index 0000000..9fe0e1b
Binary files /dev/null and b/AutoTrackR2/Assets/D3VL.png differ
diff --git a/AutoTrackR2/Assets/EMP.png b/AutoTrackR2/Assets/EMP.png
new file mode 100644
index 0000000..580ad66
Binary files /dev/null and b/AutoTrackR2/Assets/EMP.png differ
diff --git a/AutoTrackR2/Assets/GN.png b/AutoTrackR2/Assets/GN.png
new file mode 100644
index 0000000..0d89604
Binary files /dev/null and b/AutoTrackR2/Assets/GN.png differ
diff --git a/AutoTrackR2/Assets/HIT.png b/AutoTrackR2/Assets/HIT.png
new file mode 100644
index 0000000..cdc8a4a
Binary files /dev/null and b/AutoTrackR2/Assets/HIT.png differ
diff --git a/AutoTrackR2/Assets/NW.png b/AutoTrackR2/Assets/NW.png
new file mode 100644
index 0000000..ac4586e
Binary files /dev/null and b/AutoTrackR2/Assets/NW.png differ
diff --git a/AutoTrackR2/Assets/VOX.png b/AutoTrackR2/Assets/VOX.png
new file mode 100644
index 0000000..d22d6df
Binary files /dev/null and b/AutoTrackR2/Assets/VOX.png differ
diff --git a/AutoTrackR2/AutoTrackR2.csproj b/AutoTrackR2/AutoTrackR2.csproj
new file mode 100644
index 0000000..07f33db
--- /dev/null
+++ b/AutoTrackR2/AutoTrackR2.csproj
@@ -0,0 +1,53 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>WinExe</OutputType>
+    <TargetFramework>net9.0-windows</TargetFramework>
+    <Nullable>enable</Nullable>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <UseWPF>true</UseWPF>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <None Remove="Assets\D3VL.png" />
+    <None Remove="Assets\EMP.png" />
+    <None Remove="Assets\HIT.png" />
+    <None Remove="Assets\NW.png" />
+    <None Remove="Assets\VOX.png" />
+    <None Remove="Fonts\Orbitron-Bold.ttf" />
+    <None Remove="Fonts\Roboto-Regular.ttf" />
+    <None Remove="KillTrackR_MainScript.ps1" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Resource Include="Assets\D3VL.png">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Resource>
+    <Resource Include="Assets\EMP.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Resource>
+    <Resource Include="Assets\GN.png">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Resource>
+    <Resource Include="Assets\AutoTrackR.png">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Resource>
+    <Resource Include="Assets\HIT.png" />
+    <Resource Include="Assets\NW.png">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Resource>
+    <Resource Include="Assets\VOX.png">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Resource>
+    <Resource Include="Fonts\Orbitron-Bold.ttf">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Resource>
+    <Resource Include="Fonts\Roboto-Regular.ttf">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Resource>
+    <EmbeddedResource Include="KillTrackR_MainScript.ps1">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </EmbeddedResource>
+  </ItemGroup>
+
+</Project>
diff --git a/AutoTrackR2/ConfigPage.xaml b/AutoTrackR2/ConfigPage.xaml
new file mode 100644
index 0000000..7a74a86
--- /dev/null
+++ b/AutoTrackR2/ConfigPage.xaml
@@ -0,0 +1,97 @@
+<UserControl x:Class="AutoTrackR2.ConfigPage"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             Height="396" Width="626">
+
+    <Grid Background="{DynamicResource BackgroundLightBrush}">
+        <!-- Main Layout Grid -->
+        <Grid Margin="0,0,5,7">
+            <Grid.RowDefinitions>
+                <!-- One row for the content, the other for buttons -->
+                <RowDefinition Height="*" />
+                <RowDefinition Height="Auto" />
+            </Grid.RowDefinitions>
+
+            <Grid.ColumnDefinitions>
+                <!-- Left column for the main content area -->
+                <ColumnDefinition Width="*" />
+                <!-- Right column for the buttons -->
+                <ColumnDefinition Width="Auto" />
+            </Grid.ColumnDefinitions>
+
+            <!-- Section for Config Fields -->
+            <StackPanel Grid.Column="0" VerticalAlignment="Center" Height="389">
+                <!-- Log File -->
+                <StackPanel Margin="0,10,0,15" Orientation="Horizontal">
+                    <TextBlock Text="Log File:" Foreground="{DynamicResource TextBrush}" FontSize="16" Margin="0,5,0,5" FontFamily="{StaticResource Roboto}"/>
+                    <StackPanel Orientation="Horizontal" Margin="30,0,0,0">
+                        <TextBox Name="LogFilePath" Width="340" Height="30" Style="{StaticResource RoundedTextBox}"/>
+                        <Button Content="Browse" Width="75" Height="30" FontFamily="{StaticResource Orbitron}" Margin="5,0" Style="{StaticResource ButtonStyle}" Click="LogFileBrowseButton_Click"/>
+                    </StackPanel>
+                </StackPanel>
+
+                <!-- API URL -->
+                <StackPanel Margin="0,0,0,15" Orientation="Horizontal">
+                    <TextBlock Text="API URL:" Foreground="{DynamicResource TextBrush}" FontSize="16" Margin="0,5,0,5"/>
+                    <StackPanel Orientation="Horizontal" Margin="30,0,0,0">
+                        <TextBox Name="ApiUrl" Width="340" Height="30" Style="{StaticResource RoundedTextBox}"/>
+                        <Button Content="Test" Width="75" Height="30" FontFamily="{StaticResource Orbitron}" Margin="5,0" Style="{StaticResource ButtonStyle}"/>
+                    </StackPanel>
+                </StackPanel>
+
+                <!-- API Key -->
+                <StackPanel Margin="0,0,0,15" Orientation="Horizontal">
+                    <TextBlock Text="API Key:" Foreground="{DynamicResource TextBrush}" FontSize="16" Margin="0,5,0,5"/>
+                    <TextBox Name="ApiKey" Width="340" Height="30" Margin="33,0,0,0" Style="{StaticResource RoundedTextBox}"/>
+                </StackPanel>
+
+                <!-- Video Path -->
+                <StackPanel Margin="0,0,0,15" Orientation="Horizontal">
+                    <TextBlock Text="Video Path:" Foreground="{DynamicResource TextBrush}" FontSize="16" Margin="0,5,0,5"/>
+                    <StackPanel Orientation="Horizontal">
+                        <TextBox Name="VideoPath" Width="340" Height="30" Margin="10,0,0,0" Style="{StaticResource RoundedTextBox}"/>
+                        <Button Content="Browse" Width="75" Height="30" FontFamily="{StaticResource Orbitron}" Margin="5,0" Style="{StaticResource ButtonStyle}" Click="VideoPathBrowseButton_Click"/>
+                    </StackPanel>
+                </StackPanel>
+
+                <!-- Visor Wipe Toggle Slider -->
+                <StackPanel Margin="0,0,0,15" Orientation="Horizontal">
+                    <TextBlock Text="Visor Wipe:" Foreground="{DynamicResource TextBrush}" FontSize="16" Margin="0,7,0,5"/>
+                    <Slider Name="VisorWipeSlider" Minimum="0" Maximum="1" TickFrequency="1" IsSnapToTickEnabled="True" Value="0" Style="{StaticResource ToggleSliderStyle}" Margin="27,-4,0,0" ValueChanged="VisorWipeSlider_ValueChanged"/>
+                </StackPanel>
+
+                <!-- Video Record Toggle Slider -->
+                <StackPanel Margin="0,0,0,15" Orientation="Horizontal">
+                    <TextBlock Text="Video Record:" Foreground="{DynamicResource TextBrush}" FontSize="16" Margin="0,7,0,5"/>
+                    <Slider Name="VideoRecordSlider" Minimum="0" Maximum="1" TickFrequency="1" IsSnapToTickEnabled="True" Value="0" Style="{StaticResource ToggleSliderStyle}" Margin="10,-4,0,0" ValueChanged="VideoRecordSlider_ValueChanged"/>
+                </StackPanel>
+
+                <!-- Offline Mode Toggle Slider -->
+                <StackPanel Margin="0,0,0,15" Orientation="Horizontal">
+                    <TextBlock Text="Offline Mode:" Foreground="{DynamicResource TextBrush}" FontSize="16" Margin="0,7,0,5"/>
+                    <Slider Name="OfflineModeSlider" Minimum="0" Maximum="1" TickFrequency="1" IsSnapToTickEnabled="True" Value="0" Style="{StaticResource ToggleSliderStyle}" Margin="12,-4,0,0" ValueChanged="OfflineModeSlider_ValueChanged"/>
+                </StackPanel>
+
+                <!-- 3-Position Toggle Slider -->
+                <StackPanel Margin="0,0,0,15" Orientation="Horizontal">
+                    <TextBlock Text="Theme:" Foreground="{DynamicResource TextBrush}" FontSize="16" Margin="0,7,0,5"/>
+                    <Slider x:Name="ThemeSlider"
+                            Minimum="0" 
+                            Maximum="9"
+                            Value="0"
+                            TickFrequency="1"
+                            IsSnapToTickEnabled="True"
+                            ValueChanged="ThemeSlider_ValueChanged" Width="200"
+                            Style="{StaticResource ThreePositionSlider}" 
+                    />
+                </StackPanel>
+
+            </StackPanel>
+
+            <!-- Save Button -->
+            <StackPanel Grid.Column="2" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0">
+                <Button x:Name="SaveButton" Content="Save" Width="100" Height="40" Style="{StaticResource ButtonStyle}" FontFamily="{StaticResource Orbitron}" Click="SaveButton_Click"/>
+            </StackPanel>
+        </Grid>
+    </Grid>
+</UserControl>
diff --git a/AutoTrackR2/ConfigPage.xaml.cs b/AutoTrackR2/ConfigPage.xaml.cs
new file mode 100644
index 0000000..7f42d76
--- /dev/null
+++ b/AutoTrackR2/ConfigPage.xaml.cs
@@ -0,0 +1,396 @@
+using System.IO;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Media;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Threading;
+using Microsoft.Win32;
+
+namespace AutoTrackR2
+{
+    public partial class ConfigPage : UserControl
+    {
+        // Store the current slider value
+        private double savedSliderValue = 0;
+
+        private MainWindow mainWindow;
+
+        public ConfigPage(MainWindow mainWindow)
+        {
+            InitializeComponent();
+            this.mainWindow = mainWindow;
+         
+            LogFilePath.Text = ConfigManager.LogFile;
+            ApiUrl.Text = ConfigManager.ApiUrl;
+            ApiKey.Text = ConfigManager.ApiKey;
+            VideoPath.Text = ConfigManager.VideoPath;
+            VisorWipeSlider.Value = ConfigManager.VisorWipe;
+            VideoRecordSlider.Value = ConfigManager.VideoRecord;
+            OfflineModeSlider.Value = ConfigManager.OfflineMode;
+            ThemeSlider.Value = ConfigManager.Theme;
+
+            ApplyToggleModeStyle(OfflineModeSlider.Value, VisorWipeSlider.Value, VideoRecordSlider.Value);
+        }
+
+        // Method to change the logo image in MainWindow
+        public void ChangeLogo(string imagePath, Color? glowColor = null)
+        {
+            // Update the logo from ConfigPage
+            mainWindow.ChangeLogoImage(imagePath);
+
+            if (glowColor.HasValue)
+            {
+                // Add the glow effect to the logo in MainWindow
+                DropShadowEffect glowEffect = new DropShadowEffect
+                {
+                    Color = glowColor.Value, // Glow color
+                    ShadowDepth = 0,   // Centered glow
+                    BlurRadius = 20,   // Glow spread
+                    Opacity = 0.8      // Intensity
+                };
+
+                // Apply the effect to the logo
+                mainWindow.Logo.Effect = glowEffect;
+            }
+            else
+            {
+                mainWindow.Logo.Effect = null;
+            }
+        }
+
+        // This method will set the loaded config values to the UI controls
+        public void SetConfigValues(string logFile, string apiUrl, string apiKey, string videoPath,
+                                     int visorWipe, int videoRecord, int offlineMode, int theme)
+        {
+            // Set the textboxes with the loaded values
+            LogFilePath.Text = logFile;
+            ApiUrl.Text = apiUrl;
+            ApiKey.Text = apiKey;
+            VideoPath.Text = videoPath;
+
+            // Set the sliders with the loaded values
+            VideoRecordSlider.Value = videoRecord;
+            VisorWipeSlider.Value = visorWipe;
+            OfflineModeSlider.Value = offlineMode;
+
+            // Handle themes
+            if (theme >= 0 && theme <= 3)
+            {
+                ThemeSlider.Value = theme; // Set slider only for visible themes
+            }
+            else
+            {
+                ApplyTheme(theme); // Apply hidden themes directly
+            }
+        }
+
+        private void ApplyToggleModeStyle(double offlineModeValue, double visorWipeValue, double videoRecordValue)
+        {
+            // Get the slider
+            Slider offlineModeSlider = OfflineModeSlider;
+            Slider visorWipeSlider = VisorWipeSlider;
+            Slider videoRecordSlider = VideoRecordSlider;
+
+            // Set the appropriate style based on the offlineMode value (0 or 1)
+            if (offlineModeValue == 0)
+            {
+                offlineModeSlider.Style = (Style)Application.Current.FindResource("FalseToggleStyle");
+            }
+
+            if (visorWipeValue == 0)
+            {
+                visorWipeSlider.Style = (Style)Application.Current.FindResource("FalseToggleStyle");
+            }
+
+            if (videoRecordValue == 0)
+            {
+                videoRecordSlider.Style = (Style)Application.Current.FindResource("FalseToggleStyle");
+            }
+        }
+
+        private void ThemeSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
+        {
+            // Save the current slider value when it changes
+            savedSliderValue = e.NewValue;
+
+            // Get the slider value (0, 1, or 2)
+            int themeIndex = (int)savedSliderValue;
+
+            // Apply the selected theme
+            ApplyTheme(themeIndex);
+            
+            mainWindow.UpdateTabVisuals();
+        }
+
+        private void ApplyTheme(int themeIndex)
+        {
+            switch (themeIndex)
+            {
+                case 0: // Default Blue Theme
+                    UpdateThemeColors(
+                        (Color)ColorConverter.ConvertFromString("#00A9E0"), // Accent/Border
+                        (Color)ColorConverter.ConvertFromString("#0F1A2B"), // Button
+                        (Color)ColorConverter.ConvertFromString("#1D2D44"), // Background
+                        (Color)ColorConverter.ConvertFromString("#FFFFFF")  // Text
+                    );
+                    ChangeLogo("/Assets/AutoTrackR.png");
+                    break;
+                case 1: // Green Theme
+                    UpdateThemeColors(
+                         (Color)ColorConverter.ConvertFromString("#1D9F00"), // Accent/Border
+                         (Color)ColorConverter.ConvertFromString("#262424"), // Button
+                         (Color)ColorConverter.ConvertFromString("#072501"), // Background
+                         (Color)ColorConverter.ConvertFromString("#D7AF3C")  // Text
+                    );
+                    ChangeLogo("/Assets/AutoTrackR.png");
+                    break;
+                case 2: // Red Theme
+                    UpdateThemeColors(
+                         (Color)ColorConverter.ConvertFromString("#D32F2F"), // Accent/Border
+                         (Color)ColorConverter.ConvertFromString("#424242"), // Button
+                         (Color)ColorConverter.ConvertFromString("#212121"), // Light Background
+                         (Color)ColorConverter.ConvertFromString("#E0E0E0")  // Text
+                    );
+                    ChangeLogo("/Assets/AutoTrackR.png");
+                    break;
+                case 3: // Purple Theme
+                    UpdateThemeColors(
+                         (Color)ColorConverter.ConvertFromString("#32CD32"), // Accent/Border
+                         (Color)ColorConverter.ConvertFromString("#33065F"), // Button
+                         (Color)ColorConverter.ConvertFromString("#43065F"), // Background
+                         (Color)ColorConverter.ConvertFromString("#00FF00")  // Text
+                    );
+                    ChangeLogo("/Assets/AutoTrackR.png");
+                    break;
+                case 4: // GN Theme
+                    UpdateThemeColors(
+                         (Color)ColorConverter.ConvertFromString("#FF0000"), // Accent/Border
+                         (Color)ColorConverter.ConvertFromString("#1C1C1C"), // Button
+                         (Color)ColorConverter.ConvertFromString("#000000"), // Background
+                         (Color)ColorConverter.ConvertFromString("#FBC603")  // Text
+                    );
+                    ChangeLogo("/Assets/GN.png", (Color)ColorConverter.ConvertFromString("#FF0000"));
+                    break;
+                case 5: // NW Theme
+                    UpdateThemeColors(
+                         (Color)ColorConverter.ConvertFromString("#B92D2D"), // Accent/Border
+                         (Color)ColorConverter.ConvertFromString("#1C1C1C"), // Button
+                         (Color)ColorConverter.ConvertFromString("#262424"), // Background
+                         (Color)ColorConverter.ConvertFromString("#01DDDA")  // Text
+                    );
+                    ChangeLogo("/Assets/NW.png", (Color)ColorConverter.ConvertFromString("#01DDDA"));
+                    break;
+                case 6: // D3VL Theme
+                    UpdateThemeColors(
+                        (Color)ColorConverter.ConvertFromString("#000000"), // Accent/Border
+                        (Color)ColorConverter.ConvertFromString("#3E3E3E"), // Button
+                        (Color)ColorConverter.ConvertFromString("#4C1C1C"), // Background
+                        (Color)ColorConverter.ConvertFromString("#FF0000")  // Text
+                    );
+                    ChangeLogo("/Assets/D3VL.png", (Color)ColorConverter.ConvertFromString("#000000"));
+                    break;
+                case 7: // HIT Theme
+                    UpdateThemeColors(
+                        (Color)ColorConverter.ConvertFromString("#000000"), // Accent/Border
+                        (Color)ColorConverter.ConvertFromString("#3E3E3E"), // Button
+                        (Color)ColorConverter.ConvertFromString("#4C1C1C"), // Background
+                        (Color)ColorConverter.ConvertFromString("#FF0000")  // Text
+                    );
+                    ChangeLogo("/Assets/HIT.png", (Color)ColorConverter.ConvertFromString("#fd2929"));
+                    break;
+                case 8: // VOX Theme
+                    UpdateThemeColors(
+                        (Color)ColorConverter.ConvertFromString("#C0C0C0"), // Accent/Border
+                        (Color)ColorConverter.ConvertFromString("#1C1C1C"), // Button
+                        (Color)ColorConverter.ConvertFromString("#424242"), // Background
+                        (Color)ColorConverter.ConvertFromString("#FFD700")  // Text
+                    );
+                    ChangeLogo("/Assets/VOX.png", (Color)ColorConverter.ConvertFromString("#FFD700"));
+                    break;
+                case 9: // EMP Theme
+                    UpdateThemeColors(
+                        (Color)ColorConverter.ConvertFromString("#F5721C"), // Accent/Border
+                        (Color)ColorConverter.ConvertFromString("#535353"), // Button
+                        (Color)ColorConverter.ConvertFromString("#080000"), // Background
+                        (Color)ColorConverter.ConvertFromString("#FFFFFF")  // Text
+                    );
+                    ChangeLogo("/Assets/EMP.png", (Color)ColorConverter.ConvertFromString("#F3BD9B"));
+                    break;
+            }
+        }
+
+        // Helper method to update both Color and Brush resources
+        private void UpdateThemeColors(Color accent, Color backgroundDark, Color backgroundLight, Color text)
+        {
+            // Update color resources
+            Application.Current.Resources["AccentColor"] = accent;
+            Application.Current.Resources["BackgroundDarkColor"] = backgroundDark;
+            Application.Current.Resources["BackgroundLightColor"] = backgroundLight;
+            Application.Current.Resources["TextColor"] = text;
+
+            // Update SolidColorBrush resources
+            Application.Current.Resources["AccentBrush"] = new SolidColorBrush(accent);
+            Application.Current.Resources["BackgroundDarkBrush"] = new SolidColorBrush(backgroundDark);
+            Application.Current.Resources["BackgroundLightBrush"] = new SolidColorBrush(backgroundLight);
+            Application.Current.Resources["TextBrush"] = new SolidColorBrush(text);
+        }
+
+        // This method will be called when switching tabs to restore the saved slider position.
+        public void RestoreSliderValue()
+        {
+            // Set the slider back to the previously saved value
+            ThemeSlider.Value = savedSliderValue;
+        }
+
+        // Log File Browse Button Handler
+        private void LogFileBrowseButton_Click(object sender, RoutedEventArgs e)
+        {
+            var dialog = new Microsoft.Win32.OpenFileDialog();
+            dialog.Filter = "Log files (*.log)|*.log|All files (*.*)|*.*"; // Adjust as needed
+
+            if (dialog.ShowDialog() == true)
+            {
+                LogFilePath.Text = dialog.FileName; // Set the selected file path to the TextBox
+            }
+        }
+
+        // Video Path Browse Button Handler
+        private void VideoPathBrowseButton_Click(object sender, RoutedEventArgs e)
+        {
+            var dialog = new OpenFileDialog();
+            dialog.CheckFileExists = false;
+            dialog.ValidateNames = false;
+            dialog.Filter = "All files|*.*";
+
+            if (dialog.ShowDialog() == true)
+            {
+                // Extract only the directory path from the file
+                string selectedFolder = Path.GetDirectoryName(dialog.FileName);
+                VideoPath.Text = selectedFolder; // Set the folder path
+            }
+        }
+
+        private void VisorWipeSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
+        {
+            Slider slider = (Slider)sender;
+            ConfigManager.VisorWipe = (int)slider.Value; // 0 or 1
+
+            // Check if the value is 0 or 1 and apply the corresponding style
+            if (ConfigManager.VisorWipe == 0)
+            {
+                slider.Style = (Style)Application.Current.FindResource("FalseToggleStyle");  // Apply FalseToggleStyle
+            }
+            else
+            {
+                slider.Style = (Style)Application.Current.FindResource("ToggleSliderStyle"); // Apply ToggleSliderStyle
+            }
+        }
+
+        private void VideoRecordSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
+        {
+            Slider slider = (Slider)sender;
+            ConfigManager.VideoRecord = (int)slider.Value; // 0 or 1
+
+            // Check if the value is 0 or 1 and apply the corresponding style
+            if (ConfigManager.VideoRecord == 0)
+            {
+                slider.Style = (Style)Application.Current.FindResource("FalseToggleStyle");  // Apply FalseToggleStyle
+            }
+            else
+            {
+                slider.Style = (Style)Application.Current.FindResource("ToggleSliderStyle"); // Apply ToggleSliderStyle
+            }
+        }
+
+        private void OfflineModeSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
+        {
+            Slider slider = (Slider)sender;
+            ConfigManager.OfflineMode = (int)slider.Value; // 0 or 1
+
+            // Check if the value is 0 or 1 and apply the corresponding style
+            if (ConfigManager.OfflineMode == 0)
+            {
+                slider.Style = (Style)Application.Current.FindResource("FalseToggleStyle");  // Apply FalseToggleStyle
+            }
+            else
+            {
+                slider.Style = (Style)Application.Current.FindResource("ToggleSliderStyle"); // Apply ToggleSliderStyle
+            }
+        }
+
+
+        private void SaveButton_Click(object sender, RoutedEventArgs e)
+        {
+            // Get the directory of the running executable
+            string exeDirectory = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
+
+            // Combine the executable directory with the config file name
+            string configFilePath = Path.Combine(exeDirectory, "config.ini");
+
+            using (StreamWriter writer = new StreamWriter(configFilePath))
+            {
+                writer.WriteLine($"LogFile={LogFilePath.Text}");
+                writer.WriteLine($"ApiUrl={ApiUrl.Text}");
+                writer.WriteLine($"ApiKey={ApiKey.Text}");
+                writer.WriteLine($"VideoPath={VideoPath.Text}");
+                writer.WriteLine($"VisorWipe={(int)VisorWipeSlider.Value}");
+                writer.WriteLine($"VideoRecord={(int)VideoRecordSlider.Value}");
+                writer.WriteLine($"OfflineMode={(int)OfflineModeSlider.Value}");
+                writer.WriteLine($"Theme={(int)ThemeSlider.Value}"); // Assumes you are saving the theme slider value (0, 1, or 2)
+            }
+
+            // Start the flashing effect
+            FlashSaveButton();
+            ConfigManager.LoadConfig();
+        }
+
+        private void FlashSaveButton()
+        {
+            string originalText = SaveButton.Content.ToString();
+            SaveButton.Content = "Saved";
+
+            // Save button color change effect
+            var originalColor = SaveButton.Background;
+            var accentColor = (Color)Application.Current.Resources["AccentColor"];
+            SaveButton.Background = new SolidColorBrush(accentColor);  // Change color to accent color
+
+            // Apply glow effect
+            SaveButton.Effect = new DropShadowEffect
+            {
+                Color = accentColor,
+                BlurRadius = 15,      // Add subtle blur
+                ShadowDepth = 0,      // Set shadow depth to 0 for a pure glow effect
+                Opacity = 0.8,        // Set opacity for glow visibility
+                Direction = 0         // Direction doesn't matter for glow
+            };
+
+            // Create a DispatcherTimer to reset everything after the effect
+            DispatcherTimer timer = new DispatcherTimer
+            {
+                Interval = TimeSpan.FromMilliseconds(600) // Interval for flash effect
+            };
+
+            int flashCount = 0;
+            timer.Tick += (sender, e) =>
+            {
+                if (flashCount < 2) // Flash effect (flash 2 times)
+                {
+                    flashCount++;
+                }
+                else
+                {
+                    // Stop the timer and restore the original button state
+                    timer.Stop();
+                    SaveButton.Content = originalText;
+                    SaveButton.Background = originalColor; // Restore the original button color
+                    SaveButton.Effect = null; // Remove the glow effect
+                }
+            };
+
+            // Start the timer
+            timer.Start();
+        }
+    }
+}
diff --git a/AutoTrackR2/Fonts/Orbitron-Bold.ttf b/AutoTrackR2/Fonts/Orbitron-Bold.ttf
new file mode 100644
index 0000000..9c8643c
Binary files /dev/null and b/AutoTrackR2/Fonts/Orbitron-Bold.ttf differ
diff --git a/AutoTrackR2/Fonts/Roboto-Regular.ttf b/AutoTrackR2/Fonts/Roboto-Regular.ttf
new file mode 100644
index 0000000..2d116d9
Binary files /dev/null and b/AutoTrackR2/Fonts/Roboto-Regular.ttf differ
diff --git a/AutoTrackR2/HomePage.xaml b/AutoTrackR2/HomePage.xaml
new file mode 100644
index 0000000..b1c9baf
--- /dev/null
+++ b/AutoTrackR2/HomePage.xaml
@@ -0,0 +1,43 @@
+<UserControl x:Class="AutoTrackR2.HomePage"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             Height="396" Width="626">
+    <Grid Background="{DynamicResource BackgroundLightBrush}">
+        <!-- Main Layout Grid -->
+        <Grid Margin="0,0,5,7">
+            <Grid.RowDefinitions>
+                <!-- One row for the content, the other for buttons -->
+                <RowDefinition Height="*" />
+                <RowDefinition Height="Auto" />
+            </Grid.RowDefinitions>
+
+            <Grid.ColumnDefinitions>
+                <!-- Left column for the main content area -->
+                <ColumnDefinition />
+                <!-- Right column for the buttons -->
+                <ColumnDefinition Width="Auto" MinWidth="173" />
+            </Grid.ColumnDefinitions>
+
+            <!-- Border for the kill feed section -->
+            <TextBox Name="OutputTextBox" Grid.Row="0" Grid.Column="0" Grid.RowSpan="2" Height="NaN" Margin="0,0,20,0" TextWrapping="Wrap" VerticalScrollBarVisibility="Auto" IsReadOnly="True" Style="{StaticResource RoundedTextBox}"/>
+            <!-- Border Grid.Row="0" Grid.Column="0" BorderBrush="{DynamicResource AccentBrush}" BorderThickness="2" CornerRadius="10" Padding="10" Background="{DynamicResource BackgroundDarkBrush}" Margin="0,0,20,0">
+                <TextBlock Text="Kill Feed Goes Here..." FontSize="18" Foreground="{DynamicResource TextBrush}" HorizontalAlignment="Center" VerticalAlignment="Center" />
+            </Border -->
+
+            <!-- StackPanel for Start and Stop buttons -->
+            <Border Background="{DynamicResource BackgroundDarkBrush}" BorderBrush="{DynamicResource AccentBrush}" Grid.Row="0" Grid.Column="1" BorderThickness="2" CornerRadius="5" Margin="0,0,0,134"/>
+            <StackPanel Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center" Height="269" Width="152">
+                <TextBlock Name="PilotNameTitle" Text="Pilot" Width="152" Height="20" Background="Transparent" FontFamily="{StaticResource Orbitron}" Margin="0,5,0,0" Foreground="{DynamicResource AccentBrush}" FontSize="14"/>
+                <TextBlock Name="PilotNameTextBox" Text="X" Width="152" Height="20" Background="Transparent" FontFamily="{StaticResource Orbitron}" Margin="0,0,0,0" Foreground="{DynamicResource TextBrush}" FontSize="11" TextAlignment="Center"/>
+                <TextBlock Name="PlayerShipTitle" Text="Ship" Width="152" Height="20" Background="Transparent" FontFamily="{StaticResource Orbitron}" Margin="0,5,0,0" Foreground="{DynamicResource AccentBrush}" FontSize="14" />
+                <TextBlock Name="PlayerShipTextBox" Text="X" Width="152" Height="20" Background="Transparent" FontFamily="{StaticResource Orbitron}" Margin="0,0,0,0" Foreground="{DynamicResource TextBrush}" FontSize="11" TextAlignment="Center"/>
+                <TextBlock Name="GameModeTitle" Text="Game Mode" Width="152" Height="20" Background="Transparent" FontFamily="{StaticResource Orbitron}" Margin="0,5,0,0" Foreground="{DynamicResource AccentBrush}" FontSize="14"/>
+                <TextBlock Name="GameModeTextBox" Text="X" Width="152" Height="20" Background="Transparent" FontFamily="{StaticResource Orbitron}" Margin="0,0,0,0" Foreground="{DynamicResource TextBrush}" FontSize="11" TextAlignment="Center"/>
+            </StackPanel>
+            <StackPanel Grid.Row="1" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center" Height="120" Width="172" >
+                <Button Name="StartButton" Content="Start" Width="100" Height="40" Style="{StaticResource ButtonStyle}" FontFamily="{StaticResource Orbitron}" Margin="0,20" Click="StartButton_Click"/>
+                <Button Name="StopButton" Content="Stop" Width="100" Height="40" Style="{StaticResource DisabledButtonStyle}" FontFamily="{StaticResource Orbitron}" IsEnabled="False"/>
+            </StackPanel>
+        </Grid>
+    </Grid>
+</UserControl>
diff --git a/AutoTrackR2/HomePage.xaml.cs b/AutoTrackR2/HomePage.xaml.cs
new file mode 100644
index 0000000..99dcdf0
--- /dev/null
+++ b/AutoTrackR2/HomePage.xaml.cs
@@ -0,0 +1,142 @@
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Media;
+using System.Windows.Media.Effects;
+using System.IO;
+
+namespace AutoTrackR2
+{
+    public partial class HomePage : UserControl
+    {
+        public HomePage()
+        {
+            InitializeComponent();
+        }
+
+        // Update Start/Stop button states based on the isRunning flag
+        public void UpdateButtonState(bool isRunning)
+        {
+            var accentColor = (Color)Application.Current.Resources["AccentColor"];
+
+            if (isRunning)
+            {
+                // Set Start button to "Running..." and apply glow effect
+                StartButton.Content = "Running...";
+                StartButton.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#00A9E0"));
+                StartButton.IsEnabled = false; // Disable Start button
+                StartButton.Style = (Style)FindResource("DisabledButtonStyle");
+
+                // Add glow effect to the Start button
+                StartButton.Effect = new DropShadowEffect
+                {
+                    Color = accentColor,
+                    BlurRadius = 20,       // Adjust blur radius for desired glow intensity
+                    ShadowDepth = 0,       // Set shadow depth to 0 for a pure glow effect
+                    Opacity = 1,           // Set opacity for glow visibility
+                    Direction = 0          // Direction doesn't matter for glow
+                };
+
+                StopButton.Style = (Style)FindResource("ButtonStyle");
+                StopButton.IsEnabled = true;  // Enable Stop button
+            }
+            else
+            {
+                // Reset Start button back to its original state
+                StartButton.Content = "Start";
+                StartButton.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0F1A2B"));
+                StartButton.IsEnabled = true;  // Enable Start button
+
+                // Remove the glow effect from Start button
+                StartButton.Effect = null;
+
+                StopButton.Style = (Style)FindResource("DisabledButtonStyle");
+                StartButton.Style = (Style)FindResource("ButtonStyle");
+                StopButton.IsEnabled = false; // Disable Stop button
+            }
+        }
+
+        private void StartButton_Click(object sender, RoutedEventArgs e)
+        {
+            string scriptPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "KillTrackR_MainScript.ps1");
+            TailFileAsync(scriptPath);
+        }
+
+        private async void TailFileAsync(string scriptPath)
+        {
+            await Task.Run(() =>
+            {
+                try
+                {
+                    ProcessStartInfo psi = new ProcessStartInfo
+                    {
+                        FileName = "powershell.exe",
+                        Arguments = $"-NoProfile -ExecutionPolicy Bypass -File \"{scriptPath}\"",
+                        RedirectStandardOutput = true,
+                        RedirectStandardError = true,
+                        UseShellExecute = false,
+                        CreateNoWindow = true
+                    };
+
+                    using (Process process = new Process { StartInfo = psi })
+                    {
+                        process.OutputDataReceived += (s, e) =>
+                        {
+                            if (!string.IsNullOrEmpty(e.Data))
+                            {
+                                Dispatcher.Invoke(() =>
+                                {
+                                    // Parse and display key-value pairs in the OutputTextBox
+                                    if (e.Data.Contains("PlayerName="))
+                                    {
+                                        string pilotName = e.Data.Split('=')[1].Trim();
+                                        PilotNameTextBox.Text = pilotName; // Update the Button's Content
+                                    }
+                                    else if (e.Data.Contains("PlayerShip="))
+                                    {
+                                        string playerShip = e.Data.Split('=')[1].Trim();
+                                        PlayerShipTextBox.Text = playerShip;
+                                    }
+                                    else if (e.Data.Contains("GameMode="))
+                                    {
+                                        string gameMode = e.Data.Split('=')[1].Trim();
+                                        GameModeTextBox.Text = gameMode;
+                                    }
+                                    else
+                                    {
+                                        OutputTextBox.AppendText(e.Data + Environment.NewLine);
+                                    }
+                                });
+                            }
+                        };
+
+                        process.ErrorDataReceived += (s, e) =>
+                        {
+                            if (!string.IsNullOrEmpty(e.Data))
+                            {
+                                Dispatcher.Invoke(() =>
+                                {
+                                    OutputTextBox.AppendText("Error: " + e.Data + Environment.NewLine);
+                                });
+                            }
+                        };
+
+                        process.Start();
+                        process.BeginOutputReadLine();
+                        process.BeginErrorReadLine();
+
+                        process.WaitForExit();
+                    }
+                }
+                catch (Exception ex)
+                {
+                    Dispatcher.Invoke(() =>
+                    {
+                        MessageBox.Show($"Error running script: {ex.Message}");
+                    });
+                }
+            });
+        }
+
+    }
+}
diff --git a/AutoTrackR2/KillTrackR_MainScript.ps1 b/AutoTrackR2/KillTrackR_MainScript.ps1
new file mode 100644
index 0000000..2633574
--- /dev/null
+++ b/AutoTrackR2/KillTrackR_MainScript.ps1
@@ -0,0 +1,333 @@
+# Path to the config file
+$scriptFolder = Split-Path -Parent $MyInvocation.MyCommand.Path
+$configFile = Join-Path -Path $scriptFolder -ChildPath "config.ini"
+
+# Read the config file into a hashtable
+if (Test-Path $configFile) {
+    Write-Output "Config.ini found."
+    $configContent = Get-Content $configFile | Where-Object { $_ -notmatch '^#|^\s*$' }
+
+    # Escape backslashes by doubling them
+    $configContent = $configContent -replace '\\', '\\\\'
+
+    # Convert to key-value pairs
+    $config = $configContent -replace '^([^=]+)=(.+)$', '$1=$2' | ConvertFrom-StringData
+} else {
+    Write-Output "Config.ini not found."
+    exit
+}
+
+$PlayerName = "Immersion_Breaker"
+$PlayerShip = "ANVL_F7A_Mk2"
+$GameMode = "PU"
+
+Write-Output "PlayerName=$PlayerName"
+Write-Output "PlayerShip=$PlayerShip"
+Write-Output "GameMode=$GameMode"
+
+# Access config values
+$logFile = $config.Logfile
+$apiUrl = $config.ApiUrl
+$apiKey = $config.ApiKey
+$videoPath = $config.VideoPath
+$visorWipe = $config.VisorWipe
+$videoRecord = $config.VideoRecord
+$offlineMode = $config.OfflineMode
+
+if ($offlineMode -eq 1){
+	$offlineMode = $true
+} else {
+	$offlineMode = $false
+}
+
+if ($videoRecord -eq 1){
+	$videoRecord = $true
+} else {
+	$videoRecord = $false
+}
+
+$logfileContent = Get-Content $logFile
+
+If (Test-Path $logFile) {
+	Write-Output "Logfile found."
+} else {
+	Write-Output "Logfile not found."
+}
+
+Write-Output $logfileContent
+<# Define the regex pattern to extract information
+$killPattern = "<Actor Death> CActor::Kill: '(?<EnemyPilot>[^']+)' \[\d+\] in zone '(?<EnemyShip>[^']+)' killed by '(?<Player>[^']+)' \[[^']+\] using '(?<Weapon>[^']+)' \[Class (?<Class>[^\]]+)\] with damage type '(?<DamageType>[^']+)'"
+$puPattern = '<\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z> \[Notice\] <ContextEstablisherTaskFinished> establisher="CReplicationModel" message="CET completed" taskname="StopLoadingScreen" state=[^ ]+ status="Finished" runningTime=\d+\.\d+ numRuns=\d+ map="megamap" gamerules="SC_Default" sessionId="[a-f0-9\-]+" \[Team_Network\]\[Network\]\[Replication\]\[Loading\]\[Persistence\]'
+$acPattern = "ArenaCommanderFeature"
+$loadoutPattern = '\[InstancedInterior\] OnEntityLeaveZone - InstancedInterior \[(?<InstancedInterior>[^\]]+)\] \[\d+\] -> Entity \[(?<Entity>[^\]]+)\] \[\d+\] -- m_openDoors\[\d+\], m_managerGEID\[(?<ManagerGEID>\d+)\], m_ownerGEID\[(?<OwnerGEID>[^\[]+)\]'
+# $loginPattern = "\[Notice\] <AccountLoginCharacterStatus_Character> Character: createdAt [A-Za-z0-9]+ - updatedAt [A-Za-z0-9]+ - geid [A-Za-z0-9]+ - accountId [A-Za-z0-9]+ - name (?<Player>[A-Za-z0-9_-]+) - state STATE_CURRENT" # KEEP THIS INCASE LEGACY LOGIN IS REMOVED 
+$loginPattern = "\[Notice\] <Legacy login response> \[CIG-net\] User Login Success - Handle\[(?<Player>[A-Za-z0-9_-]+)\]"
+$cleanupPattern = '^(.+?)_\d+$'
+
+# Lookup Patterns
+$joinDatePattern = '<span class="label">Enlisted</span>\s*<strong class="value">([^<]+)</strong>'
+$orgPattern = '<IMG[^>]*>\s*([^<]+)'
+$ueePattern = '<p class="entry citizen-record">\s*<span class="label">UEE Citizen Record<\/span>\s*<strong class="value">#?(n\/a|\d+)<\/strong>\s*<\/p>'
+
+[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
+
+# Function to process new log entries and write to the host
+function Read-LogEntry {
+    param (
+        [string]$line
+    )
+    
+    # Apply the regex pattern to the line
+    if ($line -match $killPattern -and $global:logStart -eq $TRUE) {
+        # Access the named capture groups from the regex match
+        $enemyPilot = $matches['EnemyPilot']
+        $enemyShip = $matches['EnemyShip']
+        $player = $matches['Player']
+	$weapon = $matches['Weapon']
+	$damageType = $matches['DamageType']
+	$ship = $global:loadOut
+	
+	If ($enemyShip -eq $global:lastKill){
+		$enemyShip = "Passenger"
+	} Else {
+		$global:lastKill = $enemyShip
+	}
+
+	If (($player -eq $global:userName -and $enemyPilot -ne $global:userName) -and ($enemyPilot -notlike "PU_*" -and $enemyPilot -notlike "NPC_*")){
+		If ($enemyShip -match $cleanupPattern){
+			$enemyShip = $matches[1]
+		}
+		If ($weapon -match $cleanupPattern){
+			$weapon = $matches[1]
+		}
+		If ($weapon -eq "KLWE_MassDriver_S10"){
+			$global:loadOut = "AEGS_Idris"
+			$ship = "AEGS_Idris"
+		}
+		if ($damageType -like "*bullet*") {
+			$ship = "Player"
+		}
+		If ($ship -match $cleanupPattern){
+			$ship = $matches[1]
+		}
+		if ($ship -like "OOC_*"){
+			$ship = "Player"
+		}
+		If ($enemyShip -like "OOC_*" -or $enemyShip -like "hangar*") {
+			$enemyShip = "Player"
+		}
+			
+			# Repeatedly remove all suffixes
+			while ($enemyShip -match '_(PU|AI|CIV|MIL|PIR)$') {
+				$enemyShip = $enemyShip -replace '_(PU|AI|CIV|MIL|PIR)$', ''
+			}
+			# Repeatedly remove all suffixes
+			while ($ship -match '_(PU|AI|CIV|MIL|PIR)$') {
+				$ship = $ship -replace '_(PU|AI|CIV|MIL|PIR)$', ''
+			}
+
+			$KillTime = Get-Date([DateTime]::UtcNow) -UFormat "%d%b%Y %r"
+			$page1 = Invoke-WebRequest -uri "https://robertsspaceindustries.com/citizens/$enemyPilot"
+			$page2 = Invoke-WebRequest -uri "https://robertsspaceindustries.com/citizens/$enemyPilot/organizations"
+			
+			# Get Enlisted Date
+			if ($($page1.content) -match $joinDatePattern) {
+				$joinDate = $matches[1]
+			} else {
+				$joinDate = "UNKNOWN"
+			}
+
+			# Find Org matches using the regex pattern
+			$orgMatches = [regex]::matches($($page2.links.innerhtml), $orgPattern)
+			# Check if there are any matches
+			$enemyOrgs = @()
+			if ($orgMatches.Count -eq 0) {
+				$enemyOrgs = "N/A"
+			} else {
+				# Loop through each match and display the organization name
+				foreach ($match in $orgMatches) {
+					$organizationName = $match.Groups[1].Value.Trim()
+					$enemyOrgs = $enemyOrgs + $organizationName
+				}
+			}
+
+			# Get UEE Number
+			if ($($page1.content) -match $ueePattern) {
+				# The matched UEE Citizen Record number is in $matches[1]
+				$citizenRecord = $matches[1]
+			} else {
+				$citizenRecord = "-1"
+			}
+			If ($citizenRecord -eq "N/A") {
+				$citizenRecordAPI = "-1"
+			} Else {
+				$citizenRecordAPI = $citizenRecord
+			}
+
+			# Cleanup Output
+			$textColor = "Green"
+			$killText = "Congratulations!"
+
+			# Send to API
+			# Define the data to send
+			If ($apiDetected -eq $true -and $urlDetected -eq $true){
+				$data = @{
+					victim_ship = $enemyShip
+					victim = $enemyPilot
+					enlisted = $joinDate
+					rsi = $citizenRecordAPI
+					weapon = $weapon
+					method = $damageType
+					loadout_ship = $ship
+					#version = $version
+				}
+
+				# Headers which may or may not be necessary
+				$headers = @{
+					"Authorization" = "Bearer $apiToken"
+					"Content-Type" = "application/json"
+					"User-Agent" = "TEST-PS"
+				}
+
+				try {
+					# Send the POST request with JSON data
+					Invoke-RestMethod -Uri $apiURL -Method Post -Body ($data | ConvertTo-Json -Depth 5) -Headers $headers
+				} catch {
+					# Catch and display errors
+					Write-Output "Error: $($_)" -ForegroundColor red
+					Write-output "Send error to devs"
+					Write-Output "Kill saved in $outputPath"
+					$apiError = $_
+					# Add to output file
+					Add-Content -Path $outputPath -value $($_)
+				}
+			}
+
+			# Write-Output to console
+			write-host "=== $killText" -ForegroundColor $textColor
+			Write-Host "$killTime"
+			Write-Host "Enemy Pilot: " -NoNewLine -ForegroundColor $textColor
+			Write-Host "$enemyPilot"
+			Write-Host "Enemy Ship: " -NoNewLine -ForegroundColor $textColor
+			Write-Host "$enemyShip"
+			Write-Host "Enlisted: " -NoNewLine -ForegroundColor $textColor
+			Write-Host "$joinDate"
+			Write-Host "Record #: " -NoNewLine -ForegroundColor $textColor
+			Write-Host "$citizenRecord"
+			Write-Host "Org Affiliation: " -NoNewLine -ForegroundColor $textColor
+			ForEach ($org in $enemyOrgs){
+				Write-Host $org
+			}
+			Write-Host "Player: " -NoNewLine -ForegroundColor $textColor
+			Write-Host "$player"
+			Write-Host "Weapon: " -NoNewLine -ForegroundColor $textColor
+			Write-Host "$weapon"
+			Write-Host "Ship: " -NoNewLine -ForegroundColor $textColor
+			Write-Host "$ship"s
+			Write-Host "Method: " -NoNewLine -ForegroundColor $textColor
+			Write-Host "$damageType"
+			Write-Host "-------------------------"	
+			
+			# Write output to local log
+			If ($apiDetected -eq $false -or $urlDetected -eq $false -or $null -ne $apiError){
+				Add-Content -Path $outputPath -Value "=== $killText"
+				Add-Content -Path $outputPath -Value "$killTime"
+				Add-Content -Path $outputPath -Value "Enemy Pilot: $enemyPilot"
+				Add-Content -Path $outputPath -Value "Enemy Ship: $enemyShip"
+				Add-Content -Path $outputPath -Value "Enlisted: $joinDate"
+				Add-Content -Path $outputPath -Value "Record #: $citizenRecord"
+				Add-Content -Path $outputPath -Value "Org Affiliation: " -NoNewLine
+				ForEach ($org in $enemyOrgs){
+					Add-Content -Path $outputPath -Value $org
+				}
+				Add-Content -Path $outputPath -Value "Player: $player"
+				Add-Content -Path $outputPath -Value "Weapon: $weapon"
+				Add-Content -Path $outputPath -Value "Ship: $ship"
+				Add-Content -Path $outputPath -Value "Method: $damageType"
+				Add-Content -Path $outputPath -Value "-------------------------"
+			}
+
+			$sleeptimer = 10
+
+			# VisorWipe
+			If ($visorwipe -eq $true -and $enemyShip -ne "Passenger" -and $damageType -notlike "*Bullet*"){
+				# send keybind for visorwipe
+				start-sleep 1
+				$sleeptimer = $sleeptimer -1
+				&$visorPath
+			}
+			
+			# Record video
+			if ($recording -eq $true -and $enemyShip -ne "Passenger"){
+				# send keybind for windows game bar recording
+				Start-Sleep 2
+				$sleeptimer = $sleeptimer -9
+				&$recordPath
+				Write-Host "=== Kill Clipped!" -ForegroundColor Green
+				Write-Host "-------------------------"
+				Start-Sleep 7
+
+				# 
+				$latestFile = Get-ChildItem -Path $videoPath | Where-Object { -not $_.PSIsContainer } | Sort-Object CreationTime -Descending | Select-Object -First 1
+				# Generate a timestamp in ddMMMyyyy-HH:mm format
+				$timestamp = (Get-Date).ToString("ddMMMyyyy-HHmm")
+				# Rename the file if it exists
+				if ($latestFile) {
+					Rename-Item -Path $latestFile.FullName -NewName "$enemyPilot.$enemyShip.$timestamp.mp4"
+				}
+			}
+			Start-Sleep $sleeptimer
+		}
+	}
+
+	# Get Logged-in User
+	If ($line -match $loginPattern) {
+		# Load gamelog into memory
+		$authLog = Get-Content -Path $logFilePath
+		$authLog = $authlog -match $loginPattern
+		$authLog = $authLog | Out-String
+
+		# Extract User Name
+		$nameExtract = "name\s+(?<PlayerName>[^\s-]+)"
+
+		If ($authLog -match $nameExtract -and $global:userName -ne $nameExtract){
+			$global:userName = $matches['PlayerName']
+			Write-Host "Logged in as $global:userName" -ForegroundColor Green
+			Write-Host "-------------------------"
+		}
+	}
+
+	# Detect PU or AC
+	if ($line -match $puPattern -and $global:logStart -eq $FALSE) {
+		$global:logStart = $TRUE
+		Write-Host "=== Logging: $global:logStart" -ForegroundColor Green
+		Write-Host "-------------------------"
+	}
+	if ($line -match $acPattern -and $global:logStart -eq $TRUE) {
+		$global:logStart = $FALSE
+		Write-Host "=== Logging: $global:logStart" -ForegroundColor Red
+		Write-Host "-------------------------"
+	}
+
+	#Set loadout 
+	if ($line -match $loadoutPattern) {
+		$entity = $matches['Entity']
+		$ownerGEID = $matches['OwnerGEID']
+
+        If ($ownerGEID -eq $global:userName -and $entity -notlike "*SoundListener*" -and $entity -notlike "*StreamingSOC*" -and $entity -ne $global:userName) {
+			$global:loadOut = $entity
+			If ($global:loadOut -match $cleanupPattern){
+				$global:loadOut = $matches[1]
+			}
+			Write-Host "=== Loadout: $global:loadOut" -ForegroundColor Yellow
+			Write-Host "-------------------------"
+			
+		}
+	}
+}
+
+# Monitor the log file and process new lines as they are added
+Get-Content -Path $logFile -Wait -Tail 0 | ForEach-Object {
+    Read-LogEntry $_
+}
+#>
\ No newline at end of file
diff --git a/AutoTrackR2/MainWindow.xaml b/AutoTrackR2/MainWindow.xaml
new file mode 100644
index 0000000..53ef1e2
--- /dev/null
+++ b/AutoTrackR2/MainWindow.xaml
@@ -0,0 +1,39 @@
+<Window x:Class="AutoTrackR2.MainWindow"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        Title="AutoTrackR" Height="450" Width="800"
+        WindowStyle="None" ResizeMode="NoResize"
+        AllowsTransparency="True"
+        Style="{StaticResource CustomWindowStyle}">
+
+    <Grid>
+        <!-- Custom Title Bar -->
+        <DockPanel Height="30" VerticalAlignment="Top" MouseDown="TitleBar_MouseDown" Margin="5" Background="Transparent">
+            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
+                <Button Content="_" Width="30" Height="25" Click="MinimizeWindow" Style="{StaticResource TitleButtonStyle}" FontFamily="{StaticResource Orbitron}"/>
+                <Button Content="X" Width="30" Height="25" Click="CloseWindow" Style="{StaticResource TitleButtonStyle}"  FontFamily="{StaticResource Orbitron}"/>
+            </StackPanel>
+        </DockPanel>
+        <!-- Main Content Area -->
+            <Grid Margin="0,30,0,0">
+                <Grid.ColumnDefinitions>
+                    <ColumnDefinition Width="150"/>
+                    <ColumnDefinition Width="*"/>
+                </Grid.ColumnDefinitions>
+
+                <!-- Left Tab Panel -->
+                <StackPanel VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="5,0,0,0">
+                <Image x:Name="Logo" Height="138" Source="/Assets/AutoTrackR.png" Stretch="Fill" Width="141" RenderOptions.BitmapScalingMode="Fant"/>
+                    <Button Content="Home" Name="HomeTab" Margin="10,40,10,10" Height="40" Style="{StaticResource TabButtonStyle}" Click="TabButton_Click"/>
+                    <Button Content="Stats" Name="StatsTab" Margin="10" Height="40" Style="{StaticResource TabButtonStyle}" Click="TabButton_Click"/>
+                    <Button Content="Update" Name="UpdateTab" Margin="10" Height="40" Style="{StaticResource TabButtonStyle}" Click="TabButton_Click"/>
+                    <Button Content="Config" Name="ConfigTab" Margin="10" Height="40" Style="{StaticResource TabButtonStyle}" Click="TabButton_Click"/>
+                </StackPanel>
+
+                <!-- Content Area -->
+                <ContentControl Grid.Column="1" Name="ContentControl" Margin="10">
+                    <!-- Default content can be set here -->
+                </ContentControl>
+            </Grid>
+    </Grid>
+</Window>
\ No newline at end of file
diff --git a/AutoTrackR2/MainWindow.xaml.cs b/AutoTrackR2/MainWindow.xaml.cs
new file mode 100644
index 0000000..8c9da87
--- /dev/null
+++ b/AutoTrackR2/MainWindow.xaml.cs
@@ -0,0 +1,236 @@
+using System.Collections.Generic;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.IO;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Animation;
+using System.Windows.Threading;
+using System;
+
+namespace AutoTrackR2
+{
+    public partial class MainWindow : Window
+    {
+        private Dictionary<string, bool> tabStates = new Dictionary<string, bool>
+        {
+            { "HomeTab", true }, // HomeTab is selected by default
+            { "StatsTab", false },
+            { "UpdateTab", false },
+            { "ConfigTab", false }
+        };
+
+        private HomePage homePage; // Persistent HomePage instance
+        private bool isRunning = false; // Single source of truth for the running state
+
+        // Ensure this method is not static
+        public void ChangeLogoImage(string imagePath)
+        {
+            Logo.Source = new BitmapImage(new Uri(imagePath, UriKind.RelativeOrAbsolute));
+        }
+
+        public MainWindow()
+        {
+            InitializeComponent();
+
+            // Load configuration settings before setting them in any page
+            ConfigManager.LoadConfig();
+
+            homePage = new HomePage(); // Create a single instance of HomePage
+            ContentControl.Content = homePage; // Default to HomePage
+
+            // Attach event handlers for the HomePage buttons
+            homePage.StartButton.Click += StartButton_Click;
+            homePage.StopButton.Click += StopButton_Click;
+
+            // Create ConfigPage and pass the MainWindow reference to it
+            var configPage = new ConfigPage(this);
+
+            // Set config values after loading them
+            InitializeConfigPage();
+
+            UpdateTabVisuals();
+        }
+
+        private void CloseWindow(object sender, RoutedEventArgs e) => this.Close();
+
+        private void MinimizeWindow(object sender, RoutedEventArgs e) => this.WindowState = WindowState.Minimized;
+
+        private void TitleBar_MouseDown(object sender, MouseButtonEventArgs e)
+        {
+            if (e.ChangedButton == MouseButton.Left)
+            {
+                this.DragMove();
+            }
+        }
+
+        private void TabButton_Click(object sender, RoutedEventArgs e)
+        {
+            Button clickedButton = (Button)sender;
+            string clickedTabName = clickedButton.Name;
+
+            if (clickedTabName == "HomeTab")
+            {
+                // Reuse the existing HomePage instance
+                ContentControl.Content = homePage;
+
+                // Update the button state on the HomePage
+                homePage.UpdateButtonState(isRunning);
+            }
+            else if (clickedTabName == "StatsTab")
+            {
+                ContentControl.Content = new StatsPage();
+            }
+            else if (clickedTabName == "UpdateTab")
+            {
+                ContentControl.Content = new UpdatePage();
+            }
+            else if (clickedTabName == "ConfigTab")
+            {
+                ContentControl.Content = new ConfigPage(this);
+            }
+
+            // Update tab selection states
+            UpdateTabStates(clickedTabName);
+
+            // Update the visual appearance of all tabs
+            UpdateTabVisuals();
+        }
+
+        private void UpdateTabStates(string activeTab)
+        {
+            foreach (var key in tabStates.Keys)
+            {
+                tabStates[key] = key == activeTab;
+            }
+        }
+
+        public void UpdateTabVisuals()
+        {
+            var accentColor = (Color)Application.Current.Resources["AccentColor"];
+            var backgroundDarkColor = (Color)Application.Current.Resources["BackgroundDarkColor"];
+            var textColor = (Color)Application.Current.Resources["TextColor"];
+
+            foreach (var tabState in tabStates)
+            {
+                Button tabButton = (Button)this.FindName(tabState.Key);
+                if (tabButton != null)
+                {
+                    tabButton.Effect = null;
+
+                    if (tabState.Value) // Active tab
+                    {
+                        tabButton.Background = new SolidColorBrush(accentColor); // Highlight color from theme
+
+                        // Add glow effect
+                        tabButton.Effect = new DropShadowEffect
+                        {
+                            Color = accentColor,
+                            BlurRadius = 20,       // Adjust blur radius for desired glow intensity
+                            ShadowDepth = 0,      // Set shadow depth to 0 for a pure glow effect
+                            Opacity = 1,        // Set opacity for glow visibility
+                            Direction = 0         // Direction doesn't matter for glow
+                        };
+                    }
+                    else // Inactive tab
+                    {
+                        tabButton.Background = new SolidColorBrush(backgroundDarkColor); // Default background from theme
+                    }
+                }
+            }
+        }
+
+        private void StartButton_Click(object sender, RoutedEventArgs e)
+        {
+            isRunning = true; // Update the running state
+            homePage.UpdateButtonState(isRunning); // Update HomePage button visuals
+            // Start your logic here
+        }
+
+        private void StopButton_Click(object sender, RoutedEventArgs e)
+        {
+            isRunning = false; // Update the running state
+            homePage.UpdateButtonState(isRunning); // Update HomePage button visuals
+            // Stop your logic here
+        }
+
+        private void InitializeConfigPage()
+        {
+            // Set the values from the loaded config
+            ConfigPage configPage = new ConfigPage(this);
+
+            // Set the fields in ConfigPage.xaml.cs based on the loaded config
+            configPage.SetConfigValues(
+                ConfigManager.LogFile,
+                ConfigManager.ApiUrl,
+                ConfigManager.ApiKey,
+                ConfigManager.VideoPath,
+                ConfigManager.VisorWipe,
+                ConfigManager.VideoRecord,
+                ConfigManager.OfflineMode,
+                ConfigManager.Theme
+            );
+        }
+    }
+
+    public static class ConfigManager
+    {
+        public static string LogFile { get; set; }
+        public static string ApiUrl { get; set; }
+        public static string ApiKey { get; set; }
+        public static string VideoPath { get; set; }
+        public static int VisorWipe { get; set; }
+        public static int VideoRecord { get; set; }
+        public static int OfflineMode { get; set; }
+        public static int Theme { get; set; }
+
+        public static void LoadConfig()
+        {
+            string exeDirectory = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
+            string configFilePath = Path.Combine(exeDirectory, "config.ini");
+
+            if (File.Exists(configFilePath))
+            {
+                foreach (var line in File.ReadLines(configFilePath))
+                {
+                    if (line.StartsWith("LogFile="))
+                        LogFile = line.Substring("LogFile=".Length).Trim();
+                    else if (line.StartsWith("ApiUrl="))
+                        ApiUrl = line.Substring("ApiUrl=".Length).Trim();
+                    else if (line.StartsWith("ApiKey="))
+                        ApiKey = line.Substring("ApiKey=".Length).Trim();
+                    else if (line.StartsWith("VideoPath="))
+                        VideoPath = line.Substring("VideoPath=".Length).Trim();
+                    else if (line.StartsWith("VisorWipe="))
+                        VisorWipe = int.Parse(line.Substring("VisorWipe=".Length).Trim());
+                    else if (line.StartsWith("VideoRecord="))
+                        VideoRecord = int.Parse(line.Substring("VideoRecord=".Length).Trim());
+                    else if (line.StartsWith("OfflineMode="))
+                        OfflineMode = int.Parse(line.Substring("OfflineMode=".Length).Trim());
+                    else if (line.StartsWith("Theme="))
+                        Theme = int.Parse(line.Substring("Theme=".Length).Trim());
+                }
+            }
+        }
+
+        public static void SaveConfig()
+        {
+            string exeDirectory = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
+            string configFilePath = Path.Combine(exeDirectory, "config.ini");
+
+            using (StreamWriter writer = new StreamWriter(configFilePath))
+            {
+                writer.WriteLine($"LogFile=\"{LogFile}\"");
+                writer.WriteLine($"ApiUrl=\"{ApiUrl}\"");
+                writer.WriteLine($"ApiKey=\"{ApiKey}\"");
+                writer.WriteLine($"VideoPath=\"{VideoPath}\"");
+                writer.WriteLine($"VisorWipe=\"{VisorWipe}\"");
+                writer.WriteLine($"VideoRecord=\"{VideoRecord}\"");
+                writer.WriteLine($"OfflineMode=\"{OfflineMode}\"");
+                writer.WriteLine($"Theme=\"{Theme}\"");
+            }
+        }
+    }
+}
diff --git a/AutoTrackR2/StatsPage.xaml b/AutoTrackR2/StatsPage.xaml
new file mode 100644
index 0000000..8ba7626
--- /dev/null
+++ b/AutoTrackR2/StatsPage.xaml
@@ -0,0 +1,8 @@
+<UserControl x:Class="AutoTrackR2.StatsPage"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             Height="396" Width="626">
+    <Grid Background="{DynamicResource BackgroundLightBrush}">
+        <TextBlock Text="Welcome to the Stats Tab!" FontSize="24" Foreground="{DynamicResource TextBrush}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+    </Grid>
+</UserControl>
diff --git a/AutoTrackR2/StatsPage.xaml.cs b/AutoTrackR2/StatsPage.xaml.cs
new file mode 100644
index 0000000..6ae05d3
--- /dev/null
+++ b/AutoTrackR2/StatsPage.xaml.cs
@@ -0,0 +1,12 @@
+using System.Windows.Controls;
+
+namespace AutoTrackR2
+{
+    public partial class StatsPage : UserControl
+    {
+        public StatsPage()
+        {
+            InitializeComponent();
+        }
+    }
+}
diff --git a/AutoTrackR2/UpdatePage.xaml b/AutoTrackR2/UpdatePage.xaml
new file mode 100644
index 0000000..6f16fe9
--- /dev/null
+++ b/AutoTrackR2/UpdatePage.xaml
@@ -0,0 +1,8 @@
+<UserControl x:Class="AutoTrackR2.UpdatePage"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             Height="396" Width="626">
+    <Grid Background="{DynamicResource BackgroundLightBrush}">
+        <TextBlock Text="Welcome to the Update Tab!" FontSize="24" Foreground="{DynamicResource TextBrush}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+    </Grid>
+</UserControl>
diff --git a/AutoTrackR2/UpdatePage.xaml.cs b/AutoTrackR2/UpdatePage.xaml.cs
new file mode 100644
index 0000000..e8b4302
--- /dev/null
+++ b/AutoTrackR2/UpdatePage.xaml.cs
@@ -0,0 +1,12 @@
+using System.Windows.Controls;
+
+namespace AutoTrackR2
+{
+    public partial class UpdatePage : UserControl
+    {
+        public UpdatePage()
+        {
+            InitializeComponent();
+        }
+    }
+}
diff --git a/AutoTrackR2_Setup/AutoTrackR2.ico b/AutoTrackR2_Setup/AutoTrackR2.ico
new file mode 100644
index 0000000..05e94a2
Binary files /dev/null and b/AutoTrackR2_Setup/AutoTrackR2.ico differ
diff --git a/AutoTrackR2_Setup/AutoTrackR2_Setup.vdproj b/AutoTrackR2_Setup/AutoTrackR2_Setup.vdproj
new file mode 100644
index 0000000..ee11130
--- /dev/null
+++ b/AutoTrackR2_Setup/AutoTrackR2_Setup.vdproj
@@ -0,0 +1,737 @@
+"DeployProject"
+{
+"VSVersion" = "3:800"
+"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}"
+"IsWebType" = "8:FALSE"
+"ProjectName" = "8:AutoTrackR2_Setup"
+"LanguageId" = "3:1033"
+"CodePage" = "3:1252"
+"UILanguageId" = "3:1033"
+"SccProjectName" = "8:"
+"SccLocalPath" = "8:"
+"SccAuxPath" = "8:"
+"SccProvider" = "8:"
+    "Hierarchy"
+    {
+        "Entry"
+        {
+        "MsmKey" = "8:_A24851E4CCB44E13956E7ABB707AFAF3"
+        "OwnerKey" = "8:_UNDEFINED"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+        "Entry"
+        {
+        "MsmKey" = "8:_D7592F55D6DB4D76B7100A7F9934B9AC"
+        "OwnerKey" = "8:_UNDEFINED"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+    }
+    "Configurations"
+    {
+        "Debug"
+        {
+        "DisplayName" = "8:Debug"
+        "IsDebugOnly" = "11:TRUE"
+        "IsReleaseOnly" = "11:FALSE"
+        "OutputFilename" = "8:Debug\\AutoTrackR2_Setup.msi"
+        "PackageFilesAs" = "3:2"
+        "PackageFileSize" = "3:-2147483648"
+        "CabType" = "3:1"
+        "Compression" = "3:2"
+        "SignOutput" = "11:FALSE"
+        "CertificateFile" = "8:"
+        "PrivateKeyFile" = "8:"
+        "TimeStampServer" = "8:"
+        "InstallerBootstrapper" = "3:2"
+        }
+        "Release"
+        {
+        "DisplayName" = "8:Release"
+        "IsDebugOnly" = "11:FALSE"
+        "IsReleaseOnly" = "11:TRUE"
+        "OutputFilename" = "8:Release\\AutoTrackR2_Setup.msi"
+        "PackageFilesAs" = "3:2"
+        "PackageFileSize" = "3:-2147483648"
+        "CabType" = "3:1"
+        "Compression" = "3:2"
+        "SignOutput" = "11:FALSE"
+        "CertificateFile" = "8:"
+        "PrivateKeyFile" = "8:"
+        "TimeStampServer" = "8:"
+        "InstallerBootstrapper" = "3:2"
+        }
+    }
+    "Deployable"
+    {
+        "CustomAction"
+        {
+        }
+        "DefaultFeature"
+        {
+        "Name" = "8:DefaultFeature"
+        "Title" = "8:"
+        "Description" = "8:"
+        }
+        "ExternalPersistence"
+        {
+            "LaunchCondition"
+            {
+            }
+        }
+        "File"
+        {
+            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_D7592F55D6DB4D76B7100A7F9934B9AC"
+            {
+            "SourcePath" = "8:AutoTrackR2.ico"
+            "TargetName" = "8:AutoTrackR2.ico"
+            "Tag" = "8:"
+            "Folder" = "8:_CB06E66FE1FF4B369EBBE88EF55F98CD"
+            "Condition" = "8:"
+            "Transitive" = "11:FALSE"
+            "Vital" = "11:TRUE"
+            "ReadOnly" = "11:FALSE"
+            "Hidden" = "11:FALSE"
+            "System" = "11:FALSE"
+            "Permanent" = "11:FALSE"
+            "SharedLegacy" = "11:FALSE"
+            "PackageAs" = "3:1"
+            "Register" = "3:1"
+            "Exclude" = "11:FALSE"
+            "IsDependency" = "11:FALSE"
+            "IsolateTo" = "8:"
+            }
+        }
+        "FileType"
+        {
+        }
+        "Folder"
+        {
+            "{1525181F-901A-416C-8A58-119130FE478E}:_12FB7FAF80594D2C92B9C0E2E8F48833"
+            {
+            "Name" = "8:#1919"
+            "AlwaysCreate" = "11:FALSE"
+            "Condition" = "8:"
+            "Transitive" = "11:FALSE"
+            "Property" = "8:ProgramMenuFolder"
+                "Folders"
+                {
+                }
+            }
+            "{1525181F-901A-416C-8A58-119130FE478E}:_579F334DBA57439CBDECCA5F443D154B"
+            {
+            "Name" = "8:#1916"
+            "AlwaysCreate" = "11:FALSE"
+            "Condition" = "8:"
+            "Transitive" = "11:FALSE"
+            "Property" = "8:DesktopFolder"
+                "Folders"
+                {
+                }
+            }
+            "{3C67513D-01DD-4637-8A68-80971EB9504F}:_CB06E66FE1FF4B369EBBE88EF55F98CD"
+            {
+            "DefaultLocation" = "8:[ProgramFilesFolder][Manufacturer]\\[ProductName]"
+            "Name" = "8:#1925"
+            "AlwaysCreate" = "11:FALSE"
+            "Condition" = "8:"
+            "Transitive" = "11:FALSE"
+            "Property" = "8:TARGETDIR"
+                "Folders"
+                {
+                }
+            }
+        }
+        "LaunchCondition"
+        {
+        }
+        "Locator"
+        {
+        }
+        "MsiBootstrapper"
+        {
+        "LangId" = "3:1033"
+        "RequiresElevation" = "11:FALSE"
+        }
+        "Product"
+        {
+        "Name" = "8:Microsoft Visual Studio"
+        "ProductName" = "8:AutoTrackR2_Setup"
+        "ProductCode" = "8:{0B3FEBBD-6A78-48FC-BA26-42F6096DA6F5}"
+        "PackageCode" = "8:{73508E4E-CAAC-418C-8C72-C061905BB75C}"
+        "UpgradeCode" = "8:{036AE5C2-4EEB-4DFB-B56E-9000603C8E1E}"
+        "AspNetVersion" = "8:2.0.50727.0"
+        "RestartWWWService" = "11:FALSE"
+        "RemovePreviousVersions" = "11:TRUE"
+        "DetectNewerInstalledVersion" = "11:TRUE"
+        "InstallAllUsers" = "11:TRUE"
+        "ProductVersion" = "8:1.0.0"
+        "Manufacturer" = "8:GrieferNet"
+        "ARPHELPTELEPHONE" = "8:"
+        "ARPHELPLINK" = "8:"
+        "Title" = "8:AutoTrackR2_Setup"
+        "Subject" = "8:"
+        "ARPCONTACT" = "8:Fisk_Nian"
+        "Keywords" = "8:"
+        "ARPCOMMENTS" = "8:Setup AutoTrackR2."
+        "ARPURLINFOABOUT" = "8:https://griefernet.org/"
+        "ARPPRODUCTICON" = "8:"
+        "ARPIconIndex" = "3:0"
+        "SearchPath" = "8:"
+        "UseSystemSearchPath" = "11:TRUE"
+        "TargetPlatform" = "3:0"
+        "PreBuildEvent" = "8:"
+        "PostBuildEvent" = "8:"
+        "RunPostBuildEvent" = "3:0"
+        }
+        "Registry"
+        {
+            "HKLM"
+            {
+                "Keys"
+                {
+                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_CABE0997872649628E777532FF069619"
+                    {
+                    "Name" = "8:Software"
+                    "Condition" = "8:"
+                    "AlwaysCreate" = "11:FALSE"
+                    "DeleteAtUninstall" = "11:FALSE"
+                    "Transitive" = "11:FALSE"
+                        "Keys"
+                        {
+                            "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_EEC98959116A4294BC24B9971B9E806B"
+                            {
+                            "Name" = "8:[Manufacturer]"
+                            "Condition" = "8:"
+                            "AlwaysCreate" = "11:FALSE"
+                            "DeleteAtUninstall" = "11:FALSE"
+                            "Transitive" = "11:FALSE"
+                                "Keys"
+                                {
+                                }
+                                "Values"
+                                {
+                                }
+                            }
+                        }
+                        "Values"
+                        {
+                        }
+                    }
+                }
+            }
+            "HKCU"
+            {
+                "Keys"
+                {
+                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_EED4AE0A1E2E4EDD882FE1C77C43F63E"
+                    {
+                    "Name" = "8:Software"
+                    "Condition" = "8:"
+                    "AlwaysCreate" = "11:FALSE"
+                    "DeleteAtUninstall" = "11:FALSE"
+                    "Transitive" = "11:FALSE"
+                        "Keys"
+                        {
+                            "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_D6C9D0B71048424A97D661F444C05F99"
+                            {
+                            "Name" = "8:[Manufacturer]"
+                            "Condition" = "8:"
+                            "AlwaysCreate" = "11:FALSE"
+                            "DeleteAtUninstall" = "11:FALSE"
+                            "Transitive" = "11:FALSE"
+                                "Keys"
+                                {
+                                }
+                                "Values"
+                                {
+                                }
+                            }
+                        }
+                        "Values"
+                        {
+                        }
+                    }
+                }
+            }
+            "HKCR"
+            {
+                "Keys"
+                {
+                }
+            }
+            "HKU"
+            {
+                "Keys"
+                {
+                }
+            }
+            "HKPU"
+            {
+                "Keys"
+                {
+                }
+            }
+        }
+        "Sequences"
+        {
+        }
+        "Shortcut"
+        {
+            "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_16A46D37606E484FA2731DF6906A9852"
+            {
+            "Name" = "8:AutoTrackR2"
+            "Arguments" = "8:"
+            "Description" = "8:"
+            "ShowCmd" = "3:1"
+            "IconIndex" = "3:0"
+            "Transitive" = "11:FALSE"
+            "Target" = "8:_A24851E4CCB44E13956E7ABB707AFAF3"
+            "Folder" = "8:_12FB7FAF80594D2C92B9C0E2E8F48833"
+            "WorkingFolder" = "8:_CB06E66FE1FF4B369EBBE88EF55F98CD"
+            "Icon" = "8:_D7592F55D6DB4D76B7100A7F9934B9AC"
+            "Feature" = "8:"
+            }
+            "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_C24193DF92E147468BFD5AB3AE933C25"
+            {
+            "Name" = "8:AutoTrackR2"
+            "Arguments" = "8:"
+            "Description" = "8:"
+            "ShowCmd" = "3:1"
+            "IconIndex" = "3:0"
+            "Transitive" = "11:FALSE"
+            "Target" = "8:_A24851E4CCB44E13956E7ABB707AFAF3"
+            "Folder" = "8:_579F334DBA57439CBDECCA5F443D154B"
+            "WorkingFolder" = "8:_CB06E66FE1FF4B369EBBE88EF55F98CD"
+            "Icon" = "8:_D7592F55D6DB4D76B7100A7F9934B9AC"
+            "Feature" = "8:"
+            }
+        }
+        "UserInterface"
+        {
+            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_015EBE98A1CF4DD7AE3842B50A376347"
+            {
+            "Name" = "8:#1901"
+            "Sequence" = "3:1"
+            "Attributes" = "3:2"
+                "Dialogs"
+                {
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_63F1CE1BDEA143C08F073A23FC706A1A"
+                    {
+                    "Sequence" = "3:100"
+                    "DisplayName" = "8:Progress"
+                    "UseDynamicProperties" = "11:TRUE"
+                    "IsDependency" = "11:FALSE"
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdProgressDlg.wid"
+                        "Properties"
+                        {
+                            "BannerBitmap"
+                            {
+                            "Name" = "8:BannerBitmap"
+                            "DisplayName" = "8:#1001"
+                            "Description" = "8:#1101"
+                            "Type" = "3:8"
+                            "ContextData" = "8:Bitmap"
+                            "Attributes" = "3:4"
+                            "Setting" = "3:1"
+                            "UsePlugInResources" = "11:TRUE"
+                            }
+                            "ShowProgress"
+                            {
+                            "Name" = "8:ShowProgress"
+                            "DisplayName" = "8:#1009"
+                            "Description" = "8:#1109"
+                            "Type" = "3:5"
+                            "ContextData" = "8:1;True=1;False=0"
+                            "Attributes" = "3:0"
+                            "Setting" = "3:0"
+                            "Value" = "3:1"
+                            "DefaultValue" = "3:1"
+                            "UsePlugInResources" = "11:TRUE"
+                            }
+                        }
+                    }
+                }
+            }
+            "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_0165D8A281694188AD78D4B37C2EB7DB"
+            {
+            "UseDynamicProperties" = "11:FALSE"
+            "IsDependency" = "11:FALSE"
+            "SourcePath" = "8:<VsdDialogDir>\\VsdUserInterface.wim"
+            }
+            "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_4CDD0401FAD64C46A23593CE68371FE5"
+            {
+            "UseDynamicProperties" = "11:FALSE"
+            "IsDependency" = "11:FALSE"
+            "SourcePath" = "8:<VsdDialogDir>\\VsdBasicDialogs.wim"
+            }
+            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_679CF890D55B428DAE6A37FAFA98A43B"
+            {
+            "Name" = "8:#1902"
+            "Sequence" = "3:1"
+            "Attributes" = "3:3"
+                "Dialogs"
+                {
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_6676A184BC2B46CC802280AE8946C6BF"
+                    {
+                    "Sequence" = "3:100"
+                    "DisplayName" = "8:Finished"
+                    "UseDynamicProperties" = "11:TRUE"
+                    "IsDependency" = "11:FALSE"
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdFinishedDlg.wid"
+                        "Properties"
+                        {
+                            "BannerBitmap"
+                            {
+                            "Name" = "8:BannerBitmap"
+                            "DisplayName" = "8:#1001"
+                            "Description" = "8:#1101"
+                            "Type" = "3:8"
+                            "ContextData" = "8:Bitmap"
+                            "Attributes" = "3:4"
+                            "Setting" = "3:1"
+                            "UsePlugInResources" = "11:TRUE"
+                            }
+                            "UpdateText"
+                            {
+                            "Name" = "8:UpdateText"
+                            "DisplayName" = "8:#1058"
+                            "Description" = "8:#1158"
+                            "Type" = "3:15"
+                            "ContextData" = "8:"
+                            "Attributes" = "3:0"
+                            "Setting" = "3:1"
+                            "Value" = "8:#1258"
+                            "DefaultValue" = "8:#1258"
+                            "UsePlugInResources" = "11:TRUE"
+                            }
+                        }
+                    }
+                }
+            }
+            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_8F9B9C1FF2E54C26BB226BD2C0455E0F"
+            {
+            "Name" = "8:#1900"
+            "Sequence" = "3:2"
+            "Attributes" = "3:1"
+                "Dialogs"
+                {
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_13DE8268FB9F45FBAA3105F13585C757"
+                    {
+                    "Sequence" = "3:100"
+                    "DisplayName" = "8:Welcome"
+                    "UseDynamicProperties" = "11:TRUE"
+                    "IsDependency" = "11:FALSE"
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminWelcomeDlg.wid"
+                        "Properties"
+                        {
+                            "BannerBitmap"
+                            {
+                            "Name" = "8:BannerBitmap"
+                            "DisplayName" = "8:#1001"
+                            "Description" = "8:#1101"
+                            "Type" = "3:8"
+                            "ContextData" = "8:Bitmap"
+                            "Attributes" = "3:4"
+                            "Setting" = "3:1"
+                            "UsePlugInResources" = "11:TRUE"
+                            }
+                            "CopyrightWarning"
+                            {
+                            "Name" = "8:CopyrightWarning"
+                            "DisplayName" = "8:#1002"
+                            "Description" = "8:#1102"
+                            "Type" = "3:3"
+                            "ContextData" = "8:"
+                            "Attributes" = "3:0"
+                            "Setting" = "3:1"
+                            "Value" = "8:#1202"
+                            "DefaultValue" = "8:#1202"
+                            "UsePlugInResources" = "11:TRUE"
+                            }
+                            "Welcome"
+                            {
+                            "Name" = "8:Welcome"
+                            "DisplayName" = "8:#1003"
+                            "Description" = "8:#1103"
+                            "Type" = "3:3"
+                            "ContextData" = "8:"
+                            "Attributes" = "3:0"
+                            "Setting" = "3:1"
+                            "Value" = "8:#1203"
+                            "DefaultValue" = "8:#1203"
+                            "UsePlugInResources" = "11:TRUE"
+                            }
+                        }
+                    }
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_603BCFA20DEE4DC88DBDFB8564FB477F"
+                    {
+                    "Sequence" = "3:300"
+                    "DisplayName" = "8:Confirm Installation"
+                    "UseDynamicProperties" = "11:TRUE"
+                    "IsDependency" = "11:FALSE"
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminConfirmDlg.wid"
+                        "Properties"
+                        {
+                            "BannerBitmap"
+                            {
+                            "Name" = "8:BannerBitmap"
+                            "DisplayName" = "8:#1001"
+                            "Description" = "8:#1101"
+                            "Type" = "3:8"
+                            "ContextData" = "8:Bitmap"
+                            "Attributes" = "3:4"
+                            "Setting" = "3:1"
+                            "UsePlugInResources" = "11:TRUE"
+                            }
+                        }
+                    }
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_A1FB5C890ADA4DC2AF82E38E994FAAC2"
+                    {
+                    "Sequence" = "3:200"
+                    "DisplayName" = "8:Installation Folder"
+                    "UseDynamicProperties" = "11:TRUE"
+                    "IsDependency" = "11:FALSE"
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFolderDlg.wid"
+                        "Properties"
+                        {
+                            "BannerBitmap"
+                            {
+                            "Name" = "8:BannerBitmap"
+                            "DisplayName" = "8:#1001"
+                            "Description" = "8:#1101"
+                            "Type" = "3:8"
+                            "ContextData" = "8:Bitmap"
+                            "Attributes" = "3:4"
+                            "Setting" = "3:1"
+                            "UsePlugInResources" = "11:TRUE"
+                            }
+                        }
+                    }
+                }
+            }
+            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_A07D2D2E65EF455F992A28ADD024715E"
+            {
+            "Name" = "8:#1901"
+            "Sequence" = "3:2"
+            "Attributes" = "3:2"
+                "Dialogs"
+                {
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_084F8D49DB95439392026C31D354E963"
+                    {
+                    "Sequence" = "3:100"
+                    "DisplayName" = "8:Progress"
+                    "UseDynamicProperties" = "11:TRUE"
+                    "IsDependency" = "11:FALSE"
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminProgressDlg.wid"
+                        "Properties"
+                        {
+                            "BannerBitmap"
+                            {
+                            "Name" = "8:BannerBitmap"
+                            "DisplayName" = "8:#1001"
+                            "Description" = "8:#1101"
+                            "Type" = "3:8"
+                            "ContextData" = "8:Bitmap"
+                            "Attributes" = "3:4"
+                            "Setting" = "3:1"
+                            "UsePlugInResources" = "11:TRUE"
+                            }
+                            "ShowProgress"
+                            {
+                            "Name" = "8:ShowProgress"
+                            "DisplayName" = "8:#1009"
+                            "Description" = "8:#1109"
+                            "Type" = "3:5"
+                            "ContextData" = "8:1;True=1;False=0"
+                            "Attributes" = "3:0"
+                            "Setting" = "3:0"
+                            "Value" = "3:1"
+                            "DefaultValue" = "3:1"
+                            "UsePlugInResources" = "11:TRUE"
+                            }
+                        }
+                    }
+                }
+            }
+            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_D616934338B042F49E30698BBCC2E312"
+            {
+            "Name" = "8:#1900"
+            "Sequence" = "3:1"
+            "Attributes" = "3:1"
+                "Dialogs"
+                {
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_146719AC166E40C48A5A1567600C4208"
+                    {
+                    "Sequence" = "3:300"
+                    "DisplayName" = "8:Confirm Installation"
+                    "UseDynamicProperties" = "11:TRUE"
+                    "IsDependency" = "11:FALSE"
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdConfirmDlg.wid"
+                        "Properties"
+                        {
+                            "BannerBitmap"
+                            {
+                            "Name" = "8:BannerBitmap"
+                            "DisplayName" = "8:#1001"
+                            "Description" = "8:#1101"
+                            "Type" = "3:8"
+                            "ContextData" = "8:Bitmap"
+                            "Attributes" = "3:4"
+                            "Setting" = "3:1"
+                            "UsePlugInResources" = "11:TRUE"
+                            }
+                        }
+                    }
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_47602CB2E1D242D7922211A0483296F2"
+                    {
+                    "Sequence" = "3:100"
+                    "DisplayName" = "8:Welcome"
+                    "UseDynamicProperties" = "11:TRUE"
+                    "IsDependency" = "11:FALSE"
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdWelcomeDlg.wid"
+                        "Properties"
+                        {
+                            "BannerBitmap"
+                            {
+                            "Name" = "8:BannerBitmap"
+                            "DisplayName" = "8:#1001"
+                            "Description" = "8:#1101"
+                            "Type" = "3:8"
+                            "ContextData" = "8:Bitmap"
+                            "Attributes" = "3:4"
+                            "Setting" = "3:1"
+                            "UsePlugInResources" = "11:TRUE"
+                            }
+                            "CopyrightWarning"
+                            {
+                            "Name" = "8:CopyrightWarning"
+                            "DisplayName" = "8:#1002"
+                            "Description" = "8:#1102"
+                            "Type" = "3:3"
+                            "ContextData" = "8:"
+                            "Attributes" = "3:0"
+                            "Setting" = "3:1"
+                            "Value" = "8:#1202"
+                            "DefaultValue" = "8:#1202"
+                            "UsePlugInResources" = "11:TRUE"
+                            }
+                            "Welcome"
+                            {
+                            "Name" = "8:Welcome"
+                            "DisplayName" = "8:#1003"
+                            "Description" = "8:#1103"
+                            "Type" = "3:3"
+                            "ContextData" = "8:"
+                            "Attributes" = "3:0"
+                            "Setting" = "3:1"
+                            "Value" = "8:#1203"
+                            "DefaultValue" = "8:#1203"
+                            "UsePlugInResources" = "11:TRUE"
+                            }
+                        }
+                    }
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_8E7EC8448905425DBD9E7BB7A5CE8295"
+                    {
+                    "Sequence" = "3:200"
+                    "DisplayName" = "8:Installation Folder"
+                    "UseDynamicProperties" = "11:TRUE"
+                    "IsDependency" = "11:FALSE"
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdFolderDlg.wid"
+                        "Properties"
+                        {
+                            "BannerBitmap"
+                            {
+                            "Name" = "8:BannerBitmap"
+                            "DisplayName" = "8:#1001"
+                            "Description" = "8:#1101"
+                            "Type" = "3:8"
+                            "ContextData" = "8:Bitmap"
+                            "Attributes" = "3:4"
+                            "Setting" = "3:1"
+                            "UsePlugInResources" = "11:TRUE"
+                            }
+                            "InstallAllUsersVisible"
+                            {
+                            "Name" = "8:InstallAllUsersVisible"
+                            "DisplayName" = "8:#1059"
+                            "Description" = "8:#1159"
+                            "Type" = "3:5"
+                            "ContextData" = "8:1;True=1;False=0"
+                            "Attributes" = "3:0"
+                            "Setting" = "3:0"
+                            "Value" = "3:1"
+                            "DefaultValue" = "3:1"
+                            "UsePlugInResources" = "11:TRUE"
+                            }
+                        }
+                    }
+                }
+            }
+            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_E659FA2923A64458A279F42675485E17"
+            {
+            "Name" = "8:#1902"
+            "Sequence" = "3:2"
+            "Attributes" = "3:3"
+                "Dialogs"
+                {
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_641FD66A380643A6920145786A209DF5"
+                    {
+                    "Sequence" = "3:100"
+                    "DisplayName" = "8:Finished"
+                    "UseDynamicProperties" = "11:TRUE"
+                    "IsDependency" = "11:FALSE"
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFinishedDlg.wid"
+                        "Properties"
+                        {
+                            "BannerBitmap"
+                            {
+                            "Name" = "8:BannerBitmap"
+                            "DisplayName" = "8:#1001"
+                            "Description" = "8:#1101"
+                            "Type" = "3:8"
+                            "ContextData" = "8:Bitmap"
+                            "Attributes" = "3:4"
+                            "Setting" = "3:1"
+                            "UsePlugInResources" = "11:TRUE"
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        "MergeModule"
+        {
+        }
+        "ProjectOutput"
+        {
+            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_A24851E4CCB44E13956E7ABB707AFAF3"
+            {
+            "SourcePath" = "8:..\\AutoTrackR2\\obj\\Debug\\net9.0-windows\\apphost.exe"
+            "TargetName" = "8:"
+            "Tag" = "8:"
+            "Folder" = "8:_CB06E66FE1FF4B369EBBE88EF55F98CD"
+            "Condition" = "8:"
+            "Transitive" = "11:FALSE"
+            "Vital" = "11:TRUE"
+            "ReadOnly" = "11:FALSE"
+            "Hidden" = "11:FALSE"
+            "System" = "11:FALSE"
+            "Permanent" = "11:FALSE"
+            "SharedLegacy" = "11:FALSE"
+            "PackageAs" = "3:1"
+            "Register" = "3:1"
+            "Exclude" = "11:FALSE"
+            "IsDependency" = "11:FALSE"
+            "IsolateTo" = "8:"
+            "ProjectOutputGroupRegister" = "3:1"
+            "OutputConfiguration" = "8:"
+            "OutputGroupCanonicalName" = "8:PublishItems"
+            "OutputProjectGuid" = "8:{31093634-8FBB-4BC6-BEA4-DAD6C11404F3}"
+            "ShowKeyOutput" = "11:TRUE"
+                "ExcludeFilters"
+                {
+                }
+            }
+        }
+    }
+}