From 1b62ce3d7210b5c130fe14252d0df5540b93a713 Mon Sep 17 00:00:00 2001 From: "Dr. Jochen Manns" Date: Thu, 4 Feb 2016 23:29:26 +0100 Subject: [PATCH 001/415] Mostly one tiny CSS typo; some C#6 adaptions --- .../RestWebApi/HibernateController.cs | 16 ++---- .../ServiceCore/RestWebApi/InfoController.cs | 14 ++---- VCR.NET/ServiceCore/RestWebApi/InfoJob.cs | 6 +-- .../ServiceCore/RestWebApi/InfoSchedule.cs | 6 +-- .../ServiceCore/RestWebApi/JobScheduleData.cs | 6 +-- .../ServiceCore/RestWebApi/PlanActivity.cs | 18 +++---- VCR.NET/ServiceCore/RestWebApi/PlanCurrent.cs | 20 +++----- .../ServiceCore/RestWebApi/PlanException.cs | 8 +-- .../RestWebApi/ProfileController.cs | 14 ++---- VCR.NET/ServiceCore/RestWebApi/ProfileInfo.cs | 2 +- .../ServiceCore/RestWebApi/ProfileJobInfo.cs | 4 +- .../ServiceCore/RestWebApi/ProfileSource.cs | 10 ++-- .../RestWebApi/ProtocolController.cs | 4 +- .../ServiceCore/RestWebApi/ProtocolEntry.cs | 4 +- .../RestWebApi/SourceInformation.cs | 4 +- VCR.NET/ServiceCore/RestWebApi/UserProfile.cs | 5 +- .../RestWebApi/UserProfileController.cs | 10 ++-- .../RestWebApi/ZappingController.cs | 34 +++---------- .../ServiceCore/RestWebApi/ZappingService.cs | 8 +-- .../ServiceCore/RestWebApi/ZappingSource.cs | 10 ++-- .../ServiceCore/RestWebApi/ZappingStatus.cs | 6 +-- VCR.NET/ServiceCore/VCRServer/VCRServer.cs | 2 +- .../VCRServer/VCRServer_Hibernate.cs | 2 +- .../ServiceCore/VCRServer/VCRServer_Rest.cs | 10 +--- VCR.NET/WebClient41/WebClient41.csproj | 5 ++ VCR.NET/WebClient41/compilerconfig.json | 10 ++++ .../WebClient41/compilerconfig.json.defaults | 49 +++++++++++++++++++ VCR.NET/WebClient41/content/jmslib.css | 3 +- VCR.NET/WebClient41/content/jmslib.min.css | 2 +- VCR.NET/WebClient41/content/vcrnet.css | 11 ++--- VCR.NET/WebClient41/content/vcrnet.less | 2 +- VCR.NET/WebClient41/content/vcrnet.min.css | 2 +- VCR.NET/WebClient41/ui/plan.html | 4 +- 33 files changed, 156 insertions(+), 155 deletions(-) create mode 100644 VCR.NET/WebClient41/compilerconfig.json create mode 100644 VCR.NET/WebClient41/compilerconfig.json.defaults diff --git a/VCR.NET/ServiceCore/RestWebApi/HibernateController.cs b/VCR.NET/ServiceCore/RestWebApi/HibernateController.cs index 7562c75..04981d7 100644 --- a/VCR.NET/ServiceCore/RestWebApi/HibernateController.cs +++ b/VCR.NET/ServiceCore/RestWebApi/HibernateController.cs @@ -1,5 +1,5 @@ -using System.Web.Http; -using JMS.DVBVCR.RecordingService.WebServer; +using JMS.DVBVCR.RecordingService.WebServer; +using System.Web.Http; namespace JMS.DVBVCR.RecordingService.RestWebApi @@ -14,21 +14,13 @@ public class HibernateController : ApiController /// /// Dient zur Unterscheidung der Methoden. [HttpPost] - public void ResetPendingHibernation( string reset ) - { - // Forward - ServerRuntime.VCRServer.ResetPendingHibernation(); - } + public void ResetPendingHibernation( string reset ) => ServerRuntime.VCRServer.ResetPendingHibernation(); /// /// Versucht, den Schlafzustand auszulösen. /// /// Dient zur Unterscheidung der Methoden [HttpPost] - public void TryHibernate( string hibernate ) - { - // Forward - ServerRuntime.VCRServer.TryHibernateIgnoringInteractiveUsers(); - } + public void TryHibernate( string hibernate ) => ServerRuntime.VCRServer.TryHibernateIgnoringInteractiveUsers(); } } diff --git a/VCR.NET/ServiceCore/RestWebApi/InfoController.cs b/VCR.NET/ServiceCore/RestWebApi/InfoController.cs index 6275f1d..ddcf509 100644 --- a/VCR.NET/ServiceCore/RestWebApi/InfoController.cs +++ b/VCR.NET/ServiceCore/RestWebApi/InfoController.cs @@ -1,4 +1,5 @@ -using System; +using JMS.DVBVCR.RecordingService.WebServer; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -6,7 +7,6 @@ using System.Runtime.InteropServices; using System.Text; using System.Web.Http; -using JMS.DVBVCR.RecordingService.WebServer; namespace JMS.DVBVCR.RecordingService.RestWebApi @@ -73,7 +73,7 @@ private static string InstalledVersion // Retrieve if (MsiGetProductInfo( productCode.ToString(), "VersionString", buffer, ref bufferSize ) == 0) - _InstalledVersion = new string( buffer, 0, checked( (int) bufferSize ) ); + _InstalledVersion = new string( buffer, 0, checked((int) bufferSize) ); } } catch (Exception e) @@ -124,12 +124,8 @@ public InfoService VersionInformation() /// Wird zur Unterscheidung der Methoden verwendet. /// Die gewünschte Liste. [HttpGet] - public string[] GetRecordingDirectories( string directories ) - { - // First is default - return VCRConfiguration.Current.TargetDirectoriesNames.SelectMany( ScanDirectory ).ToArray(); - } - + public string[] GetRecordingDirectories( string directories ) => VCRConfiguration.Current.TargetDirectoriesNames.SelectMany( ScanDirectory ).ToArray(); + /// /// Meldet alle Aufträge. /// diff --git a/VCR.NET/ServiceCore/RestWebApi/InfoJob.cs b/VCR.NET/ServiceCore/RestWebApi/InfoJob.cs index 470f677..5be9855 100644 --- a/VCR.NET/ServiceCore/RestWebApi/InfoJob.cs +++ b/VCR.NET/ServiceCore/RestWebApi/InfoJob.cs @@ -1,8 +1,8 @@ -using System; +using JMS.DVBVCR.RecordingService.Persistence; +using JMS.DVBVCR.RecordingService.WebServer; +using System; using System.Linq; using System.Runtime.Serialization; -using JMS.DVBVCR.RecordingService.Persistence; -using JMS.DVBVCR.RecordingService.WebServer; namespace JMS.DVBVCR.RecordingService.RestWebApi diff --git a/VCR.NET/ServiceCore/RestWebApi/InfoSchedule.cs b/VCR.NET/ServiceCore/RestWebApi/InfoSchedule.cs index 21acfdd..0d74173 100644 --- a/VCR.NET/ServiceCore/RestWebApi/InfoSchedule.cs +++ b/VCR.NET/ServiceCore/RestWebApi/InfoSchedule.cs @@ -1,8 +1,8 @@ -using System; +using JMS.DVBVCR.RecordingService.Persistence; +using JMS.DVBVCR.RecordingService.WebServer; +using System; using System.Globalization; using System.Runtime.Serialization; -using JMS.DVBVCR.RecordingService.Persistence; -using JMS.DVBVCR.RecordingService.WebServer; namespace JMS.DVBVCR.RecordingService.RestWebApi diff --git a/VCR.NET/ServiceCore/RestWebApi/JobScheduleData.cs b/VCR.NET/ServiceCore/RestWebApi/JobScheduleData.cs index fe39925..2f28ceb 100644 --- a/VCR.NET/ServiceCore/RestWebApi/JobScheduleData.cs +++ b/VCR.NET/ServiceCore/RestWebApi/JobScheduleData.cs @@ -1,7 +1,7 @@ -using System; -using System.Runtime.Serialization; -using JMS.DVBVCR.RecordingService.Persistence; +using JMS.DVBVCR.RecordingService.Persistence; using JMS.DVBVCR.RecordingService.ProgramGuide; +using System; +using System.Runtime.Serialization; namespace JMS.DVBVCR.RecordingService.RestWebApi diff --git a/VCR.NET/ServiceCore/RestWebApi/PlanActivity.cs b/VCR.NET/ServiceCore/RestWebApi/PlanActivity.cs index 7b461eb..0c54f23 100644 --- a/VCR.NET/ServiceCore/RestWebApi/PlanActivity.cs +++ b/VCR.NET/ServiceCore/RestWebApi/PlanActivity.cs @@ -1,12 +1,12 @@ -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Runtime.Serialization; -using JMS.DVB; +using JMS.DVB; using JMS.DVB.Algorithms.Scheduler; using JMS.DVBVCR.RecordingService.Persistence; using JMS.DVBVCR.RecordingService.Planning; using JMS.DVBVCR.RecordingService.WebServer; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Runtime.Serialization; namespace JMS.DVBVCR.RecordingService.RestWebApi @@ -258,10 +258,10 @@ public static PlanActivity Create( IScheduleInformation schedule, PlanContext co var end = time.End; var activity = new PlanActivity - { - IsHidden = (schedule.Resource == null), - IsLate = schedule.StartsLate, - }; + { + IsHidden = (schedule.Resource == null), + IsLate = schedule.StartsLate, + }; // May need some correction if (runningInfo != null) diff --git a/VCR.NET/ServiceCore/RestWebApi/PlanCurrent.cs b/VCR.NET/ServiceCore/RestWebApi/PlanCurrent.cs index f12a819..78a8d3b 100644 --- a/VCR.NET/ServiceCore/RestWebApi/PlanCurrent.cs +++ b/VCR.NET/ServiceCore/RestWebApi/PlanCurrent.cs @@ -1,14 +1,14 @@ -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Runtime.Serialization; -using JMS.DVB; +using JMS.DVB; using JMS.DVB.Algorithms.Scheduler; using JMS.DVBVCR.RecordingService.Persistence; using JMS.DVBVCR.RecordingService.Planning; using JMS.DVBVCR.RecordingService.Status; using JMS.DVBVCR.RecordingService.WebServer; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Runtime.Serialization; namespace JMS.DVBVCR.RecordingService.RestWebApi @@ -218,7 +218,7 @@ public static PlanCurrent[] Create( FullInfo active, VCRServer server ) { // Validate if (active == null) - throw new ArgumentNullException( "active" ); + throw new ArgumentNullException( nameof( active ) ); // Validate var recording = active.Recording; @@ -395,10 +395,6 @@ public static PlanCurrent Create( IScheduleInformation plan, PlanContext context /// /// Der Name des Geräteprofils. /// Die zugehörige Beschreibung. - public static PlanCurrent Create( string profileName ) - { - // Create - return new PlanCurrent { ProfileName = profileName, IsIdle = true }; - } + public static PlanCurrent Create( string profileName ) => new PlanCurrent { ProfileName = profileName, IsIdle = true }; } } diff --git a/VCR.NET/ServiceCore/RestWebApi/PlanException.cs b/VCR.NET/ServiceCore/RestWebApi/PlanException.cs index a17d5af..dd2d6fc 100644 --- a/VCR.NET/ServiceCore/RestWebApi/PlanException.cs +++ b/VCR.NET/ServiceCore/RestWebApi/PlanException.cs @@ -1,7 +1,7 @@ -using System; +using JMS.DVBVCR.RecordingService.Persistence; +using System; using System.Globalization; using System.Runtime.Serialization; -using JMS.DVBVCR.RecordingService.Persistence; namespace JMS.DVBVCR.RecordingService.RestWebApi @@ -106,9 +106,9 @@ public static PlanException Create( VCRScheduleException exception, VCRSchedule { // Validate if (exception == null) - throw new ArgumentNullException( "exception" ); + throw new ArgumentNullException( nameof( exception ) ); if (schedule == null) - throw new ArgumentNullException( "schedule" ); + throw new ArgumentNullException( nameof( schedule ) ); // Forward return new PlanException( exception, schedule ); diff --git a/VCR.NET/ServiceCore/RestWebApi/ProfileController.cs b/VCR.NET/ServiceCore/RestWebApi/ProfileController.cs index 6909045..dfe5a2a 100644 --- a/VCR.NET/ServiceCore/RestWebApi/ProfileController.cs +++ b/VCR.NET/ServiceCore/RestWebApi/ProfileController.cs @@ -1,9 +1,9 @@ -using System; +using JMS.DVB; +using JMS.DVBVCR.RecordingService.WebServer; +using System; using System.Globalization; using System.Linq; using System.Web.Http; -using JMS.DVB; -using JMS.DVBVCR.RecordingService.WebServer; namespace JMS.DVBVCR.RecordingService.RestWebApi @@ -36,11 +36,7 @@ public ProfileInfo[] ListProfiles() /// Der Name des zu verwendenden Geräteprofils. /// Die gewünschte Liste von Sendern. [HttpGet] - public ProfileSource[] FindSources( string detail ) - { - // Forward to other application domain - return ServerRuntime.VCRServer.GetSources( detail, true, true, ProfileSource.Create ); - } + public ProfileSource[] FindSources( string detail ) => ServerRuntime.VCRServer.GetSources( detail, true, true, ProfileSource.Create ); /// /// Verändert den Endzeitpunkt. @@ -57,7 +53,7 @@ public void SetNewEndTime( string detail, bool disableHibernate, string schedule var end = DateTime.Parse( endTime, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind ); // Forward - ServerRuntime.VCRServer.ChangeRecordingStreamEndTime( detail, scheduleIdentifier, end, disableHibernate ); + ServerRuntime.VCRServer.ChangeRecordingStreamEndTime( detail, scheduleIdentifier, end, disableHibernate ); } /// diff --git a/VCR.NET/ServiceCore/RestWebApi/ProfileInfo.cs b/VCR.NET/ServiceCore/RestWebApi/ProfileInfo.cs index bd94734..bfff7b7 100644 --- a/VCR.NET/ServiceCore/RestWebApi/ProfileInfo.cs +++ b/VCR.NET/ServiceCore/RestWebApi/ProfileInfo.cs @@ -26,7 +26,7 @@ public static ProfileInfo Create( ProfileState profile ) { // Validate if (profile == null) - throw new ArgumentNullException( "profile" ); + throw new ArgumentNullException( nameof( profile ) ); // Create return new ProfileInfo { Name = profile.ProfileName }; diff --git a/VCR.NET/ServiceCore/RestWebApi/ProfileJobInfo.cs b/VCR.NET/ServiceCore/RestWebApi/ProfileJobInfo.cs index 12d56e9..e12c401 100644 --- a/VCR.NET/ServiceCore/RestWebApi/ProfileJobInfo.cs +++ b/VCR.NET/ServiceCore/RestWebApi/ProfileJobInfo.cs @@ -1,6 +1,6 @@ -using System; +using JMS.DVBVCR.RecordingService.Persistence; +using System; using System.Runtime.Serialization; -using JMS.DVBVCR.RecordingService.Persistence; namespace JMS.DVBVCR.RecordingService.RestWebApi diff --git a/VCR.NET/ServiceCore/RestWebApi/ProfileSource.cs b/VCR.NET/ServiceCore/RestWebApi/ProfileSource.cs index 2840508..40e0994 100644 --- a/VCR.NET/ServiceCore/RestWebApi/ProfileSource.cs +++ b/VCR.NET/ServiceCore/RestWebApi/ProfileSource.cs @@ -1,6 +1,6 @@ -using System; +using JMS.DVB; +using System; using System.Runtime.Serialization; -using JMS.DVB; namespace JMS.DVBVCR.RecordingService.RestWebApi @@ -22,10 +22,6 @@ public class ProfileSource : SourceInformation /// Führt individuelle Initialisierungen aus. /// /// Die Informationen zur Quelle. - protected override void OnCreate( Station station ) - { - // If it's not definitly a radio station we guess it's television - IsTVStation = (station.SourceType != SourceTypes.Radio); - } + protected override void OnCreate( Station station ) => IsTVStation = (station.SourceType != SourceTypes.Radio); } } diff --git a/VCR.NET/ServiceCore/RestWebApi/ProtocolController.cs b/VCR.NET/ServiceCore/RestWebApi/ProtocolController.cs index 34647c9..0ea1942 100644 --- a/VCR.NET/ServiceCore/RestWebApi/ProtocolController.cs +++ b/VCR.NET/ServiceCore/RestWebApi/ProtocolController.cs @@ -1,7 +1,7 @@ -using System; +using JMS.DVBVCR.RecordingService.WebServer; +using System; using System.Globalization; using System.Web.Http; -using JMS.DVBVCR.RecordingService.WebServer; namespace JMS.DVBVCR.RecordingService.RestWebApi diff --git a/VCR.NET/ServiceCore/RestWebApi/ProtocolEntry.cs b/VCR.NET/ServiceCore/RestWebApi/ProtocolEntry.cs index 7172553..cab536a 100644 --- a/VCR.NET/ServiceCore/RestWebApi/ProtocolEntry.cs +++ b/VCR.NET/ServiceCore/RestWebApi/ProtocolEntry.cs @@ -1,9 +1,9 @@ -using System; +using JMS.DVBVCR.RecordingService.Persistence; +using System; using System.Globalization; using System.IO; using System.Linq; using System.Runtime.Serialization; -using JMS.DVBVCR.RecordingService.Persistence; namespace JMS.DVBVCR.RecordingService.RestWebApi diff --git a/VCR.NET/ServiceCore/RestWebApi/SourceInformation.cs b/VCR.NET/ServiceCore/RestWebApi/SourceInformation.cs index 5c0693b..81d7643 100644 --- a/VCR.NET/ServiceCore/RestWebApi/SourceInformation.cs +++ b/VCR.NET/ServiceCore/RestWebApi/SourceInformation.cs @@ -1,6 +1,6 @@ -using System; +using JMS.DVB; +using System; using System.Runtime.Serialization; -using JMS.DVB; namespace JMS.DVBVCR.RecordingService.RestWebApi diff --git a/VCR.NET/ServiceCore/RestWebApi/UserProfile.cs b/VCR.NET/ServiceCore/RestWebApi/UserProfile.cs index 1fc86cb..543a111 100644 --- a/VCR.NET/ServiceCore/RestWebApi/UserProfile.cs +++ b/VCR.NET/ServiceCore/RestWebApi/UserProfile.cs @@ -1,7 +1,6 @@ -using System.Linq; +using JMS.DVBVCR.RecordingService.WebServer; +using System.Linq; using System.Runtime.Serialization; -using System.Web; -using JMS.DVBVCR.RecordingService.WebServer; namespace JMS.DVBVCR.RecordingService.RestWebApi diff --git a/VCR.NET/ServiceCore/RestWebApi/UserProfileController.cs b/VCR.NET/ServiceCore/RestWebApi/UserProfileController.cs index f919122..9cafc1b 100644 --- a/VCR.NET/ServiceCore/RestWebApi/UserProfileController.cs +++ b/VCR.NET/ServiceCore/RestWebApi/UserProfileController.cs @@ -1,5 +1,5 @@ -using System.Web.Http; -using JMS.DVBVCR.RecordingService.WebServer; +using JMS.DVBVCR.RecordingService.WebServer; +using System.Web.Http; namespace JMS.DVBVCR.RecordingService.RestWebApi @@ -14,11 +14,7 @@ public class UserProfileController : ApiController /// /// Die Einstellungen des Anwenders. [HttpGet] - public UserProfile GetCurrentProfile() - { - // Report - return UserProfile.Create(); - } + public UserProfile GetCurrentProfile() => UserProfile.Create(); /// /// Aktualisiert die Daten des Geräteprofils. diff --git a/VCR.NET/ServiceCore/RestWebApi/ZappingController.cs b/VCR.NET/ServiceCore/RestWebApi/ZappingController.cs index b7a97da..5404bce 100644 --- a/VCR.NET/ServiceCore/RestWebApi/ZappingController.cs +++ b/VCR.NET/ServiceCore/RestWebApi/ZappingController.cs @@ -1,6 +1,6 @@ -using System.Web.Http; -using JMS.DVB; +using JMS.DVB; using JMS.DVBVCR.RecordingService.WebServer; +using System.Web.Http; namespace JMS.DVBVCR.RecordingService.RestWebApi @@ -17,11 +17,7 @@ public class ZappingController : ApiController /// Der Name des zu verwendenden Geräteprofils. /// Der Zustand auf dem gewählten Geräteprofil. [HttpGet] - public ZappingStatus GetCurrentStatus( string detail ) - { - // Process - return ServerRuntime.VCRServer.LiveModeOperation( detail, true, null, null, ZappingStatus.Create ); - } + public ZappingStatus GetCurrentStatus( string detail ) => ServerRuntime.VCRServer.LiveModeOperation( detail, true, null, null, ZappingStatus.Create ); /// /// Ermittelt alle verfügbaren Sender. @@ -31,11 +27,7 @@ public ZappingStatus GetCurrentStatus( string detail ) /// Gesetzt, wenn Radiosender berücksichtigt werden sollen. /// Die gewünschte Liste von Sendern. [HttpGet] - public ZappingSource[] FindSources( string detail, bool tv, bool radio ) - { - // Forward to other application domain - return ServerRuntime.VCRServer.GetSources( detail, tv, radio, ZappingSource.Create ); - } + public ZappingSource[] FindSources( string detail, bool tv, bool radio ) => ServerRuntime.VCRServer.GetSources( detail, tv, radio, ZappingSource.Create ); /// /// Aktiviert eine neue Sitzung. @@ -44,11 +36,7 @@ public ZappingSource[] FindSources( string detail, bool tv, bool radio ) /// Legt fest, wohin die Nutzdaten zu senden sind. /// Der Zustand auf dem gewählten Geräteprofil. [HttpPost] - public ZappingStatus Connect( string detail, string target ) - { - // Process - return ServerRuntime.VCRServer.LiveModeOperation( detail, true, target, null, ZappingStatus.Create ); - } + public ZappingStatus Connect( string detail, string target ) => ServerRuntime.VCRServer.LiveModeOperation( detail, true, target, null, ZappingStatus.Create ); /// /// Deaktiviert eine Sitzung. @@ -56,11 +44,7 @@ public ZappingStatus Connect( string detail, string target ) /// Der Name des zu verwendenden Geräteprofils. /// Der Zustand auf dem gewählten Geräteprofil. [HttpDelete] - public ZappingStatus Disconnect( string detail ) - { - // Process - return ServerRuntime.VCRServer.LiveModeOperation( detail, false, null, null, ZappingStatus.Create ); - } + public ZappingStatus Disconnect( string detail ) => ServerRuntime.VCRServer.LiveModeOperation( detail, false, null, null, ZappingStatus.Create ); /// /// Wählt einen Quelle aus. @@ -69,10 +53,6 @@ public ZappingStatus Disconnect( string detail ) /// Die gewünschte Quelle als Tripel analog zur Textdarstellung von . /// Der Zustand auf dem gewählten Geräteprofil. [HttpPut] - public ZappingStatus Tune( string detail, string source ) - { - // Process - return ServerRuntime.VCRServer.LiveModeOperation( detail, true, null, SourceIdentifier.Parse( source ), ZappingStatus.Create ); - } + public ZappingStatus Tune( string detail, string source ) => ServerRuntime.VCRServer.LiveModeOperation( detail, true, null, SourceIdentifier.Parse( source ), ZappingStatus.Create ); } } diff --git a/VCR.NET/ServiceCore/RestWebApi/ZappingService.cs b/VCR.NET/ServiceCore/RestWebApi/ZappingService.cs index 8fa0ea5..bfa43e3 100644 --- a/VCR.NET/ServiceCore/RestWebApi/ZappingService.cs +++ b/VCR.NET/ServiceCore/RestWebApi/ZappingService.cs @@ -1,7 +1,7 @@ -using System; -using System.Runtime.Serialization; -using JMS.DVB; +using JMS.DVB; using JMS.DVB.CardServer; +using System; +using System.Runtime.Serialization; namespace JMS.DVBVCR.RecordingService.RestWebApi @@ -66,7 +66,7 @@ public static ZappingService Create( ServiceInformation service ) { // Validate if (service == null) - throw new ArgumentNullException( "service" ); + throw new ArgumentNullException( nameof( service ) ); // Create new return diff --git a/VCR.NET/ServiceCore/RestWebApi/ZappingSource.cs b/VCR.NET/ServiceCore/RestWebApi/ZappingSource.cs index 5bd0e2c..df24280 100644 --- a/VCR.NET/ServiceCore/RestWebApi/ZappingSource.cs +++ b/VCR.NET/ServiceCore/RestWebApi/ZappingSource.cs @@ -1,6 +1,6 @@ -using System; +using JMS.DVB; +using System; using System.Runtime.Serialization; -using JMS.DVB; namespace JMS.DVBVCR.RecordingService.RestWebApi @@ -22,10 +22,6 @@ public class ZappingSource : SourceInformation /// Führt individuelle Initialisierungen aus. /// /// Die Informationen zur Quelle. - protected override void OnCreate( Station station ) - { - // Finish - Source = SourceIdentifier.ToString( station ).Replace( " ", "" ); - } + protected override void OnCreate( Station station ) => Source = SourceIdentifier.ToString( station ).Replace( " ", "" ); } } diff --git a/VCR.NET/ServiceCore/RestWebApi/ZappingStatus.cs b/VCR.NET/ServiceCore/RestWebApi/ZappingStatus.cs index 591b4c9..508317b 100644 --- a/VCR.NET/ServiceCore/RestWebApi/ZappingStatus.cs +++ b/VCR.NET/ServiceCore/RestWebApi/ZappingStatus.cs @@ -1,8 +1,8 @@ -using System; +using JMS.DVB; +using JMS.DVB.CardServer; +using System; using System.Linq; using System.Runtime.Serialization; -using JMS.DVB; -using JMS.DVB.CardServer; namespace JMS.DVBVCR.RecordingService.RestWebApi diff --git a/VCR.NET/ServiceCore/VCRServer/VCRServer.cs b/VCR.NET/ServiceCore/VCRServer/VCRServer.cs index a93470f..7a73b43 100644 --- a/VCR.NET/ServiceCore/VCRServer/VCRServer.cs +++ b/VCR.NET/ServiceCore/VCRServer/VCRServer.cs @@ -20,7 +20,7 @@ public partial class VCRServer : MarshalByRefObject, IDisposable /// /// Wird beim Bauen automatisch eingemischt. /// - private const string CURRENTDATE = "2015/12/25"; + private const string CURRENTDATE = "2016/02/04"; /// /// Aktuelle Version des VCR.NET Recording Service. diff --git a/VCR.NET/ServiceCore/VCRServer/VCRServer_Hibernate.cs b/VCR.NET/ServiceCore/VCRServer/VCRServer_Hibernate.cs index d03c0c6..f6dde56 100644 --- a/VCR.NET/ServiceCore/VCRServer/VCRServer_Hibernate.cs +++ b/VCR.NET/ServiceCore/VCRServer/VCRServer_Hibernate.cs @@ -18,7 +18,7 @@ partial class VCRServer /// /// Allgemeine Sperre zum Zugriff auf vernderliche globale Eigenschaften. /// - private object m_HibernateSync = new object(); + private readonly object m_HibernateSync = new object(); /// /// Gesetzt, wenn beim bergang in den Schlafzustand auf interaktive Anwender geprft werden soll. diff --git a/VCR.NET/ServiceCore/VCRServer/VCRServer_Rest.cs b/VCR.NET/ServiceCore/VCRServer/VCRServer_Rest.cs index 7fd77af..0d1997a 100644 --- a/VCR.NET/ServiceCore/VCRServer/VCRServer_Rest.cs +++ b/VCR.NET/ServiceCore/VCRServer/VCRServer_Rest.cs @@ -80,15 +80,7 @@ public TTarget FindProgramGuideEntry( string profileName, SourceIdentif /// Die Quelle, deren Eintrag ermittelt werden soll. /// Der exakte Startzeitpunkt. /// Der gewnschte Eintrag. - public ProgramGuideEntry FindProgramGuideEntry( string profileName, SourceIdentifier source, DateTime start ) - { - // See if profile exists - var profile = Profiles[profileName]; - if (profile == null) - return null; - else - return profile.ProgramGuide.FindEntry( source, start ); - } + public ProgramGuideEntry FindProgramGuideEntry( string profileName, SourceIdentifier source, DateTime start ) => Profiles[profileName]?.ProgramGuide.FindEntry( source, start ); /// /// Verndert eine Ausnahme. diff --git a/VCR.NET/WebClient41/WebClient41.csproj b/VCR.NET/WebClient41/WebClient41.csproj index 5c0a38c..90caeea 100644 --- a/VCR.NET/WebClient41/WebClient41.csproj +++ b/VCR.NET/WebClient41/WebClient41.csproj @@ -20,6 +20,7 @@ enabled false + true @@ -171,6 +172,10 @@ vcrnet.css + + + compilerconfig.json + diff --git a/VCR.NET/WebClient41/compilerconfig.json b/VCR.NET/WebClient41/compilerconfig.json new file mode 100644 index 0000000..d6f07c1 --- /dev/null +++ b/VCR.NET/WebClient41/compilerconfig.json @@ -0,0 +1,10 @@ +[ + { + "outputFile": "content/vcrnet.css", + "inputFile": "content/vcrnet.less" + }, + { + "outputFile": "content/jmslib.css", + "inputFile": "content/jmslib.less" + } +] \ No newline at end of file diff --git a/VCR.NET/WebClient41/compilerconfig.json.defaults b/VCR.NET/WebClient41/compilerconfig.json.defaults new file mode 100644 index 0000000..c75eb7d --- /dev/null +++ b/VCR.NET/WebClient41/compilerconfig.json.defaults @@ -0,0 +1,49 @@ +{ + "compilers": { + "less": { + "autoPrefix": "", + "cssComb": "none", + "ieCompat": true, + "strictMath": false, + "strictUnits": false, + "relativeUrls": true, + "rootPath": "", + "sourceMapRoot": "", + "sourceMapBasePath": "", + "sourceMap": false + }, + "sass": { + "includePath": "", + "indentType": "space", + "indentWidth": 2, + "outputStyle": "nested", + "Precision": 5, + "relativeUrls": true, + "sourceMapRoot": "", + "sourceMap": false + }, + "stylus": { + "sourceMap": false + }, + "babel": { + "sourceMap": false + }, + "coffeescript": { + "bare": false, + "runtimeMode": "node", + "sourceMap": false + } + }, + "minifiers": { + "css": { + "enabled": true, + "termSemicolons": true, + "gzip": false + }, + "javascript": { + "enabled": true, + "termSemicolons": true, + "gzip": false + } + } +} \ No newline at end of file diff --git a/VCR.NET/WebClient41/content/jmslib.css b/VCR.NET/WebClient41/content/jmslib.css index 792dc99..7081d79 100644 --- a/VCR.NET/WebClient41/content/jmslib.css +++ b/VCR.NET/WebClient41/content/jmslib.css @@ -74,5 +74,4 @@ } .planOutsideGuide { background-color: #eeeeee; -} -/*# sourceMappingURL=jmslib.css.map */ \ No newline at end of file +} \ No newline at end of file diff --git a/VCR.NET/WebClient41/content/jmslib.min.css b/VCR.NET/WebClient41/content/jmslib.min.css index 028d250..0af3975 100644 --- a/VCR.NET/WebClient41/content/jmslib.min.css +++ b/VCR.NET/WebClient41/content/jmslib.min.css @@ -1 +1 @@ -.invalid{border:2px solid #f00}.validatingCheckbox{padding-top:4px}.invisible{display:none}.hidden{visibility:hidden}.warning{font-weight:bold;color:#f00}.inlineHelp{font-size:16px !important;margin:10px 10px 10px 10px !important;width:80% !important}.inlineHelp .ui-accordion-header{font-size:12px}.guideOverlap{position:absolute;top:.2em;height:1em;width:100%}.guideOverlap div:first-child{border-bottom-left-radius:4px;border-top-left-radius:4px;border-left-width:1px}.guideOverlap div:last-child{border-bottom-right-radius:4px;border-top-right-radius:4px;border-right-width:1px}.guideOverlap div{box-shadow:1px 1px 1px #999;border-color:#999;border-width:1px 0 1px;height:1em;border-style:solid;position:relative;display:inline;float:left}.guideCurrentTime{position:absolute;height:1.4em;width:1px;border:1px solid #999;border-radius:2px;background-color:#fff}.guideOverlapWithTime{height:1.4em;position:relative}.guideOutsidePlanLeft{border-right-width:1px !important}.guideOutsidePlanRight{border-left-width:1px !important}.guideInsidePlan{background-color:#89fc85}.guideOutsidePlan{background-color:#f2f236}.planOutsideGuide{background-color:#eee} \ No newline at end of file +.invalid{border:2px solid #f00;}.validatingCheckbox{padding-top:4px;}.invisible{display:none;}.hidden{visibility:hidden;}.warning{font-weight:bold;color:#f00;}.inlineHelp{font-size:16px !important;margin:10px 10px 10px 10px !important;width:80% !important;}.inlineHelp .ui-accordion-header{font-size:12px;}.guideOverlap{position:absolute;top:.2em;height:1em;width:100%;}.guideOverlap div:first-child{border-bottom-left-radius:4px;border-top-left-radius:4px;border-left-width:1px;}.guideOverlap div:last-child{border-bottom-right-radius:4px;border-top-right-radius:4px;border-right-width:1px;}.guideOverlap div{box-shadow:1px 1px 1px #999;border-color:#999;border-width:1px 0 1px;height:1em;border-style:solid;position:relative;display:inline;float:left;}.guideCurrentTime{position:absolute;height:1.4em;width:1px;border:1px solid #999;border-radius:2px;background-color:#fff;}.guideOverlapWithTime{height:1.4em;position:relative;}.guideOutsidePlanLeft{border-right-width:1px !important;}.guideOutsidePlanRight{border-left-width:1px !important;}.guideInsidePlan{background-color:#89fc85;}.guideOutsidePlan{background-color:#f2f236;}.planOutsideGuide{background-color:#eee;} \ No newline at end of file diff --git a/VCR.NET/WebClient41/content/vcrnet.css b/VCR.NET/WebClient41/content/vcrnet.css index 6a54b86..9299240 100644 --- a/VCR.NET/WebClient41/content/vcrnet.css +++ b/VCR.NET/WebClient41/content/vcrnet.css @@ -22,7 +22,7 @@ body a[href]:not(.ui-button):hover { .helpLegend { margin-left: 20px; } -.helpLegend td :first-child { +.helpLegend td:first-child { padding-right: 5px; } .helpLegend img { @@ -154,7 +154,7 @@ body a[href]:not(.ui-button):hover { margin-bottom: 0px !important; } .linkArea { - background-color: #dddddd; + background-color: #ddd; border: 0px solid transparent; border-radius: 4px; font-size: small; @@ -286,7 +286,7 @@ body a[href]:not(.ui-button):hover { font-size: xx-large; font-weight: bold; background-color: #dddddd; - border: 10px solid #cccccc; + border: 10px solid #ccc; border-radius: 5px; } .ui-datepicker { @@ -452,7 +452,7 @@ fieldset legend { margin-left: 10px; } .suspectEnd { - background-color: #ffff00; + background-color: #FFFF00; font-weight: bold; } .mainOuter { @@ -493,5 +493,4 @@ fieldset legend { } .sideBySide > div { display: table-cell; -} -/*# sourceMappingURL=vcrnet.css.map */ \ No newline at end of file +} \ No newline at end of file diff --git a/VCR.NET/WebClient41/content/vcrnet.less b/VCR.NET/WebClient41/content/vcrnet.less index 4ae8d37..461601f 100644 --- a/VCR.NET/WebClient41/content/vcrnet.less +++ b/VCR.NET/WebClient41/content/vcrnet.less @@ -69,7 +69,7 @@ body { .helpLegend { margin-left: 20px; - td :first-child { + td:first-child { padding-right: 5px; } diff --git a/VCR.NET/WebClient41/content/vcrnet.min.css b/VCR.NET/WebClient41/content/vcrnet.min.css index 90182fa..55a3760 100644 --- a/VCR.NET/WebClient41/content/vcrnet.min.css +++ b/VCR.NET/WebClient41/content/vcrnet.min.css @@ -1 +1 @@ -body{background-color:#f4f4f4;font-family:Arial,sans-serif}body :link,body :visited{color:#00f;text-decoration:none}body .ui-button{color:#000 !important}body a[href]:not(.ui-button):hover{text-decoration:underline}.linkImage{vertical-align:middle;padding-bottom:2px;margin-left:2px;border:none}.helpLegend{margin-left:20px}.helpLegend td :first-child{padding-right:5px}.helpLegend img{border-style:none}.helpLegend tr{vertical-align:top}.dataTable{font-family:'Courier New';white-space:nowrap;border-spacing:0;margin-top:5px}.dataTable thead tr{background-color:#ccc;font-weight:bold}.dataTable tr{background-color:#e0e0e0}.dataTable td:first-child{border-left:0}.dataTable td{padding:2px 10px 2px 4px;border-left:2px;border-right:0;border-top:1px;border-bottom:1px;border-color:#f4f4f4;border-style:solid}.dataTable.wideTable{min-width:1050px}.detailView td{border-color:#e0e0e0}.spanExpando{white-space:normal;width:0}.faqContent{width:90%}.faqContent .faqShot{border-style:dotted;border-width:1px;padding:5px}.planItemMode{width:22px}.planItemMode img{padding-left:6px;border:none}.guideInPlan{margin-top:8px}.guideInPlan td:last-child:not([colspan]){width:100%}.guideInPlan td{vertical-align:top}.guideDescription{white-space:pre-wrap}.vccRed{color:#f00}.vccBlue{color:#009}.vccYellow{color:#fe0}.vccGreen{color:#090}.filePatternTable{font-size:.9em}.filePatternTable thead{font-weight:bold}.filePatternTable thead td:nth-child(2){width:10px}.homeContent{margin-top:-20px}.homeContent :link,.homeContent :visited{color:#0000a0}.homeContent .taskStarter{margin-top:4px;margin-bottom:4px;list-style-type:none;width:70% !important}.serverActive{font-weight:bold;color:#f00}.copyright{margin-top:10px;font-size:small}.copyright a{float:left}.copyright span{float:left;padding-left:4px;padding-top:10px}.settingsTable{margin:0 20px 0 20px;width:80%}.settingsTable td{padding:7px}.settingsTable .inlineHelp{margin-bottom:0 !important}.linkArea{background-color:#ddd;border:0 solid transparent;border-radius:4px;font-size:small;padding:5px;width:98%}.linkArea a{vertical-align:middle}.editButtons{font-size:small;margin-top:10px}.optionHelpTable{margin:10px 0 10px 10px}.optionHelpTable .optionHelpName{font-weight:bold}.optionHelpTable .optionHelpDescription{padding-left:30px}.editPart .lockDeviceOption{position:relative;top:2px}.editLabel{width:13em}.spaceColumn{width:5px}.repeatEndLabel{vertical-align:top}.logFilter.linkArea{padding-top:0;padding-bottom:0}.logSourceColumn{width:99%;white-space:normal}.optionButton{font-size:x-small}.toggleButton.ui-state-active{font-weight:bold}.planButton{margin-top:2px}.danger{font-weight:bolder;border-color:#8b0000;border-width:2px}.danger .ui-button-text{color:#8b0000}.guideSelection{margin:5px}.guideSelection .ui-button{margin-bottom:4px;margin-right:4px}.displayArea{margin-top:10px}.displayArea .dataTable{margin-left:20px}.guideNavigation{margin:10px 0 10px 0}.guideName{width:99%}.exceptionSlider{width:500px}.exceptionButtons{font-size:x-small}.exceptionImage{vertical-align:middle;margin-left:8px;float:right}.exceptionState{text-align:center}.hibernateFlag{vertical-align:middle}.guideDetails{width:10px}.guideInGuide{margin-left:20px}.guideSpacing{margin-top:10px;vertical-align:middle}.guideSpacing .optionButton{margin-bottom:4px}.recordingOptions{margin:3px 3px 0 5px;font-size:smaller}.inactiveRecordingOption{text-decoration:line-through}.jobText{padding-top:15px;font-size:large}.jobTextPlaceholder{padding-left:20px}.serverRestart{padding:100px;margin:100px;vertical-align:middle;text-align:center;font-size:xx-large;font-weight:bold;background-color:#ddd;border:10px solid #ccc;border-radius:5px}.ui-datepicker{font-size:small}.selectByCheckBox{vertical-align:middle}.highlightText{font-weight:bold;color:#111}.jobStorage{font-size:x-small;margin-bottom:10px}.jobTable{padding-bottom:15px;padding-right:5px;padding-left:5px;width:80%}.jobTable a{color:#000}.directoryBrowser select{min-width:500px;margin-right:5px}.ui-tabs-nav.ui-widget-header{background-color:#fff;background-image:none;border-style:none}.adminView.ui-tabs-vertical{width:100%;font-size:medium}.adminView.ui-tabs-vertical select{font-size:small}.adminView.ui-tabs-vertical .ui-tabs-nav{padding:.2em .1em .2em .2em;float:left;width:12em}.adminView.ui-tabs-vertical .ui-tabs-nav li{clear:left;width:100%;border-width:1px !important;border-radius:4px !important;margin:0 -1px .2em 0}.adminView.ui-tabs-vertical .ui-tabs-nav li a{display:block;width:83%}.adminView.ui-tabs-vertical .ui-tabs-nav li .ui-tabs-active{padding-bottom:0;padding-right:.1em}.adminView.ui-tabs-vertical .ui-tabs-panel{float:left;width:70%;padding:0 1em 10px 1em}.adminView.ui-tabs-vertical .editButtons{font-size:small}.adminView.ui-tabs-vertical .directoryButtons{margin-top:0;margin-bottom:10px;margin-right:5px}.adminView.ui-tabs-vertical .guideStations{margin-bottom:10px}.adminView.ui-tabs-vertical .adminSetting{margin-top:6px;margin-bottom:4px;vertical-align:middle}.adminView.ui-tabs-vertical .adminSettingGap{margin-top:30px}.adminView.ui-tabs-vertical #addToGuide{margin-top:-4px;margin-left:5px}.adminView.ui-tabs-vertical #removeFromGuide{vertical-align:top;text-align:left;margin-top:0}.adminView.ui-tabs-vertical .guideHours .ui-button{font-size:x-small;margin-top:-3px}.adminView.ui-tabs-vertical .scanHours .ui-button{font-size:x-small;margin-top:-3px}.adminView.ui-tabs-vertical #guideSources{min-width:30%}.adminView.ui-tabs-vertical .scanColumn{padding-left:0;padding-right:0;text-align:center}.adminView.ui-tabs-vertical .scanColumn input[type=text]{font-size:medium;text-align:center;background-color:#f8f8f8}.guideFavorites{margin:10px}.guideFavorites fieldset{padding-top:0}.startColumn{width:11em}.endColumn{width:3em}.nameColumn{white-space:normal}.sourceColumn{white-space:normal}.planException{border-left:0 !important;width:24px}.editCurrent{vertical-align:middle}.versionTable{margin-left:15px;margin-top:5px}.outdatedVersion{font-weight:bold;color:#f00}fieldset{background-color:transparent;padding:10px}fieldset legend{font-weight:bold;font-size:small}.codeSample{background-color:#fff;border:1px solid #000;padding:5px}.helpIndent{margin-left:10px}.suspectEnd{background-color:#ff0;font-weight:bold}.mainOuter{margin-top:60px}.mainNavigation{margin-top:-15px;margin-bottom:20px}#mainArea{margin:0 10px}.guideSourceFilter{white-space:nowrap;font-size:x-small;margin-left:5px;margin-right:0}.guideSourceFilter label{margin-right:0 !important}.favoritesFilter{font-size:x-small;margin-bottom:10px;margin-left:10px}.favoritesTable{margin-left:10px}.favoritesTable tbody>tr>td:first-Child{text-align:center}.sideBySide{display:table-row}.sideBySide div:first-Child{padding-right:.5em}.sideBySide>div{display:table-cell} \ No newline at end of file +body{background-color:#f4f4f4;font-family:Arial,sans-serif;}body :link,body :visited{color:#00f;text-decoration:none;}body .ui-button{color:#000 !important;}body a[href]:not(.ui-button):hover{text-decoration:underline;}.linkImage{vertical-align:middle;padding-bottom:2px;margin-left:2px;border:none;}.helpLegend{margin-left:20px;}.helpLegend td:first-child{padding-right:5px;}.helpLegend img{border-style:none;}.helpLegend tr{vertical-align:top;}.dataTable{font-family:'Courier New';white-space:nowrap;border-spacing:0;margin-top:5px;}.dataTable thead tr{background-color:#ccc;font-weight:bold;}.dataTable tr{background-color:#e0e0e0;}.dataTable td:first-child{border-left:0;}.dataTable td{padding:2px 10px 2px 4px;border-left:2px;border-right:0;border-top:1px;border-bottom:1px;border-color:#f4f4f4;border-style:solid;}.dataTable.wideTable{min-width:1050px;}.detailView td{border-color:#e0e0e0;}.spanExpando{white-space:normal;width:0;}.faqContent{width:90%;}.faqContent .faqShot{border-style:dotted;border-width:1px;padding:5px;}.planItemMode{width:22px;}.planItemMode img{padding-left:6px;border:none;}.guideInPlan{margin-top:8px;}.guideInPlan td:last-child:not([colspan]){width:100%;}.guideInPlan td{vertical-align:top;}.guideDescription{white-space:pre-wrap;}.vccRed{color:#f00;}.vccBlue{color:#009;}.vccYellow{color:#fe0;}.vccGreen{color:#090;}.filePatternTable{font-size:.9em;}.filePatternTable thead{font-weight:bold;}.filePatternTable thead td:nth-child(2){width:10px;}.homeContent{margin-top:-20px;}.homeContent :link,.homeContent :visited{color:#0000a0;}.homeContent .taskStarter{margin-top:4px;margin-bottom:4px;list-style-type:none;width:70% !important;}.serverActive{font-weight:bold;color:#f00;}.copyright{margin-top:10px;font-size:small;}.copyright a{float:left;}.copyright span{float:left;padding-left:4px;padding-top:10px;}.settingsTable{margin:0 20px 0 20px;width:80%;}.settingsTable td{padding:7px;}.settingsTable .inlineHelp{margin-bottom:0 !important;}.linkArea{background-color:#ddd;border:0 solid transparent;border-radius:4px;font-size:small;padding:5px;width:98%;}.linkArea a{vertical-align:middle;}.editButtons{font-size:small;margin-top:10px;}.optionHelpTable{margin:10px 0 10px 10px;}.optionHelpTable .optionHelpName{font-weight:bold;}.optionHelpTable .optionHelpDescription{padding-left:30px;}.editPart .lockDeviceOption{position:relative;top:2px;}.editLabel{width:13em;}.spaceColumn{width:5px;}.repeatEndLabel{vertical-align:top;}.logFilter.linkArea{padding-top:0;padding-bottom:0;}.logSourceColumn{width:99%;white-space:normal;}.optionButton{font-size:x-small;}.toggleButton.ui-state-active{font-weight:bold;}.planButton{margin-top:2px;}.danger{font-weight:bolder;border-color:#8b0000;border-width:2px;}.danger .ui-button-text{color:#8b0000;}.guideSelection{margin:5px;}.guideSelection .ui-button{margin-bottom:4px;margin-right:4px;}.displayArea{margin-top:10px;}.displayArea .dataTable{margin-left:20px;}.guideNavigation{margin:10px 0 10px 0;}.guideName{width:99%;}.exceptionSlider{width:500px;}.exceptionButtons{font-size:x-small;}.exceptionImage{vertical-align:middle;margin-left:8px;float:right;}.exceptionState{text-align:center;}.hibernateFlag{vertical-align:middle;}.guideDetails{width:10px;}.guideInGuide{margin-left:20px;}.guideSpacing{margin-top:10px;vertical-align:middle;}.guideSpacing .optionButton{margin-bottom:4px;}.recordingOptions{margin:3px 3px 0 5px;font-size:smaller;}.inactiveRecordingOption{text-decoration:line-through;}.jobText{padding-top:15px;font-size:large;}.jobTextPlaceholder{padding-left:20px;}.serverRestart{padding:100px;margin:100px;vertical-align:middle;text-align:center;font-size:xx-large;font-weight:bold;background-color:#ddd;border:10px solid #ccc;border-radius:5px;}.ui-datepicker{font-size:small;}.selectByCheckBox{vertical-align:middle;}.highlightText{font-weight:bold;color:#111;}.jobStorage{font-size:x-small;margin-bottom:10px;}.jobTable{padding-bottom:15px;padding-right:5px;padding-left:5px;width:80%;}.jobTable a{color:#000;}.directoryBrowser select{min-width:500px;margin-right:5px;}.ui-tabs-nav.ui-widget-header{background-color:#fff;background-image:none;border-style:none;}.adminView.ui-tabs-vertical{width:100%;font-size:medium;}.adminView.ui-tabs-vertical select{font-size:small;}.adminView.ui-tabs-vertical .ui-tabs-nav{padding:.2em .1em .2em .2em;float:left;width:12em;}.adminView.ui-tabs-vertical .ui-tabs-nav li{clear:left;width:100%;border-width:1px !important;border-radius:4px !important;margin:0 -1px .2em 0;}.adminView.ui-tabs-vertical .ui-tabs-nav li a{display:block;width:83%;}.adminView.ui-tabs-vertical .ui-tabs-nav li .ui-tabs-active{padding-bottom:0;padding-right:.1em;}.adminView.ui-tabs-vertical .ui-tabs-panel{float:left;width:70%;padding:0 1em 10px 1em;}.adminView.ui-tabs-vertical .editButtons{font-size:small;}.adminView.ui-tabs-vertical .directoryButtons{margin-top:0;margin-bottom:10px;margin-right:5px;}.adminView.ui-tabs-vertical .guideStations{margin-bottom:10px;}.adminView.ui-tabs-vertical .adminSetting{margin-top:6px;margin-bottom:4px;vertical-align:middle;}.adminView.ui-tabs-vertical .adminSettingGap{margin-top:30px;}.adminView.ui-tabs-vertical #addToGuide{margin-top:-4px;margin-left:5px;}.adminView.ui-tabs-vertical #removeFromGuide{vertical-align:top;text-align:left;margin-top:0;}.adminView.ui-tabs-vertical .guideHours .ui-button{font-size:x-small;margin-top:-3px;}.adminView.ui-tabs-vertical .scanHours .ui-button{font-size:x-small;margin-top:-3px;}.adminView.ui-tabs-vertical #guideSources{min-width:30%;}.adminView.ui-tabs-vertical .scanColumn{padding-left:0;padding-right:0;text-align:center;}.adminView.ui-tabs-vertical .scanColumn input[type=text]{font-size:medium;text-align:center;background-color:#f8f8f8;}.guideFavorites{margin:10px;}.guideFavorites fieldset{padding-top:0;}.startColumn{width:11em;}.endColumn{width:3em;}.nameColumn{white-space:normal;}.sourceColumn{white-space:normal;}.planException{border-left:0 !important;width:24px;}.editCurrent{vertical-align:middle;}.versionTable{margin-left:15px;margin-top:5px;}.outdatedVersion{font-weight:bold;color:#f00;}fieldset{background-color:transparent;padding:10px;}fieldset legend{font-weight:bold;font-size:small;}.codeSample{background-color:#fff;border:1px solid #000;padding:5px;}.helpIndent{margin-left:10px;}.suspectEnd{background-color:#ff0;font-weight:bold;}.mainOuter{margin-top:60px;}.mainNavigation{margin-top:-15px;margin-bottom:20px;}#mainArea{margin:0 10px;}.guideSourceFilter{white-space:nowrap;font-size:x-small;margin-left:5px;margin-right:0;}.guideSourceFilter label{margin-right:0 !important;}.favoritesFilter{font-size:x-small;margin-bottom:10px;margin-left:10px;}.favoritesTable{margin-left:10px;}.favoritesTable tbody>tr>td:first-Child{text-align:center;}.sideBySide{display:table-row;}.sideBySide div:first-Child{padding-right:.5em;}.sideBySide>div{display:table-cell;} \ No newline at end of file diff --git a/VCR.NET/WebClient41/ui/plan.html b/VCR.NET/WebClient41/ui/plan.html index 5f28740..6a80f48 100644 --- a/VCR.NET/WebClient41/ui/plan.html +++ b/VCR.NET/WebClient41/ui/plan.html @@ -63,8 +63,8 @@

Erläuterungen zur Bedienung

- Handelt es sich um eine sich wiederholende Aufzeichnung,so - kann auch das Symbol direkt rechts neben dem Namen angeklickt werden, + Handelt es sich um eine sich wiederholende Aufzeichnung, + so kann auch das Symbol direkt rechts neben dem Namen angeklickt werden, um die Ausnahmeregelung für die jeweilige Aufzeichnung anzuzeigen und zu ändern. From 7fa12c13258b054c6195f6c42eec49ae4f0fd1c3 Mon Sep 17 00:00:00 2001 From: "Dr. Jochen Manns" Date: Sun, 13 Mar 2016 17:31:55 +0100 Subject: [PATCH 002/415] Fixed schedule with no source in job with no source --- .../ServiceCore/Persistence/VCRSchedule.cs | 6 +- .../ServiceCore/RestWebApi/PlanActivity.cs | 2 +- VCR.NET/ServiceCore/VCRServer/VCRServer.cs | 2 +- VCR.NET/VCRNETSetup/VCRNETSetup.wixproj | 4 +- VCR.NET/WebClient41/scripts/JMSLib.js | 14 ++-- VCR.NET/WebClient41/scripts/JMSLib.js.map | 2 +- VCR.NET/WebClient41/scripts/vcrnet.js | 84 +++++++++---------- VCR.NET/WebClient41/scripts/vcrnet.js.map | 2 +- VCR.NET/WebClient41/scripts/vcrnet.ts | 2 +- VCR.NET/WebClient41/scripts/vcrserver.js | 14 ++-- VCR.NET/WebClient41/scripts/vcrserver.js.map | 2 +- 11 files changed, 67 insertions(+), 67 deletions(-) diff --git a/VCR.NET/ServiceCore/Persistence/VCRSchedule.cs b/VCR.NET/ServiceCore/Persistence/VCRSchedule.cs index 228ea8a..8efd582 100644 --- a/VCR.NET/ServiceCore/Persistence/VCRSchedule.cs +++ b/VCR.NET/ServiceCore/Persistence/VCRSchedule.cs @@ -406,9 +406,9 @@ public void AddToScheduler( RecordingScheduler scheduler, VCRJob job, IScheduleR Source = new Station { - TransportStream = persistedSource.Source.TransportStream, - Network = persistedSource.Source.Network, - Service = persistedSource.Source.Service, + TransportStream = persistedSource.Source?.TransportStream ?? 0, + Network = persistedSource.Source?.Network ?? 0, + Service = persistedSource.Source?.Service ?? 0, Name = persistedSource.DisplayName, }, }; diff --git a/VCR.NET/ServiceCore/RestWebApi/PlanActivity.cs b/VCR.NET/ServiceCore/RestWebApi/PlanActivity.cs index 0c54f23..e45bd92 100644 --- a/VCR.NET/ServiceCore/RestWebApi/PlanActivity.cs +++ b/VCR.NET/ServiceCore/RestWebApi/PlanActivity.cs @@ -333,7 +333,7 @@ public static PlanActivity Create( IScheduleInformation schedule, PlanContext co } // Copy station name - if (source != null) + if (source?.Source != null) { // Remember activity.Source = SourceIdentifier.ToString( source.Source ).Replace( " ", "" ); diff --git a/VCR.NET/ServiceCore/VCRServer/VCRServer.cs b/VCR.NET/ServiceCore/VCRServer/VCRServer.cs index 7a73b43..8ef9288 100644 --- a/VCR.NET/ServiceCore/VCRServer/VCRServer.cs +++ b/VCR.NET/ServiceCore/VCRServer/VCRServer.cs @@ -20,7 +20,7 @@ public partial class VCRServer : MarshalByRefObject, IDisposable /// /// Wird beim Bauen automatisch eingemischt. /// - private const string CURRENTDATE = "2016/02/04"; + private const string CURRENTDATE = "2016/03/13"; /// /// Aktuelle Version des VCR.NET Recording Service. diff --git a/VCR.NET/VCRNETSetup/VCRNETSetup.wixproj b/VCR.NET/VCRNETSetup/VCRNETSetup.wixproj index db82df3..83b8ac3 100644 --- a/VCR.NET/VCRNETSetup/VCRNETSetup.wixproj +++ b/VCR.NET/VCRNETSetup/VCRNETSetup.wixproj @@ -22,7 +22,7 @@ _Extensions.wxs obj\$(Configuration)\_Extensions.wixobj ICE57;ICE43 - SETUPVERSION=4.3.45 + SETUPVERSION=4.3.46 ..\..\msi\ @@ -33,7 +33,7 @@ ICE57;ICE43 _Extensions.wxs obj\$(Configuration)\_Extensions.wixobj - SETUPVERSION=4.3.45 + SETUPVERSION=4.3.46 diff --git a/VCR.NET/WebClient41/scripts/JMSLib.js b/VCR.NET/WebClient41/scripts/JMSLib.js index 4602e3a..a19896f 100644 --- a/VCR.NET/WebClient41/scripts/JMSLib.js +++ b/VCR.NET/WebClient41/scripts/JMSLib.js @@ -25,7 +25,7 @@ var JMSLib; // Eine Sendung wird nur teilweise aufgezeichnet. CSSClass.partialRecord = 'guideOutsidePlan'; return CSSClass; - })(); + }()); JMSLib.CSSClass = CSSClass; // Wertet eine Fehlermeldung von einem Web Dienst aus function dispatchErrorMessage(onError) { @@ -132,7 +132,7 @@ var JMSLib; // Alle bereits geladenden Vorlagen TemplateLoader.loaded = {}; return TemplateLoader; - })(); + }()); JMSLib.TemplateLoader = TemplateLoader; // Hilfsklasse zur Bindung von Formulareigenschaften an Modelldaten var Bindings = (function () { @@ -248,7 +248,7 @@ var JMSLib; // Muster zur Erkennung gültiger Zahlen Bindings.numberPattern = /^\d+$/; return Bindings; - })(); + }()); JMSLib.Bindings = Bindings; // Verwaltet ein unsichtbares HTML Element als Vorlage für eine Zeile in einer Liste var HTMLTemplate = (function () { @@ -402,7 +402,7 @@ var JMSLib; // Die XML Eigenschaft mit dem Namen der Modellmethode, die bei Aktivierung des Oberflächenelementes aufgerufen werden soll HTMLTemplate.clickAttribute = 'data-clickevent'; return HTMLTemplate; - })(); + }()); JMSLib.HTMLTemplate = HTMLTemplate; // Verwaltet in einer Tabellendarstellung die Möglichkeit, Details aufzuklappen. var DetailManager = (function () { @@ -466,7 +466,7 @@ var JMSLib; return newElement; }; return DetailManager; - })(); + }()); JMSLib.DetailManager = DetailManager; // Formatiert Datum und Uhrzeit var DateFormatter = (function () { @@ -547,7 +547,7 @@ var JMSLib; // Die Kürzel für die Wochentage DateFormatter.germanDays = ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa']; return DateFormatter; - })(); + }()); JMSLib.DateFormatter = DateFormatter; // Verwaltung einer Auswahl von N aus 24 Stunden für die Aktualisierungen var HourListSettings = (function () { @@ -586,7 +586,7 @@ var JMSLib; } }; return HourListSettings; - })(); + }()); JMSLib.HourListSettings = HourListSettings; })(JMSLib || (JMSLib = {})); //# sourceMappingURL=jmslib.js.map \ No newline at end of file diff --git a/VCR.NET/WebClient41/scripts/JMSLib.js.map b/VCR.NET/WebClient41/scripts/JMSLib.js.map index 11a78f3..58dbe9d 100644 --- a/VCR.NET/WebClient41/scripts/JMSLib.js.map +++ b/VCR.NET/WebClient41/scripts/JMSLib.js.map @@ -1 +1 @@ -{"version":3,"file":"jmslib.js","sourceRoot":"","sources":["jmslib.ts"],"names":["JMSLib","JMSLib.CSSClass","JMSLib.CSSClass.constructor","JMSLib.dispatchErrorMessage","JMSLib.activateHelp","JMSLib.prepareGuideDisplay","JMSLib.TemplateLoader","JMSLib.TemplateLoader.constructor","JMSLib.TemplateLoader.load","JMSLib.TemplateLoader.loadAbsolute","JMSLib.Bindings","JMSLib.Bindings.constructor","JMSLib.Bindings.bind","JMSLib.Bindings.bind.propertyChanged","JMSLib.Bindings.setErrorIndicator","JMSLib.Bindings.validate","JMSLib.Bindings.synchronizeErrors","JMSLib.Bindings.fromModelToForm","JMSLib.Bindings.checkNumber","JMSLib.HTMLTemplate","JMSLib.HTMLTemplate.constructor","JMSLib.HTMLTemplate.dynamicCreate","JMSLib.HTMLTemplate.staticCreate","JMSLib.HTMLTemplate.refresh","JMSLib.HTMLTemplate.retrieveProperty","JMSLib.HTMLTemplate.applyTemplate","JMSLib.HTMLTemplate.cloneAndApplyTemplate","JMSLib.HTMLTemplate.loadList","JMSLib.DetailManager","JMSLib.DetailManager.constructor","JMSLib.DetailManager.reset","JMSLib.DetailManager.toggle","JMSLib.DateFormatter","JMSLib.DateFormatter.constructor","JMSLib.DateFormatter.formatNumber","JMSLib.DateFormatter.getEndTime","JMSLib.DateFormatter.getDuration","JMSLib.DateFormatter.getStartDate","JMSLib.DateFormatter.getShortDate","JMSLib.DateFormatter.getShortDateUtc","JMSLib.DateFormatter.getStartTime","JMSLib.DateFormatter.parseTime","JMSLib.DateFormatter.parseHourMinute","JMSLib.DateFormatter.parseDigit","JMSLib.HourListSettings","JMSLib.HourListSettings.constructor","JMSLib.HourListSettings.decompress","JMSLib.HourListSettings.compress","JMSLib.HourListSettings.isHourFlag","JMSLib.HourListSettings.createHourButtons"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"jmslib.js","sourceRoot":"","sources":["jmslib.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/VCR.NET/WebClient41/scripts/vcrnet.js b/VCR.NET/WebClient41/scripts/vcrnet.js index 1c5bfda..42c3010 100644 --- a/VCR.NET/WebClient41/scripts/vcrnet.js +++ b/VCR.NET/WebClient41/scripts/vcrnet.js @@ -30,7 +30,7 @@ var CSSClass = (function () { // Das Ende einer Aufzeichnung ist eventuell nicht wie erwünscht. CSSClass.badEndTime = 'suspectEnd'; return CSSClass; -})(); +}()); // Beschreibt einen Favoritensuche in der Programmzeitschrift var SavedGuideQuery = (function () { function SavedGuideQuery(rawQuery) { @@ -160,7 +160,7 @@ var SavedGuideQuery = (function () { // Wird nach dem Laden der Anzahl der Sendungen ausgelöst SavedGuideQuery.onCountLoaded = null; return SavedGuideQuery; -})(); +}()); // Die Verwaltung aller gespeicherten Suchen var SavedGuideQueries = (function () { function SavedGuideQueries() { @@ -193,7 +193,7 @@ var SavedGuideQueries = (function () { // Der Name der Ablage SavedGuideQueries.storeName = 'vcrnet.guidequeries'; return SavedGuideQueries; -})(); +}()); // Repräsentiert die Klasse GuideFilter var GuideFilter = (function () { function GuideFilter() { @@ -356,7 +356,7 @@ var GuideFilter = (function () { // Die einzige Instanz dieser Klasse GuideFilter.global = new GuideFilter(); return GuideFilter; -})(); +}()); // Repräsentiert die Klasse JobScheduleData var JobScheduleDataContract = (function () { function JobScheduleDataContract(job, schedule) { @@ -371,7 +371,7 @@ var JobScheduleDataContract = (function () { .fail(JMSLib.dispatchErrorMessage(onError)); }; return JobScheduleDataContract; -})(); +}()); // Basisklasse für alle Teilanwendungen var Page = (function () { function Page() { @@ -436,7 +436,7 @@ var Page = (function () { }); }; return Page; -})(); +}()); // Globale Initialisierungen $(function () { // Benutzereinstellungen einmalig anfordern @@ -632,7 +632,7 @@ var SourceSelector = (function () { this.load(true); }; return SourceSelector; -})(); +}()); // Verwaltet die Erzeugung der Quellenauswahl var SourceSelectorLoader = (function () { function SourceSelectorLoader(profile) { @@ -654,7 +654,7 @@ var SourceSelectorLoader = (function () { return new SourceSelector(this, sibling, pure); }; return SourceSelectorLoader; -})(); +}()); // Algorithmen zur Prüfung der Eingaben der Benutzereinstellungen var UserSettingsValidator = (function () { function UserSettingsValidator(send) { @@ -688,7 +688,7 @@ var UserSettingsValidator = (function () { this.sendButton.button('option', 'disabled', !isValid); }; return UserSettingsValidator; -})(); +}()); // Beschreibt einen einzelnen Eintrag der Programmzeitschrift, der zur Anzeige vorbereitet wurde var GuideItem = (function () { function GuideItem(rawData) { @@ -739,7 +739,7 @@ var GuideItem = (function () { }; } return GuideItem; -})(); +}()); // Verwaltet einen Eintrag aus der Programmzeitschrift und stellt sicher, dass dieser nur einmal angefordert wird var GuideItemCache = (function () { function GuideItemCache() { @@ -758,7 +758,7 @@ var GuideItemCache = (function () { dataAvailable(this.guideItem); }; return GuideItemCache; -})(); +}()); // Beschreibt einen einzelnen Eintrag in Aufzeichnungsplan var PlanEntry = (function () { function PlanEntry(rawData) { @@ -776,7 +776,7 @@ var PlanEntry = (function () { var start = new Date(rawData.start); var end = new Date(start.getTime() + duration); // Daten aus der Rohdarstellung in das Modell kopieren - this.station = (rawData.station == null) ? '(Aufzeichnung gelöscht)' : rawData.station; + this.station = (rawData.station == null) ? '(unbekannt)' : rawData.station; this.profile = (rawData.device == null) ? '' : rawData.device; this.displayStart = JMSLib.DateFormatter.getStartTime(start); this.displayEnd = JMSLib.DateFormatter.getEndTime(end); @@ -833,7 +833,7 @@ var PlanEntry = (function () { // Sendet die aktuelle Ausnahmeregel zur Änderung an den VCR.NET Recording Service. PlanEntry.prototype.updateException = function (onSuccess) { this.exceptionInfo.update(this.legacyId, onSuccess); }; return PlanEntry; -})(); +}()); // Beschreibt einen einzelne Ausnahmeregel var PlanException = (function () { function PlanException(rawData) { @@ -942,7 +942,7 @@ var PlanException = (function () { }); }; return PlanException; -})(); +}()); // Beschreibt die Daten einer Aufzeichnung var ScheduleData = (function () { function ScheduleData(existingData) { @@ -1072,7 +1072,7 @@ var ScheduleData = (function () { // Das Bit für Sonntag. ScheduleData.flagSunday = 0x40; return ScheduleData; -})(); +}()); // Algorithmen zur Prüfung der Eingaben einer Aufzeichnung var ScheduleDataValidator = (function () { function ScheduleDataValidator(job, existingData) { @@ -1136,7 +1136,7 @@ var ScheduleDataValidator = (function () { this.job.sendButton.button('option', 'disabled', true); }; return ScheduleDataValidator; -})(); +}()); // Beschreibt die Daten eines Auftrags var JobData = (function () { function JobData(existingData, defaultProfile) { @@ -1201,7 +1201,7 @@ var JobData = (function () { data.update(this.id, schedule.id, whenFinished, onError); }; return JobData; -})(); +}()); // Algorithmen zur Prüfung der Eingaben eines Auftrags var JobDataValidator = (function () { function JobDataValidator(existingData, updateButton, defaultProfile) { @@ -1279,7 +1279,7 @@ var JobDataValidator = (function () { // Alle verbotenen Zeichen. JobDataValidator.forbidenCharacters = /[\\\/\:\*\?\"\<\>\|]/; return JobDataValidator; -})(); +}()); // Eingabeelemente für die Sicherheitskonfiguration var SecuritySettingsValidator = (function () { function SecuritySettingsValidator(settings) { @@ -1288,7 +1288,7 @@ var SecuritySettingsValidator = (function () { // Methode zur Durchführung einer Prüfung SecuritySettingsValidator.prototype.validate = function () { }; return SecuritySettingsValidator; -})(); +}()); // Eingabeelemente für das Regelwerk der Aufzeichnungsplanung var ScheduleRulesValidator = (function () { function ScheduleRulesValidator(settings) { @@ -1297,7 +1297,7 @@ var ScheduleRulesValidator = (function () { // Methode zur Durchführung einer Prüfung ScheduleRulesValidator.prototype.validate = function () { }; return ScheduleRulesValidator; -})(); +}()); // Eingabeelemente für die Verzeichnisse var DirectorySettingsValidator = (function () { function DirectorySettingsValidator(settings, send) { @@ -1315,7 +1315,7 @@ var DirectorySettingsValidator = (function () { this.sendButton.button('option', 'disabled', this.pattern != null); }; return DirectorySettingsValidator; -})(); +}()); // Eingabeelemente für die Programmzeitschrift var GuideSettingsValidator = (function () { function GuideSettingsValidator(settings, send, form) { @@ -1371,7 +1371,7 @@ var GuideSettingsValidator = (function () { this.sendButton.button('option', 'disabled', !isValid); }; return GuideSettingsValidator; -})(); +}()); // Eingabeelemente für die Aktualisierung der Quellen var SourceScanSettingsValidator = (function () { function SourceScanSettingsValidator(settings, send) { @@ -1440,7 +1440,7 @@ var SourceScanSettingsValidator = (function () { this.sendButton.button('option', 'disabled', !isValid); }; return SourceScanSettingsValidator; -})(); +}()); // Eingabeelemente für ein einzelnes Gerät var ProfileValidator = (function () { function ProfileValidator(settings, listValidator) { @@ -1463,7 +1463,7 @@ var ProfileValidator = (function () { return (this.active == null) && (this.priority == null) && (this.ciLimit == null) && (this.sourceLimit == null); }; return ProfileValidator; -})(); +}()); // Eingabeelemente für die Geräte var ProfileSettingsValidator = (function () { function ProfileSettingsValidator(settings, send) { @@ -1502,7 +1502,7 @@ var ProfileSettingsValidator = (function () { this.sendButton.button('option', 'disabled', !isValid); }; return ProfileSettingsValidator; -})(); +}()); // Eingabeelemente für die Sicherheitskonfiguration var OtherSettingsValidator = (function () { function OtherSettingsValidator(settings, send) { @@ -1542,7 +1542,7 @@ var OtherSettingsValidator = (function () { this.sendButton.button('option', 'disabled', !isValid); }; return OtherSettingsValidator; -})(); +}()); // Das Modell zur Anzeige einer Aktivität auf einem Gerät var CurrentInfo = (function () { function CurrentInfo(rawData) { @@ -1650,7 +1650,7 @@ var CurrentInfo = (function () { VCRServer.updateEndTime(this.device, this.suppressHibernate, this.scheduleIdentifier, end).done(whenDone); }; return CurrentInfo; -})(); +}()); // Stelle die Daten einer Aufzeichnung dar var InfoSchedule = (function () { function InfoSchedule(rawInfo, isActive) { @@ -1691,7 +1691,7 @@ var InfoSchedule = (function () { this.link = rawInfo.id; } return InfoSchedule; -})(); +}()); // Bietet das Anlegen einer neuen Aufzeichnung zu einem Auftrag an var InfoNew = (function () { function InfoNew(legacyId, isActive) { @@ -1705,7 +1705,7 @@ var InfoNew = (function () { this.isActive = isActive; } return InfoNew; -})(); +}()); // Zeigt einen Auftrag als Knoten der Darstellung an var InfoJob = (function () { function InfoJob(rawInfo) { @@ -1738,7 +1738,7 @@ var InfoJob = (function () { }); }; return InfoJob; -})(); +}()); // Ein einzelner Protokolleintrag var ProtocolEntry = (function () { function ProtocolEntry(rawEntry) { @@ -1775,7 +1775,7 @@ var ProtocolEntry = (function () { this.files = $.map(rawEntry.files, function (file) { return VCRServer.getFileRoot() + encodeURIComponent(file); }); } return ProtocolEntry; -})(); +}()); ////////////////////////// Die einzelnen Seiten ////////////////////////// // Benutzerspezifische Einstellungen var settingsPage = (function (_super) { @@ -1792,7 +1792,7 @@ var settingsPage = (function (_super) { JMSLib.Bindings.bind(new UserSettingsValidator($('#settingsUpdateButton')), $('#settingsData')); }; return settingsPage; -})(Page); +}(Page)); // Fragen und Antworten var faqPage = (function (_super) { __extends(faqPage, _super); @@ -1822,7 +1822,7 @@ var faqPage = (function (_super) { }); }; return faqPage; -})(Page); +}(Page)); // Die Startseite var homePage = (function (_super) { __extends(homePage, _super); @@ -1911,7 +1911,7 @@ var homePage = (function (_super) { // Suchmuster zum ermitteln neuer Versionen. homePage.versionExtract = />VCRNET\.MSI<\/a>[^<]*\s([^\s]+)\s* Date: Sun, 13 Mar 2016 18:54:34 +0100 Subject: [PATCH 003/415] Larger GroupInformation Delay in Card Server to adopt to lazy UK sources (e.g. E4) --- DVB.NET/Card Server/CardServerCore/ActiveStream.cs | 2 +- .../CardServerCore/Implementation/InMemoryCardServer_EPG.cs | 2 +- DVB.NET/Card Server/CardServerCore/InMemoryCardServer.cs | 4 ++-- DVB.NET/Setups/Core/CoreSetup.wixproj | 4 ++-- DVB.NET/Setups/Server/CardServerSetup.wixproj | 4 ++-- DVB.NET/Setups/Tools/ToolSetup.wixproj | 4 ++-- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/DVB.NET/Card Server/CardServerCore/ActiveStream.cs b/DVB.NET/Card Server/CardServerCore/ActiveStream.cs index 00c8886..0e4325c 100644 --- a/DVB.NET/Card Server/CardServerCore/ActiveStream.cs +++ b/DVB.NET/Card Server/CardServerCore/ActiveStream.cs @@ -200,7 +200,7 @@ public void Refresh( TimeSpan interval ) return; // Get the source information - var info = manager.GetCurrentInformation(); + var info = manager.GetCurrentInformationAsync().CancelAfter( 15000 ).Result; // Must start if (!FirstActivationDone) diff --git a/DVB.NET/Card Server/CardServerCore/Implementation/InMemoryCardServer_EPG.cs b/DVB.NET/Card Server/CardServerCore/Implementation/InMemoryCardServer_EPG.cs index bc0acd0..63c42fd 100644 --- a/DVB.NET/Card Server/CardServerCore/Implementation/InMemoryCardServer_EPG.cs +++ b/DVB.NET/Card Server/CardServerCore/Implementation/InMemoryCardServer_EPG.cs @@ -469,7 +469,7 @@ private void CollectProgramGuide( Hardware device ) device.SelectGroup( next.Location, next.Group ); // See if there is something on this group - if (null == device.GetGroupInformation( 5000 )) + if (null == device.GetGroupInformation( 15000 )) { // Push back m_EPGPending.Add( next ); diff --git a/DVB.NET/Card Server/CardServerCore/InMemoryCardServer.cs b/DVB.NET/Card Server/CardServerCore/InMemoryCardServer.cs index fb6c684..39a6208 100644 --- a/DVB.NET/Card Server/CardServerCore/InMemoryCardServer.cs +++ b/DVB.NET/Card Server/CardServerCore/InMemoryCardServer.cs @@ -248,7 +248,7 @@ private void TestForRestart( Hardware device ) return; // Get the group information - var info = device.GetGroupInformation( 5000 ); + var info = device.GetGroupInformation( 15000 ); if (info == null) { // See if we are already out of retries @@ -510,7 +510,7 @@ private ServerInformation CreateState( Hardware device ) var info = new ServerInformation { - HasGroupInformation = (device.GetGroupInformation( 5000 ) != null), + HasGroupInformation = (device.GetGroupInformation( 15000 ) != null), ProgramGuideProgress = EPGProgress, Selection = selection.SelectionKey }; diff --git a/DVB.NET/Setups/Core/CoreSetup.wixproj b/DVB.NET/Setups/Core/CoreSetup.wixproj index 90d72aa..684e6fe 100644 --- a/DVB.NET/Setups/Core/CoreSetup.wixproj +++ b/DVB.NET/Setups/Core/CoreSetup.wixproj @@ -17,7 +17,7 @@ obj\$(Configuration)\ Debug True - SETUPVERSION=4.3.13 + SETUPVERSION=4.3.14 de-de ICE57 @@ -25,7 +25,7 @@ ..\..\..\msi\ obj\$(Configuration)\ True - SETUPVERSION=4.3.13 + SETUPVERSION=4.3.14 de-de ICE57 diff --git a/DVB.NET/Setups/Server/CardServerSetup.wixproj b/DVB.NET/Setups/Server/CardServerSetup.wixproj index 9ffb9b1..596f677 100644 --- a/DVB.NET/Setups/Server/CardServerSetup.wixproj +++ b/DVB.NET/Setups/Server/CardServerSetup.wixproj @@ -16,14 +16,14 @@ ..\..\..\msi\ obj\$(Configuration)\ Debug - SETUPVERSION=4.3.12 + SETUPVERSION=4.3.14 True de-de ..\..\..\msi\ obj\$(Configuration)\ - SETUPVERSION=4.3.12 + SETUPVERSION=4.3.14 True de-de diff --git a/DVB.NET/Setups/Tools/ToolSetup.wixproj b/DVB.NET/Setups/Tools/ToolSetup.wixproj index f4eb476..fcb05e8 100644 --- a/DVB.NET/Setups/Tools/ToolSetup.wixproj +++ b/DVB.NET/Setups/Tools/ToolSetup.wixproj @@ -16,7 +16,7 @@ ..\..\..\msi\ obj\$(Configuration)\ Debug - SETUPVERSION=4.3.12 + SETUPVERSION=4.3.14 de-de True ICE57 @@ -24,7 +24,7 @@ ..\..\..\msi\ obj\$(Configuration)\ - SETUPVERSION=4.3.12 + SETUPVERSION=4.3.14 de-de True ICE57 From a6da293f359017dac00290da98aaab3acb3ac497 Mon Sep 17 00:00:00 2001 From: "Dr. Jochen Manns" Date: Sun, 13 Mar 2016 21:09:35 +0100 Subject: [PATCH 004/415] Corrected scheduler in case task is running and overlapping recording is created --- DVB.NET/Algorithms/Scheduler/AllocationMap.cs | 21 ++------- DVB.NET/Setups/rebuild.cmd | 2 +- .../JMS.DVB.SchedulerTests/ManagerSpecs.cs | 45 +++++++++++++++++++ .../SingleDeviceSpecs.cs | 18 ++++---- VCR.NET/Service/App.config.debug | 4 +- .../CombinedSchedulerTests.cs | 18 +++----- .../Unit Test Collection.csproj | 1 + 7 files changed, 69 insertions(+), 40 deletions(-) diff --git a/DVB.NET/Algorithms/Scheduler/AllocationMap.cs b/DVB.NET/Algorithms/Scheduler/AllocationMap.cs index 8817db4..681323f 100644 --- a/DVB.NET/Algorithms/Scheduler/AllocationMap.cs +++ b/DVB.NET/Algorithms/Scheduler/AllocationMap.cs @@ -356,7 +356,7 @@ private void Allocate( int allocationIndex, IScheduleSource source, ref PlannedT } // Correct it all - for (; ; ) + for (;;) { // On change we must create a clone var allocationIsPrivate = false; @@ -447,7 +447,7 @@ public AllocationPlan PrepareAllocation( IScheduleSource source, SuggestedPlanne var time = timeHolder.Planned; // As long as needed - for (var scanStart = 0; ; ) + for (var scanStart = 0; ;) { // See if there is at least one allocation area available var allocationIndex = m_Allocations.FindIndex( scanStart, a => a.Overlaps( time ) ); @@ -505,21 +505,8 @@ public AllocationMap Clone( DateTime? planTime ) var index = allocations.FindIndex( allocation => allocation.End > planTime.Value ); // Cut off if not the very first - if (--index > 0) - { - // Collapse if only two are left - if (index == allocations.Count - 2) - index++; - - // Load the very start of it all - var allocation = allocations[0]; - - // Update it's end time - allocations[0] = allocation.Clone( allocation.Start, allocations[index].End ); - - // Cleanup the rest - allocations.RemoveRange( 1, index ); - } + if (index > 1) + allocations.RemoveRange( 0, index ); // Report return clone; diff --git a/DVB.NET/Setups/rebuild.cmd b/DVB.NET/Setups/rebuild.cmd index 3fb0f33..48d18ea 100644 --- a/DVB.NET/Setups/rebuild.cmd +++ b/DVB.NET/Setups/rebuild.cmd @@ -1,4 +1,4 @@ -set msbuild="C:\Program Files\MSBuild\12.0\Bin\MSBuild.exe" +set msbuild="C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" rd /s /q ..\Assemblies diff --git a/DVB.NET/Test Applications/JMS.DVB.SchedulerTests/ManagerSpecs.cs b/DVB.NET/Test Applications/JMS.DVB.SchedulerTests/ManagerSpecs.cs index 0f8c61b..b790044 100644 --- a/DVB.NET/Test Applications/JMS.DVB.SchedulerTests/ManagerSpecs.cs +++ b/DVB.NET/Test Applications/JMS.DVB.SchedulerTests/ManagerSpecs.cs @@ -867,5 +867,50 @@ public void WillNotShowCurrentRecordingInPlanIfCut() Assert.AreEqual( initial[1].Time.Start, follower.Time.Start ); } } + + + /// + /// Eine laufende Aufgabe wird korrekt berücksichtigt. + /// + [TestMethod] + public void CanAddRecordingOverlappingRunning() + { + // Create component under test + using (var cut = ResourceManager.Create( StringComparer.InvariantCultureIgnoreCase )) + { + // Add a single device + cut.Add( ResourceMock.Device1 ); + + // Time to use + var now = new DateTime( 2013, 12, 3, 17, 0, 0, DateTimeKind.Utc ); + + // Start a task + Assert.IsTrue( cut.Start( ResourceMock.Device1, null, Guid.NewGuid(), "EPG", now, now.AddMinutes( 20 ) ), "epg" ); + + // Create the recording + var plan1 = RecordingDefinition.Create( false, "testA", Guid.NewGuid(), null, SourceMock.Source1Group1Free, now.AddMinutes( 1 ), TimeSpan.FromMinutes( 120 ) ); + var plan2 = RecordingDefinition.Create( false, "testB", Guid.NewGuid(), null, SourceMock.Source1Group2Free, now.AddDays( 1 ).AddHours( 1 ), TimeSpan.FromMinutes( 30 ) ); + var plan3 = RecordingDefinition.Create( false, "testC", Guid.NewGuid(), null, SourceMock.Source1Group3Free, now.AddDays( 1 ).AddHours( 2 ), TimeSpan.FromMinutes( 30 ) ); + + // Loading helper + Func> loader = + ( s, d ) => + { + // Load recording + s.Add( plan1 ); + s.Add( plan2 ); + s.Add( plan3 ); + + // Report + return s.GetSchedules( d ); + }; + + // Find empty list + var schedules = cut.GetSchedules( now, loader ).ToArray(); + + // Validate + Assert.AreEqual( 3, schedules.Count( s => s.Resource != null ), "#" ); + } + } } } diff --git a/DVB.NET/Test Applications/JMS.DVB.SchedulerTests/SingleDeviceSpecs.cs b/DVB.NET/Test Applications/JMS.DVB.SchedulerTests/SingleDeviceSpecs.cs index 69a369c..78e51dc 100644 --- a/DVB.NET/Test Applications/JMS.DVB.SchedulerTests/SingleDeviceSpecs.cs +++ b/DVB.NET/Test Applications/JMS.DVB.SchedulerTests/SingleDeviceSpecs.cs @@ -465,11 +465,11 @@ public void A_Repeating_Recording_Can_Have_Exceptions() ); var exception1 = new PlanException - { - ExceptionDate = repeatStartLocal.AddDays( 12 ).Date, - DurationDelta = TimeSpan.FromMinutes( -10 ), - StartDelta = TimeSpan.FromMinutes( 10 ), - }; + { + ExceptionDate = repeatStartLocal.AddDays( 12 ).Date, + DurationDelta = TimeSpan.FromMinutes( -10 ), + StartDelta = TimeSpan.FromMinutes( 10 ), + }; var exception2 = new PlanException { @@ -486,16 +486,16 @@ public void A_Repeating_Recording_Can_Have_Exceptions() // Create component under test var cut = new RecordingScheduler( StringComparer.InvariantCultureIgnoreCase ) - { - { FreeTVDevice }, - { plan, exception1, exception2, exception3 }, + { + { FreeTVDevice }, + { plan, exception1, exception2, exception3 }, }; // Load var schedules = cut.GetSchedules( TimeBias ).Take( 30 ).ToArray(); // Check - for (int i = 30; i-- > 0; ) + for (int i = 30; i-- > 0;) if (i == 12) { // Validate diff --git a/VCR.NET/Service/App.config.debug b/VCR.NET/Service/App.config.debug index b628e61..4bd57a9 100644 --- a/VCR.NET/Service/App.config.debug +++ b/VCR.NET/Service/App.config.debug @@ -12,7 +12,7 @@ - + @@ -24,7 +24,7 @@ - + diff --git a/VCR.NET/Unit Test Collection/CombinedSchedulerTests.cs b/VCR.NET/Unit Test Collection/CombinedSchedulerTests.cs index ef86b7f..df8d484 100644 --- a/VCR.NET/Unit Test Collection/CombinedSchedulerTests.cs +++ b/VCR.NET/Unit Test Collection/CombinedSchedulerTests.cs @@ -68,17 +68,13 @@ public CombinedSchedulerTests() // Create directory m_jobDirectory.Create(); - // Path of the scratch file - var zipPath = Path.Combine( m_jobDirectory.FullName, "temp.zip" ); - - // Copy our archive to the directory - File.WriteAllBytes( zipPath, Properties.Resources.TestJobs ); - // Extract [.NET 4.5] - //ZipFile.ExtractToDirectory( zipPath, m_jobDirectory.FullName ); - - // Forget it - File.Delete( zipPath ); + using (var zipStream = new MemoryStream( Properties.Resources.TestJobs )) + using (var zip = new ZipArchive( zipStream )) + foreach (var entry in zip.Entries) + using (var source = entry.Open()) + using (var target = new FileStream( Path.Combine( m_jobDirectory.FullName, entry.Name ), FileMode.CreateNew, FileAccess.Write, FileShare.None )) + source.CopyTo( target ); // Process all files m_jobs = @@ -174,7 +170,7 @@ public void FullValidation() // Create component under Test using (var cfg = TestConfigurationProvider.Create( Properties.Resources.AllSchedulers )) using (var cut = RecordingPlanner.Create( this )) - for (int i = 250; i-- > 0; ) + for (int i = 250; i-- > 0;) cut.DispatchNextActivity( m_planTime ); } diff --git a/VCR.NET/Unit Test Collection/Unit Test Collection.csproj b/VCR.NET/Unit Test Collection/Unit Test Collection.csproj index 93a2b92..c24a408 100644 --- a/VCR.NET/Unit Test Collection/Unit Test Collection.csproj +++ b/VCR.NET/Unit Test Collection/Unit Test Collection.csproj @@ -65,6 +65,7 @@ 3.5 + From 051f1ac1e4105d52cd6529432ff8a0ff8902cdcd Mon Sep 17 00:00:00 2001 From: "Dr. Jochen Manns" Date: Tue, 15 Mar 2016 18:41:45 +0100 Subject: [PATCH 005/415] Generate PAL for GfD SPUMUX --- VCR.NET/EasyCut/SUPCutter.cs | 582 ++++++++++++--------- VCR.NET/ServiceCore/VCRServer/VCRServer.cs | 2 +- 2 files changed, 342 insertions(+), 242 deletions(-) diff --git a/VCR.NET/EasyCut/SUPCutter.cs b/VCR.NET/EasyCut/SUPCutter.cs index cf73d89..b758412 100644 --- a/VCR.NET/EasyCut/SUPCutter.cs +++ b/VCR.NET/EasyCut/SUPCutter.cs @@ -1,254 +1,354 @@ using System; using System.IO; +using System.Runtime.InteropServices; using System.Text; namespace EasyCut { - /// - /// Implementation of a SUB format sub-title cutter. - /// - public class SUPCutter : CutterBase - { - /// - /// The path to the first source file which will be used to locate the - /// IFO color description. - /// - private string FirstSource = null; - - /// - /// Overall collector of the cut result. - /// - private MemoryStream Collector; - - /// - /// Create a new instance of the algorithm. - /// - public SUPCutter() - { - // Create result in memory - Collector = new MemoryStream(); - } - - /// - /// Cut from the indicated sub-title source into the memory buffer. - /// - /// Sub-title file name. - /// First frame to cut. - /// Last frame to cut. - /// Current frame in resulting file. - public override void Cut(string source, long startPos, long endPos, long pos) - { - // Remember - if (null == FirstSource) FirstSource = source; - - // Open the sub title file - using (FileStream ttx = new FileStream(source, FileMode.Open, FileAccess.Read, FileShare.Read, 100000)) - { - // Minimum length required - long minFrames = (long)Math.Round(MinDuration * Framerate); - - // Overall correction - long corr = startPos - pos; - - // Load all - for (byte[] head = new byte[12]; head.Length == ttx.Read(head, 0, head.Length); ) - { - // Validate - if (('S' != head[0]) || ('P' != head[1])) break; - - // Load PTS - long pts0 = head[2]; - long pts1 = head[3]; - long pts2 = head[4]; - long pts3 = head[5]; - long pts4 = head[6]; - long pts5 = head[7]; - long pts6 = head[8]; - long pts7 = head[9]; - long pts = pts0 + 256 * (pts1 + 256 * (pts2 + 256 * (pts3 + 256 * (pts4 + 256 * (pts5 + 256 * (pts6 + 256 * pts7)))))); - - // Convert - TimeSpan start = new TimeSpan(pts * 1000 / 9), originalPTS = start; - - // To frame - long ttxStart = (long)((start.TotalSeconds + TimeCorrection) * Framerate); - - // We are fully done - if (ttxStart >= endPos) break; - - // Construct length - int low = head[11]; - int high = head[10]; - int len = low + 256 * high; - - // Allocate - byte[] frame = new byte[len - 2]; - - // Load - if (frame.Length != ttx.Read(frame, 0, frame.Length)) break; - - // We didn't reach the beginning - if (ttxStart < startPos) continue; - - // Get the duration of the packet - int duration = GetDuration(frame), originalDuaration = duration; - - // Invalid packet - if (duration < 0) continue; - - // To frame + /// + /// Implementation of a SUB format sub-title cutter. + /// + public class SUPCutter : CutterBase + { + /// + /// The path to the first source file which will be used to locate the + /// IFO color description. + /// + private string FirstSource = null; + + /// + /// Overall collector of the cut result. + /// + private MemoryStream Collector; + + /// + /// Create a new instance of the algorithm. + /// + public SUPCutter() + { + // Create result in memory + Collector = new MemoryStream(); + } + + /// + /// Cut from the indicated sub-title source into the memory buffer. + /// + /// Sub-title file name. + /// First frame to cut. + /// Last frame to cut. + /// Current frame in resulting file. + public override void Cut( string source, long startPos, long endPos, long pos ) + { + // Remember + if (null == FirstSource) FirstSource = source; + + // Open the sub title file + using (FileStream ttx = new FileStream( source, FileMode.Open, FileAccess.Read, FileShare.Read, 100000 )) + { + // Minimum length required + long minFrames = (long) Math.Round( MinDuration * Framerate ); + + // Overall correction + long corr = startPos - pos; + + // Load all + for (byte[] head = new byte[12]; head.Length == ttx.Read( head, 0, head.Length );) + { + // Validate + if (('S' != head[0]) || ('P' != head[1])) break; + + // Load PTS + long pts0 = head[2]; + long pts1 = head[3]; + long pts2 = head[4]; + long pts3 = head[5]; + long pts4 = head[6]; + long pts5 = head[7]; + long pts6 = head[8]; + long pts7 = head[9]; + long pts = pts0 + 256 * (pts1 + 256 * (pts2 + 256 * (pts3 + 256 * (pts4 + 256 * (pts5 + 256 * (pts6 + 256 * pts7)))))); + + // Convert + TimeSpan start = new TimeSpan( pts * 1000 / 9 ), originalPTS = start; + + // To frame + long ttxStart = (long) ((start.TotalSeconds + TimeCorrection) * Framerate); + + // We are fully done + if (ttxStart >= endPos) break; + + // Construct length + int low = head[11]; + int high = head[10]; + int len = low + 256 * high; + + // Allocate + byte[] frame = new byte[len - 2]; + + // Load + if (frame.Length != ttx.Read( frame, 0, frame.Length )) break; + + // We didn't reach the beginning + if (ttxStart < startPos) continue; + + // Get the duration of the packet + int duration = GetDuration( frame ), originalDuaration = duration; + + // Invalid packet + if (duration < 0) continue; + + // To frame double rawFrames = duration * 1024.0 / 90000.0 * Framerate; - // Check the limit - if (minFrames > (long)rawFrames) continue; + // Check the limit + if (minFrames > (long) rawFrames) continue; // Convert down - long frames = (long)Math.Round(rawFrames), originalFrames = frames; + long frames = (long) Math.Round( rawFrames ), originalFrames = frames; // Get the end - long ttxEnd = ttxStart + frames; - - // Clip if running beyond the end of the cut - if (ttxEnd >= endPos) break; - - // Shift - ttxStart -= corr; - - // Convert to PTS - pts = (long)Math.Round(ttxStart * 90000 / Framerate); - - // Update header - head[2] = (byte)(pts & 0xff); - head[3] = (byte)((pts >> 8) & 0xff); - head[4] = (byte)((pts >> 16) & 0xff); - head[5] = (byte)((pts >> 24) & 0xff); - head[6] = (byte)((pts >> 32) & 0xff); - head[7] = (byte)((pts >> 40) & 0xff); - head[8] = (byte)((pts >> 48) & 0xff); - head[9] = (byte)((pts >> 56) & 0xff); - - // Write header - Collector.Write(head, 0, head.Length); - - // Write frame - Collector.Write(frame, 0, frame.Length); - - // Report - Log("{0} ({1} == {2}) from {3}", new TimeSpan(pts * 1000 / 9), originalDuaration, frames, originalPTS); - } - } - } - - /// - /// Schreibt eine Zeile in die Logdatei. - /// - /// Format der Zeile. - /// Parameter fr die Zeile. - private static void Log(string format, params object[] args) - { - // Read the log path - string path = Properties.Settings.Default.SUPLogPath; - - // None - if (string.IsNullOrEmpty(path)) return; - - // Write it - using (StreamWriter stream = new StreamWriter(path, true, Encoding.Unicode)) stream.WriteLine(format, args); - } - - /// - /// Save the cut sub-titles from memory to the indicated summary file. - /// - /// - /// The color IFO will be taken from the first file reported to . - /// - /// Path to the sub-title file. - public override void Save(string target) - { - // Open the file - using (FileStream ttxAll = new FileStream(target, FileMode.Create, FileAccess.Write, FileShare.None)) - { - // Make sure that all data is transferred - Collector.Flush(); - - // Store all - ttxAll.Write(Collector.GetBuffer(), 0, (int)Collector.Length); - } - - // Copy the IFO file - if (null != FirstSource) File.Copy(FirstSource + ".ifo", target + ".ifo", true); - } - - /// - /// Calculate the duration from a SUP packet. - /// - /// The SUP packet excluding the length of the packet. - /// Overall delay inside the SUP packet in SUP units - multiply by 1024 - /// to get a 90kHz clock. - private static int GetDuration(byte[] buffer) - { - // We expect no error but just in case be nice to the caller - try - { - // Load offset to first packet - int offH = buffer[0]; - int offL = buffer[1]; - int offset = offL + 256 * offH - 2; - - // Total duration - int total = 0; - - // Process all sequences - for (; ; ) - { - // Load delay of command table - int delH = buffer[offset + 0]; - int delL = buffer[offset + 1]; - int del = delL + 256 * delH; - - // Sum up - total += del; - - // Start processing commands - int nextH = buffer[offset + 2]; - int nextL = buffer[offset + 3]; - int next = nextL + 256 * nextH - 2; - - // We are done - points to self - if (next == offset) return total; - - // Protect against invalid data leading to endless loops - if (next < offset) return -1; - - // Advance - offset = next; - } - } - catch - { - // Somewhere failed - return -1; - } - } - - #region IDisposable Members - - /// - /// Do proper cleanup. - /// - public override void Dispose() - { - // Cleanup - if (null != Collector) - { - // Close - Collector.Close(); - - // Done - Collector = null; - } - } - - #endregion - } + long ttxEnd = ttxStart + frames; + + // Clip if running beyond the end of the cut + if (ttxEnd >= endPos) break; + + // Shift + ttxStart -= corr; + + // Convert to PTS + pts = (long) Math.Round( ttxStart * 90000 / Framerate ); + + // Update header + head[2] = (byte) (pts & 0xff); + head[3] = (byte) ((pts >> 8) & 0xff); + head[4] = (byte) ((pts >> 16) & 0xff); + head[5] = (byte) ((pts >> 24) & 0xff); + head[6] = (byte) ((pts >> 32) & 0xff); + head[7] = (byte) ((pts >> 40) & 0xff); + head[8] = (byte) ((pts >> 48) & 0xff); + head[9] = (byte) ((pts >> 56) & 0xff); + + // Write header + Collector.Write( head, 0, head.Length ); + + // Write frame + Collector.Write( frame, 0, frame.Length ); + + // Report + Log( "{0} ({1} == {2}) from {3}", new TimeSpan( pts * 1000 / 9 ), originalDuaration, frames, originalPTS ); + } + } + } + + /// + /// Schreibt eine Zeile in die Logdatei. + /// + /// Format der Zeile. + /// Parameter fr die Zeile. + private static void Log( string format, params object[] args ) + { + // Read the log path + string path = Properties.Settings.Default.SUPLogPath; + + // None + if (string.IsNullOrEmpty( path )) return; + + // Write it + using (StreamWriter stream = new StreamWriter( path, true, Encoding.Unicode )) stream.WriteLine( format, args ); + } + + /// + /// Save the cut sub-titles from memory to the indicated summary file. + /// + /// + /// The color IFO will be taken from the first file reported to . + /// + /// Path to the sub-title file. + public override void Save( string target ) + { + // Open the file + using (var ttxAll = new FileStream( target, FileMode.Create, FileAccess.Write, FileShare.None )) + { + // Make sure that all data is transferred + Collector.Flush(); + + // Store all + ttxAll.Write( Collector.GetBuffer(), 0, (int) Collector.Length ); + } + + // Copy the IFO file + if (FirstSource != null) + CopyIfo( FirstSource + ".ifo", target + ".ifo" ); + } + + /// + /// Kopiert die ISO Datei mit den Farbinformationen. + /// + /// Die Quelldatei. + /// Die Zieldatei. + private void CopyIfo( string source, string target ) + { + // Process + File.Copy( source, target, true ); + + // Safe test for color mappings + try + { + using (var ifo = new FileStream( target, FileMode.Open, FileAccess.Read, FileShare.None )) + { + var sector = new byte[2 * 1024]; + var sectorCount = ifo.Length / sector.Length; + + // Should at least have the header sector + if (ifo.Read( sector, 0, sector.Length ) != sector.Length) + return; + + // Get the sector number of the title program chain table + var pgci = ReadNumber( sector, 0xcc ); + if (pgci < 1) + return; + if (pgci >= sectorCount) + return; + + // Read the table + var pgciBase = pgci * sector.Length; + + ifo.Seek( pgciBase, SeekOrigin.Begin ); + + if (ifo.Read( sector, 0, sector.Length ) != sector.Length) + return; + + // We suport only a single chain + if (sector[0] != 0) + return; + if (sector[1] != 1) + return; + + // Read the offset of the first PGC + var start = ReadNumber( sector, 0xc ); + if (start < 0) + return; + + // Adjust to color table + var colorBias = pgciBase + start + 0xa4; + if (colorBias >= ifo.Length) + return; + + // Load the color table + var colors = new byte[16 * 4]; + + ifo.Seek( colorBias, SeekOrigin.Begin ); + + if (ifo.Read( colors, 0, colors.Length ) != colors.Length) + return; + + // Dump table + using (var writer = new StreamWriter( Path.ChangeExtension( target, ".pal" ), false, Encoding.GetEncoding( 1252 ) )) + for (var i = 0; i < colors.Length; i++) + { + // Dump as is + for (var j = 3; j-- > 0;) + writer.Write( colors[++i].ToString( "X2" ) ); + + // Separate by newline + writer.WriteLine(); + } + } + } + catch (Exception) + { + // Ignore any error + } + } + + /// + /// Liest eine Zahl. + /// + /// Ein Speicherbereich. + /// Der Anfang der Zahl (MSB first). + /// Die Zahl. + private static int ReadNumber( byte[] sector, int offset ) + { + // Parts + var b3 = sector[offset++]; + var b2 = sector[offset++]; + var b1 = sector[offset++]; + var b0 = sector[offset++]; + + // Combined + return b0 + 256 * (b1 + 256 * (b2 + 256 * b3)); + } + + /// + /// Calculate the duration from a SUP packet. + /// + /// The SUP packet excluding the length of the packet. + /// Overall delay inside the SUP packet in SUP units - multiply by 1024 + /// to get a 90kHz clock. + private static int GetDuration( byte[] buffer ) + { + // We expect no error but just in case be nice to the caller + try + { + // Load offset to first packet + int offH = buffer[0]; + int offL = buffer[1]; + int offset = offL + 256 * offH - 2; + + // Total duration + int total = 0; + + // Process all sequences + for (;;) + { + // Load delay of command table + int delH = buffer[offset + 0]; + int delL = buffer[offset + 1]; + int del = delL + 256 * delH; + + // Sum up + total += del; + + // Start processing commands + int nextH = buffer[offset + 2]; + int nextL = buffer[offset + 3]; + int next = nextL + 256 * nextH - 2; + + // We are done - points to self + if (next == offset) return total; + + // Protect against invalid data leading to endless loops + if (next < offset) return -1; + + // Advance + offset = next; + } + } + catch + { + // Somewhere failed + return -1; + } + } + + #region IDisposable Members + + /// + /// Do proper cleanup. + /// + public override void Dispose() + { + // Cleanup + if (null != Collector) + { + // Close + Collector.Close(); + + // Done + Collector = null; + } + } + + #endregion + } } diff --git a/VCR.NET/ServiceCore/VCRServer/VCRServer.cs b/VCR.NET/ServiceCore/VCRServer/VCRServer.cs index 8ef9288..2f8a3b6 100644 --- a/VCR.NET/ServiceCore/VCRServer/VCRServer.cs +++ b/VCR.NET/ServiceCore/VCRServer/VCRServer.cs @@ -20,7 +20,7 @@ public partial class VCRServer : MarshalByRefObject, IDisposable /// /// Wird beim Bauen automatisch eingemischt. /// - private const string CURRENTDATE = "2016/03/13"; + private const string CURRENTDATE = "2016/03/15"; /// /// Aktuelle Version des VCR.NET Recording Service. From ff3982e1b2c186c29379db857772e41d9b8be4bd Mon Sep 17 00:00:00 2001 From: "Dr. Jochen Manns" Date: Tue, 15 Mar 2016 19:42:38 +0100 Subject: [PATCH 006/415] First try generade SUP mux --- VCR.NET/EasyCut/CutMain.cs | 232 ++++++--- VCR.NET/EasyCut/CutMain.de.resx | 30 +- VCR.NET/EasyCut/CutMain.resx | 445 ++++++++++-------- .../EasyCut/Properties/Resources.Designer.cs | 20 +- VCR.NET/EasyCut/Properties/Resources.de.resx | 10 +- VCR.NET/EasyCut/Properties/Resources.resx | 10 +- .../EasyCut/Properties/Settings.Designer.cs | 28 +- VCR.NET/EasyCut/Properties/Settings.settings | 6 + VCR.NET/EasyCut/app.config | 6 + 9 files changed, 496 insertions(+), 291 deletions(-) diff --git a/VCR.NET/EasyCut/CutMain.cs b/VCR.NET/EasyCut/CutMain.cs index bed8a0f..d546685 100644 --- a/VCR.NET/EasyCut/CutMain.cs +++ b/VCR.NET/EasyCut/CutMain.cs @@ -1,7 +1,9 @@ using System; using System.Configuration; +using System.Diagnostics; using System.IO; using System.Reflection; +using System.Threading.Tasks; using System.Windows.Forms; namespace EasyCut @@ -28,6 +30,7 @@ public class CutMain : System.Windows.Forms.Form private System.ComponentModel.Container components = null; private SaveFileDialog saveCut; private ComboBox selPage; + private CheckBox ckMux; /// /// Die aktuelle Projektdatei. @@ -71,7 +74,7 @@ protected override void Dispose( bool disposing ) /// private void InitializeComponent() { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CutMain)); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager( typeof( CutMain ) ); this.cmdRun = new System.Windows.Forms.Button(); this.label1 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); @@ -84,122 +87,130 @@ private void InitializeComponent() this.openCuttermaran = new System.Windows.Forms.OpenFileDialog(); this.saveCut = new System.Windows.Forms.SaveFileDialog(); this.selPage = new System.Windows.Forms.ComboBox(); - ((System.ComponentModel.ISupportInitialize)(this.udMinimum)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.udCorrect)).BeginInit(); + this.ckMux = new System.Windows.Forms.CheckBox(); + ((System.ComponentModel.ISupportInitialize) (this.udMinimum)).BeginInit(); + ((System.ComponentModel.ISupportInitialize) (this.udCorrect)).BeginInit(); this.SuspendLayout(); // // cmdRun // - resources.ApplyResources(this.cmdRun, "cmdRun"); + resources.ApplyResources( this.cmdRun, "cmdRun" ); this.cmdRun.Name = "cmdRun"; - this.cmdRun.Click += new System.EventHandler(this.cmdRun_Click); + this.cmdRun.Click += new System.EventHandler( this.cmdRun_Click ); // // label1 // - resources.ApplyResources(this.label1, "label1"); + resources.ApplyResources( this.label1, "label1" ); this.label1.Name = "label1"; // // label2 // - resources.ApplyResources(this.label2, "label2"); + resources.ApplyResources( this.label2, "label2" ); this.label2.Name = "label2"; // // selRate // + resources.ApplyResources( this.selRate, "selRate" ); this.selRate.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - resources.ApplyResources(this.selRate, "selRate"); this.selRate.Name = "selRate"; // // label3 // - resources.ApplyResources(this.label3, "label3"); + resources.ApplyResources( this.label3, "label3" ); this.label3.Name = "label3"; // // udMinimum // + resources.ApplyResources( this.udMinimum, "udMinimum" ); this.udMinimum.DecimalPlaces = 2; - this.udMinimum.Increment = new decimal(new int[] { + this.udMinimum.Increment = new decimal( new int[] { 1, 0, 0, - 65536}); - resources.ApplyResources(this.udMinimum, "udMinimum"); - this.udMinimum.Maximum = new decimal(new int[] { + 65536} ); + this.udMinimum.Maximum = new decimal( new int[] { 5, 0, 0, - 0}); + 0} ); this.udMinimum.Name = "udMinimum"; // // label4 // - resources.ApplyResources(this.label4, "label4"); + resources.ApplyResources( this.label4, "label4" ); this.label4.Name = "label4"; // // udCorrect // - this.udCorrect.Increment = new decimal(new int[] { + resources.ApplyResources( this.udCorrect, "udCorrect" ); + this.udCorrect.Increment = new decimal( new int[] { 15, 0, 0, - 0}); - resources.ApplyResources(this.udCorrect, "udCorrect"); - this.udCorrect.Maximum = new decimal(new int[] { + 0} ); + this.udCorrect.Maximum = new decimal( new int[] { 10000, 0, 0, - 0}); - this.udCorrect.Minimum = new decimal(new int[] { + 0} ); + this.udCorrect.Minimum = new decimal( new int[] { 10000, 0, 0, - -2147483648}); + -2147483648} ); this.udCorrect.Name = "udCorrect"; // // ckDVB // - resources.ApplyResources(this.ckDVB, "ckDVB"); + resources.ApplyResources( this.ckDVB, "ckDVB" ); this.ckDVB.Name = "ckDVB"; this.ckDVB.UseVisualStyleBackColor = true; - this.ckDVB.CheckedChanged += new System.EventHandler(this.ckDVB_CheckedChanged); + this.ckDVB.CheckedChanged += new System.EventHandler( this.ckDVB_CheckedChanged ); // // openCuttermaran // - resources.ApplyResources(this.openCuttermaran, "openCuttermaran"); + resources.ApplyResources( this.openCuttermaran, "openCuttermaran" ); // // saveCut // - resources.ApplyResources(this.saveCut, "saveCut"); + resources.ApplyResources( this.saveCut, "saveCut" ); this.saveCut.FilterIndex = 2; // // selPage // + resources.ApplyResources( this.selPage, "selPage" ); this.selPage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.selPage.FormattingEnabled = true; - resources.ApplyResources(this.selPage, "selPage"); this.selPage.Name = "selPage"; this.selPage.Sorted = true; // + // ckMux + // + resources.ApplyResources( this.ckMux, "ckMux" ); + this.ckMux.Name = "ckMux"; + this.ckMux.UseVisualStyleBackColor = true; + // // CutMain // - resources.ApplyResources(this, "$this"); - this.Controls.Add(this.selPage); - this.Controls.Add(this.ckDVB); - this.Controls.Add(this.udCorrect); - this.Controls.Add(this.udMinimum); - this.Controls.Add(this.label4); - this.Controls.Add(this.label3); - this.Controls.Add(this.selRate); - this.Controls.Add(this.label2); - this.Controls.Add(this.label1); - this.Controls.Add(this.cmdRun); + resources.ApplyResources( this, "$this" ); + this.Controls.Add( this.ckMux ); + this.Controls.Add( this.selPage ); + this.Controls.Add( this.ckDVB ); + this.Controls.Add( this.udCorrect ); + this.Controls.Add( this.udMinimum ); + this.Controls.Add( this.label4 ); + this.Controls.Add( this.label3 ); + this.Controls.Add( this.selRate ); + this.Controls.Add( this.label2 ); + this.Controls.Add( this.label1 ); + this.Controls.Add( this.cmdRun ); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.MaximizeBox = false; this.Name = "CutMain"; - this.Load += new System.EventHandler(this.CutMain_Load); - ((System.ComponentModel.ISupportInitialize)(this.udMinimum)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.udCorrect)).EndInit(); - this.ResumeLayout(false); + this.Load += new System.EventHandler( this.CutMain_Load ); + ((System.ComponentModel.ISupportInitialize) (this.udMinimum)).EndInit(); + ((System.ComponentModel.ISupportInitialize) (this.udCorrect)).EndInit(); + this.ResumeLayout( false ); this.PerformLayout(); } @@ -249,6 +260,7 @@ private void cmdRun_Click( object sender, System.EventArgs e ) // Update settings Properties.Settings.Default.Framerate = FrameRateInfo.FindFrameRate( selRate.SelectedIndex ).Rate; Properties.Settings.Default.Threshold = udMinimum.Value; + Properties.Settings.Default.MuxDefault = ckMux.Checked; Properties.Settings.Default.Save(); // Check selection of page @@ -259,54 +271,55 @@ private void cmdRun_Click( object sender, System.EventArgs e ) try { // Load file - FileInfo outFile = new FileInfo( saveCut.FileName ); + var outFile = new FileInfo( saveCut.FileName ); // Get the type - string suffix = outFile.Extension; + var suffix = outFile.Extension; // Check - if ((null == suffix) || (suffix.Length < 2)) + if ((suffix == null) || (suffix.Length < 2)) throw new ApplicationException( Properties.Resources.Error_Format ); // Cut off suffix = suffix.Substring( 1 ); // Load type name - string typeName = ConfigurationManager.AppSettings[suffix.ToUpper()]; + var typeName = ConfigurationManager.AppSettings[suffix.ToUpper()]; // Check - if ((null == typeName) || (typeName.Length < 1)) + if ((typeName == null) || (typeName.Length < 1)) throw new ApplicationException( Properties.Resources.Error_Format ); // Find the type - Type cutType = Type.GetType( typeName, true ); + var cutType = Type.GetType( typeName, true ); // Create extractor - using (ICutter cutter = (ICutter) Activator.CreateInstance( cutType )) + using (var cutter = (ICutter) Activator.CreateInstance( cutType )) { // Configure cutter.Framerate = FrameRateInfo.FindFrameRate( selRate.SelectedIndex ).Rate; cutter.MinDuration = (double) udMinimum.Value; // Check for VCR.NET 3.1 or later - ICutter2 cutter31 = cutter as ICutter2; - if (null != cutter31) cutter31.TimeCorrection = (double) udCorrect.Value; + var cutter31 = cutter as ICutter2; + if (cutter31 != null) + cutter31.TimeCorrection = (double) udCorrect.Value; // Position in output file long pos = 0; // Process all cuts - foreach (CutElement cut in m_ProjectFile.CutElements) + foreach (var cut in m_ProjectFile.CutElements) { // Get the core name - string coreName = Path.GetFileNameWithoutExtension( cut.VideoFile.FullName ); + var coreName = Path.GetFileNameWithoutExtension( cut.VideoFile.FullName ); // Append page number if (!ckDVB.Checked) coreName += "[" + Properties.Settings.Default.SubtitlePage.ToString() + "]"; // Replace suffix - FileInfo ttxFile = new FileInfo( cut.VideoFile.DirectoryName + @"\" + coreName + "." + suffix ); + var ttxFile = new FileInfo( cut.VideoFile.DirectoryName + @"\" + coreName + "." + suffix ); // Must exist if (!ttxFile.Exists) @@ -325,6 +338,10 @@ private void cmdRun_Click( object sender, System.EventArgs e ) // Finish cutter.Save( saveCut.FileName ); + + // Mux it + if (ckMux.Checked) + DoMux( saveCut.FileName ); } // Done on success @@ -337,6 +354,112 @@ private void cmdRun_Click( object sender, System.EventArgs e ) } } + /// + /// Mischt die Untertitel in eine Datei ein. + /// + /// Der volle Pfad zur Untertiteldatei. + private void DoMux( string supPath ) + { + // Check mode + var palPath = supPath + ".pal"; + if (!File.Exists( palPath )) + return; + + // Must have GfD Path + var gfdPath = Properties.Settings.Default.GfDFolder; + if (!string.IsNullOrEmpty( gfdPath )) + if (!Directory.Exists( gfdPath )) + gfdPath = null; + + // Ask user + if (string.IsNullOrEmpty( gfdPath )) + using (var dlg = new FolderBrowserDialog()) + { + dlg.Description = Properties.Resources.Browse_GfD; + dlg.ShowNewFolderButton = false; + + if (dlg.ShowDialog( this ) != DialogResult.OK) + return; + + // Take it + Properties.Settings.Default.GfDFolder = gfdPath = dlg.SelectedPath; + Properties.Settings.Default.Save(); + } + + // Ask for source file + string videoFile; + + using (var mpg = new OpenFileDialog()) + { + // Configure + mpg.Title = Properties.Resources.Browse_Mpg; + mpg.Filter = "Videos|*.mpg"; + mpg.CheckFileExists = true; + mpg.AddExtension = true; + mpg.DefaultExt = "mpg"; + + // Select the file + if (mpg.ShowDialog( this ) != DialogResult.OK) + return; + + videoFile = mpg.FileName; + } + + // Fixed output path + var supDir = Path.Combine( Path.GetDirectoryName( supPath ), Path.GetFileNameWithoutExtension( supPath ) + ".d" ); + + if (Directory.Exists( supDir )) + Directory.Delete( supDir, true ); + + // Generate pictures + var procInfo = + new ProcessStartInfo + { + Arguments = $"\"{supPath.Replace( "\"", "\"\"" )}\" \"{palPath.Replace( "\"", "\"\"" )}\"", + FileName = Path.Combine( gfdPath, "sup2png.exe" ), + UseShellExecute = false, + }; + + using (var process = Process.Start( procInfo )) + process.WaitForExit(); + + // Mux - in-place, better user SSD! + procInfo = + new ProcessStartInfo + { + Arguments = $"-s0 \"{Path.Combine( supDir, "spumux.xml" ).Replace( "\"", "\"\"" )}\"", + FileName = Path.Combine( gfdPath, "spumux.exe" ), + RedirectStandardOutput = true, + RedirectStandardInput = true, + UseShellExecute = false, + }; + + using (var process = Process.Start( procInfo )) + { + var outbuffer = new byte[10000000]; + + // Send input file + Task.Run( () => + { + var inbuffer = new byte[outbuffer.Length]; + + using (var input = new FileStream( videoFile, FileMode.Open, FileAccess.Read, FileShare.Read, inbuffer.Length )) + for (int n; (n = input.Read( inbuffer, 0, inbuffer.Length )) > 0;) + process.StandardInput.BaseStream.Write( inbuffer, 0, n ); + + process.StandardInput.BaseStream.Close(); + } ); + + // Generate target file + using (var output = new FileStream( Path.Combine( Path.GetDirectoryName( videoFile ), Path.GetFileNameWithoutExtension( videoFile ) + "_SUP.mpg" ), FileMode.Create, FileAccess.Write, FileShare.None, outbuffer.Length )) + for (int n; (n = process.StandardOutput.BaseStream.Read( outbuffer, 0, outbuffer.Length )) > 0;) + output.Write( outbuffer, 0, n ); + + // Synchronize + process.WaitForExit(); + } + } + /// /// Fllt das Hauptfenster mit Voreinstellungen. /// @@ -385,6 +508,7 @@ private void CutMain_Load( object sender, System.EventArgs e ) udMinimum.Value = Properties.Settings.Default.Threshold; // Prepare UI + ckMux.Checked = Properties.Settings.Default.MuxDefault; ckDVB.Enabled = false; // Load pages diff --git a/VCR.NET/EasyCut/CutMain.de.resx b/VCR.NET/EasyCut/CutMain.de.resx index c52a4c2..758352c 100644 --- a/VCR.NET/EasyCut/CutMain.de.resx +++ b/VCR.NET/EasyCut/CutMain.de.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 &Los @@ -123,24 +123,6 @@ Untertitel &Seite - - Cuttermaran Projektdateien|*.cpf|Alle Dateien|*.* - - - Cuttermaran Projektdatei auswählen - - - Text (SUB)|*.sub|Bild (SUP)|*.sup|Alle Dateien|*.* - - - Untertiteldatei auswählen - - - Fehler beim Schneiden - - - Format nicht unterstützt - bitte eine andere Dateiendung verwenden - &Bildrate @@ -162,7 +144,13 @@ Untertiteldatei auswählen - + + + 148, 17 + + + Ein&mischen wenn möglich + AAABAAIAICAQAAAAAADoAgAAJgAAABAQEAAAAAAAKAEAAA4DAAAoAAAAIAAAAEAAAAABAAQAAAAAAIAC diff --git a/VCR.NET/EasyCut/CutMain.resx b/VCR.NET/EasyCut/CutMain.resx index a938934..a35f7a5 100644 --- a/VCR.NET/EasyCut/CutMain.resx +++ b/VCR.NET/EasyCut/CutMain.resx @@ -117,294 +117,207 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System - - - - Microsoft Sans Serif, 18pt, style=Bold + + 1 - + + NoControl - - 232, 16 - - - 104, 91 - - - - 9 + + + 152, 40 - - &Cut + + 152, 89 - - cmdRun + + $this - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + $this - + $this + + ckDVB + - 9 + 10 - + NoControl - - 16, 42 - - - 80, 16 - - - 2 + + CutMain - - Subtitle &Page + + 3 label1 - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 8 - - - NoControl - - - 16, 18 - - - 80, 16 + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 0 + + openCuttermaran - - &Framerate + + + 7 - - label2 + + selRate - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 128, 16 - - $this + + &Cut - - 7 + + label3 13 - - 102, 16 - - - 9 - - - 114, 21 - - - 1 - - - selRate + + udCorrect - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + $this - - 6 - - - NoControl + + 64, 20 16, 66 - - 128, 16 - - - 5 - - - &Threshold (sec) - - - label3 + + 9 - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 48, 17 - - $this + + 2 - - 5 + + 0 - - 152, 64 + + 102, 16 - - 64, 20 + + 80, 16 6 - - udMinimum + + 114, 21 - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - $this + + 4 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 3 + 4 + + + 8 NoControl - - 16, 91 - - - 128, 16 - - - 7 + + 80, 16 - - &Correction (sec) + + $this label4 - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + &Correction (sec) - + $this - - 4 - - - 152, 89 + + System.Windows.Forms.SaveFileDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 64, 20 + + NoControl - - 8 + + cmdRun - - udCorrect + + 7 - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 10 - - $this + + ckMux - + 2 - - True - - - 102, 42 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 48, 17 + + 9 - - 3 + + True - - &DVB + + 5 - - ckDVB + + Text (SUB)|*.sub|Image (SUP)|*.sup|All Files|*.* - + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + $this - - 1 - - - 17, 17 - - - Cuttermaran Project Files|*.cpf|All Files|*.* + + $this - - Please choose the Cuttermaran Project File + + 16, 91 - - 155, 17 - - - Text (SUB)|*.sub|Image (SUP)|*.sup|All Files|*.* + + Microsoft Sans Serif, 18pt, style=Bold Please choose the Subtitle Target File - - 152, 40 - - - 64, 21 - - - 4 - - - selPage - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + NoControl - + $this - - 0 - - - True - - - 5, 13 - - - 346, 116 - AAABAAIAICAQAAAAAADoAgAAJgAAABAQEAAAAAAAKAEAAA4DAAAoAAAAIAAAAEAAAAABAAQAAAAAAIAC @@ -427,25 +340,139 @@ AAD8QQAA+IEAAIwBAACCAQAAgAMAAIEHAADBRwAA5l8AAPTfAADJZwAA8I8AAIofAADmdwAA57MAAA== + + 152, 64 + + + 64, 21 + + + True + + + 104, 91 + + + &DVB + + + 64, 20 + + + Cuttermaran Project Files|*.cpf|All Files|*.* + + + $this + + + 19, 124 + + + 16, 42 + VCR.NET Simple SUB/SUP Cutting Utility - - openCuttermaran + + 232, 16 + + + &Framerate + + + $this + + + 5, 13 + + + 16, 18 + + + 3 + + + 8 + + + selPage + + + 1 + + + 128, 16 + + + 116, 17 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + &Threshold (sec) + + + 9 + + + udMinimum + + + label2 System.Windows.Forms.OpenFileDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - saveCut + + 102, 42 - - System.Windows.Forms.SaveFileDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System - - CutMain + + 346, 153 + + + 5 System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 0 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 6 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + &Multiplex if possible + + + Please choose the Cuttermaran Project File + + + Subtitle &Page + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + saveCut + + + True + + + 155, 17 + + + 17, 17 + \ No newline at end of file diff --git a/VCR.NET/EasyCut/Properties/Resources.Designer.cs b/VCR.NET/EasyCut/Properties/Resources.Designer.cs index f4504bd..167917e 100644 --- a/VCR.NET/EasyCut/Properties/Resources.Designer.cs +++ b/VCR.NET/EasyCut/Properties/Resources.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.18444 +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -60,6 +60,24 @@ internal Resources() { } } + /// + /// Looks up a localized string similar to Locate the folder with your GfD Installation.. + /// + internal static string Browse_GfD { + get { + return ResourceManager.GetString("Browse_GfD", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Select corresponding Video File. + /// + internal static string Browse_Mpg { + get { + return ResourceManager.GetString("Browse_Mpg", resourceCulture); + } + } + /// /// Looks up a localized string similar to Error during Cut. /// diff --git a/VCR.NET/EasyCut/Properties/Resources.de.resx b/VCR.NET/EasyCut/Properties/Resources.de.resx index 0c70d21..33ef6e8 100644 --- a/VCR.NET/EasyCut/Properties/Resources.de.resx +++ b/VCR.NET/EasyCut/Properties/Resources.de.resx @@ -112,11 +112,17 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Bitte das Verzeichnis mit der GfD Installation auswählen + + + Zugehörige Videodatei auswählen + Fehler beim Schneiden diff --git a/VCR.NET/EasyCut/Properties/Resources.resx b/VCR.NET/EasyCut/Properties/Resources.resx index b509ba8..9eb262e 100644 --- a/VCR.NET/EasyCut/Properties/Resources.resx +++ b/VCR.NET/EasyCut/Properties/Resources.resx @@ -112,11 +112,17 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Locate the folder with your GfD Installation. + + + Select corresponding Video File + Error during Cut diff --git a/VCR.NET/EasyCut/Properties/Settings.Designer.cs b/VCR.NET/EasyCut/Properties/Settings.Designer.cs index fda33ff..c507be5 100644 --- a/VCR.NET/EasyCut/Properties/Settings.Designer.cs +++ b/VCR.NET/EasyCut/Properties/Settings.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.18444 +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -12,7 +12,7 @@ namespace EasyCut.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); @@ -79,5 +79,29 @@ public string Version { this["Version"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string GfDFolder { + get { + return ((string)(this["GfDFolder"])); + } + set { + this["GfDFolder"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool MuxDefault { + get { + return ((bool)(this["MuxDefault"])); + } + set { + this["MuxDefault"] = value; + } + } } } diff --git a/VCR.NET/EasyCut/Properties/Settings.settings b/VCR.NET/EasyCut/Properties/Settings.settings index 820fab0..6f66164 100644 --- a/VCR.NET/EasyCut/Properties/Settings.settings +++ b/VCR.NET/EasyCut/Properties/Settings.settings @@ -17,5 +17,11 @@ 0.0 + + + + + False + \ No newline at end of file diff --git a/VCR.NET/EasyCut/app.config b/VCR.NET/EasyCut/app.config index d809e4f..ac74bd8 100644 --- a/VCR.NET/EasyCut/app.config +++ b/VCR.NET/EasyCut/app.config @@ -26,6 +26,12 @@ 0.0 + + + + + False + From 940f1a3080184925fec33ce11158f59fab122c67 Mon Sep 17 00:00:00 2001 From: "Dr. Jochen Manns" Date: Fri, 18 Mar 2016 09:41:55 +0100 Subject: [PATCH 007/415] Setup updated --- VCR.NET/ServiceCore/VCRServer/VCRServer.cs | 2 +- VCR.NET/VCRNETSetup/VCRNETSetup.wixproj | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/VCR.NET/ServiceCore/VCRServer/VCRServer.cs b/VCR.NET/ServiceCore/VCRServer/VCRServer.cs index 2f8a3b6..4ab06ab 100644 --- a/VCR.NET/ServiceCore/VCRServer/VCRServer.cs +++ b/VCR.NET/ServiceCore/VCRServer/VCRServer.cs @@ -20,7 +20,7 @@ public partial class VCRServer : MarshalByRefObject, IDisposable /// /// Wird beim Bauen automatisch eingemischt. /// - private const string CURRENTDATE = "2016/03/15"; + private const string CURRENTDATE = "2016/03/18"; /// /// Aktuelle Version des VCR.NET Recording Service. diff --git a/VCR.NET/VCRNETSetup/VCRNETSetup.wixproj b/VCR.NET/VCRNETSetup/VCRNETSetup.wixproj index 83b8ac3..9ae24ed 100644 --- a/VCR.NET/VCRNETSetup/VCRNETSetup.wixproj +++ b/VCR.NET/VCRNETSetup/VCRNETSetup.wixproj @@ -22,7 +22,7 @@ _Extensions.wxs obj\$(Configuration)\_Extensions.wixobj ICE57;ICE43 - SETUPVERSION=4.3.46 + SETUPVERSION=4.3.47 ..\..\msi\ @@ -33,7 +33,7 @@ ICE57;ICE43 _Extensions.wxs obj\$(Configuration)\_Extensions.wixobj - SETUPVERSION=4.3.46 + SETUPVERSION=4.3.47 From 25d1ab992a124a83601e0f3a014ecc40f4e750f4 Mon Sep 17 00:00:00 2001 From: "Dr. Jochen Manns" Date: Tue, 22 Mar 2016 00:59:32 +0100 Subject: [PATCH 008/415] Will at least detect invalid characters --- VCR.NET/EasyCut/CutMain.cs | 21 ++++++++++++++++++- VCR.NET/EasyCut/EasyCut.csproj | 1 + .../EasyCut/Properties/Resources.Designer.cs | 9 ++++++++ VCR.NET/EasyCut/Properties/Resources.de.resx | 3 +++ VCR.NET/EasyCut/Properties/Resources.resx | 3 +++ VCR.NET/ServiceCore/VCRServer/VCRServer.cs | 2 +- VCR.NET/VCRNETSetup/VCRNETSetup.wixproj | 4 ++-- 7 files changed, 39 insertions(+), 4 deletions(-) diff --git a/VCR.NET/EasyCut/CutMain.cs b/VCR.NET/EasyCut/CutMain.cs index d546685..f26ebb6 100644 --- a/VCR.NET/EasyCut/CutMain.cs +++ b/VCR.NET/EasyCut/CutMain.cs @@ -3,8 +3,10 @@ using System.Diagnostics; using System.IO; using System.Reflection; +using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using System.Xml; namespace EasyCut { @@ -423,11 +425,28 @@ private void DoMux( string supPath ) using (var process = Process.Start( procInfo )) process.WaitForExit(); + // Verify XML + var spumuxXml = Path.Combine( supDir, "spumux.xml" ); + var xml = new XmlDocument(); + + try + { + // Will fail on encoding mismatch + xml.Load( spumuxXml ); + } + catch (Exception ex) + { + // Sorry - no work-around found + MessageBox.Show( this, ex.Message, Properties.Resources.Error_Utf8 ); + + return; + } + // Mux - in-place, better user SSD! procInfo = new ProcessStartInfo { - Arguments = $"-s0 \"{Path.Combine( supDir, "spumux.xml" ).Replace( "\"", "\"\"" )}\"", + Arguments = $"-s0 \"{spumuxXml.Replace( "\"", "\"\"" )}\"", FileName = Path.Combine( gfdPath, "spumux.exe" ), RedirectStandardOutput = true, RedirectStandardInput = true, diff --git a/VCR.NET/EasyCut/EasyCut.csproj b/VCR.NET/EasyCut/EasyCut.csproj index 4d31d89..ec9c642 100644 --- a/VCR.NET/EasyCut/EasyCut.csproj +++ b/VCR.NET/EasyCut/EasyCut.csproj @@ -99,6 +99,7 @@ System.Drawing + System.Windows.Forms diff --git a/VCR.NET/EasyCut/Properties/Resources.Designer.cs b/VCR.NET/EasyCut/Properties/Resources.Designer.cs index 167917e..30bb95b 100644 --- a/VCR.NET/EasyCut/Properties/Resources.Designer.cs +++ b/VCR.NET/EasyCut/Properties/Resources.Designer.cs @@ -95,5 +95,14 @@ internal static string Error_Format { return ResourceManager.GetString("Error_Format", resourceCulture); } } + + /// + /// Looks up a localized string similar to Invalid Characters in Path. + /// + internal static string Error_Utf8 { + get { + return ResourceManager.GetString("Error_Utf8", resourceCulture); + } + } } } diff --git a/VCR.NET/EasyCut/Properties/Resources.de.resx b/VCR.NET/EasyCut/Properties/Resources.de.resx index 33ef6e8..477b04d 100644 --- a/VCR.NET/EasyCut/Properties/Resources.de.resx +++ b/VCR.NET/EasyCut/Properties/Resources.de.resx @@ -129,4 +129,7 @@ Format nicht unterstützt - bitte eine andere Dateiendung verwenden + + Ungültige Zeichen im Dateipfad + \ No newline at end of file diff --git a/VCR.NET/EasyCut/Properties/Resources.resx b/VCR.NET/EasyCut/Properties/Resources.resx index 9eb262e..76b99c3 100644 --- a/VCR.NET/EasyCut/Properties/Resources.resx +++ b/VCR.NET/EasyCut/Properties/Resources.resx @@ -129,4 +129,7 @@ Format not supported - please choose another file extension + + Invalid Characters in Path + \ No newline at end of file diff --git a/VCR.NET/ServiceCore/VCRServer/VCRServer.cs b/VCR.NET/ServiceCore/VCRServer/VCRServer.cs index 4ab06ab..7a870ea 100644 --- a/VCR.NET/ServiceCore/VCRServer/VCRServer.cs +++ b/VCR.NET/ServiceCore/VCRServer/VCRServer.cs @@ -20,7 +20,7 @@ public partial class VCRServer : MarshalByRefObject, IDisposable /// /// Wird beim Bauen automatisch eingemischt. /// - private const string CURRENTDATE = "2016/03/18"; + private const string CURRENTDATE = "2016/03/22"; /// /// Aktuelle Version des VCR.NET Recording Service. diff --git a/VCR.NET/VCRNETSetup/VCRNETSetup.wixproj b/VCR.NET/VCRNETSetup/VCRNETSetup.wixproj index 9ae24ed..b431648 100644 --- a/VCR.NET/VCRNETSetup/VCRNETSetup.wixproj +++ b/VCR.NET/VCRNETSetup/VCRNETSetup.wixproj @@ -22,7 +22,7 @@ _Extensions.wxs obj\$(Configuration)\_Extensions.wixobj ICE57;ICE43 - SETUPVERSION=4.3.47 + SETUPVERSION=4.3.48 ..\..\msi\ @@ -33,7 +33,7 @@ ICE57;ICE43 _Extensions.wxs obj\$(Configuration)\_Extensions.wixobj - SETUPVERSION=4.3.47 + SETUPVERSION=4.3.48 From e72b251246e4b670d35fd88beeadc7f6bb61cfc9 Mon Sep 17 00:00:00 2001 From: "Dr. Jochen Manns" Date: Tue, 22 Mar 2016 23:38:22 +0100 Subject: [PATCH 009/415] Using short file names if possible --- VCR.NET/EasyCut/CutMain.cs | 34 +++++++++++++++++-------- VCR.NET/VCRNETSetup/VCRNETSetup.wixproj | 4 +-- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/VCR.NET/EasyCut/CutMain.cs b/VCR.NET/EasyCut/CutMain.cs index f26ebb6..f27b110 100644 --- a/VCR.NET/EasyCut/CutMain.cs +++ b/VCR.NET/EasyCut/CutMain.cs @@ -3,6 +3,7 @@ using System.Diagnostics; using System.IO; using System.Reflection; +using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; @@ -39,6 +40,16 @@ public class CutMain : System.Windows.Forms.Form /// private CPFReader m_ProjectFile; + /// + /// Ermittelt den kurzen Dateinamen. + /// + /// Ein langer Dateiname. + /// Der kurze Name. + /// Die maximale Lnge des kurzen Namens. + /// Die Lnge des Namens. + [DllImport( "Kernel32.dll" )] + private static extern int GetShortPathName( string path, StringBuilder shortPath, int bufferSize ); + /// /// Create the cutter main window. /// @@ -425,22 +436,25 @@ private void DoMux( string supPath ) using (var process = Process.Start( procInfo )) process.WaitForExit(); - // Verify XML + // Manipulate XML var spumuxXml = Path.Combine( supDir, "spumux.xml" ); + var ansiXml = File.ReadAllText( spumuxXml, Encoding.GetEncoding( 1252 ) ); + var xml = new XmlDocument(); + xml.LoadXml( ansiXml ); - try + // Convert names + foreach (XmlElement img in xml.SelectNodes( "//spu" )) { - // Will fail on encoding mismatch - xml.Load( spumuxXml ); + // Convert and write back + var path = img.GetAttribute( "image" ); + var buffer = new StringBuilder( 1000 ); + if (GetShortPathName( path, buffer, buffer.Capacity - 1 ) > 0) + img.SetAttribute( "image", buffer.ToString() ); } - catch (Exception ex) - { - // Sorry - no work-around found - MessageBox.Show( this, ex.Message, Properties.Resources.Error_Utf8 ); - return; - } + // Write back + File.WriteAllText( spumuxXml, xml.OuterXml, Encoding.GetEncoding( 1252 ) ); // Mux - in-place, better user SSD! procInfo = diff --git a/VCR.NET/VCRNETSetup/VCRNETSetup.wixproj b/VCR.NET/VCRNETSetup/VCRNETSetup.wixproj index b431648..d2a74be 100644 --- a/VCR.NET/VCRNETSetup/VCRNETSetup.wixproj +++ b/VCR.NET/VCRNETSetup/VCRNETSetup.wixproj @@ -22,7 +22,7 @@ _Extensions.wxs obj\$(Configuration)\_Extensions.wixobj ICE57;ICE43 - SETUPVERSION=4.3.48 + SETUPVERSION=4.3.49 ..\..\msi\ @@ -33,7 +33,7 @@ ICE57;ICE43 _Extensions.wxs obj\$(Configuration)\_Extensions.wixobj - SETUPVERSION=4.3.48 + SETUPVERSION=4.3.49 From 62132fad553e6552cf9de8e04e0dc7c8a8b2a361 Mon Sep 17 00:00:00 2001 From: "Dr. Jochen Manns" Date: Wed, 6 Apr 2016 20:44:36 +0200 Subject: [PATCH 010/415] jQuery update to latest 2.2.2/1.11.4 --- VCR.NET/ServiceCore/VCRServer/VCRServer.cs | 2 +- VCR.NET/WebClient41/WebClient41.csproj | 14 +- .../content/themes/base/accordion.css | 4 +- .../WebClient41/content/themes/base/all.css | 4 +- .../content/themes/base/autocomplete.css | 4 +- .../WebClient41/content/themes/base/base.css | 4 +- .../content/themes/base/button.css | 4 +- .../WebClient41/content/themes/base/core.css | 4 +- .../content/themes/base/datepicker.css | 4 +- .../content/themes/base/dialog.css | 4 +- .../content/themes/base/draggable.css | 4 +- .../WebClient41/content/themes/base/menu.css | 4 +- .../content/themes/base/progressbar.css | 4 +- .../content/themes/base/resizable.css | 4 +- .../content/themes/base/selectable.css | 4 +- .../content/themes/base/selectmenu.css | 4 +- .../content/themes/base/slider.css | 4 +- .../content/themes/base/sortable.css | 4 +- .../content/themes/base/spinner.css | 4 +- .../WebClient41/content/themes/base/tabs.css | 4 +- .../WebClient41/content/themes/base/theme.css | 4 +- .../content/themes/base/tooltip.css | 4 +- VCR.NET/WebClient41/default.html | 4 +- VCR.NET/WebClient41/packages.config | 8 +- .../WebClient41/scripts/jquery-2.1.3.min.js | 4 - .../WebClient41/scripts/jquery-2.1.3.min.map | 1 - ...isense.js => jquery-2.2.2.intellisense.js} | 0 .../{jquery-2.1.3.js => jquery-2.2.2.js} | 4551 ++++++++++------- .../WebClient41/scripts/jquery-2.2.2.min.js | 4 + .../WebClient41/scripts/jquery-2.2.2.min.map | 1 + .../scripts/jquery-ui-1.11.2.min.js | 13 - ...query-ui-1.11.2.js => jquery-ui-1.11.4.js} | 501 +- .../scripts/jquery-ui-1.11.4.min.js | 13 + .../scripts/typings/jquery/jquery.d.ts | 54 +- .../scripts/typings/jqueryui/jqueryui.d.ts | 74 +- 35 files changed, 3038 insertions(+), 2286 deletions(-) delete mode 100644 VCR.NET/WebClient41/scripts/jquery-2.1.3.min.js delete mode 100644 VCR.NET/WebClient41/scripts/jquery-2.1.3.min.map rename VCR.NET/WebClient41/scripts/{jquery-2.1.3.intellisense.js => jquery-2.2.2.intellisense.js} (100%) rename VCR.NET/WebClient41/scripts/{jquery-2.1.3.js => jquery-2.2.2.js} (73%) create mode 100644 VCR.NET/WebClient41/scripts/jquery-2.2.2.min.js create mode 100644 VCR.NET/WebClient41/scripts/jquery-2.2.2.min.map delete mode 100644 VCR.NET/WebClient41/scripts/jquery-ui-1.11.2.min.js rename VCR.NET/WebClient41/scripts/{jquery-ui-1.11.2.js => jquery-ui-1.11.4.js} (97%) create mode 100644 VCR.NET/WebClient41/scripts/jquery-ui-1.11.4.min.js diff --git a/VCR.NET/ServiceCore/VCRServer/VCRServer.cs b/VCR.NET/ServiceCore/VCRServer/VCRServer.cs index 7a870ea..c9b53a8 100644 --- a/VCR.NET/ServiceCore/VCRServer/VCRServer.cs +++ b/VCR.NET/ServiceCore/VCRServer/VCRServer.cs @@ -20,7 +20,7 @@ public partial class VCRServer : MarshalByRefObject, IDisposable /// /// Wird beim Bauen automatisch eingemischt. /// - private const string CURRENTDATE = "2016/03/22"; + private const string CURRENTDATE = "2016/04/06"; /// /// Aktuelle Version des VCR.NET Recording Service. diff --git a/VCR.NET/WebClient41/WebClient41.csproj b/VCR.NET/WebClient41/WebClient41.csproj index 90caeea..4b0639e 100644 --- a/VCR.NET/WebClient41/WebClient41.csproj +++ b/VCR.NET/WebClient41/WebClient41.csproj @@ -176,13 +176,12 @@ compilerconfig.json - - - - - - - + + + + + + vcrnet.ts @@ -259,6 +258,7 @@ vcrserver.ts + Designer diff --git a/VCR.NET/WebClient41/content/themes/base/accordion.css b/VCR.NET/WebClient41/content/themes/base/accordion.css index e59508c..13e5752 100644 --- a/VCR.NET/WebClient41/content/themes/base/accordion.css +++ b/VCR.NET/WebClient41/content/themes/base/accordion.css @@ -1,8 +1,8 @@ /*! - * jQuery UI Accordion 1.11.2 + * jQuery UI Accordion 1.11.4 * http://jqueryui.com * - * Copyright 2014 jQuery Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * diff --git a/VCR.NET/WebClient41/content/themes/base/all.css b/VCR.NET/WebClient41/content/themes/base/all.css index f99034a..0bab991 100644 --- a/VCR.NET/WebClient41/content/themes/base/all.css +++ b/VCR.NET/WebClient41/content/themes/base/all.css @@ -1,8 +1,8 @@ /*! - * jQuery UI CSS Framework 1.11.2 + * jQuery UI CSS Framework 1.11.4 * http://jqueryui.com * - * Copyright 2014 jQuery Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * diff --git a/VCR.NET/WebClient41/content/themes/base/autocomplete.css b/VCR.NET/WebClient41/content/themes/base/autocomplete.css index d828fac..c21c54f 100644 --- a/VCR.NET/WebClient41/content/themes/base/autocomplete.css +++ b/VCR.NET/WebClient41/content/themes/base/autocomplete.css @@ -1,8 +1,8 @@ /*! - * jQuery UI Autocomplete 1.11.2 + * jQuery UI Autocomplete 1.11.4 * http://jqueryui.com * - * Copyright 2014 jQuery Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * diff --git a/VCR.NET/WebClient41/content/themes/base/base.css b/VCR.NET/WebClient41/content/themes/base/base.css index 3ba0b70..7f53172 100644 --- a/VCR.NET/WebClient41/content/themes/base/base.css +++ b/VCR.NET/WebClient41/content/themes/base/base.css @@ -1,8 +1,8 @@ /*! - * jQuery UI CSS Framework 1.11.2 + * jQuery UI CSS Framework 1.11.4 * http://jqueryui.com * - * Copyright 2014 jQuery Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * diff --git a/VCR.NET/WebClient41/content/themes/base/button.css b/VCR.NET/WebClient41/content/themes/base/button.css index 202bd88..7f11bdd 100644 --- a/VCR.NET/WebClient41/content/themes/base/button.css +++ b/VCR.NET/WebClient41/content/themes/base/button.css @@ -1,8 +1,8 @@ /*! - * jQuery UI Button 1.11.2 + * jQuery UI Button 1.11.4 * http://jqueryui.com * - * Copyright 2014 jQuery Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * diff --git a/VCR.NET/WebClient41/content/themes/base/core.css b/VCR.NET/WebClient41/content/themes/base/core.css index cfa0d49..154f1f8 100644 --- a/VCR.NET/WebClient41/content/themes/base/core.css +++ b/VCR.NET/WebClient41/content/themes/base/core.css @@ -1,8 +1,8 @@ /*! - * jQuery UI CSS Framework 1.11.2 + * jQuery UI CSS Framework 1.11.4 * http://jqueryui.com * - * Copyright 2014 jQuery Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * diff --git a/VCR.NET/WebClient41/content/themes/base/datepicker.css b/VCR.NET/WebClient41/content/themes/base/datepicker.css index 857cc4d..ea559d8 100644 --- a/VCR.NET/WebClient41/content/themes/base/datepicker.css +++ b/VCR.NET/WebClient41/content/themes/base/datepicker.css @@ -1,8 +1,8 @@ /*! - * jQuery UI Datepicker 1.11.2 + * jQuery UI Datepicker 1.11.4 * http://jqueryui.com * - * Copyright 2014 jQuery Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * diff --git a/VCR.NET/WebClient41/content/themes/base/dialog.css b/VCR.NET/WebClient41/content/themes/base/dialog.css index 4421f25..66b90cc 100644 --- a/VCR.NET/WebClient41/content/themes/base/dialog.css +++ b/VCR.NET/WebClient41/content/themes/base/dialog.css @@ -1,8 +1,8 @@ /*! - * jQuery UI Dialog 1.11.2 + * jQuery UI Dialog 1.11.4 * http://jqueryui.com * - * Copyright 2014 jQuery Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * diff --git a/VCR.NET/WebClient41/content/themes/base/draggable.css b/VCR.NET/WebClient41/content/themes/base/draggable.css index 1038d58..df01f29 100644 --- a/VCR.NET/WebClient41/content/themes/base/draggable.css +++ b/VCR.NET/WebClient41/content/themes/base/draggable.css @@ -1,8 +1,8 @@ /*! - * jQuery UI Draggable 1.11.2 + * jQuery UI Draggable 1.11.4 * http://jqueryui.com * - * Copyright 2014 jQuery Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ diff --git a/VCR.NET/WebClient41/content/themes/base/menu.css b/VCR.NET/WebClient41/content/themes/base/menu.css index 51fd274..221fc51 100644 --- a/VCR.NET/WebClient41/content/themes/base/menu.css +++ b/VCR.NET/WebClient41/content/themes/base/menu.css @@ -1,8 +1,8 @@ /*! - * jQuery UI Menu 1.11.2 + * jQuery UI Menu 1.11.4 * http://jqueryui.com * - * Copyright 2014 jQuery Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * diff --git a/VCR.NET/WebClient41/content/themes/base/progressbar.css b/VCR.NET/WebClient41/content/themes/base/progressbar.css index 5929e47..5e43600 100644 --- a/VCR.NET/WebClient41/content/themes/base/progressbar.css +++ b/VCR.NET/WebClient41/content/themes/base/progressbar.css @@ -1,8 +1,8 @@ /*! - * jQuery UI Progressbar 1.11.2 + * jQuery UI Progressbar 1.11.4 * http://jqueryui.com * - * Copyright 2014 jQuery Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * diff --git a/VCR.NET/WebClient41/content/themes/base/resizable.css b/VCR.NET/WebClient41/content/themes/base/resizable.css index d1ce6cf..23d9a07 100644 --- a/VCR.NET/WebClient41/content/themes/base/resizable.css +++ b/VCR.NET/WebClient41/content/themes/base/resizable.css @@ -1,8 +1,8 @@ /*! - * jQuery UI Resizable 1.11.2 + * jQuery UI Resizable 1.11.4 * http://jqueryui.com * - * Copyright 2014 jQuery Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ diff --git a/VCR.NET/WebClient41/content/themes/base/selectable.css b/VCR.NET/WebClient41/content/themes/base/selectable.css index 726b1ac..482597c 100644 --- a/VCR.NET/WebClient41/content/themes/base/selectable.css +++ b/VCR.NET/WebClient41/content/themes/base/selectable.css @@ -1,8 +1,8 @@ /*! - * jQuery UI Selectable 1.11.2 + * jQuery UI Selectable 1.11.4 * http://jqueryui.com * - * Copyright 2014 jQuery Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ diff --git a/VCR.NET/WebClient41/content/themes/base/selectmenu.css b/VCR.NET/WebClient41/content/themes/base/selectmenu.css index 74e449e..2417b6b 100644 --- a/VCR.NET/WebClient41/content/themes/base/selectmenu.css +++ b/VCR.NET/WebClient41/content/themes/base/selectmenu.css @@ -1,8 +1,8 @@ /*! - * jQuery UI Selectmenu 1.11.2 + * jQuery UI Selectmenu 1.11.4 * http://jqueryui.com * - * Copyright 2014 jQuery Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * diff --git a/VCR.NET/WebClient41/content/themes/base/slider.css b/VCR.NET/WebClient41/content/themes/base/slider.css index 46f20c2..7c4f01a 100644 --- a/VCR.NET/WebClient41/content/themes/base/slider.css +++ b/VCR.NET/WebClient41/content/themes/base/slider.css @@ -1,8 +1,8 @@ /*! - * jQuery UI Slider 1.11.2 + * jQuery UI Slider 1.11.4 * http://jqueryui.com * - * Copyright 2014 jQuery Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * diff --git a/VCR.NET/WebClient41/content/themes/base/sortable.css b/VCR.NET/WebClient41/content/themes/base/sortable.css index a799e08..1c27bad 100644 --- a/VCR.NET/WebClient41/content/themes/base/sortable.css +++ b/VCR.NET/WebClient41/content/themes/base/sortable.css @@ -1,8 +1,8 @@ /*! - * jQuery UI Sortable 1.11.2 + * jQuery UI Sortable 1.11.4 * http://jqueryui.com * - * Copyright 2014 jQuery Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ diff --git a/VCR.NET/WebClient41/content/themes/base/spinner.css b/VCR.NET/WebClient41/content/themes/base/spinner.css index 4eeaf69..9a9b78b 100644 --- a/VCR.NET/WebClient41/content/themes/base/spinner.css +++ b/VCR.NET/WebClient41/content/themes/base/spinner.css @@ -1,8 +1,8 @@ /*! - * jQuery UI Spinner 1.11.2 + * jQuery UI Spinner 1.11.4 * http://jqueryui.com * - * Copyright 2014 jQuery Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * diff --git a/VCR.NET/WebClient41/content/themes/base/tabs.css b/VCR.NET/WebClient41/content/themes/base/tabs.css index 0cbb042..c92a1b8 100644 --- a/VCR.NET/WebClient41/content/themes/base/tabs.css +++ b/VCR.NET/WebClient41/content/themes/base/tabs.css @@ -1,8 +1,8 @@ /*! - * jQuery UI Tabs 1.11.2 + * jQuery UI Tabs 1.11.4 * http://jqueryui.com * - * Copyright 2014 jQuery Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * diff --git a/VCR.NET/WebClient41/content/themes/base/theme.css b/VCR.NET/WebClient41/content/themes/base/theme.css index 6589234..9deb499 100644 --- a/VCR.NET/WebClient41/content/themes/base/theme.css +++ b/VCR.NET/WebClient41/content/themes/base/theme.css @@ -1,8 +1,8 @@ /*! - * jQuery UI CSS Framework 1.11.2 + * jQuery UI CSS Framework 1.11.4 * http://jqueryui.com * - * Copyright 2014 jQuery Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * diff --git a/VCR.NET/WebClient41/content/themes/base/tooltip.css b/VCR.NET/WebClient41/content/themes/base/tooltip.css index 7948ac8..6eb8b91 100644 --- a/VCR.NET/WebClient41/content/themes/base/tooltip.css +++ b/VCR.NET/WebClient41/content/themes/base/tooltip.css @@ -1,8 +1,8 @@ /*! - * jQuery UI Tooltip 1.11.2 + * jQuery UI Tooltip 1.11.4 * http://jqueryui.com * - * Copyright 2014 jQuery Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * diff --git a/VCR.NET/WebClient41/default.html b/VCR.NET/WebClient41/default.html index 172f274..aa50e27 100644 --- a/VCR.NET/WebClient41/default.html +++ b/VCR.NET/WebClient41/default.html @@ -10,8 +10,8 @@ - - + + diff --git a/VCR.NET/WebClient41/packages.config b/VCR.NET/WebClient41/packages.config index 1457920..97281b0 100644 --- a/VCR.NET/WebClient41/packages.config +++ b/VCR.NET/WebClient41/packages.config @@ -1,7 +1,7 @@  - - - - + + + + \ No newline at end of file diff --git a/VCR.NET/WebClient41/scripts/jquery-2.1.3.min.js b/VCR.NET/WebClient41/scripts/jquery-2.1.3.min.js deleted file mode 100644 index 25714ed..0000000 --- a/VCR.NET/WebClient41/scripts/jquery-2.1.3.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v2.1.3 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.3",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c) -},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*\s*$/g,ib={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("