# HG changeset patch
# User cin
# Date 1516725561 -10800
# Node ID fa6cbf4d8841204bd901308afe0e594dc61387e5
# Parent  eedf4d834e67d7edec360d2b5ab9ec773eb9bd17
refactoring, moving to dotnercore, simplifying promises
diff -r eedf4d834e67 -r fa6cbf4d8841 .vscode/launch.json
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.vscode/launch.json	Tue Jan 23 19:39:21 2018 +0300
@@ -0,0 +1,39 @@
+{
+    "version": "0.2.0",
+    "configurations": [
+    
+        {
+            "name": "Launch webserver",
+            "type": "mono",
+            "request": "launch",
+            "program": "/usr/lib/mono/4.5/xsp4.exe",
+            "args":[
+                "--root=.",
+                "--port=8081",
+                "-v",
+                "--printlog"
+            ],
+            "preLaunchTask": "build",
+            "cwd": "${workspaceRoot}/Pallada.PoiskAvia.Web",
+            "runtimeExecutable": null,
+            "env": {},
+            "console": "integratedTerminal"
+        },{
+            "name": "Launch model tests",
+            "type": "mono",
+            "request": "launch",
+            "program": "${env:HOME}/.nuget/packages/nunit.consolerunner/3.7.0/tools/nunit3-console.exe",
+            "args": [
+                "${workspaceRoot}/Pallada.PoiskAvia.Model.Test/bin/Debug/net45/Pallada.PoiskAvia.Model.Test.mono.dll",
+                "--where=\"cat==Debug\"",
+                "--labels='On'",
+                "--inprocess",
+                "--workers=1"
+            ],
+            "preLaunchTask": "build",
+            "console": "internalConsole",
+            "internalConsoleOptions": "openOnSessionStart",
+            "cwd": "${workspaceRoot}/Pallada.PoiskAvia.Model.Test/"
+        }
+    ]
+}
\ No newline at end of file
diff -r eedf4d834e67 -r fa6cbf4d8841 .vscode/settings.json
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.vscode/settings.json	Tue Jan 23 19:39:21 2018 +0300
@@ -0,0 +1,13 @@
+// Поместите параметры в этот файл, чтобы перезаписать параметры по умолчанию и пользовательские параметры.
+{
+    "files.exclude": {
+        "**/.git": true,
+        "**/.svn": true,
+        "**/.hg": true,
+        "**/CVS": true,
+        "**/.DS_Store": true,
+        "**/bin": true,
+        "**/obj": true
+    },
+    "omnisharp.useMono": true
+}
\ No newline at end of file
diff -r eedf4d834e67 -r fa6cbf4d8841 .vscode/tasks.json
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.vscode/tasks.json	Tue Jan 23 19:39:21 2018 +0300
@@ -0,0 +1,55 @@
+{
+    // See https://go.microsoft.com/fwlink/?LinkId=733558
+    // for the documentation about the tasks.json format
+    "version": "0.1.0",
+    "command": "msbuild",
+    "args": [
+        // Ask msbuild to generate full paths for file names.
+        "/property:GenerateFullPaths=true"
+    ],
+    "taskSelector": "/t:",
+    "showOutput": "silent",
+    "tasks": [
+        {
+            "taskName": "build",
+            "suppressTaskName": true,
+            // Show the output window only if unrecognized errors occur.
+            "showOutput": "always",
+            // Use the standard MS compiler pattern to detect errors, warnings and infos
+            "problemMatcher": "$msCompile",
+
+            "args" : [
+                "/t:restore;build",
+                "/p:Configuration=DebugMono",
+                "Pallada.PoiskAvia.mono.sln"
+            ]
+        },
+        {
+            "taskName": "clean",
+            // Show the output window only if unrecognized errors occur.
+            "showOutput": "always",
+            // Use the standard MS compiler pattern to detect errors, warnings and infos
+            "problemMatcher": "$msCompile",
+
+            "args" : [
+                "/p:Configuration=DebugMono",
+                "Pallada.PoiskAvia.mono.sln"
+            ]
+        },
+        {
+            "taskName": "runtests",
+            "isTestCommand": true,
+            "suppressTaskName": true,
+            // Show the output window only if unrecognized errors occur.
+            "showOutput": "always",
+            // Use the standard MS compiler pattern to detect errors, warnings and infos
+            "problemMatcher": "$msCompile",
+
+            "args" : [
+                "/t:runtests",
+                "/p:Configuration=DebugMono",
+                "Pallada.PoiskAvia.mono.sln"
+            ]
+        }
+    ]
+}
\ No newline at end of file
diff -r eedf4d834e67 -r fa6cbf4d8841 Implab.Playground2.psess
--- a/Implab.Playground2.psess	Wed Dec 13 19:54:45 2017 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-
-
-  
-    Implab.sln
-    Sampling
-    None
-    true
-    true
-    Timestamp
-    Cycles
-    50000
-    10
-    10
-    
-    false
-    
-    
-    
-      false
-      500
-      
-        \Память\Обмен страниц/с
-        \Процессор(_Total)\% загруженности процессора
-        \Физический диск(_Total)\Средняя длина очереди диска
-      
-    
-  
-  true
-  false
-  false
-  
-    false
-  
-  
-    false
-  
-  
-    
-      Implab.Playground\obj\Debug\Implab.Playground.exe
-      01/01/0001 00:00:00
-      true
-      true
-      false
-      false
-      false
-      false
-      false
-      true
-      false
-      Executable
-      Implab.Playground\bin\Debug\Implab.Playground.exe
-      Implab.Playground\bin\Debug\
-      
-      
-      IIS
-      InternetExplorer
-      true
-      false
-      
-        false
-      
-      
-        false
-      
-      {100DFEB0-75BE-436F-ADDF-1F46EF433F46}|Implab.Playground\Implab.Playground.csproj
-      Implab.Playground\Implab.Playground.csproj
-      Implab.Playground
-    
-  
-
\ No newline at end of file
diff -r eedf4d834e67 -r fa6cbf4d8841 Implab.sln
--- a/Implab.sln	Wed Dec 13 19:54:45 2017 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.25420.1
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Implab", "Implab\Implab.csproj", "{F550F1F8-8746-4AD0-9614-855F4C4B7F05}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{CE8D8D18-437A-445C-B662-4C2CE79A76F6}"
-	ProjectSection(SolutionItems) = preProject
-		Implab.vsmdi = Implab.vsmdi
-		Local.testsettings = Local.testsettings
-		TraceAndTestImpact.testsettings = TraceAndTestImpact.testsettings
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Implab.Test", "Implab.Test\Implab.Test.csproj", "{63F92C0C-61BF-48C0-A377-8D67C3C661D0}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Implab.Format.Test", "Implab.Format.Test\Implab.Format.Test.csproj", "{4D364996-7ECD-4193-8F90-F223FFEA49DA}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Implab.Playground", "Implab.Playground\Implab.Playground.csproj", "{100DFEB0-75BE-436F-ADDF-1F46EF433F46}"
-EndProject
-Global
-	GlobalSection(Performance) = preSolution
-		HasPerformanceSessions = true
-	EndGlobalSection
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug 4.5|Any CPU = Debug 4.5|Any CPU
-		Debug|Any CPU = Debug|Any CPU
-		Release 4.5|Any CPU = Release 4.5|Any CPU
-		Release|Any CPU = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{F550F1F8-8746-4AD0-9614-855F4C4B7F05}.Debug 4.5|Any CPU.ActiveCfg = Debug|Any CPU
-		{F550F1F8-8746-4AD0-9614-855F4C4B7F05}.Debug 4.5|Any CPU.Build.0 = Debug|Any CPU
-		{F550F1F8-8746-4AD0-9614-855F4C4B7F05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{F550F1F8-8746-4AD0-9614-855F4C4B7F05}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{F550F1F8-8746-4AD0-9614-855F4C4B7F05}.Release 4.5|Any CPU.ActiveCfg = Release|Any CPU
-		{F550F1F8-8746-4AD0-9614-855F4C4B7F05}.Release 4.5|Any CPU.Build.0 = Release|Any CPU
-		{F550F1F8-8746-4AD0-9614-855F4C4B7F05}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{F550F1F8-8746-4AD0-9614-855F4C4B7F05}.Release|Any CPU.Build.0 = Release|Any CPU
-		{63F92C0C-61BF-48C0-A377-8D67C3C661D0}.Debug 4.5|Any CPU.ActiveCfg = Debug 4.5|Any CPU
-		{63F92C0C-61BF-48C0-A377-8D67C3C661D0}.Debug 4.5|Any CPU.Build.0 = Debug 4.5|Any CPU
-		{63F92C0C-61BF-48C0-A377-8D67C3C661D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{63F92C0C-61BF-48C0-A377-8D67C3C661D0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{63F92C0C-61BF-48C0-A377-8D67C3C661D0}.Release 4.5|Any CPU.ActiveCfg = Release 4.5|Any CPU
-		{63F92C0C-61BF-48C0-A377-8D67C3C661D0}.Release 4.5|Any CPU.Build.0 = Release 4.5|Any CPU
-		{63F92C0C-61BF-48C0-A377-8D67C3C661D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{63F92C0C-61BF-48C0-A377-8D67C3C661D0}.Release|Any CPU.Build.0 = Release|Any CPU
-		{4D364996-7ECD-4193-8F90-F223FFEA49DA}.Debug 4.5|Any CPU.ActiveCfg = Debug|Any CPU
-		{4D364996-7ECD-4193-8F90-F223FFEA49DA}.Debug 4.5|Any CPU.Build.0 = Debug|Any CPU
-		{4D364996-7ECD-4193-8F90-F223FFEA49DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{4D364996-7ECD-4193-8F90-F223FFEA49DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{4D364996-7ECD-4193-8F90-F223FFEA49DA}.Release 4.5|Any CPU.ActiveCfg = Release|Any CPU
-		{4D364996-7ECD-4193-8F90-F223FFEA49DA}.Release 4.5|Any CPU.Build.0 = Release|Any CPU
-		{4D364996-7ECD-4193-8F90-F223FFEA49DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{4D364996-7ECD-4193-8F90-F223FFEA49DA}.Release|Any CPU.Build.0 = Release|Any CPU
-		{100DFEB0-75BE-436F-ADDF-1F46EF433F46}.Debug 4.5|Any CPU.ActiveCfg = Debug|Any CPU
-		{100DFEB0-75BE-436F-ADDF-1F46EF433F46}.Debug 4.5|Any CPU.Build.0 = Debug|Any CPU
-		{100DFEB0-75BE-436F-ADDF-1F46EF433F46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{100DFEB0-75BE-436F-ADDF-1F46EF433F46}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{100DFEB0-75BE-436F-ADDF-1F46EF433F46}.Release 4.5|Any CPU.ActiveCfg = Release|Any CPU
-		{100DFEB0-75BE-436F-ADDF-1F46EF433F46}.Release 4.5|Any CPU.Build.0 = Release|Any CPU
-		{100DFEB0-75BE-436F-ADDF-1F46EF433F46}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{100DFEB0-75BE-436F-ADDF-1F46EF433F46}.Release|Any CPU.Build.0 = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-	GlobalSection(TestCaseManagementSettings) = postSolution
-		CategoryFile = Implab.vsmdi
-	EndGlobalSection
-EndGlobal
diff -r eedf4d834e67 -r fa6cbf4d8841 Implab.suo
Binary file Implab.suo has changed
diff -r eedf4d834e67 -r fa6cbf4d8841 Implab.vsmdi
--- a/Implab.vsmdi	Wed Dec 13 19:54:45 2017 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-
-
-  
-    
-  
-
\ No newline at end of file
diff -r eedf4d834e67 -r fa6cbf4d8841 Implab/AbstractEvent.cs
--- a/Implab/AbstractEvent.cs	Wed Dec 13 19:54:45 2017 +0300
+++ b/Implab/AbstractEvent.cs	Tue Jan 23 19:39:21 2018 +0300
@@ -4,7 +4,7 @@
 using System.Reflection;
 
 namespace Implab {
-    public abstract class AbstractEvent : ICancellationToken, ICancellable { 
+    public abstract class AbstractEvent : ICancellable { 
 
         const int UNRESOLVED_SATE = 0;
         const int TRANSITIONAL_STATE = 1;
@@ -30,8 +30,6 @@
 
         int m_cancelRequest;
         Exception m_cancelationReason;
-        SimpleAsyncQueue> m_cancelationHandlers;
-
 
         #region state managment
         bool BeginTransit() {
diff -r eedf4d834e67 -r fa6cbf4d8841 Implab/Automaton/DFATable.cs
--- a/Implab/Automaton/DFATable.cs	Wed Dec 13 19:54:45 2017 +0300
+++ b/Implab/Automaton/DFATable.cs	Tue Jan 23 19:39:21 2018 +0300
@@ -311,7 +311,7 @@
                 optimalDFA.Add(t);
         }
 
-        protected string PrintDFA(IAlphabet inputAlphabet, IAlphabet stateAlphabet) {
+        /*protected string PrintDFA(IAlphabet inputAlphabet, IAlphabet stateAlphabet) {
             Safe.ArgumentNotNull(inputAlphabet, "inputAlphabet");
             Safe.ArgumentNotNull(stateAlphabet, "stateAlphabet");
 
@@ -343,6 +343,6 @@
                     return writer.ToString();
                 }
             }
-        }
+        }*/
     }
 }
diff -r eedf4d834e67 -r fa6cbf4d8841 Implab/Automaton/EnumAlphabet.cs
--- a/Implab/Automaton/EnumAlphabet.cs	Wed Dec 13 19:54:45 2017 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Globalization;
-using System.Linq;
-using System.Diagnostics.CodeAnalysis;
-
-namespace Implab.Automaton {
-    /// 
-    /// Алфавит символами которого являются элементы перечислений.
-    /// 
-    /// Тип перечислений
-    public class EnumAlphabet : IndexedAlphabetBase where T : struct, IConvertible {
-        [SuppressMessage("Microsoft.Design", "CA1000:DoNotDeclareStaticMembersOnGenericTypes")]
-        static readonly Lazy _symbols = new Lazy(GetSymbols);
-
-        [SuppressMessage("Microsoft.Design", "CA1000:DoNotDeclareStaticMembersOnGenericTypes")]
-        static readonly Lazy> _fullAlphabet = new Lazy>(CreateEnumAlphabet);
-
-        static EnumAlphabet CreateEnumAlphabet() {
-            var symbols = _symbols.Value;
-
-            if (
-                symbols[symbols.Length - 1].ToInt32(CultureInfo.InvariantCulture) >= symbols.Length
-                || symbols[0].ToInt32(CultureInfo.InvariantCulture) != 0
-            )
-                throw new InvalidOperationException("The specified enumeration must be zero-based and continuously numbered");
-
-            return new EnumAlphabet(symbols.Select(x => x.ToInt32(CultureInfo.InvariantCulture)).ToArray());
-        }
-
-        static T[] GetSymbols() {
-            if (!typeof(T).IsEnum)
-                throw new InvalidOperationException("Invalid generic parameter, enumeration is required");
-
-            if (Enum.GetUnderlyingType(typeof(T)) != typeof(Int32))
-                throw new InvalidOperationException("Only enums based on Int32 are supported");
-            
-            return ((T[])Enum.GetValues(typeof(T)))
-                .OrderBy(x => x.ToInt32(CultureInfo.InvariantCulture))
-                .ToArray();
-        }
-
-        public static EnumAlphabet FullAlphabet {
-            get {
-                return _fullAlphabet.Value;
-            }
-        }
-
-
-        public EnumAlphabet()
-            : base(_symbols.Value.Length) {
-        }
-
-        public EnumAlphabet(int[] map)
-            : base(map) {
-            Debug.Assert(map.Length == _symbols.Value.Length);
-        }
-
-
-        public override int GetSymbolIndex(T symbol) {
-            return symbol.ToInt32(CultureInfo.InvariantCulture);
-        }
-
-    }
-}
diff -r eedf4d834e67 -r fa6cbf4d8841 Implab/Automaton/RegularExpressions/RegularDFA.cs
--- a/Implab/Automaton/RegularExpressions/RegularDFA.cs	Wed Dec 13 19:54:45 2017 +0300
+++ b/Implab/Automaton/RegularExpressions/RegularDFA.cs	Tue Jan 23 19:39:21 2018 +0300
@@ -77,14 +77,14 @@
             return states.GroupBy(x => m_tags[x] ?? new TTag[0], arrayComparer).Select(g => new HashSet(g));
         }
 
-        public override string ToString() {
+        /*public override string ToString() {
             var states = new MapAlphabet(false, null);
 
             for (int i = 0; i < StateCount; i++)
                 states.DefineSymbol(string.Format("s{0}", i), i);
 
             return string.Format("//[RegularDFA {1} x {2}]\n{0}", PrintDFA(InputAlphabet, states),StateCount, AlphabetSize);
-        }
+        }*/
 
     }
 }
diff -r eedf4d834e67 -r fa6cbf4d8841 Implab/CancellationToken.cs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Implab/CancellationToken.cs	Tue Jan 23 19:39:21 2018 +0300
@@ -0,0 +1,65 @@
+using System;
+using System.Threading;
+using Implab.Parallels;
+
+namespace Implab {
+    public class CancellationToken : ICancellationToken {
+        const int CANCEL_NOT_REQUESTED = 0;
+        const int CANCEL_REQUESTING = 1;
+        const int CANCEL_REQUESTED = 2;
+
+        volatile int m_state = CANCEL_NOT_REQUESTED;
+
+        Action m_handler;
+
+        Parallels.SimpleAsyncQueue> m_handlers;
+
+        public bool IsCancellationRequested {
+            get { return m_state == CANCEL_REQUESTED; }
+        }
+
+        public Exception CancellationReason {
+            get; set;
+        }
+
+        public void CancellationRequested(Action handler) {
+            Safe.ArgumentNotNull(handler, nameof(handler));
+            if (IsCancellationRequested) {
+                handler(CancellationReason);
+            } else {
+                EnqueueHandler(handler);
+                if (IsCancellationRequested && TryDequeueHandler(out handler))
+                    handler(CancellationReason);
+            }
+        }
+
+        bool TryDequeueHandler(out Action handler) {
+            handler = Interlocked.Exchange(ref m_handler, null);
+            if (handler != null)
+                return true;
+            else if (m_handlers != null)
+                return m_handlers.TryDequeue(out handler);
+            else
+                return false;
+        }
+
+        void EnqueueHandler(Action handler) {
+            if (Interlocked.CompareExchange(ref m_handler, handler, null) != null) {
+                if (m_handlers == null)
+                    // compare-exchange will fprotect from loosing already created queue
+                    Interlocked.CompareExchange(ref m_handlers, new SimpleAsyncQueue>(), null);
+                m_handlers.Enqueue(handler);
+            }
+        }
+
+        void RequestCancellation(Exception reason) {
+            if (Interlocked.CompareExchange(ref m_state, CANCEL_REQUESTING, CANCEL_NOT_REQUESTED) == CANCEL_NOT_REQUESTED) {
+                if (reason == null)
+                    reason = new OperationCanceledException();
+                CancellationReason = reason;
+                m_state = CANCEL_REQUESTED;
+            }
+        }
+        
+    }
+}
\ No newline at end of file
diff -r eedf4d834e67 -r fa6cbf4d8841 Implab/IDeferred.cs
--- a/Implab/IDeferred.cs	Wed Dec 13 19:54:45 2017 +0300
+++ b/Implab/IDeferred.cs	Tue Jan 23 19:39:21 2018 +0300
@@ -4,7 +4,7 @@
     /// 
     /// Deferred result, usually used by asynchronous services as the service part of the promise.
     /// 
-    public interface IDeferred : ICancellationToken {
+    public interface IDeferred {
 
         void Resolve();
 
@@ -19,6 +19,13 @@
         ///  is used as the reason to reject promise.
         /// 
         void Reject(Exception error);
+
+        /// 
+        /// Marks current instance as cencelled with the specified reason.
+        /// 
+        /// The reason for the operation cancellation,
+        /// if not specified the new  will be created
+        void SetCancelled(Exception reason);
     }
 }
 
diff -r eedf4d834e67 -r fa6cbf4d8841 Implab/IDeferredT.cs
--- a/Implab/IDeferredT.cs	Wed Dec 13 19:54:45 2017 +0300
+++ b/Implab/IDeferredT.cs	Tue Jan 23 19:39:21 2018 +0300
@@ -1,10 +1,12 @@
 using System;
 
 namespace Implab {
-    public interface IDeferred : ICancellationToken {
+    public interface IDeferred {
         void Resolve(T value);
 
         void Reject(Exception error);
+
+        void SetCancelled(Exception error);
     }
 }
 
diff -r eedf4d834e67 -r fa6cbf4d8841 Implab/Implab.csproj
--- a/Implab/Implab.csproj	Wed Dec 13 19:54:45 2017 +0300
+++ b/Implab/Implab.csproj	Tue Jan 23 19:39:21 2018 +0300
@@ -1,189 +1,8 @@
-
-
+
+
   
-    Debug
-    AnyCPU
-    {F550F1F8-8746-4AD0-9614-855F4C4B7F05}
-    Library
-    Implab
-    Implab
-    v4.5
-    
-  
-  
-    true
-    full
-    true
-    bin\Debug
-    TRACE;DEBUG;NET_4_5
-    prompt
-    4
-    false
-    true
-  
-  
-    full
-    true
-    bin\Release
-    NET_4_5
-    prompt
-    4
-    false
-  
-  
-    false
-  
-  
-    implab.snk
+    netstandard2.0;net45
+    /usr/lib/mono/4.5/
   
-  
-    
-    
-    
-    
-  
-  
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-  
-  
-  
-    
-      Designer
-    
-    
-  
-  
-    
-  
-
\ No newline at end of file
+
+
diff -r eedf4d834e67 -r fa6cbf4d8841 Implab/Implab.old.csproj
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Implab/Implab.old.csproj	Tue Jan 23 19:39:21 2018 +0300
@@ -0,0 +1,189 @@
+
+
+  
+    Debug
+    AnyCPU
+    {F550F1F8-8746-4AD0-9614-855F4C4B7F05}
+    Library
+    Implab
+    Implab
+    v4.5
+    
+  
+  
+    true
+    full
+    true
+    bin\Debug
+    TRACE;DEBUG;NET_4_5
+    prompt
+    4
+    false
+    true
+  
+  
+    full
+    true
+    bin\Release
+    NET_4_5
+    prompt
+    4
+    false
+  
+  
+    false
+  
+  
+    implab.snk
+  
+  
+    
+    
+    
+    
+  
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+  
+  
+    
+      Designer
+    
+    
+  
+  
+    
+  
+
\ No newline at end of file
diff -r eedf4d834e67 -r fa6cbf4d8841 Implab/Properties/AssemblyInfo.cs
--- a/Implab/Properties/AssemblyInfo.cs	Wed Dec 13 19:54:45 2017 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-using System.Reflection;
-using System.Runtime.InteropServices;
-
-// Information about this assembly is defined by the following attributes. 
-// Change them to the values specific to your project.
-
-[assembly: AssemblyTitle("Implab")]
-[assembly: AssemblyDescription("Tools")]
-[assembly: AssemblyCompany("Implab.org")]
-[assembly: AssemblyCopyright("Implab")]
-[assembly: AssemblyTrademark("Implab")]
-// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
-// The form "{Major}.{Minor}.*" will automatically update the build and revision,
-// and "{Major}.{Minor}.{Build}.*" will update just the revision.
-
-[assembly: AssemblyVersion("2.1.*")]
-[assembly: ComVisible(false)]
-
-// The following attributes are used to specify the signing key for the assembly, 
-// if desired. See the Mono documentation for more information about signing.
-
-//[assembly: AssemblyDelaySign(false)]
-//[assembly: AssemblyKeyFile("")]
-
diff -r eedf4d834e67 -r fa6cbf4d8841 Local.testsettings
--- a/Local.testsettings	Wed Dec 13 19:54:45 2017 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-
-
-  These are default test settings for a local test run.
-  
-  
-    
-    
-    
-  
-
\ No newline at end of file
diff -r eedf4d834e67 -r fa6cbf4d8841 TraceAndTestImpact.testsettings
--- a/TraceAndTestImpact.testsettings	Wed Dec 13 19:54:45 2017 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-
-
-  These are test settings for Trace and Test Impact.
-  
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-    
-  
-
\ No newline at end of file
diff -r eedf4d834e67 -r fa6cbf4d8841 omnisharp.json
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/omnisharp.json	Tue Jan 23 19:39:21 2018 +0300
@@ -0,0 +1,54 @@
+{
+    "FormattingOptions": {
+        "NewLine": "\n",
+        "UseTabs": false,
+        "TabSize": 4,
+        "IndentationSize": 4,
+        "SpacingAfterMethodDeclarationName": false,
+        "SpaceWithinMethodDeclarationParenthesis": false,
+        "SpaceBetweenEmptyMethodDeclarationParentheses": false,
+        "SpaceAfterMethodCallName": false,
+        "SpaceWithinMethodCallParentheses": false,
+        "SpaceBetweenEmptyMethodCallParentheses": false,
+        "SpaceAfterControlFlowStatementKeyword": true,
+        "SpaceWithinExpressionParentheses": false,
+        "SpaceWithinCastParentheses": false,
+        "SpaceWithinOtherParentheses": false,
+        "SpaceAfterCast": false,
+        "SpacesIgnoreAroundVariableDeclaration": false,
+        "SpaceBeforeOpenSquareBracket": false,
+        "SpaceBetweenEmptySquareBrackets": false,
+        "SpaceWithinSquareBrackets": false,
+        "SpaceAfterColonInBaseTypeDeclaration": true,
+        "SpaceAfterComma": true,
+        "SpaceAfterDot": false,
+        "SpaceAfterSemicolonsInForStatement": true,
+        "SpaceBeforeColonInBaseTypeDeclaration": true,
+        "SpaceBeforeComma": false,
+        "SpaceBeforeDot": false,
+        "SpaceBeforeSemicolonsInForStatement": false,
+        "SpacingAroundBinaryOperator": "single",
+        "IndentBraces": false,
+        "IndentBlock": true,
+        "IndentSwitchSection": true,
+        "IndentSwitchCaseSection": true,
+        "LabelPositioning": "oneLess",
+        "WrappingPreserveSingleLine": true,
+        "WrappingKeepStatementsOnSingleLine": true,
+        "NewLinesForBracesInTypes": false,
+        "NewLinesForBracesInMethods": false,
+        "NewLinesForBracesInProperties": false,
+        "NewLinesForBracesInAccessors": false,
+        "NewLinesForBracesInAnonymousMethods": false,
+        "NewLinesForBracesInControlBlocks": false,
+        "NewLinesForBracesInAnonymousTypes": false,
+        "NewLinesForBracesInObjectCollectionArrayInitializers": false,
+        "NewLinesForBracesInLambdaExpressionBody": false,
+        "NewLineForElse": false,
+        "NewLineForCatch": false,
+        "NewLineForFinally": false,
+        "NewLineForMembersInObjectInit": false,
+        "NewLineForMembersInAnonymousTypes": false,
+        "NewLineForClausesInQuery": false
+    }
+}
\ No newline at end of file