From 8be01705ee8737854de142ef01433c8128c2d252 Mon Sep 17 00:00:00 2001 From: "Thomas B. Ruecker" Date: Sun, 15 Feb 2015 08:35:40 +0000 Subject: [PATCH] Cleaning up win32 directory of unused files We haven't been using VS6 to build Icecast for a while. We won't be bringing back the management UI, as everything is now accessible through either web-ui or start menu. Proper Windows service handling remains on todo list for 2.5.0. --- win32/ConfigTab.cpp | 79 --- win32/ConfigTab.h | 50 -- win32/Icecast2win.clw | 149 ----- win32/Icecast2win.cpp | 101 --- win32/Icecast2win.dsp | 274 -------- win32/Icecast2win.dsw | 83 --- win32/Icecast2win.h | 53 -- win32/Icecast2win.rc | 300 --------- win32/Icecast2winDlg.cpp | 1209 ------------------------------------ win32/Icecast2winDlg.h | 125 ---- win32/Makefile.am | 14 +- win32/StatsTab.cpp | 149 ----- win32/StatsTab.h | 55 -- win32/Status.cpp | 160 ----- win32/Status.h | 59 -- win32/StdAfx.cpp | 8 - win32/StdAfx.h | 27 - win32/TRAYNOT.h | 35 -- win32/TabCtrlSSL.cpp | 499 --------------- win32/TabCtrlSSL.h | 98 --- win32/TabPageSSL.cpp | 75 --- win32/TabPageSSL.h | 26 - win32/Traynot.cpp | 65 -- win32/black.bmp | Bin 154166 -> 0 bytes win32/colors.h | 5 - win32/credits.bmp | Bin 319232 -> 0 bytes win32/icecast.dsp | 392 ------------ win32/icecast2.iss | 64 -- win32/icecast2_console.dsp | 103 --- win32/icecast2_console.dsw | 44 -- win32/icecastService.cpp | 193 ------ win32/icecastService.dsp | 109 ---- win32/res/Icecast2win.rc2 | 13 - win32/res/Makefile.am | 6 - win32/resource.h | 78 --- win32/running.bmp | Bin 5336 -> 0 bytes win32/stopped.bmp | Bin 5336 -> 0 bytes 37 files changed, 2 insertions(+), 4698 deletions(-) delete mode 100644 win32/ConfigTab.cpp delete mode 100644 win32/ConfigTab.h delete mode 100755 win32/Icecast2win.clw delete mode 100644 win32/Icecast2win.cpp delete mode 100644 win32/Icecast2win.dsp delete mode 100644 win32/Icecast2win.dsw delete mode 100644 win32/Icecast2win.h delete mode 100644 win32/Icecast2win.rc delete mode 100644 win32/Icecast2winDlg.cpp delete mode 100644 win32/Icecast2winDlg.h delete mode 100644 win32/StatsTab.cpp delete mode 100644 win32/StatsTab.h delete mode 100644 win32/Status.cpp delete mode 100644 win32/Status.h delete mode 100644 win32/StdAfx.cpp delete mode 100644 win32/StdAfx.h delete mode 100644 win32/TRAYNOT.h delete mode 100644 win32/TabCtrlSSL.cpp delete mode 100644 win32/TabCtrlSSL.h delete mode 100644 win32/TabPageSSL.cpp delete mode 100644 win32/TabPageSSL.h delete mode 100644 win32/Traynot.cpp delete mode 100644 win32/black.bmp delete mode 100644 win32/colors.h delete mode 100644 win32/credits.bmp delete mode 100644 win32/icecast.dsp delete mode 100644 win32/icecast2.iss delete mode 100644 win32/icecast2_console.dsp delete mode 100644 win32/icecast2_console.dsw delete mode 100644 win32/icecastService.cpp delete mode 100644 win32/icecastService.dsp delete mode 100644 win32/res/Icecast2win.rc2 delete mode 100644 win32/res/Makefile.am delete mode 100644 win32/resource.h delete mode 100644 win32/running.bmp delete mode 100644 win32/stopped.bmp diff --git a/win32/ConfigTab.cpp b/win32/ConfigTab.cpp deleted file mode 100644 index 28cf1506..00000000 --- a/win32/ConfigTab.cpp +++ /dev/null @@ -1,79 +0,0 @@ -// ConfigTab.cpp : implementation file -// - -#include "stdafx.h" -#include "Icecast2win.h" -#include "ConfigTab.h" - -#ifdef _DEBUG -#define new DEBUG_NEW -#undef THIS_FILE -static char THIS_FILE[] = __FILE__; -#endif - -///////////////////////////////////////////////////////////////////////////// -// CConfigTab dialog - - -CConfigTab::CConfigTab(CWnd* pParent /*=NULL*/) - : CTabPageSSL(CConfigTab::IDD, pParent) -{ - //{{AFX_DATA_INIT(CConfigTab) - m_Config = _T(""); - //}}AFX_DATA_INIT -} - - -void CConfigTab::DoDataExchange(CDataExchange* pDX) -{ - CTabPageSSL::DoDataExchange(pDX); - //{{AFX_DATA_MAP(CConfigTab) - DDX_Control(pDX, IDC_CONFIG, m_ConfigCtrl); - DDX_Text(pDX, IDC_CONFIG, m_Config); - //}}AFX_DATA_MAP -} - - -BEGIN_MESSAGE_MAP(CConfigTab, CTabPageSSL) - //{{AFX_MSG_MAP(CConfigTab) - ON_EN_KILLFOCUS(IDC_CONFIG, OnKillfocusConfig) - //}}AFX_MSG_MAP -END_MESSAGE_MAP() - -///////////////////////////////////////////////////////////////////////////// -// CConfigTab message handlers - -void CConfigTab::SaveConfiguration() -{ - // TODO: Add your command handler code here - // TODO: Add your control notification handler code here - FILE *filep; - char buffer[2046] = ""; - CIcecast2winApp *myApp = (CIcecast2winApp *)AfxGetApp(); - - UpdateData(TRUE); - if (m_Config != "") { - filep = fopen(myApp->m_configFile, "w"); - if (filep) { - fputs(LPCSTR(m_Config), filep); - fclose(filep); - } - } -} - -BOOL CConfigTab::OnInitDialog() -{ - CTabPageSSL::OnInitDialog(); - - // TODO: Add extra initialization here -// AddAnchor(IDC_CONFIG, TOP_LEFT, BOTTOM_RIGHT); - - return TRUE; // return TRUE unless you set the focus to a control - // EXCEPTION: OCX Property Pages should return FALSE -} - -void CConfigTab::OnKillfocusConfig() -{ - // TODO: Add your control notification handler code here - SaveConfiguration(); -} diff --git a/win32/ConfigTab.h b/win32/ConfigTab.h deleted file mode 100644 index 6dc5a2b5..00000000 --- a/win32/ConfigTab.h +++ /dev/null @@ -1,50 +0,0 @@ -#if !defined(AFX_CONFIGTAB_H__D8B0CC28_59FA_44E8_91A4_377C64F67DCF__INCLUDED_) -#define AFX_CONFIGTAB_H__D8B0CC28_59FA_44E8_91A4_377C64F67DCF__INCLUDED_ - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 -// ConfigTab.h : header file -// -#include "TabPageSSL.h" - -///////////////////////////////////////////////////////////////////////////// -// CConfigTab dialog - -class CConfigTab : public CTabPageSSL -{ -// Construction -public: - void SaveConfiguration(); - CConfigTab(CWnd* pParent = NULL); // standard constructor - -// Dialog Data - //{{AFX_DATA(CConfigTab) - enum { IDD = IDD_CONFIGDIALOG }; - CEdit m_ConfigCtrl; - CString m_Config; - //}}AFX_DATA - - -// Overrides - // ClassWizard generated virtual function overrides - //{{AFX_VIRTUAL(CConfigTab) - protected: - virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support - //}}AFX_VIRTUAL - -// Implementation -protected: - - // Generated message map functions - //{{AFX_MSG(CConfigTab) - virtual BOOL OnInitDialog(); - afx_msg void OnKillfocusConfig(); - //}}AFX_MSG - DECLARE_MESSAGE_MAP() -}; - -//{{AFX_INSERT_LOCATION}} -// Microsoft Visual C++ will insert additional declarations immediately before the previous line. - -#endif // !defined(AFX_CONFIGTAB_H__D8B0CC28_59FA_44E8_91A4_377C64F67DCF__INCLUDED_) diff --git a/win32/Icecast2win.clw b/win32/Icecast2win.clw deleted file mode 100755 index 343c35fd..00000000 --- a/win32/Icecast2win.clw +++ /dev/null @@ -1,149 +0,0 @@ -; CLW file contains information for the MFC ClassWizard - -[General Info] -Version=1 -LastClass=CIcecast2winDlg -LastTemplate=CDialog -NewFileInclude1=#include "stdafx.h" -NewFileInclude2=#include "Icecast2win.h" - -ClassCount=6 -Class1=CIcecast2winApp -Class2=CIcecast2winDlg -Class3=CAboutDlg - -ResourceCount=10 -Resource1=IDR_MENU2 -Resource2=IDR_MAINFRAME -Resource3=IDR_TRAY -Resource4=IDD_ICECAST2WIN_DIALOG -Class4=CStatus -Resource5=IDD_SSTATUS -Class5=CConfigTab -Class6=CStatsTab -Resource6=IDD_CONFIGDIALOG -Resource7=IDD_STATSDIALOG -Resource8=IDR_MENU3 -Resource9=IDD_ABOUTBOX -Resource10=IDR_MENU4 - -[CLS:CIcecast2winApp] -Type=0 -HeaderFile=Icecast2win.h -ImplementationFile=Icecast2win.cpp -Filter=N - -[CLS:CIcecast2winDlg] -Type=0 -HeaderFile=Icecast2winDlg.h -ImplementationFile=Icecast2winDlg.cpp -Filter=C -LastObject=ID_ABOUT_CREDITS -BaseClass=CDialog -VirtualFilter=dWC - -[CLS:CAboutDlg] -Type=0 -HeaderFile=Icecast2winDlg.h -ImplementationFile=Icecast2winDlg.cpp -Filter=D - -[DLG:IDD_ABOUTBOX] -Type=1 -Class=CAboutDlg -ControlCount=2 -Control1=IDOK,button,1342373889 -Control2=IDC_STATIC,static,1350572046 - -[DLG:IDD_ICECAST2WIN_DIALOG] -Type=1 -Class=CIcecast2winDlg -ControlCount=7 -Control1=IDC_MAINTAB,SysTabControl32,1342177280 -Control2=IDC_START,button,1342242816 -Control3=IDC_AUTOSTART,button,1342251011 -Control4=IDC_STATIC,static,1342177294 -Control5=IDC_SERVERSTATUS,static,1342177294 -Control6=IDC_STATIC_SS,static,1342308865 -Control7=IDC_HIDESYSTRAY,button,1342242816 - -[DLG:IDD_SSTATUS] -Type=1 -Class=CStatus -ControlCount=5 -Control1=IDC_FILLER2,static,1342308352 -Control2=IDC_GLOBALSTAT_LIST,SysListView32,1350631425 -Control3=IDC_STATIC_GS,static,1342308352 -Control4=IDC_STATIC_RUN,static,1342308352 -Control5=IDC_RUNNINGFOR,static,1342308352 - -[CLS:CStatus] -Type=0 -HeaderFile=Status.h -ImplementationFile=Status.cpp -BaseClass=CTabPageSSL -Filter=D -LastObject=ID_POPUP_ADDTOGLOBALSTATLIST -VirtualFilter=dWC - -[DLG:IDD_CONFIGDIALOG] -Type=1 -Class=CConfigTab -ControlCount=1 -Control1=IDC_CONFIG,edit,1352732868 - -[CLS:CConfigTab] -Type=0 -HeaderFile=ConfigTab.h -ImplementationFile=ConfigTab.cpp -BaseClass=CTabPageSSL -Filter=D -VirtualFilter=dWC -LastObject=IDC_CONFIG - -[DLG:IDD_STATSDIALOG] -Type=1 -Class=CStatsTab -ControlCount=4 -Control1=IDC_STATSLIST,SysListView32,1350631425 -Control2=IDC_SOURCELIST,SysListView32,1350631425 -Control3=IDC_STATIC_SLS,static,1342308352 -Control4=IDC_STATIC,static,1342308352 - -[CLS:CStatsTab] -Type=0 -HeaderFile=StatsTab.h -ImplementationFile=StatsTab.cpp -BaseClass=CTabPageSSL -Filter=D -VirtualFilter=dWC -LastObject=IDC_SOURCELIST - -[MNU:IDR_MENU2] -Type=1 -Class=? -Command1=ID_POPUP_ADDTOGLOBALSTATLIST -CommandCount=1 - -[MNU:IDR_MENU3] -Type=1 -Class=? -Command1=ID__DELETEFROMGLOBALSTATS -Command2=ID__MAKETHISSTATTHEWINDOWTITLE -CommandCount=2 - -[MNU:IDR_TRAY] -Type=1 -Class=CIcecast2winDlg -Command1=ID_BLANK_RESTORE -CommandCount=1 - -[MNU:IDR_MENU4] -Type=1 -Class=CIcecast2winDlg -Command1=ID_FILE_EXIT -Command2=ID_FILE_EDITCONFIGURATION -Command3=ID_ABOUT_HELP -Command4=ID_ABOUT_CREDITS -CommandCount=4 - diff --git a/win32/Icecast2win.cpp b/win32/Icecast2win.cpp deleted file mode 100644 index e02e2ec2..00000000 --- a/win32/Icecast2win.cpp +++ /dev/null @@ -1,101 +0,0 @@ -// Icecast2win.cpp : Defines the class behaviors for the application. -// - -#include "stdafx.h" -#include "Icecast2win.h" -#include "Icecast2winDlg.h" - -extern "C" { -#include "xslt.h" -void initialize_subsystems(void); -void shutdown_subsystems(void); -} -#ifdef _DEBUG -#define new DEBUG_NEW -#undef THIS_FILE -static char THIS_FILE[] = __FILE__; -#endif - -///////////////////////////////////////////////////////////////////////////// -// CIcecast2winApp - -BEGIN_MESSAGE_MAP(CIcecast2winApp, CWinApp) - //{{AFX_MSG_MAP(CIcecast2winApp) - // NOTE - the ClassWizard will add and remove mapping macros here. - // DO NOT EDIT what you see in these blocks of generated code! - //}}AFX_MSG - ON_COMMAND(ID_HELP, CWinApp::OnHelp) -END_MESSAGE_MAP() - -#include "colors.h" -///////////////////////////////////////////////////////////////////////////// -// CIcecast2winApp construction - -CIcecast2winApp::CIcecast2winApp() -{ - // TODO: add construction code here, - // Place all significant initialization in InitInstance -} - -///////////////////////////////////////////////////////////////////////////// -// The one and only CIcecast2winApp object - -CIcecast2winApp theApp; - -///////////////////////////////////////////////////////////////////////////// -// CIcecast2winApp initialization - -BOOL CIcecast2winApp::InitInstance() -{ - AfxEnableControlContainer(); - - // Standard initialization - // If you are not using these features and wish to reduce the size - // of your final executable, you should remove from the following - // the specific initialization routines you do not need. - - initialize_subsystems(); - if (strlen(m_lpCmdLine) > 0) { - strcpy(m_configFile, m_lpCmdLine); - } - else { - strcpy(m_configFile, ".\\icecast.xml"); - } - - - -#ifdef _AFXDLL - Enable3dControls(); // Call this when using MFC in a shared DLL -#else - Enable3dControlsStatic(); // Call this when linking to MFC statically -#endif - - CIcecast2winDlg dlg; - m_pMainWnd = &dlg; - -// SetDialogBkColor(BGCOLOR,TEXTCOLOR); - - m_pIconList[0] = LoadIcon (MAKEINTRESOURCE(IDR_MAINFRAME)); - - int nResponse = dlg.DoModal(); - if (nResponse == IDOK) - { - // TODO: Place code here to handle when the dialog is - // dismissed with OK - } - else if (nResponse == IDCANCEL) - { - // TODO: Place code here to handle when the dialog is - // dismissed with Cancel - } - - // Since the dialog has been closed, return FALSE so that we exit the - // application, rather than start the application's message pump. - return FALSE; -} - -int CIcecast2winApp::ExitInstance() -{ - shutdown_subsystems(); - return CWinApp::ExitInstance(); -} diff --git a/win32/Icecast2win.dsp b/win32/Icecast2win.dsp deleted file mode 100644 index c226f120..00000000 --- a/win32/Icecast2win.dsp +++ /dev/null @@ -1,274 +0,0 @@ -# Microsoft Developer Studio Project File - Name="Icecast2win" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Application" 0x0101 - -CFG=Icecast2win - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "Icecast2win.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "Icecast2win.mak" CFG="Icecast2win - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "Icecast2win - Win32 Release" (based on "Win32 (x86) Application") -!MESSAGE "Icecast2win - Win32 Debug" (based on "Win32 (x86) Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "Icecast2win - Win32 Release" - -# PROP BASE Use_MFC 5 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 5 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "releasewin_tmp" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Yu"stdafx.h" /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "../src" /I "../src/httpp" /I "../src/thread" /I "../src/log" /I "../src/avl" /I "../src/net" /I "src/timings" /I "../" /I "../../libxslt/include" /I "../../iconv/include" /I "../../libxml2/include" /I "../../pthreads" /I "../../oggvorbis-win32sdk-1.0.1/include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D PACKAGE_VERSION=\"2.3.2\" /D "USE_YP" /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 -# ADD LINK32 libcurl.lib ogg_static_d.lib vorbis_static.lib libxml2.lib libxslt.lib iconv.lib pthreadVSE.lib ws2_32.lib winmm.lib theora_static_d.lib libspeex.lib /nologo /version:2.3 /subsystem:windows /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcmtd.lib" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "Icecast2win - Win32 Debug" - -# PROP BASE Use_MFC 5 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 5 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "debugwin_tmp" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Yu"stdafx.h" /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../src" /I "../" /I "../../libxslt/include" /I "../../iconv/include" /I "../../libxml2/include" /I "../../pthreads" /I "../../oggvorbis-win32sdk-1.0.1/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_WIN32" /D PACKAGE_VERSION=\"2.3.2\" /D "USE_YP" /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 libcurl.lib ogg_static_d.lib vorbis_static_d.lib libxml2.lib libxslt.lib iconv.lib pthreadVSE.lib ws2_32.lib winmm.lib theora_static_d.lib libspeex.lib /nologo /subsystem:windows /incremental:no /debug /machine:I386 /nodefaultlib:"libcd.lib" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "Icecast2win - Win32 Release" -# Name "Icecast2win - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\ConfigTab.cpp -# End Source File -# Begin Source File - -SOURCE=.\Icecast2win.cpp -# End Source File -# Begin Source File - -SOURCE=.\Icecast2win.rc -# End Source File -# Begin Source File - -SOURCE=.\Icecast2winDlg.cpp -# End Source File -# Begin Source File - -SOURCE=\xiph\icecast\trunk\icecast\src\main.c -# End Source File -# Begin Source File - -SOURCE=.\StatsTab.cpp -# End Source File -# Begin Source File - -SOURCE=.\Status.cpp -# End Source File -# Begin Source File - -SOURCE=.\StdAfx.cpp -# ADD CPP /Yc"stdafx.h" -# End Source File -# Begin Source File - -SOURCE=.\TabCtrlSSL.cpp -# End Source File -# Begin Source File - -SOURCE=.\TabCtrlSSL.h -# End Source File -# Begin Source File - -SOURCE=.\TabPageSSL.cpp -# End Source File -# Begin Source File - -SOURCE=.\TabPageSSL.h -# End Source File -# Begin Source File - -SOURCE=.\Traynot.cpp -# End Source File -# Begin Source File - -SOURCE=.\TRAYNOT.H -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\colors.h -# End Source File -# Begin Source File - -SOURCE=.\ConfigTab.h -# End Source File -# Begin Source File - -SOURCE=.\Icecast2win.h -# End Source File -# Begin Source File - -SOURCE=.\Icecast2winDlg.h -# End Source File -# Begin Source File - -SOURCE=.\Resource.h -# End Source File -# Begin Source File - -SOURCE=.\StatsTab.h -# End Source File -# Begin Source File - -SOURCE=.\Status.h -# End Source File -# Begin Source File - -SOURCE=.\StdAfx.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# Begin Source File - -SOURCE=.\bitmap1.bmp -# End Source File -# Begin Source File - -SOURCE=.\bitmap2.bmp -# End Source File -# Begin Source File - -SOURCE=.\black.bmp -# End Source File -# Begin Source File - -SOURCE=.\credits.bmp -# End Source File -# Begin Source File - -SOURCE=.\cursor1.cur -# End Source File -# Begin Source File - -SOURCE=.\cursor2.cur -# End Source File -# Begin Source File - -SOURCE=.\green1.ico -# End Source File -# Begin Source File - -SOURCE=.\icecast.ico -# End Source File -# Begin Source File - -SOURCE=.\Icecast2.ico -# End Source File -# Begin Source File - -SOURCE=.\res\Icecast2.ico -# End Source File -# Begin Source File - -SOURCE=.\icecast2logo2.bmp -# End Source File -# Begin Source File - -SOURCE=.\icecast2title.bmp -# End Source File -# Begin Source File - -SOURCE=.\res\Icecast2win.ico -# End Source File -# Begin Source File - -SOURCE=.\res\Icecast2win.rc2 -# End Source File -# Begin Source File - -SOURCE=.\ico00001.ico -# End Source File -# Begin Source File - -SOURCE=.\icon1.ico -# End Source File -# Begin Source File - -SOURCE=.\icon2.ico -# End Source File -# Begin Source File - -SOURCE=.\running.bmp -# End Source File -# Begin Source File - -SOURCE=.\stopped.bmp -# End Source File -# End Group -# Begin Source File - -SOURCE=.\ReadMe.txt -# End Source File -# End Target -# End Project diff --git a/win32/Icecast2win.dsw b/win32/Icecast2win.dsw deleted file mode 100644 index d722d561..00000000 --- a/win32/Icecast2win.dsw +++ /dev/null @@ -1,83 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "Icecast2win"=.\Icecast2win.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name libxml - End Project Dependency - Begin Project Dependency - Project_Dep_Name icecast - End Project Dependency - Begin Project Dependency - Project_Dep_Name icecastService - End Project Dependency - Begin Project Dependency - Project_Dep_Name icecast2 console - End Project Dependency -}}} - -############################################################################### - -Project: "icecast"=.\icecast.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "icecast2 console"=.\icecast2_console.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name icecast - End Project Dependency -}}} - -############################################################################### - -Project: "icecastService"=.\icecastService.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name icecast - End Project Dependency -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/win32/Icecast2win.h b/win32/Icecast2win.h deleted file mode 100644 index c4f3e8fe..00000000 --- a/win32/Icecast2win.h +++ /dev/null @@ -1,53 +0,0 @@ -// Icecast2win.h : main header file for the ICECAST2WIN application -// - -#if !defined(AFX_ICECAST2WIN_H__76A528C9_A424_4417_BFDF_0E556A9EE4F1__INCLUDED_) -#define AFX_ICECAST2WIN_H__76A528C9_A424_4417_BFDF_0E556A9EE4F1__INCLUDED_ - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - -#ifndef __AFXWIN_H__ -#error include 'stdafx.h' before including this file for PCH -#endif - -#include "resource.h" // main symbols - -///////////////////////////////////////////////////////////////////////////// -// CIcecast2winApp: -// See Icecast2win.cpp for the implementation of this class -// - -class CIcecast2winApp : public CWinApp -{ -public: - char m_configFile[1024]; - HICON m_pIconList[2]; - CIcecast2winApp(); - -// Overrides - // ClassWizard generated virtual function overrides - //{{AFX_VIRTUAL(CIcecast2winApp) - public: - virtual BOOL InitInstance(); - virtual int ExitInstance(); - //}}AFX_VIRTUAL - -// Implementation - - //{{AFX_MSG(CIcecast2winApp) - // NOTE - the ClassWizard will add and remove member functions here. - // DO NOT EDIT what you see in these blocks of generated code ! - //}}AFX_MSG - DECLARE_MESSAGE_MAP() -}; - - -///////////////////////////////////////////////////////////////////////////// - -//{{AFX_INSERT_LOCATION}} -// Microsoft Visual C++ will insert additional declarations immediately before the previous line. - -extern CIcecast2winApp theApp; -#endif // !defined(AFX_ICECAST2WIN_H__76A528C9_A424_4417_BFDF_0E556A9EE4F1__INCLUDED_) diff --git a/win32/Icecast2win.rc b/win32/Icecast2win.rc deleted file mode 100644 index 5d3d0b66..00000000 --- a/win32/Icecast2win.rc +++ /dev/null @@ -1,300 +0,0 @@ -//Microsoft Developer Studio generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE DISCARDABLE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE DISCARDABLE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE DISCARDABLE -BEGIN - "#define _AFX_NO_SPLITTER_RESOURCES\r\n" - "#define _AFX_NO_OLE_RESOURCES\r\n" - "#define _AFX_NO_TRACKER_RESOURCES\r\n" - "#define _AFX_NO_PROPERTY_RESOURCES\r\n" - "\r\n" - "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" - "#ifdef _WIN32\r\n" - "LANGUAGE 9, 1\r\n" - "#pragma code_page(1252)\r\n" - "#endif //_WIN32\r\n" - "#include ""res\\Icecast2win.rc2"" // non-Microsoft Visual C++ edited resources\r\n" - "#include ""afxres.rc"" // Standard components\r\n" - "#endif\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 375, 163 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Icecast Credits" -FONT 8, "MS Sans Serif" -BEGIN - DEFPUSHBUTTON "OK",IDOK,157,141,50,14,WS_GROUP - CONTROL 163,IDC_STATIC,"Static",SS_BITMAP | SS_REALSIZEIMAGE | - SS_SUNKEN | WS_BORDER,7,7,361,145 -END - -IDD_ICECAST2WIN_DIALOG DIALOGEX 0, 0, 326, 259 -STYLE WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | - WS_SYSMENU | WS_THICKFRAME -EXSTYLE WS_EX_APPWINDOW -MENU IDR_MENU4 -FONT 8, "MS Sans Serif" -BEGIN - CONTROL "Tab1",IDC_MAINTAB,"SysTabControl32",0x0,0,49,326,210 - PUSHBUTTON "Start Server",IDC_START,17,31,56,14 - CONTROL "Start Server on Application Startup",IDC_AUTOSTART, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,76, - 29,81,17 - CONTROL 164,IDC_STATIC,"Static",SS_BITMAP,0,0,117,20 - CONTROL 151,IDC_SERVERSTATUS,"Static",SS_BITMAP,173,32,65,18, - WS_EX_CLIENTEDGE - CTEXT "Server Status",IDC_STATIC_SS,172,23,65,10, - SS_CENTERIMAGE - PUSHBUTTON "Hide To Systray",IDC_HIDESYSTRAY,262,22,58,12 -END - -IDD_SSTATUS DIALOG DISCARDABLE 0, 0, 320, 210 -STYLE WS_CHILD -FONT 8, "MS Sans Serif" -BEGIN - LTEXT "",IDC_FILLER2,0,199,319,11 - CONTROL "List1",IDC_GLOBALSTAT_LIST,"SysListView32",LVS_REPORT | - WS_BORDER | WS_TABSTOP,9,34,300,147 - LTEXT "Global Statistics",IDC_STATIC_GS,9,6,300,10 - LTEXT "Server Has Been Running For ",IDC_STATIC_RUN,10,19,109, - 8 - LTEXT "",IDC_RUNNINGFOR,121,19,156,8 -END - -IDD_CONFIGDIALOG DIALOG DISCARDABLE 0, 0, 320, 210 -STYLE WS_CHILD -FONT 8, "MS Sans Serif" -BEGIN - EDITTEXT IDC_CONFIG,0,0,320,210,ES_MULTILINE | ES_AUTOVSCROLL | - ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL -END - -IDD_STATSDIALOG DIALOG DISCARDABLE 0, 0, 320, 210 -STYLE WS_CHILD -FONT 8, "MS Sans Serif" -BEGIN - CONTROL "List1",IDC_STATSLIST,"SysListView32",LVS_REPORT | - WS_BORDER | WS_TABSTOP,142,34,163,147 - CONTROL "List2",IDC_SOURCELIST,"SysListView32",LVS_REPORT | - WS_BORDER | WS_TABSTOP,9,34,111,147 - LTEXT "Source Level Statistics",IDC_STATIC_SLS,9,7,300,10 - LTEXT "Click source to view statistics",IDC_STATIC,18,25,111,8 -END - - -#ifndef _MAC -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,1 - PRODUCTVERSION 1,0,0,1 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x1L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904B0" - BEGIN - VALUE "CompanyName", "\0" - VALUE "FileDescription", "Icecast2win MFC Application\0" - VALUE "FileVersion", "1, 0, 0, 1\0" - VALUE "InternalName", "Icecast2win\0" - VALUE "LegalCopyright", "Copyright (C) 2001\0" - VALUE "LegalTrademarks", "\0" - VALUE "OriginalFilename", "Icecast2win.EXE\0" - VALUE "ProductName", "Icecast2win Application\0" - VALUE "ProductVersion", "1, 0, 0, 1\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END - -#endif // !_MAC - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO DISCARDABLE -BEGIN - IDD_ABOUTBOX, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 368 - TOPMARGIN, 7 - BOTTOMMARGIN, 155 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Bitmap -// - -IDB_BITMAP4 BITMAP DISCARDABLE "black.bmp" -IDB_BITMAP5 BITMAP DISCARDABLE "stopped.bmp" -IDB_BITMAP6 BITMAP DISCARDABLE "running.bmp" -IDB_BITMAP7 BITMAP DISCARDABLE "icecast2logo2.bmp" -IDB_BITMAP8 BITMAP DISCARDABLE "credits.bmp" -IDB_BITMAP9 BITMAP DISCARDABLE "icecast2title.bmp" - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDR_MAINFRAME ICON DISCARDABLE "icecast.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// Menu -// - -IDR_MENU2 MENU DISCARDABLE -BEGIN - POPUP "Popup" - BEGIN - MENUITEM "Add To Global Stat List", ID_POPUP_ADDTOGLOBALSTATLIST - END -END - -IDR_MENU3 MENU DISCARDABLE -BEGIN - POPUP " " - BEGIN - MENUITEM "Delete From Global Stats", ID__DELETEFROMGLOBALSTATS - MENUITEM "Make this stat the window title", - ID__MAKETHISSTATTHEWINDOWTITLE - - END -END - -IDR_TRAY MENU DISCARDABLE -BEGIN - POPUP "Blank" - BEGIN - MENUITEM "Restore", ID_BLANK_RESTORE - END -END - -IDR_MENU4 MENU DISCARDABLE -BEGIN - POPUP "&File" - BEGIN - MENUITEM "E&xit", ID_FILE_EXIT - END - POPUP "C&onfiguration" - BEGIN - MENUITEM "&Edit Configuration", ID_FILE_EDITCONFIGURATION - END - POPUP "&About" - BEGIN - MENUITEM "H&elp", ID_ABOUT_HELP - MENUITEM "Cr&edits", ID_ABOUT_CREDITS - END -END - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE DISCARDABLE -BEGIN - IDS_ABOUTBOX "&About Icecast2win..." -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// -#define _AFX_NO_SPLITTER_RESOURCES -#define _AFX_NO_OLE_RESOURCES -#define _AFX_NO_TRACKER_RESOURCES -#define _AFX_NO_PROPERTY_RESOURCES - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE 9, 1 -#pragma code_page(1252) -#endif //_WIN32 -#include "res\Icecast2win.rc2" // non-Microsoft Visual C++ edited resources -#include "afxres.rc" // Standard components -#endif - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/win32/Icecast2winDlg.cpp b/win32/Icecast2winDlg.cpp deleted file mode 100644 index 5ca94de8..00000000 --- a/win32/Icecast2winDlg.cpp +++ /dev/null @@ -1,1209 +0,0 @@ -// Icecast2winDlg.cpp : implementation file -// - -#include "stdafx.h" -#include "Icecast2win.h" -#include "Icecast2winDlg.h" -#include - -#include -#include -#include -#include -#include - -extern "C" { -#include "thread/thread.h" -#include "avl/avl.h" -#include "log/log.h" -#include "global.h" -#include "httpp/httpp.h" -#include "net/sock.h" -#include "connection.h" -#include "refbuf.h" -#include "client.h" -#include "stats.h" -#include "xslt.h" -} - -#include - -#ifdef _DEBUG -#define new DEBUG_NEW -#undef THIS_FILE -static char THIS_FILE[] = __FILE__; -#endif - -#define ICECAST_VERSION "2.x" -CEdit *g_accessControl; -CEdit *g_errorControl; -CIcecast2winDlg *g_mainDialog; -bool g_tailAccess = false; -bool g_tailError = false; -CString gConfigurationSave; - -char gTitleSource[1024] = ""; -char gTitleName[1024] = ""; - -#define MAXSTATSPERSOURCE 60 -#define MAXSOURCES 1024 - -typedef struct tagElement { - CString name; - CString value; - int titleFlag; -} Element; - -typedef struct tagElementAdditional { - CString source; - CString name; - CString value; - int titleFlag; -} ElementAdditional; - - -typedef struct tagMainElement { - CString source; - long numStats; - Element stats[MAXSTATSPERSOURCE]; - int populated; -} MainElement; - -typedef struct tagMainElementAdditional { - long numStats; - ElementAdditional stats[MAXSTATSPERSOURCE]; -} MainElementAdditional; - - -MainElement gStats[MAXSOURCES]; -MainElement gGlobalStats; -MainElementAdditional gAdditionalGlobalStats; - -long numMainStats; - -extern "C" { - int main(int argc, char **argv); -} - - -void AddToAdditionalGlobalStats(CString source, CString name) { - int foundit = 0; - for (int i=0;iUpdateStatsLists(); -} - -void ClearTitleAdditionalGlobalStats(CString source, CString name) { - int foundit = 0; - int i,j; - for (i=0;iUpdateStatsLists(); -} -void AddToTitleAdditionalGlobalStats(CString source, CString name) { - int foundit = 0; - int i,j; - for (i=0;iUpdateStatsLists(); -} - -void RemoveFromAdditionalGlobalStats(CString source, CString name) { - int foundit = 0; - for (int i=0;iUpdateStatsLists(); -} -///////////////////////////////////////////////////////////////////////////// -// CAboutDlg dialog used for App About - -class CAboutDlg : public CDialog -{ -public: - CAboutDlg(); - -// Dialog Data - //{{AFX_DATA(CAboutDlg) - enum { IDD = IDD_ABOUTBOX }; - //}}AFX_DATA - - // ClassWizard generated virtual function overrides - //{{AFX_VIRTUAL(CAboutDlg) - protected: - virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support - //}}AFX_VIRTUAL - -// Implementation -protected: - //{{AFX_MSG(CAboutDlg) - //}}AFX_MSG - DECLARE_MESSAGE_MAP() -}; - -CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) -{ - //{{AFX_DATA_INIT(CAboutDlg) - //}}AFX_DATA_INIT -} - -void CAboutDlg::DoDataExchange(CDataExchange* pDX) -{ - CDialog::DoDataExchange(pDX); - //{{AFX_DATA_MAP(CAboutDlg) - //}}AFX_DATA_MAP -} - -BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) - //{{AFX_MSG_MAP(CAboutDlg) - // No message handlers - //}}AFX_MSG_MAP -END_MESSAGE_MAP() - - -///////////////////////////////////////////////////////////////////////////// -// CIcecast2winDlg dialog - -CIcecast2winDlg::CIcecast2winDlg(CWnd* pParent /*=NULL*/) - : CDialog(CIcecast2winDlg::IDD, pParent) -{ - //{{AFX_DATA_INIT(CIcecast2winDlg) - m_AccessEdit = _T(""); - m_ErrorEdit = _T(""); - m_ConfigEdit = _T(""); - m_ServerStatus = _T(""); - m_SourcesConnected = _T(""); - m_NumClients = _T(""); - m_StatsEdit = _T(""); - m_Autostart = FALSE; - //}}AFX_DATA_INIT - // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 - m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); - m_pTray = NULL; -} - -void CIcecast2winDlg::DoDataExchange(CDataExchange* pDX) -{ - CDialog::DoDataExchange(pDX); - //{{AFX_DATA_MAP(CIcecast2winDlg) - DDX_Control(pDX, IDC_STATIC_SS, m_SS); - DDX_Control(pDX, IDC_SERVERSTATUS, m_ServerStatusBitmap); - DDX_Control(pDX, IDC_START, m_StartButton); - DDX_Control(pDX, IDC_MAINTAB, m_MainTab); - DDX_Check(pDX, IDC_AUTOSTART, m_Autostart); - //}}AFX_DATA_MAP -} - -BEGIN_MESSAGE_MAP(CIcecast2winDlg, CDialog) - //{{AFX_MSG_MAP(CIcecast2winDlg) - ON_WM_SYSCOMMAND() - ON_WM_PAINT() - ON_WM_QUERYDRAGICON() - ON_NOTIFY(TCN_SELCHANGE, IDC_MAINTAB, OnSelchangeMaintab) - ON_COMMAND(ID_FILE_EXIT, OnFileExit) - ON_WM_TIMER() - ON_COMMAND(ID_FILE_STARTSERVER, OnFileStartserver) - ON_COMMAND(ID_FILE_STOPSERVER, OnFileStopserver) - ON_BN_CLICKED(IDC_START, OnStart) - ON_WM_CLOSE() - ON_WM_SIZE() - ON_BN_CLICKED(IDC_HIDESYSTRAY, OnHidesystray) - ON_COMMAND(ID_BLANK_RESTORE, OnBlankRestore) - ON_MESSAGE(WM_TRAY_NOTIFY, OnTrayNotify) - ON_WM_DESTROY() - ON_COMMAND(ID_FILE_EDITCONFIGURATION, OnFileEditconfiguration) - ON_COMMAND(ID_ABOUT_HELP, OnAboutHelp) - ON_COMMAND(ID_ABOUT_CREDITS, OnAboutCredits) - //}}AFX_MSG_MAP -END_MESSAGE_MAP() - -///////////////////////////////////////////////////////////////////////////// -// CIcecast2winDlg message handlers - -#include "colors.h" - - -BOOL CIcecast2winDlg::OnInitDialog() -{ - CDialog::OnInitDialog(); - - // Add "About..." menu item to system menu. - - // IDM_ABOUTBOX must be in the system command range. - ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); - ASSERT(IDM_ABOUTBOX < 0xF000); - - CMenu* pSysMenu = GetSystemMenu(FALSE); - if (pSysMenu != NULL) - { - CString strAboutMenu; - strAboutMenu.LoadString(IDS_ABOUTBOX); - if (!strAboutMenu.IsEmpty()) - { - pSysMenu->AppendMenu(MF_SEPARATOR); - pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); - } - } - - g_mainDialog = this; - - // Set the icon for this dialog. The framework does this automatically - // when the application's main window is not a dialog - SetIcon(m_hIcon, TRUE); // Set big icon - SetIcon(m_hIcon, FALSE); // Set small icon - - // TODO: Add extra initialization here - config_read(); - - statsTab.m_colSource0Width = m_colSource0Width; - statsTab.m_colStats0Width = m_colStats0Width; - statsTab.m_colStats1Width = m_colStats1Width; - statusTab.m_colStats0Width = m_colGStats0Width; - statusTab.m_colStats1Width = m_colGStats1Width; - statusTab.m_colStats2Width = m_colGStats2Width; - - statsTab.Create(IDD_STATSDIALOG, this); - statusTab.Create(IDD_SSTATUS, this); - - int nPageID = 0; - m_MainTab.AddSSLPage (_T("Server Status"), nPageID, (CTabPageSSL *)&statusTab); - nPageID++; - m_MainTab.AddSSLPage (_T("Source Level Stats"), nPageID, (CTabPageSSL *)&statsTab); - nPageID++; - - - labelFont.CreateFont(24,0, 0, 0, FW_BOLD, 0, 0, 0, 0, OUT_TT_PRECIS, 0, PROOF_QUALITY, 0, "Arial"); - - runningBitmap.LoadBitmap(IDB_BITMAP6); - stoppedBitmap.LoadBitmap(IDB_BITMAP5); - - UpdateData(FALSE); - - LoadConfig(); - -// AddAnchor(IDC_MAINTAB, TOP_LEFT, BOTTOM_RIGHT); -// AddAnchor(IDC_STATICBLACK, TOP_LEFT, TOP_RIGHT); - -// EnableSaveRestore("icecast2win", "positions"); - - m_pTray = NULL; - - char version[255] = ""; - sprintf(version, "Icecast2 Version %s", ICECAST_VERSION); - SetWindowText(version); - - if (m_Autostart) { - OnStart(); - } - return TRUE; // return TRUE unless you set the focus to a control -} - -void CIcecast2winDlg::OnSysCommand(UINT nID, LPARAM lParam) -{ - if ((nID & 0xFFF0) == IDM_ABOUTBOX) - { - CAboutDlg dlgAbout; - dlgAbout.DoModal(); - } - else - { - CDialog::OnSysCommand(nID, lParam); - } -} - -// If you add a minimize button to your dialog, you will need the code below -// to draw the icon. For MFC applications using the document/view model, -// this is automatically done for you by the framework. - -void CIcecast2winDlg::OnPaint() -{ - if (IsIconic()) - { - CPaintDC dc(this); // device context for painting - - SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); - - // Center icon in client rectangle - int cxIcon = GetSystemMetrics(SM_CXICON); - int cyIcon = GetSystemMetrics(SM_CYICON); - CRect rect; - GetClientRect(&rect); - int x = (rect.Width() - cxIcon + 1) / 2; - int y = (rect.Height() - cyIcon + 1) / 2; - - // Draw the icon - dc.DrawIcon(x, y, m_hIcon); - } - else - { - CDialog::OnPaint(); - } -} - - -// The system calls this to obtain the cursor to display while the user drags -// the minimized window. -HCURSOR CIcecast2winDlg::OnQueryDragIcon() -{ - return (HCURSOR) m_hIcon; -} - -void CIcecast2winDlg::OnSelchangeMaintab(NMHDR* pNMHDR, LRESULT* pResult) -{ - // TODO: Add your control notification handler code here - - *pResult = 0; -} - -void CIcecast2winDlg::LoadConfig() -{ - FILE *filep; - char buffer[2046] = ""; - CIcecast2winApp *myApp = (CIcecast2winApp *)AfxGetApp(); - - configTab.m_Config = ""; - filep = fopen(myApp->m_configFile, "r"); - if (filep) { - fclose(filep); - } - else { - MessageBox("Unable to load config file (" + CString(myApp->m_configFile) + ") unable to start", NULL, MB_OK); - } - -} - - -void CIcecast2winDlg::OnFileExit() -{ - // TODO: Add your command handler code here - DestroyWindow(); -} - - - -void CIcecast2winDlg::getTag(char *pbuf, char *ptag, char *dest) -{ - char openTag[256] = ""; - char closeTag[256] = ""; - - sprintf(openTag, "<%s>", ptag); - sprintf(closeTag, "", ptag); - - char *p1; - p1 = strstr(pbuf, openTag); - if (p1) { - p1 = p1 + strlen(openTag); - char *p2; - p2 = strstr(p1, closeTag); - if (p2) { - strncpy(dest, p1, p2-p1); - } - } -} - - -void CIcecast2winDlg::EnableControl(UINT control) -{ - CWnd *pWnd; - pWnd = GetDlgItem(control); - ::ShowWindow(pWnd->GetSafeHwnd(), SW_SHOW); -} - -void CIcecast2winDlg::DisableControl(UINT control) -{ - CWnd *pWnd; - pWnd = GetDlgItem(control); - ::ShowWindow(pWnd->GetSafeHwnd(), SW_HIDE); -} - - -void AddUpdateStatistic(int sourceIndex, char *name, char *value) -{ - for (int j=0;j= MAXSTATSPERSOURCE) - return; - /* If we get here, we haven't found the stat, so add it */ - gStats[sourceIndex].stats[numStats].name = name; - gStats[sourceIndex].stats[numStats].value = value; - gStats[sourceIndex].numStats++; - -} -int GetSourceIndex(char *sourceName) -{ - if (sourceName == NULL) { - return 0; - } - for (int i=1;i= MAXSOURCES) - return 0; - /* This means we haven't seen the source, so lets add it */ - numMainStats++; - gStats[numMainStats].source = sourceName; - gStats[numMainStats].populated = 1; - gStats[numMainStats].numStats = 0; - return numMainStats; - -} -void UpdateSourceData(xmlDocPtr doc, xmlNodePtr cur, char *sourceName) { - xmlNodePtr children; - char *ls_xmlContentPtr = NULL; - int sourceIndex = GetSourceIndex(sourceName); - int listenerInd = 0; - - children = cur->xmlChildrenNode; - while (children != NULL) { - if (!strcmp((char *)children->name, "listeners")) { - listenerInd = 1; - } - ls_xmlContentPtr = (char *)xmlNodeListGetString(doc, children->xmlChildrenNode, 1); - AddUpdateStatistic(sourceIndex, (char *)children->name, ls_xmlContentPtr); - xmlFree(ls_xmlContentPtr); - children = children->next; - } - if (!listenerInd) { - /* If no listeners, then the source has been disconnected */ - gStats[sourceIndex].populated = 0; - gStats[sourceIndex].numStats = 0; - g_mainDialog->statsTab.m_SourceListCtrl.DeleteAllItems(); - g_mainDialog->statsTab.m_StatsListCtrl.DeleteAllItems(); - } -} - -bool g_collectingStats = false; - -void StartStats(void *dummy) -{ - while (global.running != ICE_RUNNING) { - Sleep(500); - } - while (global.running == ICE_RUNNING) { - if (global.running == ICE_RUNNING) { - for (int j=0;jxmlChildrenNode; - char* ls_xmlContentPtr2 = NULL; - - while (cur != NULL) { - if ((!xmlStrcmp(cur->name, (const xmlChar *)"source"))) { - ls_xmlContentPtr2 = (char *)xmlGetProp(cur, (unsigned char *)"mount"); - UpdateSourceData(doc, cur, ls_xmlContentPtr2); - } - else { - /* A Global stat */ - ls_xmlContentPtr2 = (char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); - AddUpdateStatistic(0, (char *)cur->name, ls_xmlContentPtr2); - } - if (ls_xmlContentPtr2) { - xmlFree(ls_xmlContentPtr2); - } - - cur = cur->next; - } - xmlFreeDoc(doc); - g_mainDialog->UpdateStatsLists(); - Sleep(5000); - } - if (global.running != ICE_RUNNING) { - numMainStats = 0; - g_mainDialog->statusTab.m_GlobalStatList.DeleteAllItems(); - g_mainDialog->statsTab.m_SourceListCtrl.DeleteAllItems(); - g_mainDialog->statsTab.m_StatsListCtrl.DeleteAllItems(); - _endthread(); - } - } - _endthread(); -} -void CIcecast2winDlg::OnTimer(UINT nIDEvent) -{ - // TODO: Add your message handler code here and/or call default - if (nIDEvent == 0) { - if (global.running == ICE_RUNNING) { - char buffer[255] = ""; - CString tmp; - // Get info from stats... - m_ServerStatusBitmap.SetBitmap(HBITMAP(runningBitmap)); - sprintf(buffer, "%d", global.sources); - tmp = buffer; - if (tmp != statusTab.m_Sources) { - statusTab.m_Sources = tmp; - statusTab.UpdateData(FALSE); - } - sprintf(buffer, "%d", global.clients); - tmp = buffer; - if (tmp != statusTab.m_Clients) { - statusTab.m_Clients = tmp; - statusTab.UpdateData(FALSE); - } - - m_StartButton.GetWindowText(tmp); - - if (tmp == "Start Server") { - m_StartButton.SetWindowText("Stop Server"); - m_StartButton.SetState(0); - } - time_t currentTime; - time(¤tTime); - time_t runningTime = currentTime - serverStart; - - CTimeSpan runningFor(runningTime); - - char timespan[1024] = ""; - sprintf(timespan, "%d Days, %d Hours, %d Minutes, %d Seconds", runningFor.GetDays(), runningFor.GetHours(), runningFor.GetMinutes(), runningFor.GetSeconds()); - statusTab.m_RunningFor = timespan; - statusTab.UpdateData(FALSE); - - SetTimer(0, 500, NULL); - } - else { - statusTab.m_Sources = "0"; - statusTab.m_Clients = "0"; - m_ServerStatusBitmap.SetBitmap(HBITMAP(stoppedBitmap)); - m_StartButton.SetWindowText("Start Server"); - m_StartButton.SetState(0); - UpdateData(FALSE); - statusTab.m_RunningFor = "Not running"; - statusTab.UpdateData(FALSE); - } - } - - CDialog::OnTimer(nIDEvent); -} - -char g_configFile[1024] = ""; -char g_progName[255] = "icecast2"; - -void StartServer(void *configfile) -{ - int argc = 3; - char* argv[3]; - - strcpy(g_configFile, (char *)configfile); - - argv[0] = g_progName; - argv[1] = "-c"; - argv[2] = g_configFile; - time(&(g_mainDialog->serverStart)); - - int ret = main(argc, (char **)argv); - if (ret) { - MessageBox(NULL, "Unable to start server", NULL, MB_OK); - } - global.running = ICE_HALTING; - _endthread(); - - -} -void CIcecast2winDlg::OnFileStartserver() -{ - // TODO: Add your command handler code here - CIcecast2winApp *myApp = (CIcecast2winApp *)AfxGetApp(); - - if (gConfigurationSave == "") { - gConfigurationSave = m_ConfigEdit; - } - - if (global.running == ICE_RUNNING) { - MessageBox("Server already running", "Error", MB_OK); - } - else { - m_ConfigEditCtrl.SetReadOnly(TRUE); - LoadConfig(); - SetTimer(0, 500, NULL); - _beginthread(StartServer, 0, (void *)(LPCSTR)myApp->m_configFile); - _beginthread(StartStats, 0, (void *)NULL); - } -} - -void CIcecast2winDlg::OnFileStopserver() -{ - // TODO: Add your command handler code here - ; -} - -bool infocus = false; - -void CIcecast2winDlg::StopServer() -{ - KillTimer(0); - global.running = ICE_HALTING; - m_StartButton.SetWindowText("Start Server"); - m_StartButton.SetState(0); - m_ServerStatusBitmap.SetBitmap(HBITMAP(stoppedBitmap)); - statusTab.m_RunningFor = "Not running"; - statusTab.UpdateData(FALSE); - - - -} - - -void CIcecast2winDlg::OnStart() -{ - CIcecast2winApp *myApp = (CIcecast2winApp *)AfxGetApp(); - - // TODO: Add your control notification handler code here - - if (global.running == ICE_RUNNING) { - StopServer(); - } - else { - SetTimer(0, 500, NULL); - _beginthread(StartServer, 0, (void *)(LPCSTR)myApp->m_configFile); - _beginthread(StartStats, 0, (void *)NULL); - } - -} - -void CIcecast2winDlg::UpdateStatsLists() -{ - char item[1024] = ""; - int l = 0; - - // Global Stats are index of 0 - for (int k=0;k < gStats[0].numStats;k++) { - int inthere = 0; - for (l=0;l < statusTab.m_GlobalStatList.GetItemCount();l++) { - - statusTab.m_GlobalStatList.GetItemText(l, 1, item, sizeof(item)); - if (!strcmp(gStats[0].stats[k].name, item)) { - inthere = 1; - break; - } - } - if (!inthere) { - LVITEM lvi; - - lvi.mask = LVIF_IMAGE | LVIF_TEXT; - lvi.iItem = statsTab.m_SourceListCtrl.GetItemCount(); - lvi.iSubItem = 0; - //lvi.pszText = (LPTSTR)(LPCTSTR)gStats[0].source; - lvi.pszText = "Global Stat"; - statusTab.m_GlobalStatList.InsertItem(&lvi); - lvi.iSubItem = 1; - lvi.pszText = (LPTSTR)(LPCTSTR)gStats[0].stats[k].name; - statusTab.m_GlobalStatList.SetItem(&lvi); - lvi.iSubItem = 2; - lvi.pszText = (LPTSTR)(LPCTSTR)gStats[0].stats[k].value; - statusTab.m_GlobalStatList.SetItem(&lvi); - if ((!strcmp(gTitleSource, gStats[0].source)) && - (!strcmp(gTitleName, gStats[0].stats[k].name))) { - gStats[0].stats[k].titleFlag = 1; - } - - } - else { - LVITEM lvi; - - lvi.mask = LVIF_IMAGE | LVIF_TEXT; - lvi.iItem = l; - lvi.iSubItem = 2; - lvi.pszText = (LPTSTR)(LPCTSTR)gStats[0].stats[k].value; - statusTab.m_GlobalStatList.SetItem(&lvi); - } - if (gStats[0].stats[k].titleFlag) { - CString windowTitle = CString("Global Stat") + " - " + gStats[0].stats[k].name + " - " + gStats[0].stats[k].value; - SetWindowText(windowTitle); - if (m_pTray) { - m_pTray->SetTIP((LPSTR)(LPCSTR)windowTitle); - } - } - } - - for (int i=1;iSetTIP((LPSTR)(LPCSTR)windowTitle); - } - } - } - } - else { - } - } - } -} - -char gAppName[255] = "icecast2"; -char gConfigFile[255] = "icecast2.ini"; - -void CIcecast2winDlg::config_write() -{ - char buf[255] = ""; - char buf2[1024] = ""; - - UpdateData(TRUE); - - m_colSource0Width = statsTab.m_SourceListCtrl.GetColumnWidth(0); - m_colStats0Width = statsTab.m_StatsListCtrl.GetColumnWidth(0); - m_colStats1Width = statsTab.m_StatsListCtrl.GetColumnWidth(1); - m_colGStats0Width = statusTab.m_GlobalStatList.GetColumnWidth(0); - m_colGStats1Width = statusTab.m_GlobalStatList.GetColumnWidth(1); - m_colGStats2Width = statusTab.m_GlobalStatList.GetColumnWidth(2); - - - sprintf(buf, "%d", m_colSource0Width); - WritePrivateProfileString(gAppName, "col0SourceWidth", buf, gConfigFile); - sprintf(buf, "%d", m_colStats0Width); - WritePrivateProfileString(gAppName, "col0StatsWidth", buf, gConfigFile); - sprintf(buf, "%d", m_colStats1Width); - WritePrivateProfileString(gAppName, "col1StatsWidth", buf, gConfigFile); - sprintf(buf, "%d", m_colGStats0Width); - WritePrivateProfileString(gAppName, "col0GStatsWidth", buf, gConfigFile); - sprintf(buf, "%d", m_colGStats1Width); - WritePrivateProfileString(gAppName, "col1GStatsWidth", buf, gConfigFile); - sprintf(buf, "%d", m_colGStats2Width); - WritePrivateProfileString(gAppName, "col2GStatsWidth", buf, gConfigFile); - - if (m_Autostart) { - WritePrivateProfileString(gAppName, "AutoStart", "1", gConfigFile); - } - else { - WritePrivateProfileString(gAppName, "AutoStart", "0", gConfigFile); - } - - sprintf(buf, "%d", gAdditionalGlobalStats.numStats); - WritePrivateProfileString(gAppName, "numAdditionalStats", buf, gConfigFile); - - for (int i=0;i 0) { - char *p1 = strchr(buf, '|'); - if (p1) { - char tmpSource[1024] = ""; - char tmpName[1024] = ""; - memset(tmpSource, '\000', sizeof(tmpSource)); - memset(tmpName, '\000', sizeof(tmpName)); - - - strncpy(tmpSource, buf, p1-buf); - p1++; - strcpy(tmpName, p1); - - - strcpy(gTitleSource, tmpSource); - strcpy(gTitleName, tmpName); - } - } - -} - -void CIcecast2winDlg::OnClose() -{ - // TODO: Add your message handler code here and/or call default - config_write(); - CDialog::OnClose(); -} - -void CIcecast2winDlg::OnSize(UINT nType, int cx, int cy) -{ - CDialog::OnSize(nType, cx, cy); - - int border1 = 0; - int border2 = 78; - // TODO: Add your message handler code here - if (m_MainTab.m_hWnd) { - CRect rect; - GetClientRect (&rect); - int x = rect.Width()-border1; - int y = rect.Width()-border2; - - statusTab.SetWindowPos(NULL, 4, 22, cx, cy, SWP_NOZORDER); - statsTab.SetWindowPos(NULL, 4, 22, cx, cy, SWP_NOZORDER); - statusTab.m_GlobalStatList.SetWindowPos(NULL, 14, 55, cx-40, cy-180, SWP_NOZORDER); - statsTab.m_StatsListCtrl.SetWindowPos(NULL, 213, 55, cx-243, cy-180, SWP_NOZORDER); - statsTab.m_SourceListCtrl.SetWindowPos(NULL, 14, 55, 166, cy-180, SWP_NOZORDER); -// CListCtrl m_StatsListCtrl; -// CListCtrl m_SourceListCtrl; - m_MainTab.SetWindowPos(NULL, 0, 80, cx, cy, SWP_NOZORDER); - - //m_MainTab.ResizeDialog(0, rect.Width()-border1, rect.Height()-border2); - //m_MainTab.ResizeDialog(1, rect.Width()-border1, rect.Height()-border2); - } - -} - - -LONG CIcecast2winDlg::OnTrayNotify ( WPARAM wParam, LPARAM lParam ) -{ - switch (lParam) { - case WM_RBUTTONDOWN: - { - CMenu menu ; - // Load and Verify Menu - VERIFY(menu.LoadMenu(IDR_TRAY)); - CMenu* pPopup = menu.GetSubMenu (0) ; - ASSERT(pPopup != NULL); - - // Get the cursor position - POINT pt ; - GetCursorPos (&pt) ; - - // Fix Microsofts' BUG!!!! - SetForegroundWindow(); - - /////////////////////////////////// - // Display The Menu - pPopup->TrackPopupMenu(TPM_LEFTALIGN | - TPM_RIGHTBUTTON,pt.x, pt.y, AfxGetMainWnd()); - break ; - } - case WM_LBUTTONDBLCLK: - ////////////////////////////////// - // Unhide our Window - if (m_bHidden) { - ShowWindow (SW_RESTORE); - } - //OnUnHide() ; - break ; - } - - return (0) ; -} - -void CIcecast2winDlg::OnHidesystray() -{ - // TODO: Add your control notification handler code here - OnHide(); - theApp.HideApplication(); -} -void CIcecast2winDlg::OnHide() -{ - // TODO: Add your control notification handler code here - if (m_pTray == NULL) { - m_pTray = new CTrayNot (this,WM_TRAY_NOTIFY, NULL,theApp.m_pIconList); - } - m_pTray->SetState(0); - m_bHidden = TRUE; - -} - -void CIcecast2winDlg::OnBlankRestore() -{ - // TODO: Add your command handler code here - if (m_bHidden) { - ShowWindow (SW_RESTORE); - } - -} - -void CIcecast2winDlg::OnDestroy() -{ - CDialog::OnDestroy(); - - if (m_pTray) { - delete m_pTray ; - m_pTray = NULL ; - } - // TODO: Add your message handler code here - -} - -void CIcecast2winDlg::OnFileEditconfiguration() -{ - // TODO: Add your command handler code here - - STARTUPINFO si; - PROCESS_INFORMATION pi; - - ZeroMemory( &si, sizeof(si) ); - si.cb = sizeof(si); - ZeroMemory( &pi, sizeof(pi) ); - - - int ok = 1; - if (global.running == ICE_RUNNING) { - MessageBox("I'm sorry, but you cannot edit the configuration file while the server is running", NULL, MB_OK); - } - else { - // Start the child process. - if( !CreateProcess( NULL, // No module name (use command line). - "notepad icecast.xml", // Command line. - NULL, // Process handle not inheritable. - NULL, // Thread handle not inheritable. - FALSE, // Set handle inheritance to FALSE. - 0, // No creation flags. - NULL, // Use parent's environment block. - NULL, // Use parent's starting directory. - &si, // Pointer to STARTUPINFO structure. - &pi ) // Pointer to PROCESS_INFORMATION structure. - ) - { - ok = 0; - } - - // Wait until child process exits. - WaitForSingleObject( pi.hProcess, INFINITE ); - - // Close process and thread handles. - CloseHandle( pi.hProcess ); - CloseHandle( pi.hThread ); - } - -} - -void CIcecast2winDlg::OnAboutHelp() -{ - // TODO: Add your command handler code here - ShellExecute(NULL, "open", "doc\\icecast2.chm", NULL, NULL, SW_SHOWNORMAL); -} - -void CIcecast2winDlg::OnAboutCredits() -{ - // TODO: Add your command handler code here - CAboutDlg about; - about.DoModal(); -} - -void CIcecast2winDlg::OnCancel() -{ -} - diff --git a/win32/Icecast2winDlg.h b/win32/Icecast2winDlg.h deleted file mode 100644 index b83957b7..00000000 --- a/win32/Icecast2winDlg.h +++ /dev/null @@ -1,125 +0,0 @@ -// Icecast2winDlg.h : header file -// - -#if !defined(AFX_ICECAST2WINDLG_H__23B4DA8B_C9BC_49C8_A62C_37FC6BC5E54A__INCLUDED_) -#define AFX_ICECAST2WINDLG_H__23B4DA8B_C9BC_49C8_A62C_37FC6BC5E54A__INCLUDED_ - -#include "TabCtrlSSL.h" -#include "TabPageSSL.h" - -#include "ConfigTab.h" -#include "StatsTab.h" -#include "Status.h" -#include "TrayNot.h" - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - -///////////////////////////////////////////////////////////////////////////// -// CIcecast2winDlg dialog - -class CIcecast2winDlg : public CDialog -{ -// Construction -public: - time_t serverStart; - void config_read(); - void config_write(); - void UpdateStatsLists(); - CConfigTab configTab; - CStatsTab statsTab; - CStatus statusTab; - int m_colSource0Width; - int m_colStats0Width; - int m_colStats1Width; - int m_colGStats0Width; - int m_colGStats1Width; - int m_colGStats2Width; - CFont labelFont; - CBitmap runningBitmap; - CBitmap stoppedBitmap; - CTrayNot* m_pTray; - BOOL m_bHidden; - int m_iconSwap; - - - - - - void StopServer(); - bool m_isRunning; - void DisableControl(UINT control); - void EnableControl(UINT control); - void getTag(char *pbuf, char *ptag, char *dest); - CString m_ErrorLog; - CString m_AccessLog; - void ParseConfig(); - void LoadConfig(); - CIcecast2winDlg(CWnd* pParent = NULL); // standard constructor - -// Dialog Data - //{{AFX_DATA(CIcecast2winDlg) - enum { IDD = IDD_ICECAST2WIN_DIALOG }; - CStatic m_SS; - CStatic m_ServerStatusBitmap; - CStatic m_iceLogo; - CButton m_StartButton; - CEdit m_StatsEditCtrl; - CEdit m_ConfigEditCtrl; - CEdit m_ErrorEditCtrl; - CEdit m_AccessEditCtrl; - CTabCtrlSSL m_MainTab; - CString m_AccessEdit; - CString m_ErrorEdit; - CString m_ConfigEdit; - CString m_ServerStatus; - CString m_SourcesConnected; - CString m_NumClients; - FILE *filep_accesslog; - FILE *filep_errorlog; - CString m_StatsEdit; - BOOL m_Autostart; - //}}AFX_DATA - - // ClassWizard generated virtual function overrides - //{{AFX_VIRTUAL(CIcecast2winDlg) - protected: - virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support - //}}AFX_VIRTUAL - -// Implementation -protected: - HICON m_hIcon; - - // Generated message map functions - //{{AFX_MSG(CIcecast2winDlg) - virtual BOOL OnInitDialog(); - virtual void OnCancel(); - afx_msg void OnSysCommand(UINT nID, LPARAM lParam); - afx_msg void OnPaint(); - afx_msg HCURSOR OnQueryDragIcon(); - afx_msg void OnSelchangeMaintab(NMHDR* pNMHDR, LRESULT* pResult); - afx_msg void OnFileExit(); - afx_msg void OnTimer(UINT nIDEvent); - afx_msg void OnFileStartserver(); - afx_msg void OnFileStopserver(); - afx_msg void OnStart(); - afx_msg void OnClose(); - afx_msg void OnSize(UINT nType, int cx, int cy); - afx_msg void OnHidesystray(); - afx_msg void OnHide(); - afx_msg void OnBlankRestore(); - afx_msg LONG OnTrayNotify ( WPARAM wParam, LPARAM lParam ); - afx_msg void OnDestroy(); - afx_msg void OnFileEditconfiguration(); - afx_msg void OnAboutHelp(); - afx_msg void OnAboutCredits(); - //}}AFX_MSG - DECLARE_MESSAGE_MAP() -}; - -//{{AFX_INSERT_LOCATION}} -// Microsoft Visual C++ will insert additional declarations immediately before the previous line. - -#endif // !defined(AFX_ICECAST2WINDLG_H__23B4DA8B_C9BC_49C8_A62C_37FC6BC5E54A__INCLUDED_) diff --git a/win32/Makefile.am b/win32/Makefile.am index bee287e0..29af79c1 100644 --- a/win32/Makefile.am +++ b/win32/Makefile.am @@ -2,15 +2,5 @@ AUTOMAKE_OPTIONS = foreign -SUBDIRS = res - -EXTRA_DIST = ConfigTab.cpp ConfigTab.h Icecast2win.clw Icecast2win.cpp \ - Icecast2win.dsp Icecast2win.dsw Icecast2win.h Icecast2win.rc \ - Icecast2winDlg.cpp Icecast2winDlg.h Makefile.am \ - StatsTab.cpp StatsTab.h Status.cpp Status.h StdAfx.cpp \ - StdAfx.h TabCtrlSSL.cpp TabCtrlSSL.h TabPageSSL.cpp TabPageSSL.h black.bmp \ - colors.h icecast.dsp icecast.ico icecast2.iss icecast2logo2.bmp\ - resource.h running.bmp stopped.bmp TRAYNOT.h Traynot.cpp \ - icecast2_console.dsw icecast2_console.dsp credits.bmp icecast2title.bmp \ - icecastService.cpp icecastService.dsp - +EXTRA_DIST = dllbundler.sh icecast2logo2.bmp icecast2logo3.bmp \ + icecast2title.bmp icecast.ico icecast.nsis diff --git a/win32/StatsTab.cpp b/win32/StatsTab.cpp deleted file mode 100644 index c1c55982..00000000 --- a/win32/StatsTab.cpp +++ /dev/null @@ -1,149 +0,0 @@ -// StatsTab.cpp : implementation file -// - -#include "stdafx.h" -#include "Icecast2win.h" -#include "StatsTab.h" - -#include "Icecast2winDlg.h" - -extern CIcecast2winDlg *g_mainDialog; - -#ifdef _DEBUG -#define new DEBUG_NEW -#undef THIS_FILE -static char THIS_FILE[] = __FILE__; -#endif - -extern void AddToAdditionalGlobalStats(CString source, CString name); - -///////////////////////////////////////////////////////////////////////////// -// CStatsTab dialog - - -CStatsTab::CStatsTab(CWnd* pParent /*=NULL*/) - : CTabPageSSL(CStatsTab::IDD, pParent) -{ - //{{AFX_DATA_INIT(CStatsTab) - // NOTE: the ClassWizard will add member initialization here - //}}AFX_DATA_INIT -} - - -void CStatsTab::DoDataExchange(CDataExchange* pDX) -{ - CTabPageSSL::DoDataExchange(pDX); - //{{AFX_DATA_MAP(CStatsTab) - DDX_Control(pDX, IDC_STATIC_SLS, m_SLS); - DDX_Control(pDX, IDC_STATSLIST, m_StatsListCtrl); - DDX_Control(pDX, IDC_SOURCELIST, m_SourceListCtrl); - //}}AFX_DATA_MAP -} - - -BEGIN_MESSAGE_MAP(CStatsTab, CTabPageSSL) - //{{AFX_MSG_MAP(CStatsTab) - ON_NOTIFY(NM_DBLCLK, IDC_SOURCELIST, OnDblclkSourcelist) - ON_NOTIFY(NM_RCLICK, IDC_STATSLIST, OnRclickStatslist) - ON_NOTIFY(NM_CLICK, IDC_SOURCELIST, OnClickSourcelist) - //}}AFX_MSG_MAP -END_MESSAGE_MAP() - -///////////////////////////////////////////////////////////////////////////// -// CStatsTab message handlers - -BOOL CStatsTab::OnInitDialog() -{ - CTabPageSSL::OnInitDialog(); - - // TODO: Add extra initialization here - m_SourceListCtrl.InsertColumn(0, _T("Source"), LVCFMT_LEFT, m_colSource0Width); - m_StatsListCtrl.InsertColumn(0, _T("Statistic"), LVCFMT_LEFT, m_colStats0Width); - m_StatsListCtrl.InsertColumn(1, _T("Value"), LVCFMT_LEFT, m_colStats1Width); - -// AddAnchor(IDC_STATSLIST, TOP_LEFT, BOTTOM_RIGHT); -// AddAnchor(IDC_SOURCELIST, TOP_LEFT, BOTTOM_LEFT); -// AddAnchor(IDC_FILLER1, BOTTOM_LEFT, BOTTOM_RIGHT); - - m_SourceListCtrl.SetSelectionMark(0); - m_SLS.SetFont(&(g_mainDialog->labelFont), TRUE); - - return TRUE; // return TRUE unless you set the focus to a control - // EXCEPTION: OCX Property Pages should return FALSE -} - -void CStatsTab::OnDblclkSourcelist(NMHDR* pNMHDR, LRESULT* pResult) -{ - // TODO: Add your control notification handler code here - g_mainDialog->statsTab.m_StatsListCtrl.DeleteAllItems(); - g_mainDialog->UpdateStatsLists(); - *pResult = 0; -} - -void CStatsTab::OnRclickStatslist(NMHDR* pNMHDR, LRESULT* pResult) -{ - // TODO: Add your control notification handler code here - CMenu menu; - - - CPoint point; - ::GetCursorPos(&point); //where is the mouse? - - DWORD dwSelectionMade; - menu.LoadMenu(IDR_MENU2); - CMenu *pmenuPopup = menu.GetSubMenu(0); - dwSelectionMade = pmenuPopup->TrackPopupMenu( (TPM_LEFTALIGN|TPM_LEFTBUTTON| - TPM_NONOTIFY|TPM_RETURNCMD), - point.x, point.y, this); - - pmenuPopup->DestroyMenu(); - char msg[255] =""; - char buffer[1024] = ""; - char buffer2[1024] = ""; - - CString name; - CString source; - POSITION pos; - switch (dwSelectionMade) { - case ID_POPUP_ADDTOGLOBALSTATLIST : - pos = m_StatsListCtrl.GetFirstSelectedItemPosition(); - if (pos != NULL) { - int nItem = m_StatsListCtrl.GetNextSelectedItem(pos); - LVITEM lvi; - - lvi.mask = LVIF_TEXT; - lvi.iItem = nItem; - lvi.iSubItem = 0; - lvi.pszText = buffer; - lvi.cchTextMax = sizeof(buffer); - m_StatsListCtrl.GetItem(&lvi); - name = buffer; - } - pos = m_SourceListCtrl.GetFirstSelectedItemPosition(); - if (pos != NULL) { - int nItem = m_SourceListCtrl.GetNextSelectedItem(pos); - LVITEM lvi; - - lvi.mask = LVIF_TEXT; - lvi.iItem = nItem; - lvi.iSubItem = 0; - lvi.pszText = buffer2; - lvi.cchTextMax = sizeof(buffer2); - m_SourceListCtrl.GetItem(&lvi); - source = buffer2; - } - AddToAdditionalGlobalStats(source, name); - break; - default : - break; - } - - *pResult = 0; -} - -void CStatsTab::OnClickSourcelist(NMHDR* pNMHDR, LRESULT* pResult) -{ - // TODO: Add your control notification handler code here - OnDblclkSourcelist(pNMHDR, pResult); - *pResult = 0; -} diff --git a/win32/StatsTab.h b/win32/StatsTab.h deleted file mode 100644 index e5fac45d..00000000 --- a/win32/StatsTab.h +++ /dev/null @@ -1,55 +0,0 @@ -#if !defined(AFX_STATSTAB_H__64B82CAB_8D6D_45A6_84FD_666F6317E5F2__INCLUDED_) -#define AFX_STATSTAB_H__64B82CAB_8D6D_45A6_84FD_666F6317E5F2__INCLUDED_ - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 -// StatsTab.h : header file -// -#include "TabPageSSL.h" - -///////////////////////////////////////////////////////////////////////////// -// CStatsTab dialog - -class CStatsTab : public CTabPageSSL -{ -// Construction -public: - int m_colStats1Width; - int m_colStats0Width; - int m_colSource0Width; - CStatsTab(CWnd* pParent = NULL); // standard constructor - -// Dialog Data - //{{AFX_DATA(CStatsTab) - enum { IDD = IDD_STATSDIALOG }; - CStatic m_SLS; - CListCtrl m_StatsListCtrl; - CListCtrl m_SourceListCtrl; - //}}AFX_DATA - - -// Overrides - // ClassWizard generated virtual function overrides - //{{AFX_VIRTUAL(CStatsTab) - protected: - virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support - //}}AFX_VIRTUAL - -// Implementation -protected: - - // Generated message map functions - //{{AFX_MSG(CStatsTab) - virtual BOOL OnInitDialog(); - afx_msg void OnDblclkSourcelist(NMHDR* pNMHDR, LRESULT* pResult); - afx_msg void OnRclickStatslist(NMHDR* pNMHDR, LRESULT* pResult); - afx_msg void OnClickSourcelist(NMHDR* pNMHDR, LRESULT* pResult); - //}}AFX_MSG - DECLARE_MESSAGE_MAP() -}; - -//{{AFX_INSERT_LOCATION}} -// Microsoft Visual C++ will insert additional declarations immediately before the previous line. - -#endif // !defined(AFX_STATSTAB_H__64B82CAB_8D6D_45A6_84FD_666F6317E5F2__INCLUDED_) diff --git a/win32/Status.cpp b/win32/Status.cpp deleted file mode 100644 index cfac4d9e..00000000 --- a/win32/Status.cpp +++ /dev/null @@ -1,160 +0,0 @@ -// Status.cpp : implementation file -// - -#include "stdafx.h" -#include "Icecast2win.h" -#include "Status.h" - -#include "Icecast2winDlg.h" - -extern CIcecast2winDlg *g_mainDialog; - -#ifdef _DEBUG -#define new DEBUG_NEW -#undef THIS_FILE -static char THIS_FILE[] = __FILE__; -#endif - -extern void RemoveFromAdditionalGlobalStats(CString source, CString name); -extern void AddToTitleAdditionalGlobalStats(CString source, CString name); - - -///////////////////////////////////////////////////////////////////////////// -// CStatus dialog - - -CStatus::CStatus(CWnd* pParent /*=NULL*/) - : CTabPageSSL(CStatus::IDD, pParent) -{ - //{{AFX_DATA_INIT(CStatus) - m_Clients = _T(""); - m_Sources = _T(""); - m_RunningFor = _T(""); - //}}AFX_DATA_INIT -} - - -void CStatus::DoDataExchange(CDataExchange* pDX) -{ - CTabPageSSL::DoDataExchange(pDX); - //{{AFX_DATA_MAP(CStatus) - DDX_Control(pDX, IDC_STATIC_GS, m_GS); - DDX_Control(pDX, IDC_GLOBALSTAT_LIST, m_GlobalStatList); - DDX_Text(pDX, IDC_RUNNINGFOR, m_RunningFor); - //}}AFX_DATA_MAP -} - - -BEGIN_MESSAGE_MAP(CStatus, CTabPageSSL) - //{{AFX_MSG_MAP(CStatus) - ON_NOTIFY(NM_RCLICK, IDC_GLOBALSTAT_LIST, OnRclickGlobalstatList) - //}}AFX_MSG_MAP -END_MESSAGE_MAP() - -///////////////////////////////////////////////////////////////////////////// -// CStatus message handlers - -BOOL CStatus::OnInitDialog() -{ - CTabPageSSL::OnInitDialog(); - - - m_GlobalStatList.InsertColumn(0, _T("Stat Type"), LVCFMT_LEFT, m_colStats0Width); - m_GlobalStatList.InsertColumn(1, _T("Name"), LVCFMT_LEFT, m_colStats1Width); - m_GlobalStatList.InsertColumn(2, _T("Value"), LVCFMT_LEFT, m_colStats2Width); - - m_GlobalStatList.SetExtendedStyle(LVS_EX_FULLROWSELECT); - // TODO: Add extra initialization here -// AddAnchor(IDC_FILLER2, BOTTOM_LEFT, BOTTOM_RIGHT); -// AddAnchor(IDC_GLOBALSTAT_LIST, TOP_LEFT, BOTTOM_RIGHT); -// AddAnchor(IDC_STATIC_RUN, BOTTOM_LEFT, BOTTOM_RIGHT); -// AddAnchor(IDC_RUNNINGFOR, BOTTOM_LEFT, BOTTOM_RIGHT); - - m_GS.SetFont(&(g_mainDialog->labelFont), TRUE); - - return TRUE; // return TRUE unless you set the focus to a control - // EXCEPTION: OCX Property Pages should return FALSE -} - -void CStatus::OnRclickGlobalstatList(NMHDR* pNMHDR, LRESULT* pResult) -{ - // TODO: Add your control notification handler code here - CMenu menu; - - - CPoint point; - ::GetCursorPos(&point); //where is the mouse? - - DWORD dwSelectionMade; - menu.LoadMenu(IDR_MENU3); - CMenu *pmenuPopup = menu.GetSubMenu(0); - dwSelectionMade = pmenuPopup->TrackPopupMenu( (TPM_LEFTALIGN|TPM_LEFTBUTTON| - TPM_NONOTIFY|TPM_RETURNCMD), - point.x, point.y, this); - - pmenuPopup->DestroyMenu(); - char msg[255] =""; - char buffer[1024] = ""; - char buffer2[1024] = ""; - - CString name; - CString source; - POSITION pos; - int nItem; - switch (dwSelectionMade) { - case ID__DELETEFROMGLOBALSTATS : - pos = m_GlobalStatList.GetFirstSelectedItemPosition(); - if (pos != NULL) { - nItem = m_GlobalStatList.GetNextSelectedItem(pos); - LVITEM lvi; - - lvi.mask = LVIF_TEXT; - lvi.iItem = nItem; - lvi.iSubItem = 0; - lvi.pszText = buffer; - lvi.cchTextMax = sizeof(buffer); - m_GlobalStatList.GetItem(&lvi); - source = buffer; - lvi.iSubItem = 1; - lvi.pszText = buffer2; - lvi.cchTextMax = sizeof(buffer2); - m_GlobalStatList.GetItem(&lvi); - name = buffer2; - - if (source == "Global Stat") { - MessageBox("Sorry, but you can't delete this type of stat", NULL, MB_OK); - } - else { - RemoveFromAdditionalGlobalStats(source, name); - m_GlobalStatList.DeleteItem(nItem); - } - } - break; - case ID__MAKETHISSTATTHEWINDOWTITLE : - pos = m_GlobalStatList.GetFirstSelectedItemPosition(); - if (pos != NULL) { - nItem = m_GlobalStatList.GetNextSelectedItem(pos); - LVITEM lvi; - - lvi.mask = LVIF_TEXT; - lvi.iItem = nItem; - lvi.iSubItem = 0; - lvi.pszText = buffer; - lvi.cchTextMax = sizeof(buffer); - m_GlobalStatList.GetItem(&lvi); - source = buffer; - lvi.iSubItem = 1; - lvi.pszText = buffer2; - lvi.cchTextMax = sizeof(buffer2); - m_GlobalStatList.GetItem(&lvi); - name = buffer2; - - AddToTitleAdditionalGlobalStats(source, name); - } - break; - default : - break; - } - - *pResult = 0; -} diff --git a/win32/Status.h b/win32/Status.h deleted file mode 100644 index 83605728..00000000 --- a/win32/Status.h +++ /dev/null @@ -1,59 +0,0 @@ -#if !defined(AFX_STATUS_H__DE59E22B_FD4F_4131_B347_48BD9FAC9348__INCLUDED_) -#define AFX_STATUS_H__DE59E22B_FD4F_4131_B347_48BD9FAC9348__INCLUDED_ - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 -// Status.h : header file -// -#include "TabPageSSL.h" - -///////////////////////////////////////////////////////////////////////////// -// CStatus dialog - -class CStatus : public CTabPageSSL -{ -// Construction -public: - int m_colStats2Width; - int m_colStats1Width; - int m_colStats0Width; - CFont labelFont; - CStatus(CWnd* pParent = NULL); // standard constructor - -// Dialog Data - CBitmap runningBitmap; - CBitmap stoppedBitmap; - - //{{AFX_DATA(CStatus) - enum { IDD = IDD_SSTATUS }; - CStatic m_GS; - CListCtrl m_GlobalStatList; - CString m_Clients; - CString m_Sources; - CString m_RunningFor; - //}}AFX_DATA - - -// Overrides - // ClassWizard generated virtual function overrides - //{{AFX_VIRTUAL(CStatus) - protected: - virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support - //}}AFX_VIRTUAL - -// Implementation -protected: - - // Generated message map functions - //{{AFX_MSG(CStatus) - virtual BOOL OnInitDialog(); - afx_msg void OnRclickGlobalstatList(NMHDR* pNMHDR, LRESULT* pResult); - //}}AFX_MSG - DECLARE_MESSAGE_MAP() -}; - -//{{AFX_INSERT_LOCATION}} -// Microsoft Visual C++ will insert additional declarations immediately before the previous line. - -#endif // !defined(AFX_STATUS_H__DE59E22B_FD4F_4131_B347_48BD9FAC9348__INCLUDED_) diff --git a/win32/StdAfx.cpp b/win32/StdAfx.cpp deleted file mode 100644 index 915c805f..00000000 --- a/win32/StdAfx.cpp +++ /dev/null @@ -1,8 +0,0 @@ -// stdafx.cpp : source file that includes just the standard includes -// Icecast2win.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information - -#include "stdafx.h" - - - diff --git a/win32/StdAfx.h b/win32/StdAfx.h deleted file mode 100644 index 1c6c3ca1..00000000 --- a/win32/StdAfx.h +++ /dev/null @@ -1,27 +0,0 @@ -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// - -#if !defined(AFX_STDAFX_H__2C2EF8C3_43CD_47D2_A979_EC36873E602D__INCLUDED_) -#define AFX_STDAFX_H__2C2EF8C3_43CD_47D2_A979_EC36873E602D__INCLUDED_ - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - -#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers - -#include // MFC core and standard components -#include // MFC extensions -#include // MFC Automation classes -#include // MFC support for Internet Explorer 4 Common Controls -#ifndef _AFX_NO_AFXCMN_SUPPORT -#include // MFC support for Windows Common Controls -#endif // _AFX_NO_AFXCMN_SUPPORT - -#define WM_TRAY_NOTIFY WM_APP+1000 -//{{AFX_INSERT_LOCATION}} -// Microsoft Visual C++ will insert additional declarations immediately before the previous line. - -#endif // !defined(AFX_STDAFX_H__2C2EF8C3_43CD_47D2_A979_EC36873E602D__INCLUDED_) diff --git a/win32/TRAYNOT.h b/win32/TRAYNOT.h deleted file mode 100644 index 294550ce..00000000 --- a/win32/TRAYNOT.h +++ /dev/null @@ -1,35 +0,0 @@ -// CTrayNot window -#ifndef _CTRAYNOT -#define _CTRAYNOT - -class CTrayNot : public CObject -{ -// Construction -public: - CTrayNot ( CWnd* pWnd, UINT uCallbackMessage, - LPCTSTR szTip, HICON* pList ) ; - -// Attributes -public: - BOOL m_bEnabled ; - NOTIFYICONDATA m_tnd ; - HICON* m_pIconList ; - - -public: - void SetState ( int id = 0 ) ; - -// Overrides - // ClassWizard generated virtual function overrides - //{{AFX_VIRTUAL(CTrayNot) - //}}AFX_VIRTUAL - -// Implementation -public: - virtual ~CTrayNot(); - void SetTIP(char *pTip); - -}; - -///////////////////////////////////////////////////////////////////////////// -#endif diff --git a/win32/TabCtrlSSL.cpp b/win32/TabCtrlSSL.cpp deleted file mode 100644 index 1d1eae29..00000000 --- a/win32/TabCtrlSSL.cpp +++ /dev/null @@ -1,499 +0,0 @@ -// TabCtrlSSL.cpp : implementation file -// - -#include "stdafx.h" -#include "TabCtrlSSL.h" - -#ifdef _DEBUG -#define new DEBUG_NEW -#undef THIS_FILE -static char THIS_FILE[] = __FILE__; -#endif - -///////////////////////////////////////////////////////////////////////////// -// Construction - -CTabCtrlSSL::CTabCtrlSSL () { -#ifndef _AFX_NO_OCC_SUPPORT - AfxEnableControlContainer (); -#endif // !_AFX_NO_OCC_SUPPORT -} - -///////////////////////////////////////////////////////////////////////////// -// Destruction - -CTabCtrlSSL::~CTabCtrlSSL (void) { -} - -BEGIN_MESSAGE_MAP(CTabCtrlSSL, CTabCtrl) - //{{AFX_MSG_MAP(CTabCtrlSSL) - ON_WM_DESTROY () - ON_WM_SETFOCUS () - ON_WM_KILLFOCUS () - ON_NOTIFY_REFLECT (TCN_SELCHANGING, OnSelChanging) - ON_NOTIFY_REFLECT (TCN_SELCHANGE, OnSelChange) - //}}AFX_MSG_MAP -END_MESSAGE_MAP() - -///////////////////////////////////////////////////////////////////////////// -// Page Functions - -int CTabCtrlSSL::AddSSLPage (LPCTSTR pszTitle, int nPageID, CTabPageSSL* pTabPage) { - // Add a page to the tab control. - TabDelete tabDelete; - tabDelete.pTabPage = pTabPage; - tabDelete.bDelete = FALSE; - - return AddPage (pszTitle, nPageID, tabDelete); -} - -int CTabCtrlSSL::AddSSLPage (LPCTSTR pszTitle, int nPageID, LPCTSTR pszTemplateName) { - // Verify that the dialog template is compatible with CTabCtrlSSL - // (debug builds only). If your app asserts here, make sure the dialog - // resource you're adding to the view is a borderless child window and - // is not marked visible. -#ifdef _DEBUG - if (pszTemplateName != NULL) { - BOOL bResult = CheckDialogTemplate (pszTemplateName); - ASSERT (bResult); - } -#endif // _DEBUG - - // Add a page to the tab control. - // Create a modeless dialog box. - CTabPageSSL* pDialog = new CTabPageSSL; - - if (pDialog == NULL) { - return -1; - } - - if (!pDialog->Create (pszTemplateName, this)) { - pDialog->DestroyWindow (); - delete pDialog; - return -1; - } - - TabDelete tabDelete; - tabDelete.pTabPage = pDialog; - tabDelete.bDelete = TRUE; - - return AddPage (pszTitle, nPageID, tabDelete); -} - -int CTabCtrlSSL::AddSSLPage (LPCTSTR pszTitle, int nPageID, int nTemplateID) { - return AddSSLPage (pszTitle, nPageID, MAKEINTRESOURCE (nTemplateID)); -} - -BOOL CTabCtrlSSL::RemoveSSLPage (int nIndex) { - if (nIndex >= GetItemCount ()) - return FALSE; - - // Notify derived classes that the page is being destroyed. - OnDestroyPage (nIndex, m_nPageIDs[nIndex]); - - // Switch pages if the page being deleted is the current page and it's - // not the only remaining page. - int nCount = GetItemCount (); - if (nCount > 1 && nIndex == GetCurSel ()) { - int nPage = nIndex + 1; - if (nPage >= nCount) - nPage = nCount - 2; - ActivateSSLPage (nPage); - } - - // Remove the page from the tab control. - DeleteItem (nIndex); - - // Destroy the dialog (if any) that represents the page. - TabDelete tabDelete = m_tabs[nIndex]; - CTabPageSSL* pDialog = tabDelete.pTabPage; - if (pDialog != NULL) { - pDialog->DestroyWindow (); - delete pDialog; - } - - // Clean up, repaint, and return. - m_tabs.RemoveAt (nIndex); - m_hFocusWnd.RemoveAt (nIndex); - m_nPageIDs.RemoveAt (nIndex); - Invalidate (); - return TRUE; -} - -int CTabCtrlSSL::GetSSLPageCount (void) { - return GetItemCount (); -} - -BOOL CTabCtrlSSL::GetSSLPageTitle (int nIndex, CString &strTitle) { - if (nIndex >= GetItemCount ()) - return FALSE; - - TCHAR szTitle[1024]; - - TC_ITEM item; - item.mask = TCIF_TEXT; - item.pszText = szTitle; - item.cchTextMax = sizeof szTitle / sizeof (TCHAR); - - if (!GetItem (nIndex, &item)) - return FALSE; - - strTitle = item.pszText; - return TRUE; -} - -BOOL CTabCtrlSSL::SetSSLPageTitle (int nIndex, LPCTSTR pszTitle) { - if (nIndex >= GetItemCount ()) - return FALSE; - - TC_ITEM item; - item.mask = TCIF_TEXT; - item.pszText = (LPTSTR) pszTitle; - - BOOL bResult = SetItem (nIndex, &item); - if (bResult) - Invalidate (); - return bResult; -} - -int CTabCtrlSSL::GetSSLPageID (int nIndex) { - if (nIndex >= GetItemCount ()) - return -1; - - return m_nPageIDs[nIndex]; -} - -int CTabCtrlSSL::SetSSLPageID (int nIndex, int nPageID) { - if (nIndex >= GetItemCount ()) - return -1; - - int nOldPageID = m_nPageIDs[nIndex]; - m_nPageIDs[nIndex] = nPageID; - return nOldPageID; -} - -BOOL CTabCtrlSSL::ActivateSSLPage (int nIndex) { - if (nIndex >= GetItemCount ()) - return FALSE; - - // Do nothing if the specified page is already active. - if (nIndex == GetCurSel ()) - return TRUE; - - // Deactivate the current page. - int nOldIndex = GetCurSel (); - - if (nIndex != -1) { - TabDelete tabDelete = m_tabs[nOldIndex]; - CTabPageSSL* pDialog = tabDelete.pTabPage; - if (pDialog != NULL) { - m_hFocusWnd[nOldIndex] = ::GetFocus (); - pDialog->ShowWindow (SW_HIDE); - } - } - - // Activate the new one. - SetCurSel (nIndex); - TabDelete tabDelete = m_tabs[nIndex]; - CTabPageSSL* pDialog = tabDelete.pTabPage; - - if (pDialog != NULL) { - ::SetFocus (m_hFocusWnd[nIndex]); - CRect rect; - GetClientRect (&rect); - ResizeDialog (nIndex, rect.Width (), rect.Height ()); - pDialog->ShowWindow (SW_SHOW); - } - return TRUE; -} - -int CTabCtrlSSL::GetSSLActivePage (void) { - return GetCurSel (); -} - -CWnd* CTabCtrlSSL::GetSSLPage (int nIndex) { - if (nIndex >= GetItemCount ()) - return NULL; - - TabDelete tabDelete = m_tabs[nIndex]; - return (CWnd*) tabDelete.pTabPage; -} - -int CTabCtrlSSL::GetSSLPageIndex (int nPageID) { - int nCount = GetItemCount (); - if (nCount == 0) - return -1; - - for (int i=0; isignature == 0xFFFF) - dwStyle = pTemplate->style; - else - dwStyle = ((DLGTEMPLATE*) pTemplate)->style; - - UnlockResource (hTemplate); - FreeResource (hTemplate); - - // Verify that the dialog is an invisible child window. - if (dwStyle & WS_VISIBLE) - return FALSE; // WS_VISIBLE flag is set - - if (!(dwStyle & WS_CHILD)) - return FALSE; // WS_CHILD flag isn't set - - // Verify that the dialog has no border and no title bar. - if (dwStyle & (WS_BORDER | WS_THICKFRAME | DS_MODALFRAME)) - return FALSE; // One or more border flags are set - - if (dwStyle & WS_CAPTION) - return FALSE; // WS_CAPTION flag is set - - return TRUE; -} -#endif // _DEBUG - -void CTabCtrlSSL::ResizeDialog (int nIndex, int cx, int cy) { - if (nIndex != -1) { - TabDelete tabDelete = m_tabs[nIndex]; - CTabPageSSL* pDialog = tabDelete.pTabPage; - - if (pDialog != NULL) { - CRect rect; - GetItemRect (nIndex, &rect); - - int x, y, nWidth, nHeight; - DWORD dwStyle = GetStyle (); - - if (dwStyle & TCS_VERTICAL) { // Vertical tabs - int nTabWidth = - rect.Width () * GetRowCount (); - x = (dwStyle & TCS_RIGHT) ? 4 : nTabWidth + 4; - y = 4; - nWidth = cx - nTabWidth - 8; - nHeight = cy - 8; - } - else { // Horizontal tabs - int nTabHeight = - rect.Height () * GetRowCount (); - x = 4; - y = (dwStyle & TCS_BOTTOM) ? 4 : nTabHeight + 4; - nWidth = cx - 8; - nHeight = cy - nTabHeight - 8; - - - - } - pDialog->SetWindowPos (NULL, x, y, nWidth, nHeight, SWP_NOZORDER); - } - } -} - -///////////////////////////////////////////////////////////////////////////// -// Overridables - -BOOL CTabCtrlSSL::OnInitPage (int nIndex, int nPageID) { - // TODO: Override in derived class to initialise pages. - return TRUE; -} - -void CTabCtrlSSL::OnActivatePage (int nIndex, int nPageID) { - // TODO: Override in derived class to respond to page activations. -} - -void CTabCtrlSSL::OnDeactivatePage (int nIndex, int nPageID) { - // TODO: Override in derived class to respond to page deactivations. -} - -void CTabCtrlSSL::OnDestroyPage (int nIndex, int nPageID) { - // TODO: Override in derived class to free resources. -} - -///////////////////////////////////////////////////////////////////////////// -// Message handlers - -void CTabCtrlSSL::OnSelChanging (NMHDR* pNMHDR, LRESULT* pResult) { - // Notify derived classes that the selection is changing. - int nIndex = GetCurSel (); - if (nIndex == -1) - return; - - OnDeactivatePage (nIndex, m_nPageIDs[nIndex]); - - // Save the input focus and hide the old page. - TabDelete tabDelete = m_tabs[nIndex]; - CTabPageSSL* pDialog = tabDelete.pTabPage; - - if (pDialog != NULL) { - m_hFocusWnd[nIndex] = ::GetFocus (); - pDialog->ShowWindow (SW_HIDE); - } - *pResult = 0; -} - -void CTabCtrlSSL::OnSelChange (NMHDR* pNMHDR, LRESULT* pResult) { - int nIndex = GetCurSel (); - if (nIndex == -1) - return; - - // Show the new page. - TabDelete tabDelete = m_tabs[nIndex]; - CTabPageSSL* pDialog = tabDelete.pTabPage; - - if (pDialog != NULL) { - ::SetFocus (m_hFocusWnd[nIndex]); - CRect rect; - GetClientRect (&rect); - ResizeDialog (nIndex, rect.Width (), rect.Height ()); - pDialog->ShowWindow (SW_SHOW); - } - - // Notify derived classes that the selection has changed. - OnActivatePage (nIndex, m_nPageIDs[nIndex]); - *pResult = 0; -} - -void CTabCtrlSSL::OnSetFocus (CWnd* pOldWnd) { - CTabCtrl::OnSetFocus (pOldWnd); - - // Set the focus to a control on the current page. - int nIndex = GetCurSel (); - if (nIndex != -1) - ::SetFocus (m_hFocusWnd[nIndex]); -} - -void CTabCtrlSSL::OnKillFocus (CWnd* pNewWnd) { - CTabCtrl::OnKillFocus (pNewWnd); - - // Save the HWND of the control that holds the input focus. - int nIndex = GetCurSel (); - if (nIndex != -1) - m_hFocusWnd[nIndex] = ::GetFocus (); -} - -// My thanks to Tomasz Sowinski for all his help coming up with a workable -// solution to the stack versus heap object destruction -void CTabCtrlSSL::OnDestroy (void) { - int nCount = m_tabs.GetSize (); - - // Destroy dialogs and delete CTabCtrlSSL objects. - if (nCount > 0) { - for (int i=nCount - 1; i>=0; i--) { - OnDestroyPage (i, m_nPageIDs[i]); - TabDelete tabDelete = m_tabs[i]; - CTabPageSSL* pDialog = tabDelete.pTabPage; - if (pDialog != NULL) { - pDialog->DestroyWindow (); - if (TRUE == tabDelete.bDelete) { - delete pDialog; - } - } - } - } - - // Clean up the internal arrays. - m_tabs.RemoveAll (); - m_hFocusWnd.RemoveAll (); - m_nPageIDs.RemoveAll (); - - CTabCtrl::OnDestroy (); -} - -BOOL CTabCtrlSSL::OnCommand (WPARAM wParam, LPARAM lParam) { - // Forward WM_COMMAND messages to the dialog's parent. - return GetParent ()->SendMessage (WM_COMMAND, wParam, lParam); -} - -BOOL CTabCtrlSSL::OnNotify (WPARAM wParam, LPARAM lParam, LRESULT* pResult) { - // Forward WM_NOTIFY messages to the dialog's parent. - return GetParent ()->SendMessage (WM_NOTIFY, wParam, lParam); -} - -BOOL CTabCtrlSSL::OnCmdMsg (UINT nID, int nCode, void* pExtra, - AFX_CMDHANDLERINFO* pHandlerInfo) { - // Forward ActiveX control events to the dialog's parent. -#ifndef _AFX_NO_OCC_SUPPORT - if (nCode == CN_EVENT) - return GetParent ()->OnCmdMsg (nID, nCode, pExtra, pHandlerInfo); -#endif // !_AFX_NO_OCC_SUPPORT - - return CTabCtrl::OnCmdMsg (nID, nCode, pExtra, pHandlerInfo); -} - -int CTabCtrlSSL::AddPage (LPCTSTR pszTitle, int nPageID, TabDelete tabDelete) { - // Add a page to the tab control. - TC_ITEM item; - item.mask = TCIF_TEXT; - item.pszText = (LPTSTR) pszTitle; - int nIndex = GetItemCount (); - - if (InsertItem (nIndex, &item) == -1) - return -1; - - if (NULL == tabDelete.pTabPage) { - // Fail - no point calling the function with a NULL pointer! - DeleteItem (nIndex); - return -1; - } - else { - // Record the address of the dialog object and the page ID. - int nArrayIndex = m_tabs.Add (tabDelete); - ASSERT (nIndex == nArrayIndex); - - nArrayIndex = m_nPageIDs.Add (nPageID); - ASSERT (nIndex == nArrayIndex); - - // Size and position the dialog box within the view. - tabDelete.pTabPage->SetParent (this); // Just to be sure - - CRect rect; - GetClientRect (&rect); - - if (rect.Width () > 0 && rect.Height () > 0) - ResizeDialog (nIndex, rect.Width (), rect.Height ()); - - // Initialize the page. - if (OnInitPage (nIndex, nPageID)) { - // Make sure the first control in the dialog is the one that - // receives the input focus when the page is displayed. - HWND hwndFocus = tabDelete.pTabPage->GetTopWindow ()->m_hWnd; - nArrayIndex = m_hFocusWnd.Add (hwndFocus); - ASSERT (nIndex == nArrayIndex); - } - else { - // Make the control that currently has the input focus is the one - // that receives the input focus when the page is displayed. - m_hFocusWnd.Add (::GetFocus ()); - } - - // If this is the first page added to the view, make it visible. - if (nIndex == 0) - tabDelete.pTabPage->ShowWindow (SW_SHOW); - } - return nIndex; -} diff --git a/win32/TabCtrlSSL.h b/win32/TabCtrlSSL.h deleted file mode 100644 index 0c6d4bf0..00000000 --- a/win32/TabCtrlSSL.h +++ /dev/null @@ -1,98 +0,0 @@ -#if !defined(AFX_TABCTRLSSL_H__75BE48A7_864C_11D5_9F04_000102FB9990__INCLUDED_) -#define AFX_TABCTRLSSL_H__75BE48A7_864C_11D5_9F04_000102FB9990__INCLUDED_ - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 -// TabCtrlEx.h : header file -// - -#include -#include "TabPageSSL.h" - -#ifdef _DEBUG -#pragma pack (push, 1) - -typedef struct { - WORD dlgVer; - WORD signature; - DWORD helpID; - DWORD exStyle; - DWORD style; - WORD cDlgItems; - short x; - short y; - short cx; - short cy; -} DLGTEMPLATEEX; - -#pragma pack (pop) -#endif // _DEBUG - -///////////////////////////////////////////////////////////////////////////// -// CTabCtrlSSL window - -class CTabCtrlSSL : public CTabCtrl { -public: -// Construction - CTabCtrlSSL (); -// Destruction - virtual ~CTabCtrlSSL (void); -// Page Functions - int AddSSLPage (LPCTSTR pszTitle, int nPageID, CTabPageSSL* pTabPage); - int AddSSLPage (LPCTSTR pszTitle, int nPageID, LPCTSTR pszTemplateName); - int AddSSLPage (LPCTSTR pszTitle, int nPageID, int nTemplateID); - BOOL RemoveSSLPage (int nIndex); - int GetSSLPageCount (void); - BOOL GetSSLPageTitle (int nIndex, CString& strTitle); - BOOL SetSSLPageTitle (int nIndex, LPCTSTR pszTitle); - int GetSSLPageID (int nIndex); - int SetSSLPageID (int nIndex, int nPageID); - BOOL ActivateSSLPage (int nIndex); - int GetSSLActivePage (void); - CWnd* GetSSLPage (int nIndex); - int GetSSLPageIndex (int nPageID); - void ResizeDialog (int nIndex, int cx, int cy); - -protected: - struct TabDelete { - CTabPageSSL* pTabPage; - BOOL bDelete; - }; - CArray m_tabs; - CArray m_hFocusWnd; - CArray m_nPageIDs; - - int AddPage (LPCTSTR pszTitle, int nPageID, TabDelete tabDelete); - - virtual BOOL OnInitPage (int nIndex, int nPageID); - virtual void OnActivatePage (int nIndex, int nPageID); - virtual void OnDeactivatePage (int nIndex, int nPageID); - virtual void OnDestroyPage (int nIndex, int nPageID); - virtual BOOL OnCommand (WPARAM wParam, LPARAM lParam); - virtual BOOL OnNotify (WPARAM wParam, LPARAM lParam, LRESULT* pResult); - virtual BOOL OnCmdMsg (UINT nID, int nCode, void* pExtra, - AFX_CMDHANDLERINFO* pHandlerInfo); - -#ifdef _DEBUG - BOOL CheckDialogTemplate (LPCTSTR pszTemplateName); -#endif // _DEBUG - // Generated message map functions -protected: - //{{AFX_MSG(CTabCtrlSSL) - afx_msg void OnDestroy (void); - afx_msg void OnSetFocus (CWnd* pOldWnd); - afx_msg void OnKillFocus (CWnd* pNewWnd); - afx_msg void OnSelChanging (NMHDR* pNMHDR, LRESULT* pResult); - afx_msg void OnSelChange (NMHDR* pNMHDR, LRESULT* pResult); - //}}AFX_MSG - - DECLARE_MESSAGE_MAP() -}; - -///////////////////////////////////////////////////////////////////////////// - -//{{AFX_INSERT_LOCATION}} -// Microsoft Visual C++ will insert additional declarations immediately before the previous line. - -#endif // !defined(AFX_TABCTRLSSL_H__75BE48A7_864C_11D5_9F04_000102FB9990__INCLUDED_) diff --git a/win32/TabPageSSL.cpp b/win32/TabPageSSL.cpp deleted file mode 100644 index c0b0b4a5..00000000 --- a/win32/TabPageSSL.cpp +++ /dev/null @@ -1,75 +0,0 @@ -#include "stdafx.h" -#include "TabPageSSL.h" - -#ifdef _DEBUG -#define new DEBUG_NEW -#undef THIS_FILE -static char THIS_FILE[] = __FILE__; -#endif - -///////////////////////////////////////////////////////////////////////////// -// Construction - -CTabPageSSL::CTabPageSSL () { -#ifndef _AFX_NO_OCC_SUPPORT - AfxEnableControlContainer (); -#endif // !_AFX_NO_OCC_SUPPORT -} - -CTabPageSSL::CTabPageSSL (UINT nIDTemplate, CWnd* pParent /*=NULL*/) - : CDialog(nIDTemplate, pParent) { -#ifndef _AFX_NO_OCC_SUPPORT - AfxEnableControlContainer (); -#endif // !_AFX_NO_OCC_SUPPORT -} - -///////////////////////////////////////////////////////////////////////////// -// Destruction - -CTabPageSSL::~CTabPageSSL () { -} - -///////////////////////////////////////////////////////////////////////////// -// Message Handlers - -void CTabPageSSL::OnOK (void) { - // - // Prevent CDialog::OnOK from calling EndDialog. - // -} - -void CTabPageSSL::OnCancel (void) { - // - // Prevent CDialog::OnCancel from calling EndDialog. - // -} - -BOOL CTabPageSSL::OnCommand (WPARAM wParam, LPARAM lParam) { - // Call base class OnCommand to allow message map processing - CDialog::OnCommand (wParam, lParam); - // - // Forward WM_COMMAND messages to the dialog's parent. - // - return GetParent ()->SendMessage (WM_COMMAND, wParam, lParam); -} - -BOOL CTabPageSSL::OnNotify (WPARAM wParam, LPARAM lParam, LRESULT* pResult) { - // - // Forward WM_NOTIFY messages to the dialog's parent. - // - CDialog::OnNotify (wParam, lParam, pResult); - return GetParent ()->SendMessage (WM_NOTIFY, wParam, lParam); -} - -BOOL CTabPageSSL::OnCmdMsg (UINT nID, int nCode, void* pExtra, - AFX_CMDHANDLERINFO* pHandlerInfo) { - // - // Forward ActiveX control events to the dialog's parent. - // -#ifndef _AFX_NO_OCC_SUPPORT - if (nCode == CN_EVENT) - return GetParent ()->OnCmdMsg (nID, nCode, pExtra, pHandlerInfo); -#endif // !_AFX_NO_OCC_SUPPORT - - return CDialog::OnCmdMsg (nID, nCode, pExtra, pHandlerInfo); -} diff --git a/win32/TabPageSSL.h b/win32/TabPageSSL.h deleted file mode 100644 index d0e87dd4..00000000 --- a/win32/TabPageSSL.h +++ /dev/null @@ -1,26 +0,0 @@ -#if !defined(AFX_TABPAGESSL_H__619331B3_7DE7_4DB1_A039_2103E87E8E71__INCLUDED_) -#define AFX_TABPAGESSL_H__619331B3_7DE7_4DB1_A039_2103E87E8E71__INCLUDED_ - -///////////////////////////////////////////////////////////////////////////// -// CTabPageSSL declaration - -class CTabPageSSL : public CDialog -{ -public: -// Construction - CTabPageSSL (); // Default Constructor - CTabPageSSL (UINT nIDTemplate, CWnd* pParent = NULL); // Standard Constructor -// Destruction - ~CTabPageSSL (); - -protected: -// Message Handlers - virtual BOOL OnCommand (WPARAM wParam, LPARAM lParam); - virtual BOOL OnNotify (WPARAM wParam, LPARAM lParam, LRESULT* pResult); - virtual void OnOK (void); - virtual void OnCancel (void); - virtual BOOL OnCmdMsg (UINT nID, int nCode, void* pExtra, - AFX_CMDHANDLERINFO* pHandlerInfo); -}; - -#endif // !defined(AFX_TABPAGE_H__619331B3_7DE7_4DB1_A039_2103E87E8E71__INCLUDED_) diff --git a/win32/Traynot.cpp b/win32/Traynot.cpp deleted file mode 100644 index c8afac7e..00000000 --- a/win32/Traynot.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "stdafx.h" -#include "TrayNot.h" -#ifdef _DEBUG -#define new DEBUG_NEW -#undef THIS_FILE -static char THIS_FILE[] = __FILE__; -#endif - -///////////////////////////////////////////////////////////////////////////// -// CTrayNot - -CTrayNot::CTrayNot ( CWnd* pWnd, UINT uCallbackMessage, - LPCTSTR szTip, HICON* pList ) -{ - // this is only for Windows 95 (or higher) - m_bEnabled = ( GetVersion() & 0xff ) >= 4 ; - if (!m_bEnabled) - return ; - - // load up the NOTIFYICONDATA structure - m_tnd.cbSize = sizeof(NOTIFYICONDATA) ; - m_tnd.hWnd = pWnd->GetSafeHwnd() ; - m_tnd.uID = 0 ; - m_tnd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP ; - m_tnd.uCallbackMessage = uCallbackMessage; - strcpy ( m_tnd.szTip, "Icecast2"); - //or you could use: - //strcpy ( m_tnd.szTip, AfxGetApp()->m_pszAppName); - //this will display the app name instead of the string you specify - - - - // save the pointer to the icon list and set the initial - // default icon. - m_pIconList = pList ; - m_tnd.hIcon = m_pIconList[0] ; - Shell_NotifyIcon (NIM_ADD,&m_tnd); - - - -} - -CTrayNot::~CTrayNot() -{ - if (m_bEnabled) - Shell_NotifyIcon (NIM_DELETE, &m_tnd); -} - -void CTrayNot::SetState(int id) -{ - if (!m_bEnabled) - return; - m_tnd.hIcon = m_pIconList[id]; - m_tnd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP ; - - //Ive found in windows XP that this command makes the icon not visable in the system tray....we dont want that now - //do we? - Shell_NotifyIcon(NIM_MODIFY, &m_tnd); -} -void CTrayNot::SetTIP(char *pTip) { - memset(m_tnd.szTip, '\000', sizeof(m_tnd.szTip)); - strncpy(m_tnd.szTip, pTip, sizeof(m_tnd.szTip)-1); - - Shell_NotifyIcon(NIM_MODIFY, &m_tnd); -} \ No newline at end of file diff --git a/win32/black.bmp b/win32/black.bmp deleted file mode 100644 index 71be3914561a026f71a5cf2071c86dfea25ba0d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154166 zcmeI$u}uU~33Tf( z^M0K7>-oCgPrY4l=l4A4`|Hc~_x}HJzIg}`AV7cs0RjXF5FkK+009C7<^suP)Lvk| zECUG;AV7cs0RjXF5FkK+009C7ZheZQBLdEc009C72oNAZfB*pk1PBlyKwvMBY)0(` z_S-U%009C72oNAZfB*pk1PBlyK%h@?bVR`Q5FkK+009C72oNAZfB*pk1PJT}lFg{S zzb;1Y8dR0t5&UAV7cs0RjXF5FkK+z+NEP zjM@wAw`C#$0t5&UAV7cs0RjXF5FkK+K%e61h=A)MK!5-N0t5&UAV7cs0RjXF5ZDVO zn^Aj#{kBXbK!5-N0t5&UAV7cs0RjXF5a?4J9T9Ln1PBlyK!5-N0t5&UAV7cs0Rnr0 zWHV|nu-}%61PBlyK!5-N0t5&UAV7cs0RnxBqay;YhX4Tr1PBlyK!5-N0t5&UAV6R* zkZeZn1@_xAkpKY#1PBlyK!5-N0t5&UAV8o`adbq$^$;LHfB*pk1PBlyK!5-N0t5)` z1(MCEy}*83CK4b(fB*pk1PBlyK!5-N0t5*3DUOZ^xE=xo2oNAZfB*pk1PBlyK!5;& zy+E=VwHMfL%R~YM2oNAZfB*pk1PBlyK!5;&KE=@y0oOx-009C72oNAZfB*pk1PBly zuop-+qxJ&(ZJ9`b009C72oNAZfB*pk1PBly(5E;$BH(%m5FkK+009C72oNAZfB*pk z1oi^SX4GC_zbz995FkK+009C72oNAZfB*pk1o{+5M+96C0RjXF5FkK+009C72oNAZ zfWTfL*^Jr??6+ki0RjXF5FkK+009C72oNAZfIy$(=!k&pAwYlt0RjXF5FkK+009C7 o2oTr{B%4utf&I2jBtU=w0RjXF5FkK+009C72oUH~932t(1%W*^H~;_u diff --git a/win32/colors.h b/win32/colors.h deleted file mode 100644 index 66053d0b..00000000 --- a/win32/colors.h +++ /dev/null @@ -1,5 +0,0 @@ -#define BGCOLOR RGB(0,0,0) -#define TEXTCOLOR RGB(175,175,175) -#define TEXTBGCOLOR RGB(0,0,0) -#define LOGOCOLOR RGB(175,175,175) - diff --git a/win32/credits.bmp b/win32/credits.bmp deleted file mode 100644 index 879c56e88ab4b93aafbadf1b8077bc9595fbf1a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319232 zcmeF42Y?*KvG)%YF6W$cR5*pxDW7uAIp>@sl0XsyAw9jh5kGmqV?;`9g!R9b!Ou+dXCz=GU?gB9U?dQp1PqphCqGl$NWe(I zNWe&7=1hYn<|!}|FcL5lFcJt?0tQRMm7u9_Bw!?9Bw!?9u*5tAMgm3xMgm3x;Yz?@ zNw^X;^^F9K1dIfX1Pqp#XTV6nNWe(INFZDZ7%T}_f~LNafRTWafRTW~67vig2^a|& z2^a~4D*=Ng;Y!fdHxe)sFcL5lFj!)q0V4q;0V4q;fp8^Yuq0dwn)*fpMgm3xMgj&) z%rjslU?gB9U?dQ(1PqphD?wA=NWe(INWe(IV2ODKj0B7Xj0B7X!j*u*l5izx>Kh3d z2^a|&2^cIf&w!DDk${nakwCZ-Fjx|<1WkP-0V4q;0V4r}CFU705-<`l5-<`7R{{o0 z!j+(@ZzNzOU?gB9V6enI14aTy0!9Kx0^v%)U`eEt^^F0geyT)-$=kn zz(~MIz+j1a28;xZ1dIfX1j3bo!IE$#XzCjY7zr2&7zr3GG0%XJfRTWafRRAB5-?a2 zt^`eeBLO1;BLO1;gC*t}FcL5lFcL5l2v-6IOTv|)sc$4;Bw!?9Bw(<_JOf4oMgm3x zMgrkVz+g$Z5;XOV1dIfX1dId>mY8S2NWe(INWe%STnQK~30H!qzL9{DfRTWafWZ>; z3>XO*2^a|&34|*FgC*fg(9|~)FcL5lFcL6WVx9pb0V4q;0V9EMC19{5TnU=`Mgm3x zMgm3x21`zrXJFT^UH|ug|M$ovk8r_Xe);7e|M*7|9FoZ?eRj!`CFH#K-g}(A?6S*r zmAmi0n>2r%qOeP9oQ0<@Kt&2j6@Hx!k%j|>bpa{-gCG2W>h#Lls54D@^JgSrByikH zz+lO7du!UbV;U_E9y};Yf5V0i-dG|^A9N9&{;h9)i$0MlIHdb0XUUfwT`P1f5dZ^D z;NZj$XIeLB5=H_>0>_~Q43->+H|3~wNn?qqc;Mv58*dDTC7=aoDI<0aC_>ub9P#fc zWxx^&0|N$2{N-bEj08?r2^cInS?{d-x-^!&{`%`c1%Dt!Ff0KK_`?&0#Q-C5KuMUE&g{IW!VDfh1tC|rZRoUub^TE9wCOP+Z= z#?l0bq;UT!)L*7#T`f-*w4JIzB$x8@B z&Po*u$g3rV#bl8en8Fm(1p;CT1!zk+Xojvv&Ed%>0q(opdi}{F&mIq|JbOH2gQJ>iEosb^PLd@;MGM&V2{)#le$i+Nfr3Gl)k*Q@@8_D1b-yp!>bDi z{dx;$PVsKbTTLsx?c|Vvzq2`$K3OFo&m<2C7buSbPl$Z<$fG6SH$1EIs?Yd8&D|Xij5^WXgl>{Bn|Kl2)AWg??Gc*Bo4FXU9&Fw84^7q`hOmYM#zzlRcRro4$Ua(*Z-~pEK=>w2ZMq`Py zIcWuk&hIK`T3VOS9VdP`)6S+(k+i{*Q{+aQ%QO-=ktE<$?xfNCU;uxj!MPHhi3S$~ zMX-c?33v$7=xY`%5tt#9DsY1>IZ}ok(vk@iGUbpQ63(>75^X9`M%(42T`(s6Px@bj zB`5tYHWz3laNSg-`1;!4FdAuI+@+aP5U0CY6oY!J%@GA_RP6^U55ofe^DNsyC z(KvH-^pd6}VkvCJv7njjKAVJ*fRVuQDFK5e$LD=%`(C-QL{zr8dih0nQ$S~igC*1j znSc$hL0rsmCat5L8logv3bb&FD&$KC1VZGj|3rbd7meX)Bw!>Ewge28ge}4ogn<)F zMBSslQQ~wT8-g?mQTOQdaIgey0GR|2oU##|5H}b6o$We{Ng5y#g!AX)U)bar2^a|+ za|swMIp(*ZojM>`B3fR|1+At<%L5@YFdual;yc4Rb#uCxg;)BvxK!gL0FF_8CCAy3U zmT0{%379zT5(%P!F2Vr}qeUP@P)gfFWYQM-0%owHq=q`(Ns}-VFcLU!C19}RxV<%P z+%eJSsB8fYr=}(?7J!sN(TiPzawmb~%L7X^A02zA3fu&TU?of_20~DVt8!(6Jpv)% zkR*hspi3J|!LTzDFcLUA5-?bDbmV&caTPqkgCv1&R6IGlo7%I41}9&zM6@};&>}2> zC*`RNcu-gHg9I%~bAl@Z7~qE(G<3jumQ2b^UCB4UMgm3x$Fl?smK@J_r!D&?cpxfU zKL1hH5_@m9nU-QnvkXlEBLO3UlS~2zOHQ&I8uW6USVAF*YG5ve0w)Gbf{N9gFcL5l zuq0rx#5@Q_0!9Kx0!9MiO2A-AxDpIjf6mRfF8I^u^PW*7m&~7$fRVsSDFO4E>)UFu zM2n)06XqdnV}TlWMgqs51k7u$?}@<@Es8cyn1`%w1uA2XiQKd;+cx3Gm^215F!-%a zxEUrVkOa(Yu5VVmV9DaeczYIn@G-5<-nXCh{I}jw>BARjFVL*D>*oLTRXL@~eDJZ9 zpL^FmWOBnOuQLDi`K;|bNb^ft%5bRvgr_>?qj@j9ELEfoX>#POI<NkW48r z-Jra5RkKxPtiDl9mywDzVK?`|$8)Z{+HPy{Vtil16H(A-^5u%)to!5aD*QEPU4VqN zf|Q(@CuN#J#xle4IJ`Pg1T0~E^Ksa>_Un>)%`J^|G+y)eyNO}6)ZSPkx(_vq5_e*W z*6*TW`6Y+z3Li^^A^4=Ew0JSPTQ@;MP)!7Ap91q1FP0qLTU|vIx)V$M%glY~QL6jr z!$i8_f3d)Z8%uaIefZ>RUHaziVJKK4W3gm1hyImG9x|qjOqpe(r+UzYOf=EuB_ZG7 zdIkw9o_zSr#1WYkB5Cp|CdLE<#-t>fBskQwSZGMh4%D&q)1{XsQ+i8b67&H+dj1NT z0k49Jl#v#x!XG95d*aG;Nb6|;n_|0psUtSWee$7vahpN4? zM5}Vp+leKjokdfNs+Fj9>#)Qb@wT~H$V8*uQRi8Glf+;W^)21tlZvN6l}u1UfB|k~f+eD4`Q;CW{Grp~NrL7mAjQZeNBZN!63v;C z!dwc_Rce6^!LC9#Do7((qBC_*bU%d^#ia96i`Jbz^zSog=@0o-Cw+?kIk3dM=Ev$a zKZeg)gZjnAxq zFIrW9Yx4-AH&MQ#XHm+?MU=bfP_Y2SO(dFE5W*=w7f(4Q6{#ZJTzXs>N|&?~jLrna z66sZ&V+j}Ne??jp0ybQl^GaKq4u}&l5zUTbB`u25X_rW*xU&Q~q+L^7#$eXY%FRH3wb(6iWE8#JuLgu%sPc^JDnDwJVm0azuAaLNvR^5-kNJj`j?O zB~o6>vLzqTIPe>=&*VEhpbMW`2_Kf2*Zdg1=Ev}nYga6>zx|0zTRL67 z?rm(aa-0?e_XD~3+a=C2f;Ud_1+Yta#C<+48$TRwEBI5LKERe~SQQ~rRm9(H2h4r5xmRyC-444od?Xo#2DfyzxMP>V!p_sU# z(7(c5Y6)8S`?$1fM)Pu3YSDzKa%}{NUgoT{i#pc*abbyQYH7}CZD@NX*j3Ove>5ch z*I44}3GLDiN&-=^;;aZk+Lex3ob26;U45pyK&JFiM0Cpi`mn^j=JNH4c5=SI;k@Q2 z#Iw|{Sb}7=_80xGa(pwxMJJ3BYmK-Qv&)j z={(#5_L=I`r6Cfh?w=1!?5Elign7-8M)M zwcc-&R$N%pCOnTe6H&)bE$QE4vt$BY{|2DxA>4U#s7S|SMoh=4T2fPYO z9z87K!eI`g1nkeLlIg$_^O~P3H{Efa?Sdta_Ds@9z(~MIz)0ZalYqgJlkc9ID>4!= z5-<{IZwVMIX>W;}_KXCK1dIeuJ_#5sIr;9XxgsM0BLO3U_LhLblJ=IkY0pT&NWe(o zjfI@)ebHl|wKntxT5HejZ!m7ryUo^UZx_xZHbPCNbd(>iqM(6K|ujvYJk7umUUWMpJibX0V7 zbWBW4Y+P(ye0)NDd}2aEQeskaQgTX4N@`kaT3UKWMn-04W>!{qPEK}iZf;&)UO_=Y zVPRo$QE^F0NoiSWMR|EeMMYIrRZUHGmo8npb?w%@d-oo-J$m)(*}HeIK7H!?*4Ovz z*SCNF{sRXN8a#M#!;m3EhYlS+eAtK)BS(!MJ!Z_9apT5Km@r}D#EDZTPo6q;+Vttu z0fSkyXU~~4ciz1D3l=O`v}obtC5x9XUAkiVid8FDtzNx)?b@~L*RS8WapR^YcJDds%rp1y-MfGP{<9ApIQQIh4jw%3{PPbTzTohM7hZVD#TQ?C z>7`d(e)*MGUU~J^S6zGUwbxyL{S7zXc=OFS-EzyVU;El^x8HvIop;`G*Ii%##y9T1 z=bn4+yYIdS9(drv2ai1b@WYQj^5|oaJ@&*CPdxS1Q%^tr%(Krv`^|5DlLhp?^PTTJ z|NQq}c;SVYUVQ2M-+%e#AN=4)Kl;&+fBfU0{`99md*zj%|NQ5#zV;dm%DwUCn{WN% z7jOOYmv6uQt9Rac=hyH4`ZvG%&3o^^_x=a(|Ms`P{ph0)fA_oJef;~6fB*a6|KSgx zu=?DeKK;{YpMLu1&;IgBQ2P1H<&BpVjuc?p<`3hU=B|wd)Sxt`` z>$W=8VumfQ(CV()6qEG5XmQc_ZKvV|q7sp&o}$e^yt~ESMT1v>ufCP*M9(5GH~#q!9#2;89rjfh|!})36_i>KVjmeiIWwUOa)73 zu)&?ek~#C|%~M#iaM9u=OO`HMx_rg*l};?#uwnD&&0Du@*|u%lj-5MpopHwQ-FwdT zVab652hKV7ob%2*?+{pW_<{>By6ECdF23y2%Pt2?uDJ55tFON1+H0@B{<<4(xbdc& zz>-^T``XuTzx}p5@3`~pU%%@cci(+)BbGe)&_fSB@~B|R<4->I)HBaKEm-pHZ-4tc z-~G<_o_`)JdGW;;Uw--fEXw!8AO6t7lArwSXBL*c`sy36zy9W%Z~o$~U;I*G$=mPz z%7-QIz4yTfAAltveyFhI_rL%6lTUvC$shipu;fple)idCfBy5I|MC~G5;pvK6Vy! zrUMr6Yebi7vjlwz*p0>pnmOHAT^H1eMkdX+;w);V12XX|)dm^5A)ROuQ&%n5q0Opk zt{gSZ3)*JDVgWOQvhbbouVvXKfXV3{m0{AUQ)h)G$}WjgXcB8-Nqk&fLPA1fVxom5 zNth+rCF$vD8R?c?l5N{1`T6-Sy96w$sHm)}tg5cAQCQNgtFlXah+WdVuCA_L*(Lo3 zD7$1JcFB+-4VGOpeB_7`qehP!YuP2^CyWP6rc9YUb;=a6OJ>iSJ$KHWd4eUDU9xQ1 zG7C#qI_#1Sn=CBZzHQr1%P!fyd$)xpXYJd+|G?SUCFlCET2wg>#w`+#v5+9>86{(lCLQ&vFwtsfBo*ezu~h>?tk#egAYH1UGm7|$}V~Qsi&TN z`kAMnd-l0+KKIRUf9qS{1xvoCu*9-U1WRnYDKKl4$u;ddTmMAb0Ecv_OHMS;t@#qowCByhK5PBsU9y>GLO2}`e^oc+`h3so zKSxsM9lwbty=`(3xX*!$1kSZNc%Ae*=jcF)#T+$)CH*<+91`N=64OMSTtG>b8%var z3o!9v2|lhgg(VpoS<1zwu_Uh`UwmARc8U17Tv*bxCqAy;__)B5zJ0~VrLd%-p%F{8 zT`~c?WTLi9rp=r&bJna`*d;zJS+scZ66NDsv3%7^8%x%Sk8AU$EtXx<6ibwk>%iG( zpL-5Iu7igToqzbS@^SgF1iR!4hmQ*^QFe)Pa@}@2cFA3qUE;%%2fz|#mpt-_@^L-> z#FI}wsqGScTo#sm?}g`|f9b^+zyEzFmSC4CEP3tKS6_ca`M7>zVacz=$MtK=#|4&H zcF9LREKxqLPsA?q`MCb_7YCNK;N@-ln(N0Q*b~$e&MqG633FwIcId3-Ob4vpYyqhi zVzGct_-A@^Q)e9|97%spc1|c|f>w5(2+qhp6TARyJWo2CX_9uc1btvl3EK(diAO6W7#ErExTmE;K74zEE#6oB|ab5_(|HwHEr6A88c?ho;7E# zjU@{gEn2d8$+D&5;{r=o>3GTJO`ErD#mBW>;w3)2WbeLx$}Yjjb?`i}MESTb!pCLX zCB#cCEV<^|>#n>024$BhEb-YT%E#rfOCC6Karn4wyTpMd z$}qvl)dWkLe~3aX;rFmK$*}yhO>#nH+gveko^sZ|j4Q`=7_iMy$^@*~x=d-#)u?^w z%5^p1IO|BZM5Q>ZxtIq(^r|H1yh>PntpWi{IWwK<;N1!JjOL~jA=Z@gEv*%dc_@5B zDHDvpf4)CA{~Z5Xl0!+ST}Wmqbpw`B@eJHD=bTq^c{FR}Og zm5jJ6@t6i)IVD3%HM) za13}-Wd=Oaq-rw<%`$KmXgq98HEF`mZVKV9vaZ7>^&JO|#TrwN(;+7P>e?BueAi)U z%tNhYl?%0S%bO09bC}gb>u<}RRq2x5v8MfNdeqo>^Z89naCEwY5(v9QjpK60O9V@Z zm&7X{7qR!m)U6O5$%vZ5@>=I({jN<}JR;^yO z1}s^(Zo`I+*d>hPB3|Odl3fJfn~viWyQI;_MeyAk$91(2OC zzcr5Qp@$!~eO!#=vh5OU9M`vPEP3Gtu!M13-)9_`9ecO!l2>fI#KMxdereey?^t$; zGhQO&xGXHO?2E2x@HDm6K<`3B0OgmnbZ`|A8Y99?|iV$9=JP-ozIe$?&UlIVxL$enHRa=ycnLl( zdmNYL<0AMjV}i9^qK0vOVvPy@lNB!sY?pXHbdKlJqoBvBW*iNxN)67g}3w&s_N2TQEjyFHG}<>LZN96qj9 zGQVWqMr(e_7Uq{U+9hDgp1o(CwQt|Pv(G;J92I*%&x)6bU2+lgOBly>g&Gr#k4s^R zj+fl}wOenyjWNM$eu={_!N+A|2>}!4mpu98Q;g$MSn`}bzeM@ClwG3YCE70e$xnXr z%Fomc6R}I)c*Bal3zk@R2~Mu}m|^n18WXHy?;m~i@$WwVMESUM?45AQXMbUa$>)EG z_`%`5Co8>tc<;;SLuUzn|NOHW>Cl-kIq1bhXTErz(4H61+w+3Z!96b=-1Gdw-I~64 z?rtCL`tG?FowMt^=j{59qBEdxLkDd7)`6Xh&ffV=n|6Hj>>bbTx9QpaJD%OY{n>rn zpJ}9RPw%zqslD5tI%_NRq>r9BbBoa9XKs0X548C)A3eHz^P{^rL61PYpp6d;ow4yD zMH?Q3b}BlubG@P+>mRUb-Tm7Y-KS{necRUFYtx#0wkrCDqSfEnvifd|?%J~YuFb2U zuUmBIrjY+QNA#uc{QT^;RnSPNVI?%8VTGc>%ZDpkHhj>sVS|<`8n|SrqQ%gV0gEhJIHdo=hW-mInm@Ro z(7Zu?p}Ek&`Z*TO9#B7fK%ZGq|2{MO*FiJ-LA|F#eS1$+)N5+JP|qoS6irstV^W=> ziFLITd)H1-)O~y}MdP5J-Np*_=sL!t(Y0Mi*LE3Y(a7#K&-0>skd3 z?V@N%m&zeEl?{q221C_~23402swy97(SXV_sK27p{uQPDEb3cc0@Xuh#eIBKS6T%1 zhDwThl@to~EG~e0Kt%<$MfpPA3-h}d=5>P#^13R@g}US`s>#o($x~FVD7z}xrplZw zsKTQ1>`bAu?98&Pj8dV@jFQZBq2i46;*7K+q4c!E^i-$-N`q4Jg;G=U6eUBsDT;DZ zk`yH;W!sdPm1I+9QbJ~8LWYmh6XVkp6r~Bp$EErxB`#JdIWAUFYz&m-qr{kKp@f)d zMbXjm(NQ)rfEbAikQ_%blH(Idj(02pFo=5-uO_5S9Qf;- zRuTjzl1z-67&vB%3r-A>7$9j+AdyHrzb9<4-2h2*!FB^A5@`<Dp>JkW}VoAH7jq$E`&I zkQ~2QqJacMgi)Rhon-tXV-PXJ86U|YPDY(FE>^>d0TKfwVFHO7`y2A`Ut^J+{KJ0@ zkc489SSSLJ#6)&J9>;Mxf#l-Fvl(B{D0Rk$Gpw62;EY3O>^ugFhLe{LF@wa+BQf(x zT0f7(0EwAL(qtZq0g@I1$?=FK8c3KT$6Pajg!xU(5@J>klWUlO!wjHdU8|XXC2+!& zJ*Eo2bl#a}LgGn0A@TB~IU%tXK(fcgNa|1C35fnw z2*Hf%)UiW!=T6MhWCrQbu2sOvxpSv6x%#o)z{wfF3Dq0PF|C~`?q+8D@iVjCn%3Te zne8V5kf>?x$HmNc-?a8qW7L+O)=nbSne7HhS_LH0osTCUmp_oO^a4OqKWJIE>bi~{ z*bQ3k2p!c)!3paSC^#85h*d6Fr~^1*{SrnG+gQ?eKw_~w)(22v$u>IxU!+H zva~BZ9H>nWoN&^`h7%TjVp%F1P7IK!<+hH;wYCh97$9l$wYK_ImiCkNwaQDx_~=zy zWMPJHvPhA&pjOjmwd}>USY=D$N1io;RZ$0=#478gOBIXO;qtcOnvCcTaKeWTY6V7FgwguVRfmOY zLB?)sO-4CoWm*e0TA3<8ltmklZyB&S}CW0ACxMdAaJ ziqgISiJ(Ynk@8j*6#yaNfxTpJzFMr;CTq!FE1grFE19yOZ?>%L%WoG}`OVMilE-qt zaLDOWAc?@M|272@d+A?3ZQEq^->~PA90MSUI_6m71QJGVX&||1;Vc0XCzb?+la%<_ ziX5>{2C_CdtC|a(Jb#eY<6F6mys=1(MIy_{+iS?TeAJd$BnC(r!SB6{JYzCjvW$Ea zAYsvXoLa;}dMHCAPig-lrlW+W}$kHi3p0TKfw?Xw?Am_R~Yoe(;<2tF&e3;{yG33dcwBM`O! zhqd#EZ2lp;fbdJEy){Ti8ry`FWT;(3O0ysZIaF8Z0R>v)nSku~1yp65e zGe%4e09KoSf~1Wt+z%AKKjhAW75qT%GB zT^m_u_Tj0pxj{E30W4gw^;4cpnd{h06B zezLf>7I^R3-rAY%YSfmoNREa@GUcc(kQ z?T*!d+h^3)(RXdNDUcjpEK!>w9y*J`RG0#+ae`hZfWaE_jI(0Vcp0_DqK(eszfK6z zX%8#`U4WB{(ysn+V$VC7J@uwFOYYyXj%B+ZKXc3Ddu)30%q>st-KsX%+P@Rbu#6IZ z&mgVI014~Uu%-YLcWzy`>=s2!A!1QCuU&Ezv}VbTiWWmRtX6dW>P6SDVsR9qh3pgn zU9f1hSw@}-iOeG@&Mb7|0SEzL2!4d}D;NX7 zY}9w(9s&Fad9toquuUS4v!$!b_H)S|x^E`(-YAhclS z1q)^zUO4mcf|=)&XwD)b(tbc_)?{|Rf%eaw1nq-nOx$bHS<_Xb)vm3r6Gv^GFiOJg zfQQhgaU&oLLWYAMCn%6i?$dJ;R9DN;N@zmw?h|@-9}o5JKF&(;JFaK9u@-p)$?$G9 zmMu~}v|Z%#uHoM;Q|uIePw_&iZa#6F(G0t3=gx1ilwIkND#4o z3>|_oc+V82robF$T9A1pCnS&@6)cfmbQ z!1KrS)L=0ZC#W=wCBTXQG)AUP||i47qNJT6!OTFl^qIe*@aL-VGcH*eaZdDG9EJDmidAfyk?w@4)djM`$k z&vWKZWoY=>772I&7>=1D<9AQ9XzKXgkWNnkjZX9WX^mgWO0u$3kfV$vHuT?$UH zMFdflQDV(mIn{uqlb%Q7jFI5l0!4({K3;-Rg0tw+-J8%#d{m;rvESzo>^rS*FGl^2 zuI<8uMF0)|V<p)S1PIy zeGQy^>ulxkI;uc|t4*PZg&+3rRgKn$V8hybwyyog76lB-nDAK-r0<5dtmf>!+tz@8 z7K&IvVxb5H?%1S20)LdH`Yor^D(!Syi1!H}6kaJTGh9_zX21;PZ`-&6x;+q(;McN@ zIpxK|b9L>?1y`+@f5ozSgg1zFL6*D(C^Cm90pkN}1I#!$cPi_39+)*nSrQiQn@M64X)^gD;Vi_C1A;C9j78JP zQ9v?Bm7y?q7PA8g0WAa)woe8OMgsh3el3qyv#zbBK!}AR3mf_` z7~EfWWuG&!9-2L{4>-YNtP)nvoI!orhQ!{91PHNE1k7;2MlS)6>3w@m^8v}!zJemQ z6*8e$Ej9-RhoHr%9_p2`sAgn$sEb7^K_)r;s@F;mtsFrSCxi^b;IPnQKxMf_%I2^= zSCysxD7i zD`6#S9RuQ)^`gg>LkYLiEo+ye`Y|T%+N?Ic#|put1*qW8x@+@lAO}=H?_)Y(5TLcM zP-i`Kx8?A#tz%3Yn0m0sd7c88G z(SUJqp3>&ZTwt3^{7#q@7cZIxFi0zu2RW`3;) zBNle(LWMELDK`|h1?IBg#HMkou##e*Le`E^;f<9ehY-?G!Hi*pAe251)g=~T zc3Wgw5-JTI4B#va$1NK+n7tARgiu!nMHJWsj*%#CLkFt3dP5_G%U)Vv0X&d1(=t9Rbg``vAcPONsYKDOKsq)DFC(N5>wD^r5hZhCU9B=fEC>;hz_u9H ztqMo6LWQoCOx{xNDdnV637M=uylXYcK}kS`w+X@)A(JZjuawPERjx3@hX+7HeR(mT zl6}h5h%8ytS0^}>vlQ!FZY_~gULsgho^5-#aBaQ+{)a8KIYKOtX(Ct>*(r-*UCK03 zLxj^rX{Z2+nniCc5;bbe1te?;()M-uhsRA~7a9BQb%wth@t!U7~i;%TMpy)(${| z3+w*v>n)d*3RbIkU(8(p~nd`pzBfe>g!&8;PW{@88t1M7rl?t$DTmfp&Z=ycKY1l87$8HV~+PNeZ8Skemn0Cd?iZ9F!|{+a5!&c&l; zSt+xwQhyAQR|k)pbP~?meHWY;9@{D#>N$d zDEwG5Y!L1yZ77H}fblIhfwC18`Rs-P%2vP`g;lYjp&#(Dc!&ZX1ueq|uYl--BiIh! zfJxe&1zT7F6#xSmz&kaeP6aSf{VI&nyOtdA0BitMru&>%sxZhw;ocTV;HT=i`&tOA0rXf9OIMRTP&LPAWWC1V4rev?!03!Wd9zaCIdC4^RYD03ocE zPSj#2Jxf^TU9I;{pwvh9+V5ocDk-20lMw4li~CrRLyW}2m6GH*+bAJy?g0!qz8JLy z-n29(FFdI$SP~PNo|%}CqXu-Ts0mo2;v($=B$-KxnMnz>j)D?OPmE7bP=uo;Eupm& z5?eWHt9jQJIu;-~Dp*f^X^@Ta_ijhd-+PTE5&dBbLp(bje&k>iM)+-X04K#9hM&I69gSe{2iX zI#tm1#6k#)fFc+Z01S2pC;~{}ARQX4GF6@#D>#gcA4d&e_W%GcBZ^@cf>Kv6 zUx3-6>>lOyQmEzx5}aCejCPR^-2gMN6>t;DXTGK4)kpp2@uO%62NCT8DwHIu!Bt$c zcorZH5W+;014tC+fdu%kh*BukKYk=bn{Wi7tWmWnTyBjJ-}Tn#d;`Ehi(C{JxM#X* zPWir6Xhb>01V{*P5YNC0;R&P`9Oe(|tDHiX&qsv~`q$zA;gHO^J{2z${jgIZOaVot z8&n5q9TP!CEQYGX`GfmY%d!vDhd(OYiZm$24WXtdTJZ){HVMMlsBEzVh)+-pn3+4M z9$X>vu>{V;1}e+O0yfLav4LcPGDj4OU~_;IumuTlJ&DmkKwDV=-Kv$Bi5N!DZr}lB zrud8x+9g^}J_D;L17SUk>RvP2Dm=cI9aP8JtJwCSSeN156b$gr0vIft$gAPp1%!p% zS%}wC^yvB`&RYJcG9nz<9}*6sIteg_fCpzm5w%!Wu`Ic$*2`kmMT=NSQ6;)Mf7RN( zYVG&hq5>eNcZot2u*9-jN<_u;>k%g5ln!`Ec@6;;ok@V5LjWTf6M#xL6c?SIlafT7 z96t(JQev&MaTne75{7S~G5PT1H6Bn^UYL=V5EBy{9TgiL9UB#ul8`W= zPmf{!Ms1q8q&O#U*Yf#?4jtOHeBq#8{ddn>?hhp7goq_G1~hbztE}rgq_C_5n7`HPc8d@Lv|zNt~xe60fsXkIkF!l&i)8G@yPC>EmNOe2j& z!dPBl0CNNn(!Lp!;B4voq3WxA=s@%=U**ukAxayPNz4F$5umbbs#5V-MIfT`df{7B z(UiHDD=(R{NNDsz+seTlnTVYMXF!4;axZZG6CcKVgZ}loWqRP#M-ij?DZq7cfeg3B ze+39Bt7w)Qoke2zv2B2jcPM?f8xT%@F|w(M_VV18C6?fl~YzEFhFF3wHTyPN?;@4sn7VRR&>3#dx7In!;Z0xOOC5iaxg51=in*37qtf>2u z-PD&m%2#5@I-vkSeez>r)DEcZQj%H5g==m}v4sU`MOC@QHTgv)Sw-oIh0&3=D<-;g zetKd-mwfxHjd3SXo(9o{cwMAuJ3rgslav7B=rQEN)l+QaN847!R z!E@{tN)|GfHL(ExanVht0m{X8?vxuFm75%wlbMuVl)=)6YFQCL0=Iy*TovndhlR?9L1EyOZGFCUx~()p@fJ6Pg@CE7hj zhdX!5ij7QXXs^Cgu7n34Fb1TN@+t9Y4B^EtA!I@XUSWv=65psT?b-rGgxWq{f?dMP z@W2BP2uK9{z4g{xQT-()C4c|>-*tg0lg8&~m-w3|pi+dFg-joP^ifPq zH2kl+>MG6LnYi!1`v~47#>6ldfVY|te`3oF!zG+fq}@B%-U=X*v0M242(}YrUpj1b zzlyrjtePIh-N*E(pIYB!S&%~7z zA5&13Th2!=x)05W)k1&)<`^hA+_1XvcM%#Ph$5kT4J1?R2gF1My<}G_9A+dHHPlq& zmLaOlGluPjpACQ4b~XNr0Lkc?{RgHx0MDO;D<`URzShoi3YbZX^-)|wUTRU-f-($( ztfa;PsV*kohwv9liOWaH)|d1BuIvMh11tlaU|1g5A6OxTQn)WNQj44^eR}n)sHw;) zOH1$)QBo|68|H&3#1$;WDzD5b;SyZE0wHo!a33k9kKI5AFhszfn!GaC9CBC1fQOwr z=BC5}DryEFK}UR3f+*R^?sfxK50(krj3i~Rz!UeEGJWu>l@wNnfF-~~K(>HNWali` zDQ_&%u#^~+Ay~qE5oMPcAPEj6xP00eOBfK$uv(sJZ!Ez~!Dv9;W3^~4|KNj1l4GN8 zTC>yzC!t^otoEL@M_4`o{PP^bA5hWEor!0keU{h_7A4<4cut7oGGK}69nUch-gDGe z>wp9-VIB$N#5Rtf6x|Zl>3RVMRrkcvgl|gX+XOsDcJJ#d6Ure9w4tUO%8NlnggTUU zGH==?i@+yqEbj_sk$^5ETF$&Qt88TVZus{FtMFW5G~j)*V)E0ii6b)s609*A9az;X zl-|0^U|{twt-zDRjYIhowO%)7xQxOY(xo*FUHk(cBC&w^t;p=yA+I>2fKPbB41~Bb zfW+9su#?~oQTpLsYYWr83^iA~fI&%S9!?>?-}S&*R~b3PRw&OY5I7+&Qk5IjbPHJB zKQlQlt2jd~(vBq&8|5}c{L6=ulb)zHAQ97~r)Bhnf+e@#eqS&+@o&^SfZvEEu^HBC zkE~9gF00d9h=K*zmJv7J^+00d+x?a81{FgZe4!Wa21z5^e!Mh-%=BB9YhBV@4n7(yKpzQ+t_7 zlS5ZsYaF5L`&Cr)txdQaMUO2-IE0`G;|M?$f+&QAR*f1_n9=BwYenaKl>jH*h+FU# zPt=+idu>ryEe*QFOlA*((0Q~8?dmEaCXk_12sA+s!a<9Pi1ct(5>C&%i+^zjmP8RN z72^29A4TK_e-{`$Yd~Fnc^6k2u&dll1bh%ur2ss%>N9N&@sxK?4 z%4@W=h)#1M+)()ICiJ}~!R3%o2e>Gg+*sW`CnYm0Ia{|v8769IQD{EG1U@uGb1rhS zEzizkCHd|Jd2E$PZ+jNomN$1+a|@P`R$$Jx>n@R?S0X?}7p$)2Q&%b`#bz=l7^B1j zkCx7CR|^j}JG1?y0TM=6wV7QaK*H<_21N0_f8@v!mj-to4jnQCjo+_t-+%t|pZe64 zN#iPuySEfe`qz$*h=_;VO*h^2$3J{hSXdYx9sSyCuW7cf#HP)gQ>;CZF{SZ_qwg+X zI){)r1_W*{u*82JNft>|K&c+?P&FNaP&<$T=rThUO{o2bCz zp~E_MX#7&9db6*GaN{-Bsy{BOfS@kA7=IMg@fhZ-oKe;~B~BoLxxZ3y_Kh@(L-&wt z1gQF!SK;qcrq755hFvj!?9AyCW#y8E4MW23d`x6MLs7*#p_QJ+jry0KG}~d_f0PU5 z^&tsv0aDUL0j=Y}Cuhk}(oSwjNe?JOO6c^8oB|wE1jd0AW(X4h$6l0&M1JWTjZ!h# z{dL~ZsLpnHfLqM7%8OeVeb&(=HIlg)oeoZ z%t%xl=n}UVEWyncQUU07=Kw+XzbpNKm+}{zPz?udO-5hkW(-zkT)h|M~K-|NUQ|fBNxoi9HB>|5V_HaRgiI=K`8IRE@ZTGwBG*(JEST7)HWX+3-QsJ`mT%M%lm z7^78LRSnM(BZh09{)x0S6?>11iozMn+6?#>7|cq@gupn1cc0$3-8CUGOdtVEc1^R5 z5)@O59&33kcz@(YEz2fa&|lK>i?Y*iPACbqo7O4miN%aoVjvbXY=}1~>tXhk+|&xq zzeRe%sn^g`gQ}{56R-;FglIgWeh_6s?vk4y-gXiI6js@`+b70dPzYoL#kvv36*L7DGft=M5E}y;T^ZBEA7+Uc_3Pa}|*UwDArbEos&pB~^9e!sT3Rse#W=CRLaf?H2T^G~$C^t2| zI9<83RN&nJiEkcBKpt&? zya^Oxu3|*$kh0R^=bnAy?YCb2!AswH^pPV^Kl#Y3ul)G;AHDzCr=MhHW+p^O5ig1C z*pXTB3>{%87b=gjK)?wLh+&-o9=>Vq+rtME99)z843(FyrP@=TZ(drdUXb4C8bS*M z(;E7%2$;}sEIcc7%kk7RnS;B=XxfG@by_L32uP$Mr(R2lDPRzkvQ7r~Th1unF~dgJ z_R-ASr1M1?#lT5IjIDq90u6Y*;b)2#4j)VC35pvVRKqy}Nr}%V8qbj8y3#6<4`)LJ z61g-D5>)qAwOal<(Yi-Si`03?g{MB%x`ghS70*{AgYj`eUGp0UAhgIdX=yijL!}Q4 z1h9d`3cQCLBWVwdgrP&4n076c5TiCDfn;8``i)|4xSAdgF-JQ#(k6zm3Neq{q9zj( zWiyh1Guwk%BmhYpV2KMz_yQ%C*u5~Xv~EE}R9^4;!F?MhmG+#N*K1*Z{f6A$%ZhtU z88Uj-#Ayo#jakrZ$fCT`S^%JH*RF5A{_5k8KN=GiSy9;Y(2^BSI0+Ve&n|4B?hQBC zftd?0I4oEqv)?0wu6kv=6NWjp{AUo<+YWNd7jwS87Zgo2Y!o!CCh2`5*t zn9r&tL^v2944kwHkg$PDx56IsfVNH_X)Mv+q0qlu1HMc8g`rn{D{2_di}f(6uF+^{ z1&~NXC>N~`5@QP(Cda%D_>b>ZcQiU*o?}Ok(Z8+!z78lNXQs%%b@$H6N2h@b?MOjf zgf57~GwxYL2iWM6AtrEzNnP(7r*BOtg+pxGdBp?BB;0w%uBi=mJ-ZCla1szpQnUM)7Uw?o^iyKc5Oir6)IXwQ zrm{;?>PxEn^cy<0s`t3U?h}fbcRY0d;4$-0OYSZ(6B`{vi_Ae0I7#-w2@}U~cCiu( z1{QF_)J2UYq0DT@pb^5UC4@x+kUX+$W0+W?gMsp>Ag7qT$D1S6F-Xl1$#Ew*jvnR+5u;jKgcFTX`O0=;dBCDOXSttoNrTi!Tu zs}-O~6|r?ZI!PIkmHf5>v4ROrUkIGTWUG59K*E?{0TQsJdtsrTv%xv7 zf<6%b5g@_4Wh@d|A|;q>ON^3mv4mwD8AQvXAgsng1Y3aQx@EI~fvwZ$unE9dUw!2t zu5jh7S+fewPL-IvA=#P9oPGbj-wf?p-K*;$ffIi$NzLd_m4?9sh1LK2fB$dAiWTIj zztf^3J4F2O2jBnKKMB_S^>2Uu;>*8&@z1aR=imSO$KEq{a$evhDLz4!Z2~9hjFQCJ z#c)*?sMi2s(SG5gjItp$-8Fwsx!$yv9y;Nq zD5JD0*N(v)jn30;*tWEXEh;ZDVGlLkB5t~{Q@O`QhZ_$Nh3?Twr*G5S6{dR_VuA~C zKBBF242ajmW6)*=B&_zNpu!U$l3)vV^klxzlQa{C2Hz<{e)EY66Fe)G*YUC7}&{Njr* z%FC70sY9n&bUUMzpMLro%DnfR-z*q2xU8@n3wt=RWN6P(OdVM;cY0}Q$!Q%rTz>hb z-~H~l`dY(_2RAfKnluqs2?+^*{No>84RQGOJMYw30;1S^#oKVwQLGb|qhQ4m#;tNu zM|P}dd~^6f0+!4gFhX9EmVUMImhvGlb>-LFS<#k2>1QlW8 zp~rPw9zX&Uu9uQdqI|Qx^1t11Ak)KMz96s#G1NU*)s9aF8;kjR4C}&Y<-LqNQ0n2@0!1KZ zyq_~?j(%84@c!@|H>;a?fnCo!6@$GS!D0x=xT*Sk5*8BaPweD2ZHsJ zT5=&Ry$ezc&K^$@edZQON&jCDq}RQ2)nc?X_<^@v5vx5G=I5r^BbdEKEzMNn<3Xn-Wh@L%oM5{m>NAzsjWEFoCJo>weA!fHz_?RU+x z*-juKU6hu)Xu%w%)Bp3o{+j*Y|Na+iXB{|uKiWSkskE+l-4$0{5fv51;rex}b@|60 zeT1Bp#F#5CJ^#1wzxyBG`dv>v@q{W#bR=0tsXSdhderLbI`Ox^eOX+X z6%pUli6x}7(le=ovx|Y!41^#K&(I*&8RViE-%QxUV?UA*fkgJa8cg11&nQPRpN64~+~=>XJIa zl?J;^7ar>>lJM4juDTv-*V(IJJrQa9-$Xv-wH&;0*VTFFq4$OGAW2~+_A{c_S&?)w z9CBWiu3nH1cql^zVl-DbwSI7JVyulN!TL`V+#_Bn`YBH-k3Bigrg=`JjPo(3-RREg z$#ID+^Dg^esdZD*z>-vjC>E#~i^MsPBp{H4g(W{YyqBf7h%K{@)7RFxC#!=c`{pg^ zUYt9B!J_H27tLS1cHR07XYAUwfB*j7dv?#9Icvy>Nj>|HjEIPh=$MySH5Y{*8xzY2 z=H%jrjxpJrHmv;fr+@n6AAUc6>3@Z=m58yOWH9V>b6F(%@W{rwvNuU&PD4y= zB7u$WUAq?-7nfC3b?H5%uHUfv3zr-`@9^!n-FoMpcdlE%K0ZD{*RAO@p`!bc$gF`8 z(b-d{OlE}@3q}6@?z`_UUc3khiHIB=5j~uLD=I3ovz4a{4_QRwWCAKy8WRVgs))#+ z5m7WdB6CJSAd$?>lvEsCEPTyscPyjJA|IJO?tMh84u*at~Z-_3xY5XW=u(K5v(`A+o8>JfxrqT4bA>VQOO>-r9KQ$lb zAy(v+$3!*iN}Bf2P_U(Lh@GE5cz~KG&sHeYCrqgys2la}yhrOUWgXcmPtTwZ27$Ut zNoGl9PPz0UpqAH2NtuM0+?dF~3sMF9lt#!}`+Kw^_d+XrN(R%FE^flp_3OH``p|hT zjF@6uLuS3Gb(FhRSLQatiH9oJt>>qz)wCFh1%6BG!D?wyr^c(bhrtXgTBPu!DpzHe z=cv^lS)y221-ondLPAe)$?|Z*xl_k%Gyv-=VVba=BBqJLk~9?{IYDD2F_CK5!J{#c zMC=kP+^$?(LTWD$%!^jj_Ya-*;MM@E#A`f|1aWwjJ1Z&z2CT&OkAM7w*aoxW`PXS} zkjA!%>ZHbWK}n@!b8E(z)y>K&?$NPB$Mp2{DO0A7nJ^*u!6%>X#h*QsJ&QnQ*ASmyBX|qxKe31BN4kKhfqhyjyAXkyZag- zvsfNDC)3)$ge^?6S$4ic?QxR94pb5V&rHe`=E3e-u

9ciw`ysFbFrNvgH5;|UpT zZ+{>O7fYVJ;PNLo&+?`xw$6Qc^L$oodHnImT*wjdaNqzn-nXPU@A>b3^Ut6D;fud~ z`d?rC|4yYn6@m|k&>C`x~CPcW?nZb_qgX~n&L zbJ5Xy0WVNXUW)~`m~k)(c4svot$g*=eUA%qVhI&B6K6vAp{}%|Dz~gWySyf!U9f6c zrC*qTZ{CZ?w=O2hA@3wub(c|{?n`3w@ym?mlQaqN$qjhhS8 z#OLW^mm@$0OGQy?3M)3Ya?!^28ntyyfFxWj!Jv8LvU9(@c6+l_T+(CcpnBr%{_0-m z{O5oF^~+zpo{_3nY22}Mr_R@j(W6J6c3MZyKK=C5I@3Gx>@!bcg59{b8RO}i6^k~G zAJsk<2|&U|CS3~b*E`sYq2C-y1XFzS!e~V^xldpA7R1NJ*a3#3F~n}mgz-_G?axwI zTTUSH;IEmxy5u@^G3Seqw^V@2gE{@z{D*a|T|QzkJ}zsAtFi3azM!EYvQzV&52oGx zwF#GumPhOH8w@+S5V^GExWXY_>{TO!fhA1Pm2?2OY8E`4{h_cHU}}OrAloHFXL&6p zY6a|!R?S!;vKKEq%CK=H>rfB^jP>~>gI%?DV`iu1uxVl+I<1v>Y!v&5rDdmN#YN{5y4PZHB@$vXB!`EpMWWU%221GA zsifFM<>pFCvZ5xIr^^6|wLXgYwfOaSZGj@zUqo0wE^&^%dD%J5V#$YB@6XMvIdkQL zJMZAXuitn7kw+hU;+}i&zw(MJ&OLZ&)3)8q*KD3OZ+Y#&X+6g5JS{SL&6?#dkod3v z`n;x!wICIieE+4FIQ!M#|NiNxe|r0^H(q@H+fP6BINP5Pbh-1+J8ru1hO4i<;+m^2 zzxs+xCJi5ynO*H~g*bDrU%8;2fuzl`1mz;H+5Eu+QNe76c;SMX8^(^!NoicDkpgHv ztx9+s^((}wU~Us$KT4wGpnxwhm?39%84_ACNw0!wA9=TR=g0T%NwA9jNLU7c?!dw6 ziH&0iygSc@1arIuQy(7r^k2Hoj#4ZsrnNBn&RVWR=c!QA+zV+XC#5*8g;+vG|JJo? zhM{cguC@fWfP}5!(-Leam48L)t;Q;B0xQ}f+nflTRN($)V@K(5vnHCdOY(D@#S)D@ zY&jJd)wpE6v=Z=__3b5}J01+8LJ_{J44(qRHYPF+Hy5T!4p9?jfB4K1W06>h;sGQK zg>3^Y0Z~GM6Yyr&%01C3rKfd_J&l=(9bzMs%X>|`ta|j>sa4Y|MjzCG)Mxs|Ifdnm zm#<&CeC@U!J1@TY;w!GaYUH?S$t5Gffat9Hipt9I93#pd+ulr<ZM4 z+f4-fXwdxGjD)xa!>E{c-lwdje+6)&c9mxnU+F+FC9bi-!jhblOxrH;@2Xs*76KDH zoR@~2sp2AM0Z9jAs|6^IO^P9zUAEwhQrgwF8#WPn0jJA(YOut}q+c$`-#BIrcVR zR1Br_T2|=yVDfYc&HGR@v_9}_^{QX=CmaaTjcVbSW)%_NCbl6hak%)XJarla$*Uiu(}pD zdaGR5q7Stk*s&|(?`F3_nlw9{>xvy_Q}T|5_SLb%P*OS_`(Y>L`5p^)}AxA{OwCMEiu^NEjQml zfaJ3ObdKFd2q4lNBKC= z_mQR5Y;(lt-IBxZMfPq5!BncY65@znWTaV}uIFH#u+|V;KoUNQ?A*+tEEkqgmrds7 zjs&|M`l2X?%!5gceEpns>}b2W0tSsV2Wi*!8|>Ptr3IKA8 zZ>=OBbQyWyO7ecge_2evQxw$6CcTn;XU{#`t*InxV=J*mLbXWR97{rRcHMj6Fde<& z+RH!vFk2hZ^?_M;#EkYYQVcWo^^Yt9USgo&0Y zcNX*oLY!0F+Z;~r-?9Gw?Q8GZw&w25tMAyjvMSG3Pr+U@{Tfu}+8^n>?fO-5CiH7Y z2$#M2*e_&!Z+oW@58Wgjv|bCQwVe&ME-l?_w)07G1x)Ti@eTIvEf{*|kyTP$PH=V+J7NBLb)Ma#hXfp0q9z!2Ey!il zE#VpLA=iNliZy$?#b2sBNy0zDAIx<}!I*mDJb$!R^9RP~)D0gwZtvc`_uY5jJMX;n z*T4StZ(shE1%WldeCwOfVV7LEe6`aAaiwu>ZJIE8@61Wpty%<-$U-S<4Mzy0L{pnu zCt%6F+t%XUx?|JITh}eC%(Zs|4ECDoPvcRw_Wo4Cw1CEv_-M6X2s?)l?`97YYxe!* zb&~fv9L?)|C;ijXy=FTf8>O~{8s4?KzTC#n&^xa+1qn2o(@z411%omFuIe1ES^8Jj z%jVu%TSa|_e+aUU_gTrR=ml69AgGjlUw}BPB`h*(Z&O(e4HKTvt3IPIKet$Ng>ARR_A6jBVA5;eA;U)Nl(aOT|1VL=;WJU z60AjCMVNbk&}iV%5%^$ixhQ=h$+7D5pYgtuLyOK!)@d!?xadU66E(3-lVod5mx2(V zr>li;~y=>Y-XHMDBE?ovx+RQz4lYWat*L&y)T~ZR1M?33? z3tx-0!h0U9Z|GldO`$uVnS^&fB*m(`B%Rla!$a58JuOlxPoFg(S3;K@Sk-0rfO;J- z@lak^8~z{8!St7w3G?vl%Zj@d+C!u~?w9UTLAr815y|LYSX7o(RG3j*lu^>7xMD>2 zn$fjg`IrzaQ9$B^lV063lkDJmuw)q7nOjo2_KX) zO{{6~c(jy{ONHW(V>k)AXJR`#yIe5PR)@{P37)RQ=O4tL`1{}f`q`(SzV_N{k3II- zb=Ti;_BrP*Te)$<)cJJ{v#JL!>N#N_z>`uvx3Z@DgZF>q(?5N}7Fw*Q@}nR9=+;|r z-LP?EW^QRh>EtsPu30v9)v~E8HqY@IxOMf4Mj*jT07yU)=l+RD2~Lje+`zOFY#_W_ zH?3WI$>O=CS@vATVDE#Dg^uY_*R{YlVuERWl)HX;m{ZoJpj-~UUru?YMIEC=ycH#H zvVPxmTh2tV3(+bdl+JhVlvkE*PqqlX^U@6uY;bBK-DeN}`bu%QjqBMbX zQ^qdpQCaxzuYaZ8Q_jS{|Mk!R_urqt{nqRA=S;^0Nl8k0?X{mf3+VKbBlqLfx_83@ zr|}UmEf&fCnUk+ywdmgMYgtq4nLzux9}PHBSh9T`+cjRkbiw#ugPhNIvnsf*toy=- zp}I=24=dD=E~68?A-sg%q+d~w*Vy@{Y38m(unWilbceIpJro8D7Szu|F9Amcbk@wOK>|YIj?(BVc&`p;DmtF z$l98*Jupo$N)(nj;bd4>`-`O6?*@%?T2_+qkQfryLW_&C!z5D6LvGaaZ!4g`W}Pd8DfNw{#L;_yc)6n{*uleU>( z5)ezs^oEo53%B;{(ry3VGnnqq;=dXmoQe7K=Yb`xF6_*7rY|`EJg_7ncsMh$NVZHI zEkMG++{e${^31+%&+gj}VV4Mrr;FbLLS{7y6_?{*9 zj`1GvGcTL#&Gg{U`y-^^Iu8}2JL6I=`jEPsp)29+($VWYJ#n?`I&>)u$_E2KD(dTE zpUts7?Rb@kFg@f0l)8E%hq_93N`88xJ>1qq-}(1ncd~QGysF&7{*|T7C>)7t(z7dW zE-aEseH4~B;UqD}e*8QdqI;k+-P72h8w#f7slq8;%$4xC=~Q%@)KU>+MMUKKbzq6@ zaHEs1GR{M~B+gihdGwqr$d*f{UAn3}9}}4>b4{}Cxh4uid~;0cGwwyGINjziauT^A8=o`NnG=dgwuxizlxB_S`a-00|KC-2NTU?pIjS4sgOK;Yodl=*N@< zk8d!ywY(2n*Yqi?J!|^JwPVKU>K;mvx~K`QcRYM1`mGB^*Yl=np1K>(L@?dt@5DHI zo!3_sFySg07v1IX(0gHwVlq>bXOIi#lA2NekOS%=O7=x)%_@fs6mAkIX z;>X1B*%fp|x0*57CB3^V6zS7*a#J{|Evk|#-1LA_a%J*}@*Hv%koV)t1E4!238}>s z=&i?T(W$|MK`+I$#IVey32!WMU5m$|Q|!(QNsUv3gTWGp1*MSuh>X*W2zcGXh-rr~z? z)~E8&>o+GqtzzHI$rml0HKMz{P>P4+UcWF@59p@X1zfG@?s@c$Q@r+QG&B*Kf;U;n z`6{~jYon)Ei9L7n=ykqXokicc1eArhTGV~+UetxjI;%$xVfAH^k4Hr?L&FuBdFR>Z92_!ibVO9vgprFcTE1$Z zwM5E+#j9m!6n`tknS({L_5Zhbrq5AbXC8KyK}dikKnvQ@zM_2>l4$K9KoZ*b6(I>B zKoL6zEH*nNV6fxyme@{QleiKmj%RF7%1gYAT~jq*rsm814f9V-WuDWgb#&=X-K|z@ z@u~V%*VR?`-Ma62?z^1#J<)WlyXDQ(!^|1{*XtMH#}~H*MU;GCov42AP9BG?e$xyS z^5)QjD%zZmX$(BGw8WZZaG@AvFaH3S^avb23&Ibk;`TK5zp4B@0WvT@Nxx&c6X#6>Iu3KeupI#P=O_a zA|?5)HaJnHi5I_Ux@M^okemgNHCzM_HfZ;HvJzCw9r#<7}g&|6FeNRqW%Eupl_>X`5p9+mM)>Q`V zj5cy&#brQpv$vDRR&P!X|MB7(CXRd|KyuNnWtRBBI>|m@8H~7#9Q}f=)~oxIK8bgF zPg3#spH2@?)*q3-a$a5El+~8ipK2KL_dBrI(-FASk~7N9sot}i1(+d^cK@DazJ<>6 z>a{p{RY=&0d&Kp#P}d|RFmbBE1W0C&)J`|nsJ*yi?YXi$HDI~uZgR9u^*fQaCSLiX8N@jS_06)dB1>FxeA%9_`ZoE{pRI+Cz|@Zjvjk*>Fm=dj~_jHl%0{)dDPWH zTVUq3iNP0oI%J1Lx*2|Y;{xW$m$xn=-{WLeED2A)*WdnRtnbaKk@wC{l%`lh!90;U zaW2{3idJjXpvi4BWU6QW|Ll=wbqn!dtM|M6C Yl7VW|-QJTA20C&MELREh*1;by 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 diff --git a/win32/icecast.dsp b/win32/icecast.dsp deleted file mode 100644 index a90fcad3..00000000 --- a/win32/icecast.dsp +++ /dev/null @@ -1,392 +0,0 @@ -# Microsoft Developer Studio Project File - Name="icecast" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=icecast - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "icecast.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "icecast.mak" CFG="icecast - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "icecast - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "icecast - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "icecast - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "releaselib_tmp" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../curl/include" /I "..\src" /I "../" /I "../../libxslt/include" /I "../../iconv/include" /I "../../libxml2/include" /I "../../pthreads" /I "../../oggvorbis-win32sdk-1.0.1/include" /I "../../theora/include" /I "../../speex/include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "HAVE_CURL" /D "USE_YP" /D "HAVE_SYS_STAT_H" /D PACKAGE_VERSION=\"2.3.2\" /D "HAVE_LOCALTIME_R" /D "HAVE_OLD_VSNPRINTF" /D "HAVE_THEORA" /D "HAVE_SPEEX" /D "HAVE_AUTH_URL" /D sock_t=SOCKET /D "HAVE_WINSOCK2_H" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ELSEIF "$(CFG)" == "icecast - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "debuglib_tmp" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../curl/include" /I "..\src" /I "../" /I "../../libxslt/include" /I "../../iconv/include" /I "../../libxml2/include" /I "../../pthreads" /I "../../oggvorbis-win32sdk-1.0.1/include" /I "../../theora/include" /I "../../speex/include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "_WIN32" /D "HAVE_CURL" /D "USE_YP" /D "HAVE_SYS_STAT_H" /D PACKAGE_VERSION=\"2.3.2\" /D "HAVE_LOCALTIME_R" /D "HAVE_OLD_VSNPRINTF" /D "HAVE_THEORA" /D "HAVE_SPEEX" /D "HAVE_AUTH_URL" /FD /D /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ENDIF - -# Begin Target - -# Name "icecast - Win32 Release" -# Name "icecast - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\src\admin.c -# End Source File -# Begin Source File - -SOURCE=..\src\auth.c -# End Source File -# Begin Source File - -SOURCE=..\src\auth_htpasswd.c -# End Source File -# Begin Source File - -SOURCE=..\src\auth_url.c -# End Source File -# Begin Source File - -SOURCE=..\src\avl\avl.c -# End Source File -# Begin Source File - -SOURCE=..\src\cfgfile.c -# End Source File -# Begin Source File - -SOURCE=..\src\client.c -# End Source File -# Begin Source File - -SOURCE=..\src\connection.c -# End Source File -# Begin Source File - -SOURCE=..\src\event.c -# End Source File -# Begin Source File - -SOURCE=..\src\format.c -# End Source File -# Begin Source File - -SOURCE=..\src\format_flac.c -# End Source File -# Begin Source File - -SOURCE=..\src\format_kate.c -# End Source File -# Begin Source File - -SOURCE=..\src\format_midi.c -# End Source File -# Begin Source File - -SOURCE=..\src\format_mp3.c -# End Source File -# Begin Source File - -SOURCE=..\src\format_ogg.c -# End Source File -# Begin Source File - -SOURCE=..\src\format_skeleton.c -# End Source File -# Begin Source File - -SOURCE=..\src\format_speex.c -# End Source File -# Begin Source File - -SOURCE=..\src\format_theora.c -# End Source File -# Begin Source File - -SOURCE=..\src\format_vorbis.c -# End Source File -# Begin Source File - -SOURCE=..\src\fserve.c -# End Source File -# Begin Source File - -SOURCE=..\src\global.c -# End Source File -# Begin Source File - -SOURCE=..\src\httpp\httpp.c -# End Source File -# Begin Source File - -SOURCE=..\src\log\log.c -# End Source File -# Begin Source File - -SOURCE=..\src\logging.c -# End Source File -# Begin Source File - -SOURCE=..\src\md5.c -# End Source File -# Begin Source File - -SOURCE=..\src\os.h -# End Source File -# Begin Source File - -SOURCE=..\src\refbuf.c -# End Source File -# Begin Source File - -SOURCE=..\src\net\resolver.c -# End Source File -# Begin Source File - -SOURCE=..\src\sighandler.c -# End Source File -# Begin Source File - -SOURCE=..\src\slave.c -# End Source File -# Begin Source File - -SOURCE=..\src\net\sock.c -# End Source File -# Begin Source File - -SOURCE=..\src\source.c -# End Source File -# Begin Source File - -SOURCE=..\src\stats.c -# End Source File -# Begin Source File - -SOURCE=..\src\thread\thread.c -# End Source File -# Begin Source File - -SOURCE=..\src\timing\timing.c -# End Source File -# Begin Source File - -SOURCE=..\src\util.c -# End Source File -# Begin Source File - -SOURCE=..\src\xslt.c -# End Source File -# Begin Source File - -SOURCE=..\src\yp.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=..\src\admin.h -# End Source File -# Begin Source File - -SOURCE=..\src\auth.h -# End Source File -# Begin Source File - -SOURCE=..\src\auth_htpasswd.h -# End Source File -# Begin Source File - -SOURCE=..\src\auth_url.h -# End Source File -# Begin Source File - -SOURCE=..\src\avl\avl.h -# End Source File -# Begin Source File - -SOURCE=..\src\cfgfile.h -# End Source File -# Begin Source File - -SOURCE=..\src\client.h -# End Source File -# Begin Source File - -SOURCE=..\src\compat.h -# End Source File -# Begin Source File - -SOURCE=..\src\connection.h -# End Source File -# Begin Source File - -SOURCE=..\src\event.h -# End Source File -# Begin Source File - -SOURCE=..\src\format.h -# End Source File -# Begin Source File - -SOURCE=..\src\format_flac.h -# End Source File -# Begin Source File - -SOURCE=..\src\format_kate.h -# End Source File -# Begin Source File - -SOURCE=..\src\format_midi.h -# End Source File -# Begin Source File - -SOURCE=..\src\format_mp3.h -# End Source File -# Begin Source File - -SOURCE=..\src\format_ogg.h -# End Source File -# Begin Source File - -SOURCE=..\src\format_skeleton.h -# End Source File -# Begin Source File - -SOURCE=..\src\format_speex.h -# End Source File -# Begin Source File - -SOURCE=..\src\format_theora.h -# End Source File -# Begin Source File - -SOURCE=..\src\format_vorbis.h -# End Source File -# Begin Source File - -SOURCE=..\src\fserve.h -# End Source File -# Begin Source File - -SOURCE=..\src\global.h -# End Source File -# Begin Source File - -SOURCE=..\src\httpp\httpp.h -# End Source File -# Begin Source File - -SOURCE=..\src\log\log.h -# End Source File -# Begin Source File - -SOURCE=..\src\logging.h -# End Source File -# Begin Source File - -SOURCE=..\src\md5.h -# End Source File -# Begin Source File - -SOURCE=..\src\refbuf.h -# End Source File -# Begin Source File - -SOURCE=..\src\net\resolver.h -# End Source File -# Begin Source File - -SOURCE=..\src\sighandler.h -# End Source File -# Begin Source File - -SOURCE=..\src\net\sock.h -# End Source File -# Begin Source File - -SOURCE=..\src\source.h -# End Source File -# Begin Source File - -SOURCE=..\src\stats.h -# End Source File -# Begin Source File - -SOURCE=..\src\thread\thread.h -# End Source File -# Begin Source File - -SOURCE=..\src\timing\timing.h -# End Source File -# Begin Source File - -SOURCE=..\src\util.h -# End Source File -# Begin Source File - -SOURCE=..\src\xslt.h -# End Source File -# Begin Source File - -SOURCE=..\src\yp.h -# End Source File -# End Group -# End Target -# End Project diff --git a/win32/icecast2.iss b/win32/icecast2.iss deleted file mode 100644 index bd2992c9..00000000 --- a/win32/icecast2.iss +++ /dev/null @@ -1,64 +0,0 @@ -; Script generated by the Inno Setup Script Wizard. -; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! - -[Setup] -AppName=Icecast2 Win32 -AppVerName=Icecast 2.3.2 -AppPublisherURL=http://www.icecast.org -AppSupportURL=http://www.icecast.org -AppUpdatesURL=http://www.icecast.org -DefaultDirName={pf}\Icecast2 Win32 -DefaultGroupName=Icecast2 Win32 -AllowNoIcons=yes -LicenseFile=..\COPYING -InfoAfterFile=..\README -OutputDir=. -OutputBaseFilename=icecast2_win32_2.3.2_setup -WizardImageFile=icecast2logo2.bmp -WizardImageStretch=no -; uncomment the following line if you want your installation to run on NT 3.51 too. -; MinVersion=4,3.51 - -[Tasks] -Name: "desktopicon"; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"; MinVersion: 4,4 - -[Dirs] -Name: "{app}\web" -Name: "{app}\admin" -Name: "{app}\doc" -Name: "{app}\logs" -Name: "{app}\examples" - - -[Files] -Source: "Release\Icecast2win.exe"; DestDir: "{app}"; Flags: ignoreversion -Source: "Release\icecast2console.exe"; DestDir: "{app}"; Flags: ignoreversion -Source: "Release\icecastService.exe"; DestDir: "{app}"; Flags: ignoreversion -Source: "..\examples\*"; DestDir: "{app}\examples"; Flags: ignoreversion -; Source: "..\doc\icecast2.chm"; DestDir: "{app}\doc"; Flags: ignoreversion -Source: "..\web\*.xsl"; DestDir: "{app}\web"; Flags: ignoreversion -Source: "..\web\*.png"; DestDir: "{app}\web"; Flags: ignoreversion -Source: "..\web\*.jpg"; DestDir: "{app}\web"; Flags: ignoreversion -Source: "..\web\*.css"; DestDir: "{app}\web"; Flags: ignoreversion -Source: "..\admin\*.xsl"; DestDir: "{app}\admin"; Flags: ignoreversion -Source: "c:\xiph\lib\pthreadVSE.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "icecast.xml"; DestDir: "{app}"; Flags: ignoreversion -Source: "c:\xiph\lib\iconv.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "c:\xiph\lib\libxslt.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "c:\xiph\lib\libxml2.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "c:\xiph\lib\libcurl.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "c:\xiph\lib\libeay32.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "c:\xiph\lib\ssleay32.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "c:\xiph\lib\zlib1.dll"; DestDir: "{app}"; Flags: ignoreversion - -[Icons] - -Name: "{group}\Icecast2 Win32"; Filename: "{app}\Icecast2win.exe";WorkingDir: "{app}"; -Name: "{userdesktop}\Icecast2 Win32"; Filename: "{app}\Icecast2win.exe"; MinVersion: 4,4; Tasks: desktopicon;WorkingDir: "{app}"; - -[Run] -Filename: "{app}\icecastService.exe"; Parameters: "install ""{app}""";Description: "Install Icecast as a windows service.";Flags: postinstall - -[UninstallRun] -Filename: "{app}\icecastService.exe"; Parameters: "remove" - diff --git a/win32/icecast2_console.dsp b/win32/icecast2_console.dsp deleted file mode 100644 index f3048ff3..00000000 --- a/win32/icecast2_console.dsp +++ /dev/null @@ -1,103 +0,0 @@ -# Microsoft Developer Studio Project File - Name="icecast2 console" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=icecast2 console - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "icecast2_console.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "icecast2_console.mak" CFG="icecast2 console - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "icecast2 console - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "icecast2 console - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "icecast2 console - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "icecast2_console___Win32_Release" -# PROP BASE Intermediate_Dir "icecast2_console___Win32_Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "releaseconsole_tmp" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "../" /I "../../libxslt/include" /I "../../curl/include" /I "../../iconv/include" /I "../../libxml2/include" /I "..\src" /I "..\src/httpp" /I "..\src/thread" /I "..\src/log" /I "..\src/avl" /I "..\src/net" /I "..\src/timings" /I "../../pthreads" /I "../../oggvorbis-win32sdk-1.0.1/include" /I "../../theora/include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CURL" /D "USE_YP" /D "HAVE_SYS_STAT_H" /D PACKAGE_VERSION=\"2.3.2\" /D "HAVE_THEORA" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libcurl.lib ogg_static_d.lib vorbis_static.lib libxml2.lib libxslt.lib iconv.lib pthreadVSE.lib ws2_32.lib theora_static_d.lib libspeex.lib /nologo /version:2.3 /subsystem:console /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcmtd.lib" /out:"Release/icecast2console.exe" - -!ELSEIF "$(CFG)" == "icecast2 console - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "icecast2_console___Win32_Debug" -# PROP BASE Intermediate_Dir "icecast2_console___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "debugconsole_tmp" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../" /I "../../libxslt/include" /I "../../curl/include" /I "../../iconv/include" /I "../../libxml2/include" /I "..\src" /I "..\src/httpp" /I "..\src/thread" /I "..\src/log" /I "..\src/avl" /I "..\src/net" /I "..\src/timings" /I "../../pthreads" /I "../../oggvorbis-win32sdk-1.0.1/include" /I "../../theora/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CURL" /D "USE_YP" /D "HAVE_SYS_STAT_H" /D PACKAGE_VERSION=\"2.3.2\" /D "HAVE_THEORA" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libcurl.lib ogg_static_d.lib vorbis_static.lib libxml2.lib libxslt.lib iconv.lib pthreadVC.lib ws2_32.lib theora_static_d.lib libspeex.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcmt.lib" /out:"Debug/icecast2console.exe" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "icecast2 console - Win32 Release" -# Name "icecast2 console - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\src\main.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/win32/icecast2_console.dsw b/win32/icecast2_console.dsw deleted file mode 100644 index bbf52ccc..00000000 --- a/win32/icecast2_console.dsw +++ /dev/null @@ -1,44 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "icecast"=.\icecast.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "icecast2 console"=.\icecast2_console.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name icecast - End Project Dependency -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/win32/icecastService.cpp b/win32/icecastService.cpp deleted file mode 100644 index 20b27720..00000000 --- a/win32/icecastService.cpp +++ /dev/null @@ -1,193 +0,0 @@ -#define _WIN32_WINNT 0x0400 -#include -#include -#include -extern "C" { -#include "thread/thread.h" -#include "avl/avl.h" -#include "log/log.h" -#include "global.h" -#include "httpp/httpp.h" -#include "net/sock.h" -#include "connection.h" -#include "refbuf.h" -#include "client.h" -#include "stats.h" -} - -// Issues to be wary of. Careful of the runtime you use, I've had printf and similar routines -// crash because of this on apparently valid strings. some weird thing related to checking for -// multiple byte characters. DeleteService only marks a service for deletion, and the docs -// are unclear on the cases that lead to purging however a reboot should do it. - -SERVICE_STATUS ServiceStatus; -SERVICE_STATUS_HANDLE hStatus; - -void ServiceMain(int argc, char** argv); -void ControlHandler(DWORD request); -extern "C" int mainService(int argc, char **argv); - - -void installService (const char *path) -{ - if (path) { - char fullPath[8096*2] = "\""; - int len = GetModuleFileName (NULL, fullPath+1, sizeof (fullPath)-1); - - _snprintf(fullPath+len+1, sizeof (fullPath)-len, "\" \"%s\"", path); - - SC_HANDLE manager = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS ); - if (manager == NULL) - { - MessageBox (NULL, "OpenSCManager failed", NULL, MB_SERVICE_NOTIFICATION); - return; - } - - SC_HANDLE service = CreateService( - manager, - PACKAGE_STRING, - PACKAGE_STRING " Streaming Media Server", - GENERIC_READ | GENERIC_EXECUTE, - SERVICE_WIN32_OWN_PROCESS, - SERVICE_AUTO_START, - SERVICE_ERROR_IGNORE, - fullPath, - NULL, - NULL, - NULL, - NULL, - NULL - ); - if (service == NULL) - { - MessageBox (NULL, "CreateService failed", NULL, MB_SERVICE_NOTIFICATION); - CloseServiceHandle (manager); - return; - } - - printf("Service Installed\n"); - CloseServiceHandle (service); - CloseServiceHandle (manager); - } -} -void removeService() -{ - SC_HANDLE manager = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS ); - if (manager == NULL) - { - MessageBox (NULL, "OpenSCManager failed", NULL, MB_SERVICE_NOTIFICATION); - return; - } - - SC_HANDLE service = OpenService (manager, PACKAGE_STRING, DELETE); - if (service) { - DeleteService(service); - CloseServiceHandle (service); - printf ("Service deleted, may require reboot to complete removal\n"); - } - else - printf("Service not found\n"); - CloseServiceHandle (manager); - Sleep (1500); -} -void ControlHandler(DWORD request) -{ - switch(request) { - case SERVICE_CONTROL_STOP: - if (ServiceStatus.dwCurrentState != SERVICE_STOP) - { - ServiceStatus.dwCurrentState = SERVICE_STOP_PENDING; - SetServiceStatus (hStatus, &ServiceStatus); - global.running = ICE_HALTING; - return; - } - - default: - break; - } - - // Report current status - SetServiceStatus (hStatus, &ServiceStatus); -} - -void ServiceMain(int argc, char** argv) -{ - ServiceStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS; - ServiceStatus.dwWin32ExitCode = 0; - ServiceStatus.dwServiceSpecificExitCode = 0; - ServiceStatus.dwCheckPoint = 0; - ServiceStatus.dwWaitHint = 0; - - hStatus = RegisterServiceCtrlHandler(PACKAGE_STRING, (LPHANDLER_FUNCTION)ControlHandler); - if (hStatus == (SERVICE_STATUS_HANDLE)0) { - // Registering Control Handler failed - MessageBox (NULL, "RegisterServiceCtrlHandler failed", NULL, MB_SERVICE_NOTIFICATION); - return; - } - // We report the running status to SCM. - ServiceStatus.dwCurrentState = SERVICE_RUNNING; - ServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP; - SetServiceStatus (hStatus, &ServiceStatus); - - /* Here we do the work */ - - int argc2 = 3; - char* argv2 [4]; - - argv2 [0] = argv[0]; - argv2 [1] = "-c"; - if (argc < 2) - argv2 [2] = "icecast.xml"; - else - argv2 [2] = argv[1]; - argv2[3] = NULL; - - ServiceStatus.dwWin32ExitCode = mainService(argc2, (char **)argv2); - - ServiceStatus.dwCurrentState = SERVICE_STOPPED; - SetServiceStatus(hStatus, &ServiceStatus); -} - - -int main(int argc, char **argv) -{ - if (argc < 2) - { - printf ("Usage:\n %s remove\n %s install path\n", argv[0], argv[0]); - return 0; - } - if (!strcmp(argv[1], "install")) - { - if (argc > 2) - installService(argv[2]); - else - printf ("install requires a path arg as well\n"); - Sleep (2000); - return 0; - } - if (!strcmp(argv[1], "remove") || !strcmp(argv[1], "uninstall")) - { - removeService(); - return 0; - } - - if (_chdir(argv[1]) < 0) - { - char buffer [256]; - _snprintf (buffer, sizeof(buffer), "Unable to change to directory %s", argv[1]); - MessageBox (NULL, buffer, NULL, MB_SERVICE_NOTIFICATION); - return 0; - } - - SERVICE_TABLE_ENTRY ServiceTable[2]; - ServiceTable[0].lpServiceName = PACKAGE_STRING; - ServiceTable[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTION)ServiceMain; - - ServiceTable[1].lpServiceName = NULL; - ServiceTable[1].lpServiceProc = NULL; - // Start the control dispatcher thread for our service - if (StartServiceCtrlDispatcher(ServiceTable) == 0) - MessageBox (NULL, "StartServiceCtrlDispatcher failed", NULL, MB_SERVICE_NOTIFICATION); - - return 0; -} diff --git a/win32/icecastService.dsp b/win32/icecastService.dsp deleted file mode 100644 index 48a60afc..00000000 --- a/win32/icecastService.dsp +++ /dev/null @@ -1,109 +0,0 @@ -# Microsoft Developer Studio Project File - Name="icecastService" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=icecastService - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "icecastService.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "icecastService.mak" CFG="icecastService - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "icecastService - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "icecastService - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "icecastService - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "releaseservice_tmp" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "../" /I "../../libxslt/include" /I "../../curl/include" /I "../../iconv/include" /I "../../libxml2/include" /I "..\src" /I "..\src/httpp" /I "..\src/thread" /I "..\src/log" /I "..\src/avl" /I "..\src/net" /I "..\src/timings" /I "../../pthreads" /I "../../oggvorbis-win32sdk-1.0.1/include" /I "../../theora/include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "WIN32_SERVICE" /D "HAVE_CURL" /D "USE_YP" /D "HAVE_SYS_STAT_H" /D PACKAGE_VERSION=\"2.3.2\" /D "HAVE_THEORA" /YX /FD /D PACKAGE_STRING=\"Icecast-trunk\" /c -# SUBTRACT CPP /X -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libcurl.lib ogg_static_d.lib vorbis_static.lib libxml2.lib libxslt.lib iconv.lib pthreadVSE.lib ws2_32.lib theora_static_d.lib libspeex.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcmtd.lib" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "icecastService - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "icecastService___Win32_Debug" -# PROP BASE Intermediate_Dir "icecastService___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "debugservice_tmp" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../" /I "../../libxslt/include" /I "../../curl/include" /I "../../iconv/include" /I "../../libxml2/include" /I "..\src" /I "..\src/httpp" /I "..\src/thread" /I "..\src/log" /I "..\src/avl" /I "..\src/net" /I "..\src/timings" /I "../../pthreads" /I "../../oggvorbis-win32sdk-1.0.1/include" /I "../../theora/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "WIN32_SERVICE" /D "HAVE_CURL" /D "USE_YP" /D "HAVE_SYS_STAT_H" /D PACKAGE_VERSION=\"2.3.2\" /D "HAVE_THEORA" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 libcurl.lib ogg_static_d.lib vorbis_static.lib libxml2.lib libxslt.lib iconv.lib pthreadVC.lib ws2_32.lib theora_static_d.lib libspeex.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcmt.lib" /pdbtype:sept -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "icecastService - Win32 Release" -# Name "icecastService - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\icecastService.cpp -# End Source File -# Begin Source File - -SOURCE=..\src\main.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/win32/res/Icecast2win.rc2 b/win32/res/Icecast2win.rc2 deleted file mode 100644 index c3231ad8..00000000 --- a/win32/res/Icecast2win.rc2 +++ /dev/null @@ -1,13 +0,0 @@ -// -// ICECAST2WIN.RC2 - resources Microsoft Visual C++ does not edit directly -// - -#ifdef APSTUDIO_INVOKED - #error this file is not editable by Microsoft Visual C++ -#endif //APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// Add manually edited resources here... - -///////////////////////////////////////////////////////////////////////////// diff --git a/win32/res/Makefile.am b/win32/res/Makefile.am deleted file mode 100644 index c65cf606..00000000 --- a/win32/res/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -## Process this file with automake to produce Makefile.in - -AUTOMAKE_OPTIONS = foreign - -EXTRA_DIST = Icecast2win.rc2 - diff --git a/win32/resource.h b/win32/resource.h deleted file mode 100644 index 2a9c4feb..00000000 --- a/win32/resource.h +++ /dev/null @@ -1,78 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Developer Studio generated include file. -// Used by Icecast2win.rc -// -#define IDM_ABOUTBOX 0x0010 -#define IDD_ABOUTBOX 100 -#define IDS_ABOUTBOX 101 -#define IDD_ICECAST2WIN_DIALOG 102 -#define IDR_MAINFRAME 128 -#define IDR_MENU1 132 -#define IDB_BITMAP1 134 -#define IDB_BITMAP2 135 -#define IDI_R 141 -#define IDI_G 142 -#define IDI_ICON1 142 -#define IDD_SERVERSTATUS 144 -#define IDD_SSTATUS 145 -#define IDD_CONFIGDIALOG 146 -#define IDD_STATSDIALOG 147 -#define IDB_BITMAP3 149 -#define IDB_BITMAP4 150 -#define IDB_BITMAP5 151 -#define IDB_BITMAP6 152 -#define IDR_MENU2 153 -#define IDR_MENU3 154 -#define IDC_CURSOR1 155 -#define IDC_CURSOR2 156 -#define IDB_BITMAP7 159 -#define IDR_TRAY 160 -#define IDR_MENU4 161 -#define IDB_BITMAP8 163 -#define IDB_BITMAP9 164 -#define IDC_MAINTAB 1000 -#define IDC_ERROR_EDIT 1003 -#define IDC_ACCESS_EDIT 1004 -#define IDC_CONFIG_EDIT 1006 -#define IDC_SERVERSTATUS 1008 -#define IDC_SOURCES_CONNECTED 1009 -#define IDC_NUMBER_CLIENTS 1010 -#define IDC_GROUP1 1011 -#define IDC_STATS_EDIT 1012 -#define IDC_CONFIG 1020 -#define IDC_STATSLIST 1021 -#define IDC_SOURCELIST 1022 -#define IDC_START 1023 -#define IDC_AUTOSTART 1024 -#define IDC_FILLER1 1025 -#define IDC_FILLER2 1026 -#define IDC_STATIC_SS 1029 -#define IDC_GLOBALSTAT_LIST 1030 -#define IDC_STATIC_GS 1031 -#define IDC_STATIC_SLS 1032 -#define IDC_RUNNINGFOR 1033 -#define IDC_STATIC_RUN 1034 -#define IDC_STATICBLACK 1035 -#define IDC_HIDESYSTRAY 1036 -#define ID_FILE_STARTSERVER 32771 -#define ID_FILE_EXIT 32772 -#define ID_FILE_STOPSERVER 32774 -#define ID_FILE 32775 -#define ID_POPUP_ADDTOGLOBALSTATLIST 32776 -#define ID__DELETEFROMGLOBALSTATS 32777 -#define ID__MAKETHISSTATTHEWINDOWTITLE 32779 -#define ID_BLANK_RESTORE 32780 -#define ID_ABOUT_HELP 32781 -#define ID_FILE_EDITCONFIGURATION 32782 -#define ID_ABOUT_CREDITS 32784 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 165 -#define _APS_NEXT_COMMAND_VALUE 32785 -#define _APS_NEXT_CONTROL_VALUE 1037 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/win32/running.bmp b/win32/running.bmp deleted file mode 100644 index b5059fc672877c23aff9b233800ff3c17769eb56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5336 zcmeH|y-fo_5QP_m`Lh9o2_QovfQSf4$Se^!Kq3MXGDJcFv_K1#Knt`$0|b;n3rKwC ziKh{|#A3a&tUcYGX2)-5=DnF)4=&!f)6aFv`;g~`XXKhoJG^ymby6BVzgPQfv))yK zs=&-Bu=}=t^0dl*^xWxw_GX6HxI_l`%iQR2dA@jk+@4M;`X3v6uWQ9>yWL-4D#leZ z7oJAY4oAbj>(4W;DDco~sZG4O!N_Sa06Z+!Q28UqfS4tMAx=7AOa=20D{+=GMy&AQ zrR&OvS4-5U8n7p!1M}u|sK-1^gAU99t?^_=ecZv=Ya}uY18_!+0gchv#SFOJ5o2dD zgX}7RcAPz~IB%@VG$TilrfC4qh%ulsTHM9Ph;bRk46>^LL_i8Y4W*7%x!}kVm}we- zGhz&AjHbiEOe4n5Vn)nPVMw9W(QlgK$Z>&zlkZ6XCfHEsjo*g}aiR|T=m5lXfbT-l zl$r>|i2q3x`HH3h6vk3E21{&CHcI6r5m^t904#~dPXM$LFk7${jU@n%U;h_lFo$yT zt21hQ$+v2t09eo+mKn2Khm0{N6iV%YJ~w5%Q(4jx)3cE!U=30gs0vgCssjH}Af<2e C$_=If diff --git a/win32/stopped.bmp b/win32/stopped.bmp deleted file mode 100644 index db201ac4d260cf9d400cc0a04a95488c82caefe3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5336 zcmeIyL24C26a~=!V`m=+&NFeYxB$u2VZaq+3t2+4gk%Z21YJVrq9lkQh+qOj2uL8} zi5DM5{T>BUQR$|B^ZM1T_wKz_^`F0Z|8V;KJoA3+_tNhswVEDz=UG3PrkmfNXSI5_ zjKzV)fxpLr-Q6$S+n+i}GwJ`w>$H$jwQ)HZL87r7PHk