Full Code of tomighty/tomighty-windows for AI

master d0558daa4182 cached
96 files
781.6 KB
319.3k tokens
333 symbols
1 requests
Download .txt
Showing preview only (818K chars total). Download the full file or copy to clipboard to get everything.
Repository: tomighty/tomighty-windows
Branch: master
Commit: d0558daa4182
Files: 96
Total size: 781.6 KB

Directory structure:
gitextract_t938un78/

├── .gitignore
├── GlobalAssemblyInfo.cs
├── LICENSE.txt
├── NOTICE.txt
├── README.md
├── Tomighty.Core/
│   ├── Duration.cs
│   ├── Events/
│   │   ├── PomodoroCompleted.cs
│   │   ├── PomodoroCountChanged.cs
│   │   ├── TimeElapsed.cs
│   │   ├── TimerStarted.cs
│   │   └── TimerStopped.cs
│   ├── ICountdownClock.cs
│   ├── IEventHub.cs
│   ├── IMutableUserPreferences.cs
│   ├── IPomodoroEngine.cs
│   ├── ITimer.cs
│   ├── IUserPreferences.cs
│   ├── IntervalType.cs
│   ├── PomodoroEngine.cs
│   ├── Properties/
│   │   └── AssemblyInfo.cs
│   ├── SynchronousEventHub.cs
│   ├── Timer.cs
│   └── Tomighty.Core.csproj
├── Tomighty.Core.Test/
│   ├── FakeEventHub.cs
│   ├── PomodoroEngineTest.cs
│   ├── Properties/
│   │   └── AssemblyInfo.cs
│   ├── Tomighty.Core.Test.csproj
│   └── packages.config
├── Tomighty.Update.Swap/
│   ├── App.config
│   ├── Program.cs
│   ├── Properties/
│   │   ├── AssemblyInfo.cs
│   │   ├── Settings.Designer.cs
│   │   └── Settings.settings
│   └── Tomighty.Update.Swap.csproj
├── Tomighty.Windows/
│   ├── About/
│   │   ├── AboutWindow.Designer.cs
│   │   ├── AboutWindow.cs
│   │   ├── AboutWindow.resx
│   │   └── AboutWindowPresenter.cs
│   ├── App.config
│   ├── AutoUpdate.cs
│   ├── Directories.cs
│   ├── ErrorReportWindow.Designer.cs
│   ├── ErrorReportWindow.cs
│   ├── ErrorReportWindow.resx
│   ├── Events.cs
│   ├── Flags.cs
│   ├── Host.cs
│   ├── IntervalTypeExtensions.cs
│   ├── LICENSE.txt
│   ├── Logger.cs
│   ├── NOTICE.txt
│   ├── Notifications/
│   │   ├── NotificationsPresenter.cs
│   │   ├── SoundNotificationPlayer.cs
│   │   └── Toasts.cs
│   ├── Preferences/
│   │   ├── UserPreferences.cs
│   │   ├── UserPreferencesForm.Designer.cs
│   │   ├── UserPreferencesForm.cs
│   │   ├── UserPreferencesForm.resx
│   │   └── UserPreferencesPresenter.cs
│   ├── Program.cs
│   ├── Properties/
│   │   ├── AssemblyInfo.cs
│   │   ├── Resources.Designer.cs
│   │   ├── Resources.resx
│   │   ├── Settings.Designer.cs
│   │   └── Settings.settings
│   ├── Resources/
│   │   ├── Toasts/
│   │   │   ├── app-updated.xml
│   │   │   ├── first-run.xml
│   │   │   └── interval-completed.xml
│   │   ├── image_clock.tiff
│   │   ├── image_stop.tiff
│   │   ├── image_tomato_black.tiff
│   │   ├── image_tomato_blue.tiff
│   │   ├── image_tomato_green.tiff
│   │   └── image_tomato_red.tiff
│   ├── StartupEventFlags.cs
│   ├── StartupEvents.cs
│   ├── Timer/
│   │   ├── Taskbar.cs
│   │   ├── TimerWindow.Designer.cs
│   │   ├── TimerWindow.cs
│   │   ├── TimerWindow.resx
│   │   └── TimerWindowPresenter.cs
│   ├── Tomighty.Windows.csproj
│   ├── TomightyApplication.cs
│   ├── Tray/
│   │   ├── ITrayMenu.cs
│   │   ├── ITrayMenuMutator.cs
│   │   ├── TrayIconController.cs
│   │   ├── TrayMenu.cs
│   │   └── TrayMenuController.cs
│   ├── URLs.cs
│   ├── Util/
│   │   └── Hash.cs
│   ├── Version.cs
│   └── packages.config
├── Tomighty.sln
├── dist.bat
├── pack.ps1
└── setup.nsi

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
.idea/
packages/
bin/
obj/
build/
dist/
*~
.vs/
*.user


================================================
FILE: GlobalAssemblyInfo.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

using System.Reflection;
using System.Resources;

[assembly: AssemblyProduct("Tomighty")]
[assembly: AssemblyCopyright("Copyright © 2010-2017 Celio Cidral Junior")]
[assembly: NeutralResourcesLanguage("en-US")]


================================================
FILE: LICENSE.txt
================================================

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS


================================================
FILE: NOTICE.txt
================================================
   =========================================================================
   ==  NOTICE file corresponding to section 4(d) of the Apache License,   ==
   ==  Version 2.0, in this case for the Tomighty distribution.           ==
   =========================================================================

   Tomighty is a software developed by Célio Cidral Junior. You can find it
   at http://www.tomighty.org
   
   Pomodoro Technique® and Pomodoro™ are registered and filed trademarks
   owned by Francesco Cirillo. Tomighty is not affiliated by, associated
   with nor endorsed by Francesco Cirillo.

   Tomato icon designed by José Campos <www.thenounproject.com/jcampos>

   Clock icon designed by Thomas Le Bas <www.thenounproject.com/tlb>


================================================
FILE: README.md
================================================
Tomighty for Windows
====================

Available for download at http://www.tomighty.org

This repository contains the source code for the .NET version of Tomighty.
If you are looking for the source code of the old, multiplatform (Java) version, see https://github.com/ccidral/tomighty

Development Workflow
====================

We follow the development model presented by Vincent Driessen:

http://nvie.com/posts/a-successful-git-branching-model/

Discuss
=======

For development related discussions, please subscribe to:

https://groups.google.com/forum/#!forum/tomighty-developers

License
=======

Tomighty for Windows is licensed under the terms of the Apache License 2.0. Read it here: https://www.apache.org/licenses/LICENSE-2.0.html


================================================
FILE: Tomighty.Core/Duration.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

using System;

namespace Tomighty
{
    public struct Duration
    {
        public static readonly Duration Zero = new Duration();

        public static Duration InSeconds(int seconds) => new Duration(seconds);
        public static Duration InMinutes(int minutes) => new Duration(minutes * 60);

        public Duration(int seconds)
        {
            if(seconds < 0)
                throw new ArgumentException($"Invalid duration of {seconds} seconds");

            Seconds = seconds;
        }

        public int Seconds { get; }
        public int Minutes => Seconds / 60;

        public Duration AddSeconds(int delta) => new Duration(Seconds + delta);

        public override string ToString() => $"{GetType().Name}({Seconds})";

        public string ToTimeString()
        {
            int minutes = Seconds / 60;
            int seconds = Seconds - minutes * 60;
            return $"{minutes.ToString("0#")}:{seconds.ToString("0#")}";
        }

        public static bool operator ==(Duration a, Duration b) => a.Seconds == b.Seconds;
        public static bool operator !=(Duration a, Duration b) => a.Seconds != b.Seconds;
    }
}

================================================
FILE: Tomighty.Core/Events/PomodoroCompleted.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

namespace Tomighty.Events
{
    public class PomodoroCompleted
    {
        public PomodoroCompleted(Duration duration)
        {
            Duration = duration;
        }

        public Duration Duration { get; }
    }
}

================================================
FILE: Tomighty.Core/Events/PomodoroCountChanged.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

namespace Tomighty.Events
{
    public class PomodoroCountChanged
    {
        public PomodoroCountChanged(int count)
        {
            PomodoroCount = count;
        }

        public int PomodoroCount { get; }
    }
}


================================================
FILE: Tomighty.Core/Events/TimeElapsed.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

namespace Tomighty.Events
{
    public class TimeElapsed
    {
        public TimeElapsed(IntervalType intervalType, Duration duration, Duration remainingTime)
        {
            IntervalType = intervalType;
            Duration = duration;
            RemainingTime = remainingTime;
        }

        public Duration Duration { get; }
        public IntervalType IntervalType { get; }
        public Duration RemainingTime { get; }
    }
}


================================================
FILE: Tomighty.Core/Events/TimerStarted.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

namespace Tomighty.Events
{
    public class TimerStarted
    {
        public IntervalType IntervalType { get; }
        public Duration Duration { get; }
        public Duration RemainingTime { get; }

        public TimerStarted(IntervalType intervalType, Duration duration, Duration remainingTime)
        {
            IntervalType = intervalType;
            Duration = duration;
            RemainingTime = remainingTime;
        }
    }
}

================================================
FILE: Tomighty.Core/Events/TimerStopped.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

namespace Tomighty.Events
{
    public class TimerStopped
    {
        public IntervalType IntervalType { get; }
        public Duration Duration { get; }
        public Duration RemainingTime { get; }
        public bool IsIntervalCompleted => RemainingTime == Duration.Zero;

        public TimerStopped(IntervalType intervalType, Duration duration, Duration remainingTime)
        {
            IntervalType = intervalType;
            Duration = duration;
            RemainingTime = remainingTime;
        }
    }
}

================================================
FILE: Tomighty.Core/ICountdownClock.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

namespace Tomighty
{
    public interface ICountdownClock
    {
        Duration RemainingTime { get; }
    }
}


================================================
FILE: Tomighty.Core/IEventHub.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

using System;

namespace Tomighty
{
    public interface IEventHub
    {
        void Publish(object @event);
        void Subscribe<T>(Action<T> eventHandler);
    }
}

================================================
FILE: Tomighty.Core/IMutableUserPreferences.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

namespace Tomighty
{
    public interface IMutableUserPreferences : IUserPreferences
    {
        void SetIntervalDuration(IntervalType intervalType, Duration duration);
        new bool ShowToastNotifications { get; set; }
        new bool PlaySoundNotifications { get; set; }
        new int MaxPomodoroCount { get; set; }
        new bool AutoUpdate { get; set; }
    }
}


================================================
FILE: Tomighty.Core/IPomodoroEngine.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

namespace Tomighty
{
    public interface IPomodoroEngine
    {
        void StartTimer(IntervalType intervalType);
        void StopTimer();
        void ResetPomodoroCount();

        int PomodoroCount { get; }
        IntervalType SuggestedBreakType { get; }
    }
}


================================================
FILE: Tomighty.Core/ITimer.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

namespace Tomighty
{
    public interface ITimer : ICountdownClock
    {
        void Start(Duration duration, IntervalType intervalType);
        void Stop();
    }
}

================================================
FILE: Tomighty.Core/IUserPreferences.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

using System;

namespace Tomighty
{
    public interface IUserPreferences
    {
        Duration GetIntervalDuration(IntervalType intervalType);
        int MaxPomodoroCount { get; }
        bool ShowToastNotifications { get; }
        bool PlaySoundNotifications { get; }
        bool AutoUpdate { get; }

        void Update(Action<IMutableUserPreferences> action);
    }
}

================================================
FILE: Tomighty.Core/IntervalType.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

namespace Tomighty
{
    public enum IntervalType
    {
        Pomodoro,
        ShortBreak,
        LongBreak
    }
}

================================================
FILE: Tomighty.Core/PomodoroEngine.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

using Tomighty.Events;

namespace Tomighty
{
    public class PomodoroEngine : IPomodoroEngine
    {
        private readonly ITimer timer;
        private readonly IUserPreferences userPreferences;
        private readonly IEventHub eventHub;
        private int _pomodoroCount;

        public PomodoroEngine(ITimer timer, IUserPreferences userPreferences, IEventHub eventHub)
        {
            this.timer = timer;
            this.userPreferences = userPreferences;
            this.eventHub = eventHub;

            eventHub.Subscribe<TimerStopped>(OnTimerStopped);
        }

        public int PomodoroCount
        {
            get
            {
                return _pomodoroCount;
            }
            private set
            {
                if (value != _pomodoroCount)
                {
                    _pomodoroCount = value;
                    eventHub.Publish(new PomodoroCountChanged(value));
                }
            }
        }

        public IntervalType SuggestedBreakType => PomodoroCount != userPreferences.MaxPomodoroCount ? IntervalType.ShortBreak : IntervalType.LongBreak;

        public void StartTimer(IntervalType intervalType)
        {
            var duration = userPreferences.GetIntervalDuration(intervalType);
            timer.Start(duration, intervalType);
        }

        public void StopTimer()
        {
            timer.Stop();
        }

        private void OnTimerStopped(TimerStopped timerStopped)
        {
            if (timerStopped.IntervalType == IntervalType.Pomodoro && timerStopped.IsIntervalCompleted)
            {
                PomodoroCompleted(timerStopped.Duration);
            }
        }

        private void PomodoroCompleted(Duration duration)
        {
            IncreasePomodoroCount();
            eventHub.Publish(new PomodoroCompleted(duration));
        }

        private void IncreasePomodoroCount()
        {
            var newCount = PomodoroCount + 1;
            PomodoroCount = newCount > userPreferences.MaxPomodoroCount ? 1 : newCount;
        }

        public void ResetPomodoroCount()
        {
            PomodoroCount = 0;
        }
    }
}


================================================
FILE: Tomighty.Core/Properties/AssemblyInfo.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

using System.Reflection;
using System.Runtime.InteropServices;

[assembly: AssemblyTitle("Tomighty Core")]
[assembly: ComVisible(false)]
[assembly: Guid("C7FF3B3E-0CC1-4EC7-A7C1-39B6361B5895")]


================================================
FILE: Tomighty.Core/SynchronousEventHub.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

using System;
using System.Collections.Generic;

namespace Tomighty
{
    public class SynchronousEventHub : IEventHub
    {
        private readonly IDictionary<Type, List<Action<object>>> allSubscribers = new Dictionary<Type, List<Action<object>>>();

        public void Publish(object @event)
        {
            var eventType = @event.GetType();

            if (!allSubscribers.ContainsKey(eventType))
                return;

            foreach (var subscriber in allSubscribers[eventType])
            {
                subscriber(@event);
            }
        }

        public void Subscribe<T>(Action<T> eventHandler)
        {
            List<Action<object>> subscribers;
            var eventType = typeof(T);

            if (allSubscribers.ContainsKey(eventType))
            {
                subscribers = allSubscribers[eventType];
            }
            else
            {
                subscribers = new List<Action<object>>();
                allSubscribers[eventType] = subscribers;
            }

            subscribers.Add(e => eventHandler((T) e));
        }
    }
}

================================================
FILE: Tomighty.Core/Timer.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

using System.Timers;
using Tomighty.Events;
using SystemTimer = System.Timers.Timer;

namespace Tomighty
{
    public class Timer : ITimer
    {
        private const int IntervalInSeconds = 1;

        private readonly SystemTimer systemTimer = new SystemTimer();
        private readonly IEventHub eventHub;

        // Mutable fields
        private Duration remainingTime = Duration.Zero;
        private IntervalType intervalType;
        private Duration duration;

        public Timer(IEventHub eventHub)
        {
            this.eventHub = eventHub;

            systemTimer.Interval = IntervalInSeconds * 1000;
            systemTimer.AutoReset = true;
            systemTimer.Elapsed += SystemTimerOnElapsed;
        }

        public Duration RemainingTime => remainingTime;

        public void Start(Duration duration, IntervalType intervalType)
        {
            this.duration = duration;
            this.intervalType = intervalType;

            remainingTime = duration;

            systemTimer.Start();

            eventHub.Publish(new TimerStarted(intervalType, duration, remainingTime));
        }

        public void Stop()
        {
            systemTimer.Stop();

            eventHub.Publish(new TimerStopped(intervalType, duration, remainingTime));

            remainingTime = Duration.Zero;
        }

        private void DecreaseRemainingTime(int seconds)
        {
            remainingTime = remainingTime.AddSeconds(-seconds);

            eventHub.Publish(new TimeElapsed(intervalType, duration, remainingTime));

            if (remainingTime.Seconds == 0)
            {
                Stop();
            }
        }

        private void SystemTimerOnElapsed(object sender, ElapsedEventArgs elapsedEventArgs)
        {
            DecreaseRemainingTime(IntervalInSeconds);
        }
    }
}

================================================
FILE: Tomighty.Core/Tomighty.Core.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{C7FF3B3E-0CC1-4EC7-A7C1-39B6361B5895}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>Tomighty</RootNamespace>
    <AssemblyName>Tomighty.Core</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Core" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="..\GlobalAssemblyInfo.cs">
      <Link>GlobalAssemblyInfo.cs</Link>
    </Compile>
    <Compile Include="Events\PomodoroCompleted.cs" />
    <Compile Include="Events\PomodoroCountChanged.cs" />
    <Compile Include="Events\TimeElapsed.cs" />
    <Compile Include="Events\TimerStarted.cs" />
    <Compile Include="Events\TimerStopped.cs" />
    <Compile Include="ICountdownClock.cs" />
    <Compile Include="IEventHub.cs" />
    <Compile Include="IMutableUserPreferences.cs" />
    <Compile Include="IntervalType.cs" />
    <Compile Include="ITimer.cs" />
    <Compile Include="IUserPreferences.cs" />
    <Compile Include="IPomodoroEngine.cs" />
    <Compile Include="PomodoroEngine.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="Duration.cs" />
    <Compile Include="SynchronousEventHub.cs" />
    <Compile Include="Timer.cs" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>

================================================
FILE: Tomighty.Core.Test/FakeEventHub.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

using System;
using System.Collections.Generic;
using System.Linq;

namespace Tomighty.Test
{
    public class FakeEventHub : IEventHub
    {
        private readonly List<Subscriber> subscribers = new List<Subscriber>();
        private readonly List<object> publishedEvents = new List<object>();

        public IEnumerable<T> PublishedEvents<T>()
        {
            return publishedEvents.Where(e => e.GetType() == typeof(T)).Select(e => (T) e);
        }

        public T LastEvent<T>()
        {
            return PublishedEvents<T>().LastOrDefault();
        }

        public void Publish(object @event)
        {
            publishedEvents.Add(@event);

            foreach (var subscriber in subscribers)
            {
                subscriber.Handle(@event);
            }
        }

        public void Subscribe<T>(Action<T> eventHandler)
        {
            Action<object> proxy = @event => eventHandler((T) @event);
            subscribers.Add(new Subscriber(typeof(T), proxy));
        }

        private class Subscriber
        {
            private readonly Type eventType;
            private readonly Action<object> eventHandler;

            public Subscriber(Type eventType, Action<object> eventHandler)
            {
                this.eventType = eventType;
                this.eventHandler = eventHandler;
            }

            public void Handle(object @event)
            {
                if (eventType == @event.GetType())
                {
                    eventHandler(@event);
                }
            }
        }
    }
}

================================================
FILE: Tomighty.Core.Test/PomodoroEngineTest.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

using System.Linq;
using NSubstitute;
using NUnit.Framework;
using Tomighty.Events;

namespace Tomighty.Test
{
    [TestFixture]
    public class PomodoroEngineTest
    {
        private IPomodoroEngine engine;
        private IUserPreferences userPreferences;
        private ITimer timer;
        private FakeEventHub eventHub;

        [SetUp]
        public void SetUp()
        {
            userPreferences = Substitute.For<IUserPreferences>();
            timer = Substitute.For<ITimer>();
            eventHub = new FakeEventHub();
            engine = new PomodoroEngine(timer, userPreferences, eventHub);
        }

        [Test]
        public void Initial_pomodoro_count_is_zero()
        {
            Assert.AreEqual(0, engine.PomodoroCount);
        }

        [Test]
        public void Start_the_timer()
        {
            var duration = Duration.InMinutes(25);
            var intervalType = IntervalType.Pomodoro;

            userPreferences.GetIntervalDuration(intervalType).Returns(duration);

            engine.StartTimer(intervalType);

            timer.Received().Start(duration, intervalType);
        }

        [Test]
        public void Stop_the_timer()
        {
            engine.StopTimer();
            timer.Received().Stop();
        }

        [Test]
        public void Publish_PomodoroCompleted_event_when_timer_stops_with_zero_remaining_time()
        {
            var remainingTime = Duration.Zero;
            var duration = Duration.InMinutes(25);
            var pomodoroCompletedEvent = new TimerStopped(IntervalType.Pomodoro, duration, remainingTime);

            eventHub.Publish(pomodoroCompletedEvent);

            var pomodoroCompleted = eventHub.PublishedEvents<PomodoroCompleted>().Single();
            Assert.AreEqual(duration, pomodoroCompleted.Duration);
        }

        [Test]
        public void Do_not_publish_PomodoroCompleted_event_when_timer_stops_with_remaining_time_greater_than_zero()
        {
            var remainingTime = Duration.InSeconds(1);
            var duration = Duration.InMinutes(25);

            eventHub.Publish(new TimerStopped(IntervalType.Pomodoro, duration, remainingTime));

            var pomodoroCompletedEvents = eventHub.PublishedEvents<PomodoroCompleted>();
            Assert.AreEqual(0, pomodoroCompletedEvents.Count());
        }

        [Test]
        public void Do_not_publish_PomodoroCompleted_event_when_timer_stops_and_interval_type_is_not_Pomodoro()
        {
            var remainingTime = Duration.Zero;
            var duration = Duration.InMinutes(25);

            eventHub.Publish(new TimerStopped(IntervalType.ShortBreak, duration, remainingTime));

            var pomodoroCompletedEvents = eventHub.PublishedEvents<PomodoroCompleted>();
            Assert.AreEqual(0, pomodoroCompletedEvents.Count());
        }

        [Test]
        public void Increase_pomodoro_count_when_timer_stops_with_zero_remaining_time()
        {
            userPreferences.MaxPomodoroCount.Returns(999);

            eventHub.Publish(PomodoroCompletedEvent());
            Assert.AreEqual(1, engine.PomodoroCount);

            eventHub.Publish(PomodoroCompletedEvent());
            Assert.AreEqual(2, engine.PomodoroCount);

            eventHub.Publish(PomodoroCompletedEvent());
            Assert.AreEqual(3, engine.PomodoroCount);
        }

        [Test]
        public void Reset_pomodoro_count_when_it_is_greater_than_limit_defined_by_user_preferences()
        {
            userPreferences.MaxPomodoroCount.Returns(3);

            eventHub.Publish(PomodoroCompletedEvent());
            Assert.AreEqual(1, engine.PomodoroCount);

            eventHub.Publish(PomodoroCompletedEvent());
            Assert.AreEqual(2, engine.PomodoroCount);

            eventHub.Publish(PomodoroCompletedEvent());
            Assert.AreEqual(3, engine.PomodoroCount);

            eventHub.Publish(PomodoroCompletedEvent());
            Assert.AreEqual(1, engine.PomodoroCount);

            eventHub.Publish(PomodoroCompletedEvent());
            Assert.AreEqual(2, engine.PomodoroCount);

            eventHub.Publish(PomodoroCompletedEvent());
            Assert.AreEqual(3, engine.PomodoroCount);

            eventHub.Publish(PomodoroCompletedEvent());
            Assert.AreEqual(1, engine.PomodoroCount);
        }

        [Test]
        public void Suggested_timer_action_is_ShortBreak_when_pomodoro_count_is_different_than_user_defined_count_limit()
        {
            userPreferences.MaxPomodoroCount.Returns(3);

            // pomodoro count: 0
            Assert.AreEqual(IntervalType.ShortBreak, engine.SuggestedBreakType);

            // pomodoro count: 1
            eventHub.Publish(PomodoroCompletedEvent());
            Assert.AreEqual(IntervalType.ShortBreak, engine.SuggestedBreakType);

            // pomodoro count: 2
            eventHub.Publish(PomodoroCompletedEvent());
            Assert.AreEqual(IntervalType.ShortBreak, engine.SuggestedBreakType);
        }

        [Test]
        public void Suggested_timer_action_is_LongBreak_when_pomodoro_count_is_equal_to_user_defined_count_limit()
        {
            userPreferences.MaxPomodoroCount.Returns(3);

            eventHub.Publish(PomodoroCompletedEvent()); // pomodoro count: 1
            eventHub.Publish(PomodoroCompletedEvent()); // pomodoro count: 2
            eventHub.Publish(PomodoroCompletedEvent()); // pomodoro count: 3

            Assert.AreEqual(IntervalType.LongBreak, engine.SuggestedBreakType);
        }

        [Test]
        public void Manually_reset_pomodoro_count()
        {
            userPreferences.MaxPomodoroCount.Returns(999);

            eventHub.Publish(PomodoroCompletedEvent());
            eventHub.Publish(PomodoroCompletedEvent());
            eventHub.Publish(PomodoroCompletedEvent());

            engine.ResetPomodoroCount();

            Assert.AreEqual(0, engine.PomodoroCount);
        }

        [Test]
        public void Publish_event_when_pomodoro_count_changes()
        {
            userPreferences.MaxPomodoroCount.Returns(3);

            eventHub.Publish(PomodoroCompletedEvent());
            Assert.AreEqual(1, eventHub.PublishedEvents<PomodoroCountChanged>().Count());
            Assert.AreEqual(1, eventHub.LastEvent<PomodoroCountChanged>().PomodoroCount);

            eventHub.Publish(PomodoroCompletedEvent());
            Assert.AreEqual(2, eventHub.PublishedEvents<PomodoroCountChanged>().Count());
            Assert.AreEqual(2, eventHub.LastEvent<PomodoroCountChanged>().PomodoroCount);

            eventHub.Publish(PomodoroCompletedEvent());
            Assert.AreEqual(3, eventHub.PublishedEvents<PomodoroCountChanged>().Count());
            Assert.AreEqual(3, eventHub.LastEvent<PomodoroCountChanged>().PomodoroCount);

            eventHub.Publish(PomodoroCompletedEvent());
            Assert.AreEqual(4, eventHub.PublishedEvents<PomodoroCountChanged>().Count());
            Assert.AreEqual(1, eventHub.LastEvent<PomodoroCountChanged>().PomodoroCount);

            engine.ResetPomodoroCount();
            Assert.AreEqual(5, eventHub.PublishedEvents<PomodoroCountChanged>().Count());
            Assert.AreEqual(0, eventHub.LastEvent<PomodoroCountChanged>().PomodoroCount);
        }

        private static TimerStopped PomodoroCompletedEvent()
        {
            var remainingTime = Duration.Zero;
            var duration = Duration.InMinutes(25);
            return new TimerStopped(IntervalType.Pomodoro, duration, remainingTime);
        }
    }
}


================================================
FILE: Tomighty.Core.Test/Properties/AssemblyInfo.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

using System.Reflection;
using System.Runtime.InteropServices;

[assembly: AssemblyTitle("Tomighty Core Tests")]
[assembly: ComVisible(false)]
[assembly: Guid("CAC6A930-C0E3-422B-A49E-7DE000DC9A40")]


================================================
FILE: Tomighty.Core.Test/Tomighty.Core.Test.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{CAC6A930-C0E3-422B-A49E-7DE000DC9A40}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>Tomighty</RootNamespace>
    <AssemblyName>Tomighty.Core.Test</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="NSubstitute, Version=2.0.0.0, Culture=neutral, PublicKeyToken=92dd2e9066daa5ca">
      <HintPath>..\packages\NSubstitute.2.0.0-rc\lib\net45\NSubstitute.dll</HintPath>
    </Reference>
    <Reference Include="nunit.framework, Version=3.4.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb">
      <HintPath>..\packages\NUnit.3.4.1\lib\net45\nunit.framework.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Data" />
    <Reference Include="System.Runtime" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="..\GlobalAssemblyInfo.cs">
      <Link>GlobalAssemblyInfo.cs</Link>
    </Compile>
    <Compile Include="FakeEventHub.cs" />
    <Compile Include="PomodoroEngineTest.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <Content Include="packages.config" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\Tomighty.Core\Tomighty.Core.csproj">
      <Project>{C7FF3B3E-0CC1-4EC7-A7C1-39B6361B5895}</Project>
      <Name>Tomighty.Core</Name>
    </ProjectReference>
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>

================================================
FILE: Tomighty.Core.Test/packages.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="NSubstitute" version="2.0.0-rc" targetFramework="net45" />
  <package id="NUnit" version="3.4.1" targetFramework="net45" />
  <package id="NUnit.ConsoleRunner" version="3.4.1" targetFramework="net45" />
  <package id="NUnit.Extension.NUnitProjectLoader" version="3.4.1" targetFramework="net45" />
  <package id="NUnit.Extension.NUnitV2Driver" version="3.4.1" targetFramework="net45" />
  <package id="NUnit.Extension.NUnitV2ResultWriter" version="3.4.1" targetFramework="net45" />
  <package id="NUnit.Extension.TeamCityEventListener" version="1.0.1" targetFramework="net45" />
  <package id="NUnit.Extension.VSProjectLoader" version="3.4.1" targetFramework="net45" />
  <package id="NUnit.Runners" version="3.4.1" targetFramework="net45" />
</packages>

================================================
FILE: Tomighty.Update.Swap/App.config
================================================
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>

================================================
FILE: Tomighty.Update.Swap/Program.cs
================================================
using System;
using System.Diagnostics;
using System.IO;
using System.IO.Compression;
using System.Text.RegularExpressions;
using System.Threading;
using Tomighty.Windows;

namespace Tomighty.Update.Swap
{
    static class Program
    {
        private static readonly Logger logger = new Logger("swap");

        [STAThread]
        static void Main()
        {
            string[] args = Environment.GetCommandLineArgs();

            if (args.Length != 5)
            {
                logger.Error($"Wrong number of arguments: {args.Length}, exiting now");
                return;
            }

            var processId = args[1];
            var exePath = args[2];
            var sourcePackage = args[3];
            var restart = args[4];

            if (!IsInteger(processId))
            {
                logger.Error($"Invalid process id: {processId}");
                return;
            }

            if (!File.Exists(exePath))
            {
                logger.Error($"File not found: {exePath}");
                return;
            }

            if (!File.Exists(sourcePackage))
            {
                logger.Error($"File not found: {sourcePackage}");
                return;
            }

            var targetDir = Path.GetDirectoryName(exePath);

            try
            {
                Swap(int.Parse(processId), exePath, sourcePackage, targetDir, restart == "true");
            }
            catch (Exception e)
            {
                logger.Error(e);
            }
        }

        private static void Swap(int processId, string exePath, string sourcePackage, string targetDir, bool restart)
        {
            try
            {
                logger.Info($"Waiting for process {processId} to exit");
                Process.GetProcessById(processId).WaitForExit();

                logger.Info($"Process {processId} has exited");
            }
            catch (ArgumentException)
            {
                logger.Info($"Process {processId} doesn't exist, probably exited");
            }

            Thread.Sleep(500);

            logger.Info($"Deleting directory contents: {targetDir}");
            DeleteDirectoryContents(targetDir);

            logger.Info($"Extracting files from `{sourcePackage}` into `{targetDir}`");
            ZipFile.ExtractToDirectory(sourcePackage, targetDir);

            if (restart)
            {
                logger.Info($"Starting process {exePath}");
                Process.Start(exePath);
            }

            StartupEventFlags.Flags.TurnOn(StartupEventFlags.AppUpdatedFlag);

            logger.Info($"Done");
        }

        private static void DeleteDirectoryContents(string targetDir)
        {
            foreach (var file in Directory.GetFiles(targetDir))
            {
                File.Delete(file);
            }

            foreach (var dir in Directory.GetDirectories(targetDir))
            {
                new DirectoryInfo(dir).Delete(true);
            }
        }

        private static bool IsInteger(string s)
        {
            return s != null && Regex.IsMatch(s, @"^\d+$");
        }
    }
}


================================================
FILE: Tomighty.Update.Swap/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

[assembly: AssemblyTitle("Tomighty.Update.Swap")]
[assembly: ComVisible(false)]
[assembly: Guid("3fc0dc20-6120-4cd7-8f54-a1ca6f8886bf")]


================================================
FILE: Tomighty.Update.Swap/Properties/Settings.Designer.cs
================================================
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.42000
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace Tomighty.Update.Swap.Properties
{


    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
    {

        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));

        public static Settings Default
        {
            get
            {
                return defaultInstance;
            }
        }
    }
}


================================================
FILE: Tomighty.Update.Swap/Properties/Settings.settings
================================================
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
  <Profiles>
    <Profile Name="(Default)" />
  </Profiles>
  <Settings />
</SettingsFile>


================================================
FILE: Tomighty.Update.Swap/Tomighty.Update.Swap.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{3FC0DC20-6120-4CD7-8F54-A1CA6F8886BF}</ProjectGuid>
    <OutputType>WinExe</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>Tomighty.Update.Swap</RootNamespace>
    <AssemblyName>Tomighty.Update.Swap</AssemblyName>
    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.IO.Compression" />
    <Reference Include="System.IO.Compression.FileSystem" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.Deployment" />
    <Reference Include="System.Drawing" />
    <Reference Include="System.Net.Http" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="..\Tomighty.Windows\Directories.cs">
      <Link>Directories.cs</Link>
    </Compile>
    <Compile Include="..\Tomighty.Windows\Flags.cs">
      <Link>Flags.cs</Link>
    </Compile>
    <Compile Include="..\Tomighty.Windows\Logger.cs">
      <Link>Logger.cs</Link>
    </Compile>
    <Compile Include="..\Tomighty.Windows\StartupEventFlags.cs">
      <Link>StartupEventFlags.cs</Link>
    </Compile>
    <Compile Include="Program.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <None Include="Properties\Settings.settings">
      <Generator>SettingsSingleFileGenerator</Generator>
      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
    </None>
    <Compile Include="Properties\Settings.Designer.cs">
      <AutoGen>True</AutoGen>
      <DependentUpon>Settings.settings</DependentUpon>
      <DesignTimeSharedInput>True</DesignTimeSharedInput>
    </Compile>
  </ItemGroup>
  <ItemGroup>
    <None Include="App.config" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>

================================================
FILE: Tomighty.Windows/About/AboutWindow.Designer.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

namespace Tomighty.Windows.About
{
    partial class AboutWindow
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.titleLabel = new System.Windows.Forms.Label();
            this.urlLabel = new System.Windows.Forms.Label();
            this.licenseTextBox = new System.Windows.Forms.TextBox();
            this.closeButton = new System.Windows.Forms.Button();
            this.productVersionTextBox = new System.Windows.Forms.TextBox();
            this.SuspendLayout();
            // 
            // titleLabel
            // 
            this.titleLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
            | System.Windows.Forms.AnchorStyles.Right)));
            this.titleLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.titleLabel.Location = new System.Drawing.Point(12, 9);
            this.titleLabel.Name = "titleLabel";
            this.titleLabel.Size = new System.Drawing.Size(612, 40);
            this.titleLabel.TabIndex = 1;
            this.titleLabel.Text = "Tomighty";
            this.titleLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
            // 
            // urlLabel
            // 
            this.urlLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
            | System.Windows.Forms.AnchorStyles.Right)));
            this.urlLabel.Location = new System.Drawing.Point(12, 49);
            this.urlLabel.Name = "urlLabel";
            this.urlLabel.Size = new System.Drawing.Size(612, 20);
            this.urlLabel.TabIndex = 2;
            this.urlLabel.Text = "http://www.tomighty.org";
            this.urlLabel.TextAlign = System.Drawing.ContentAlignment.TopCenter;
            // 
            // licenseTextBox
            // 
            this.licenseTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
            | System.Windows.Forms.AnchorStyles.Left) 
            | System.Windows.Forms.AnchorStyles.Right)));
            this.licenseTextBox.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.licenseTextBox.Location = new System.Drawing.Point(18, 91);
            this.licenseTextBox.Multiline = true;
            this.licenseTextBox.Name = "licenseTextBox";
            this.licenseTextBox.ReadOnly = true;
            this.licenseTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
            this.licenseTextBox.Size = new System.Drawing.Size(606, 282);
            this.licenseTextBox.TabIndex = 3;
            this.licenseTextBox.WordWrap = false;
            // 
            // closeButton
            // 
            this.closeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
            this.closeButton.Location = new System.Drawing.Point(549, 379);
            this.closeButton.Name = "closeButton";
            this.closeButton.Size = new System.Drawing.Size(75, 23);
            this.closeButton.TabIndex = 0;
            this.closeButton.Text = "Close";
            this.closeButton.UseVisualStyleBackColor = true;
            this.closeButton.Click += new System.EventHandler(this.closeButton_Click);
            // 
            // productVersionTextBox
            // 
            this.productVersionTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
            | System.Windows.Forms.AnchorStyles.Right)));
            this.productVersionTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
            this.productVersionTextBox.Location = new System.Drawing.Point(18, 72);
            this.productVersionTextBox.Name = "productVersionTextBox";
            this.productVersionTextBox.ReadOnly = true;
            this.productVersionTextBox.Size = new System.Drawing.Size(606, 13);
            this.productVersionTextBox.TabIndex = 4;
            this.productVersionTextBox.Text = "<product version>";
            this.productVersionTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
            // 
            // AboutWindow
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(636, 414);
            this.Controls.Add(this.productVersionTextBox);
            this.Controls.Add(this.closeButton);
            this.Controls.Add(this.licenseTextBox);
            this.Controls.Add(this.urlLabel);
            this.Controls.Add(this.titleLabel);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.Name = "AboutWindow";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "About Tomighty";
            this.Load += new System.EventHandler(this.AboutForm_Load);
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.Label titleLabel;
        private System.Windows.Forms.Label urlLabel;
        private System.Windows.Forms.TextBox licenseTextBox;
        private System.Windows.Forms.Button closeButton;
        private System.Windows.Forms.TextBox productVersionTextBox;
    }
}

================================================
FILE: Tomighty.Windows/About/AboutWindow.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

using System;
using System.IO;
using System.Reflection;
using System.Windows.Forms;

namespace Tomighty.Windows.About
{
    public partial class AboutWindow : Form
    {
        public AboutWindow()
        {
            InitializeComponent();
        }

        private void AboutForm_Load(object sender, EventArgs e)
        {
            var version = Assembly.GetExecutingAssembly().GetName().Version;

            titleLabel.Text = $"Tomighty {version.Major}.{version.Minor}.{version.Build}";
            licenseTextBox.Text = File.ReadAllText(@"LICENSE.txt");
            productVersionTextBox.Text = Version.Product;
        }

        private void closeButton_Click(object sender, EventArgs e)
        {
            Close();
            Dispose();
        }
    }
}


================================================
FILE: Tomighty.Windows/About/AboutWindow.resx
================================================
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
</root>

================================================
FILE: Tomighty.Windows/About/AboutWindowPresenter.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

using System.Windows.Forms;

namespace Tomighty.Windows.About
{
    internal class AboutWindowPresenter
    {
        private AboutWindow window;

        public void Show()
        {
            if (window == null)
            {
                window = new AboutWindow();
                window.FormClosed += OnWindowClosed;
            }

            if (window.Visible)
            {
                window.Focus();
            }
            else
            {
                window.ShowDialog();
            }
        }

        private void OnWindowClosed(object sender, FormClosedEventArgs e)
        {
            window.Dispose();
            window = null;
        }
    }
}


================================================
FILE: Tomighty.Windows/App.config
================================================
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>

================================================
FILE: Tomighty.Windows/AutoUpdate.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

using System;
using System.Diagnostics;
using System.IO;
using System.Net.Http;
using System.Reflection;
using System.Threading.Tasks;
using System.Windows.Forms;
using Tomighty.Windows.Preferences;
using Tomighty.Windows.Util;

namespace Tomighty.Windows
{
    internal class AutoUpdate
    {
        private const int CheckIntervalInHours = 72;

        private static readonly Logger logger = new Logger("update");

        private readonly UserPreferences userPreferences;

        public AutoUpdate(UserPreferences userPreferences)
        {
            this.userPreferences = userPreferences;
            Application.ApplicationExit += Update;
        }

        private static string LatestPackageFile => Path.Combine(Directories.AppData, "latest.zip");

        private static string LastDownloadedVersionFile => Path.Combine(Directories.AppData, "latest.version");

        private static string SwapProgramFile => Path.Combine(Directories.ProgramLocation, "Tomighty.Update.Swap.exe");

        public void Start()
        {
            if (userPreferences.AutoUpdate)
            {
                Task.Run(async () =>
                {
                    try
                    {
                        await CheckIfNecessary();
                    }
                    catch(Exception e)
                    {
                        logger.Error(e);
                    }
                });
            }
        }

        private async Task CheckIfNecessary()
        {
            if (IsTimeToCheck)
            {
                await Check();
            }
        }

        public bool IsTimeToCheck => 
            !File.Exists(LastDownloadedVersionFile) ||
            (DateTime.Now - LastCheckTime).TotalHours > CheckIntervalInHours;

        private static DateTime LastCheckTime => File.GetLastWriteTime(LastDownloadedVersionFile);

        private static void ResetLastCheckTime()
        {
            if (File.Exists(LastDownloadedVersionFile))
            {
                File.SetLastWriteTime(LastDownloadedVersionFile, DateTime.Now);
            }
            else
            {
                File.Create(LastDownloadedVersionFile).Close();
            }
        }

        private async Task Check()
        {
            logger.Info("Checking");

            var client = new HttpClient();
            var result = await client.GetAsync(URLs.UpdateFeed);

            if (result.StatusCode != System.Net.HttpStatusCode.OK)
            {
                logger.Error($"Received {result.StatusCode} from {URLs.UpdateFeed}");
                return;
            }

            var content = await result.Content.ReadAsStringAsync();
            var lines = content.Split('\t');

            if (lines.Length != 3)
            {
                logger.Error($"Invalid feed file");
                return;
            }

            var latestVersion = lines[0];

            if (latestVersion == GetLastDownloadedVersion())
            {
                logger.Info($"Latest version has already been downloaded: {latestVersion}");
                ResetLastCheckTime();
                return;
            }

            if (Version.Product == latestVersion)
            {
                logger.Info($"Already running the latest version: {latestVersion}");
                ResetLastCheckTime();
                return;
            }

            var url = lines[1];
            var sha256 = lines[2];

            if (await Download(url, sha256))
            {
                File.WriteAllText(LastDownloadedVersionFile, latestVersion);
            }
        }

        private async Task<bool> Download(string url, string expectedSha256)
        {
            logger.Info($"Downloading {url}");

            var client = new HttpClient();
            var result = await client.GetAsync(url);

            if (result.StatusCode != System.Net.HttpStatusCode.OK)
            {
                logger.Error($"Received {result.StatusCode} from {url}");
                return false;
            }

            var tempFile = LatestPackageFile + ".tmp";

            using (var input = await result.Content.ReadAsStreamAsync())
            {
                using (var output = new FileStream(tempFile, FileMode.Create))
                {
                    await input.CopyToAsync(output);
                }
            }

            logger.Info($"Download completed");

            using (var stream = new FileStream(tempFile, FileMode.Open))
            {
                var sha256 = Hash.Sha256(stream);
                if (sha256 != expectedSha256)
                {
                    logger.Error($"Integrity error: expected hash {expectedSha256} instead of {sha256}");
                    return false;
                }
            }

            if (File.Exists(LatestPackageFile))
            {
                File.Delete(LatestPackageFile);
            }

            File.Move(tempFile, LatestPackageFile);

            logger.Info($"New version available at {LatestPackageFile}");

            return true;
        }

        private void Update(object sender, EventArgs e)
        {
            try
            {
                if (ShouldUpdate)
                {
                    logger.Info($"Updating from version {Version.Product} to {GetLastDownloadedVersion()}");

                    var processId = Process.GetCurrentProcess().Id;
                    var tomighty = Assembly.GetEntryAssembly().Location;
                    var restart = false;
                    var tempSwapProgramFile = CopySwapProgramFileToTempDir();
                    Process.Start(tempSwapProgramFile, $"{processId} \"{tomighty}\" \"{LatestPackageFile}\" {restart}");
                }
            }
            catch(Exception ex)
            {
                logger.Error(ex);
            }
        }

        private static string CopySwapProgramFileToTempDir()
        {
            var file = Path.Combine(Path.GetTempPath(), Path.GetFileName(SwapProgramFile));
            File.Copy(SwapProgramFile, file, true);
            return file;
        }

        public bool ShouldUpdate =>
            userPreferences.AutoUpdate &&
            IsOutdated &&
            File.Exists(LatestPackageFile);

        private static bool IsOutdated
        {
            get
            {
                string latest = GetLastDownloadedVersion();
                return !string.IsNullOrEmpty(latest) && Version.Product != latest;
            }
        }

        private static string GetLastDownloadedVersion()
        {
            var file = LastDownloadedVersionFile;
            return File.Exists(file) ? File.ReadAllText(file) : null;
        }
    }
}


================================================
FILE: Tomighty.Windows/Directories.cs
================================================
//
//  Tomighty - http://www.tomighty.org
//
//  This software is licensed under the Apache License Version 2.0:
//  http://www.apache.org/licenses/LICENSE-2.0.txt
//

using System;
using System.IO;
using System.Reflection;

namespace Tomighty.Windows
{
    internal class Directories
    {
        public static string ProgramLocation => Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);

        public static string AppData
        {
            get
            {
                var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Tomighty");
                if (!Directory.Exists(path))
                    Directory.CreateDirectory(path);
                return path;
            }
        }
    }
}


================================================
FILE: Tomighty.Windows/ErrorReportWindow.Designer.cs
================================================
namespace Tomighty.Windows
{
    partial class ErrorReportWindow
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ErrorReportWindow));
            this.label1 = new System.Windows.Forms.Label();
            this.errorDescription = new System.Windows.Forms.TextBox();
            this.reportButton = new System.Windows.Forms.Button();
            this.pictureBox1 = new System.Windows.Forms.PictureBox();
            this.label2 = new System.Windows.Forms.Label();
            this.progressLabel = new System.Windows.Forms.Label();
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
            this.SuspendLayout();
            // 
            // label1
            // 
            this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
            | System.Windows.Forms.AnchorStyles.Right)));
            this.label1.Location = new System.Drawing.Point(55, 19);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(326, 46);
            this.label1.TabIndex = 1;
            this.label1.Text = "Oops! Looks like you found a bug in Tomighty. Below you can see the ugly details " +
    "of the bug. There\'s nothing to worry about, it\'s totally safe to close Tomighty." +
    " We apologize for the inconvenience.";
            // 
            // errorDescription
            // 
            this.errorDescription.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
            | System.Windows.Forms.AnchorStyles.Left) 
            | System.Windows.Forms.AnchorStyles.Right)));
            this.errorDescription.BackColor = System.Drawing.Color.White;
            this.errorDescription.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.errorDescription.Location = new System.Drawing.Point(17, 68);
            this.errorDescription.Multiline = true;
            this.errorDescription.Name = "errorDescription";
            this.errorDescription.ReadOnly = true;
            this.errorDescription.ScrollBars = System.Windows.Forms.ScrollBars.Both;
            this.errorDescription.Size = new System.Drawing.Size(364, 147);
            this.errorDescription.TabIndex = 2;
            this.errorDescription.WordWrap = false;
            // 
            // reportButton
            // 
            this.reportButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
            this.reportButton.Location = new System.Drawing.Point(271, 274);
            this.reportButton.Name = "reportButton";
            this.reportButton.Size = new System.Drawing.Size(110, 23);
            this.reportButton.TabIndex = 0;
            this.reportButton.Text = "Send Report Error";
            this.reportButton.UseVisualStyleBackColor = true;
            this.reportButton.Click += new System.EventHandler(this.reportButton_Click);
            // 
            // pictureBox1
            // 
            this.pictureBox1.Image = global::Tomighty.Windows.Properties.Resources.image_warning;
            this.pictureBox1.Location = new System.Drawing.Point(17, 19);
            this.pictureBox1.Name = "pictureBox1";
            this.pictureBox1.Size = new System.Drawing.Size(32, 32);
            this.pictureBox1.TabIndex = 3;
            this.pictureBox1.TabStop = false;
            // 
            // label2
            // 
            this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
            | System.Windows.Forms.AnchorStyles.Right)));
            this.label2.Location = new System.Drawing.Point(17, 230);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(364, 41);
            this.label2.TabIndex = 4;
            this.label2.Text = "Anyway, it would be great if you send us an error report by clicking the button b" +
    "elow. Don\'t worry, no personal information will be sent, we only send the techni" +
    "cal tidbits about this error.";
            // 
            // progressLabel
            // 
            this.progressLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.progressLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(192)))));
            this.progressLabel.Location = new System.Drawing.Point(17, 274);
            this.progressLabel.Name = "progressLabel";
            this.progressLabel.Size = new System.Drawing.Size(248, 23);
            this.progressLabel.TabIndex = 5;
            this.progressLabel.Text = "Progress message";
            this.progressLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
            this.progressLabel.Visible = false;
            // 
            // ErrorReportWindow
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(397, 313);
            this.Controls.Add(this.progressLabel);
            this.Controls.Add(this.label2);
            this.Controls.Add(this.pictureBox1);
            this.Controls.Add(this.reportButton);
            this.Controls.Add(this.errorDescription);
            this.Controls.Add(this.label1);
            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.Name = "ErrorReportWindow";
            this.Padding = new System.Windows.Forms.Padding(4);
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "Program Error - Tomighty";
            this.TopMost = true;
            this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.ErrorReportWindow_FormClosed);
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.TextBox errorDescription;
        private System.Windows.Forms.Button reportButton;
        private System.Windows.Forms.PictureBox pictureBox1;
        private System.Windows.Forms.Label label2;
        private System.Windows.Forms.Label progressLabel;
    }
}

================================================
FILE: Tomighty.Windows/ErrorReportWindow.cs
================================================
using System;
using System.ComponentModel;
using System.Drawing;
using System.IO;
using System.Net.Http;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Text;
using System.Windows.Forms;

namespace Tomighty.Windows
{
    public partial class ErrorReportWindow : Form
    {
        public ErrorReportWindow(Exception exception)
        {
            InitializeComponent();
            errorDescription.Text = exception.ToString();
        }

        private void ErrorReportWindow_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }

        private void reportButton_Click(object sender, EventArgs e)
        {
            reportButton.Enabled = false;
            progressLabel.Text = "Sending error report, please wait...";
            progressLabel.ForeColor = Color.Blue;
            progressLabel.Visible = true;

            var worker = new BackgroundWorker();
            worker.DoWork += SendErrorReport;
            worker.RunWorkerCompleted += OnErrorReportSent;
            worker.RunWorkerAsync();
        }

        private void SendErrorReport(object sender, EventArgs e)
        {
            var data = GetReportData();
            var client = new HttpClient();
            var json = ToJson(data);
            var content = new StringContent(json, Encoding.UTF8, "application/json");
            var task = client.PostAsync(URLs.ErrorReport, content);

            task.Wait();

            if (task.Exception != null)
                throw new Exception("Failed to send error report", task.Exception);
        }

        private static string ToJson(ReportData data)
        {
            var serializer = new DataContractJsonSerializer(typeof(ReportData));
            var stream = new MemoryStream();
            serializer.WriteObject(stream, data);
            return Encoding.UTF8.GetString(stream.ToArray());
        }

        private ReportData GetReportData()
        {
            return new ReportData
            {
                version = Version.Product,
                host_id = Host.Id,
                error = errorDescription.Text
            };
        }

        private void OnErrorReportSent(object sender, RunWorkerCompletedEventArgs e)
        {
            var success = e.Error == null;
            if (success)
            {
                progressLabel.Text = "Done";
                progressLabel.ForeColor = Color.Green;
                MessageBox.Show(this, "Thanks for sending the error report. Bye!", "Error Report Sent", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                Application.Exit();
            }
            else
            {
                reportButton.Enabled = true;
                progressLabel.Text = "Failed to send report. Try again later.";
                progressLabel.ForeColor = Color.Red;
            }
        }

        [DataContract]
        private class ReportData
        {
            [DataMember] public string version { get; set; }
            [DataMember] public string host_id { get; set; }
            [DataMember] public string error { get; set; }
        }
    }
}


================================================
FILE: Tomighty.Windows/ErrorReportWindow.resx
================================================
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAABAAYAAAAAAAEAIAAoIAQAZgAAAICAAAABACAAKAgBAI4gBABAQAAAAQAgAChCAAC2KAUAMDAAAAEA
        IACoJQAA3moFACAgAAABACAAqBAAAIaQBQAQEAAAAQAgAGgEAAAuoQUAKAAAAAABAAAAAgAAAQAgAAAA
        AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABK3QEASt4BAEreAQBK3wIASt4EAErdBABJ3AIARtsBAEfbAQBH
        2wEAR9sBAEfbAQBH2wEAR9sBAEfbAQBH2wEAR9sBAEfbAQBH2wEAR9sBAEfbAQBH2wEAR9sBAEfbAQBH
        2wEAR9sBAEfbAQBH2wEAR9sBAEfbAQBH2wEAR9sBAEfbAQBH2wEAR9sBAEfbAQBH2wEAR9sBAEfbAQBH
        2wEAR9sBAEbbAQBK3AMASt4EAEneAwBJ3QIASt4BAEreAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAABJ3QEASd0CAEreBABJ3gQAStsBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASt8CAErdBABK3gMASd8CAEreAQBK
        3wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEreAQBJ
        3gEASt4EAEnfAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABL3QcAS98WAErfOQBK3lwASt6FAErepwBK
        3q4ASt6tAErerQBK3q0ASt6tAErerQBK3q0ASt6tAErerQBK3q0ASt6tAErerQBK3q0ASt6tAErerQBK
        3q0ASt6tAErerQBK3q0ASt6tAErerQBK3q0ASt6tAErerQBK3q0ASt6tAErerQBK3q0ASt6tAErerQBK
        3q0ASt6tAErerQBK3q0ASt6uAErenwBK3nUASd5SAErdLgBL3hAASd4EAAAAAAAAAAAAAAAAAAAAAAAA
        AAAASuABAEreBABJ3gIASt8BAEreAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAErfAQBK3gIASt0FAEveAwAA
        AAAAAAAAAAAAAAAAAAAATuMBAEjbDABJ3SwASt5aAEreiwBK3rgASt7fAEre9QBK3v0ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3vsASt7xAEre1ABK3qwASt57AEreSgBJ
        3h4ASt0HAAAAAAAAAAAAAAAAAAAAAABF2QEAS98EAEreBABJ3wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJ3gIASt0EAEreAwAAAAAAAAAAAAAAAAAA
        AAAAS9oDAEneIwBK3lQASt6QAErewgBK3uoASt77AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/QBK
        3vsASt78AEre/ABK3vwASt78AEre/ABK3vwASt78AEre/ABK3vwASt78AEre/ABK3vwASt78AEre/ABK
        3vwASt78AEre/ABK3vwASt78AEre/ABK3vwASt78AEre/ABK3vwASt78AEre/ABK3vwASt78AEre/ABK
        3vwASt78AEre/ABK3vwASt78AEre/ABK3vwASt77AEre+wBK3v4ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt74AEre4ABK3rQASt59AEneRABL4BMASNcBAAAAAAAAAAAAAAAAAAAAAABJ3gQASt4EAEvfAQAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABK3wEASd4DAErdBABK2wEAAAAAAAAAAAAAAAAATOQFAEneNABK
        3nAASt6eAEre0gBK3vkASt7/AEre/wBK3v8ASt7/AEre/wBK3v0ASt77AEre/ABK3v4ASt7+AEre/gBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/gBK3v4ASt79AEre+wBK
        3vsASt7+AEre/wBK3v8ASt7/AEre/wBK3v8ASt7xAErewgBK3pAASt5fAEnfIQBC2AEAAAAAAAAAAAAA
        AAAAS94CAEreBABK3gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAASt8BAEneAwBK3QMAAAAAAAAAAAAAAAAASuABAEneJgBK3WUASt6YAEre1QBK
        3v4ASt7/AEre/wBK3v8ASt7/AEre/gBK3vsASt79AEre/gBK3v4ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/gBK3v4ASt7+AEre/ABK3vwASt7+AEre/wBK3v8ASt7/AEre/wBK3vcASt7FAEreiQBK
        3lEATN8VAAAAAABJ3QEAAAAAAEnaAQBK3gQASt4DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAErfAQBK3gMASt4DAAAAAAAAAAAAAAAAAEviBQBJ3TgASt5+AErexABK3vkASt7/AEre/wBK
        3v8ASt7/AEre/ABK3vsASt79AEre/gBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/gBK3v4ASt79AEre+gBK3v0ASt7/AEre/wBK
        3v8ASt7/AEre7QBK3qwASt5oAErfIwBA5wEAAAAAAAAAAABH2wEASt0EAEveAgAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAASt4CAEreAwAAAAAAAAAAAAAAAABK4AkASd5OAErekwBK3tYASt7+AEre/wBK3v8ASt7/AEre/ABK
        3vsASt79AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/gBK
        3vwASt77AEre/gBK3v8ASt7/AEre/wBK3vkASt7DAEregABK3jQATtYBAAAAAAAAAAAASuABAEneBABK
        3gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEveAQBK
        3gMASd8CAAAAAAAAAAAATeAEAEreOQBK3osASt7dAEre/wBK3v4ASt7/AEre/gBK3vsASt78AEre/gBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt79AEre+wBK3vwASt7/AEre/wBK3v8ASt78AErexABK3nEAS94hAAAAAAAA
        AAAAAAAAAEneAwBJ3QMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASt0CAEneAwAA
        AAAAReABAAAAAABK3iIASt59AEre1wBK3v4ASt7/AEre/wBK3v0ASt76AEre/QBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/gBK3vwASt77AEre/gBK3v8ASt7/AEre+ABK
        3r0ASt5hAEncDwAAAAAAAAAAAEngAQBJ3gMASt4BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABK3gMASd0CAAAAAAAA
        AAAATd8KAEreUQBK3rAASt73AEre/wBK3v8ASt7+AEre+wBK3v0ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt78AEre/ABK
        3v8ASt7+AEre/wBK3uYASt6QAEjdNABK3AIAAAAAAAAAAABJ3gMASt4CAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEndAwBK3QEAR+IBAAAAAABK
        3SAASt6HAEre4wBK3v8ASt7+AEre/wBK3vwASt79AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7+AEre/ABK3v0ASt7/AEre/wBK3v0ASt7LAEreYQBJ3gsAAAAAAAAAAABL3gIASt0CAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS94DAEzeAQAAAAAAR94BAEreOABK
        3p8ASt7zAEre/wBK3v8ASt79AEre/ABK3v4ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/QBK3vsASt7+AEre/gBK3v8ASt7gAErefQBK3xwAAAAAAAAAAABJ
        3gIASt4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEjgAQBK3QMAS9wBAAAAAABV5AIASd5LAErewgBK
        3v4ASt7/AEre/wBK3vwASt79AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3vwASt79AEre/wBK3v8ASt70AErenwBK
        3SsAAAAAAAAAAABK3QIASd4DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAErdAwBJ3QIAAAAAAEvZBABK3lIASt7IAEre/wBK
        3v8ASt7+AEre/ABK3v4ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v0ASt78AEre/gBK
        3v8ASt75AErepABK3jEAAAAAAAAAAABJ3QIASt8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASt4CAEreAgAAAAAAR+IGAEreXQBK3s8ASt7/AEre/wBK
        3v0ASt78AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v4ASt78AEre/gBK3v8ASt76AErerQBK3jkAAAAAAEXZAQBK3gMAS98CAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABK3gIASt8CAAAAAAAAAAAASd1HAEreyABK3v8ASt7+AEre/QBK
        3vwASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v4ASt78AEre/gBK3v8ASt77AEreogBL3yYAAAAAAEveAQBK3wMAS94BAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAErfAQBK3gMASN0BAAAAAABJ3jIASt6xAEre/wBK3v8ASt79AEre/QBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt78AEre/QBK3v8ASt71AErekQBK3hwAAAAAAEzeAgBL
        3gMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAEreAwBJ3gIAAAAAAEndFwBK3pwASt78AEre/wBK3v0ASt78AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v4ASt78AEre/gBK3v8ASt7wAErecgBN
        3gYAAAAAAEreAwBJ3gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAASd0BAErdAwAAAAAASeAFAEreaABK3ukASt7/AEre/QBK3vwASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v4ASt78AEre/gBK
        3v8ASt7NAErfQQAAAAAAS94BAEreAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAASd8DAEneAgAAAAAASt5AAEreygBK3v8ASt7+AEre/ABK3v4ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v0ASt78AEre/wBK3v0ASt6jAEreHAAAAAAAS94DAErfAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAABL3wEASt4DAAAAAABI3A0ASt6OAEre/ABK3v8ASt79AEre/QBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v0ASt78AEre/wBK3ukASt5ZAAAAAABH3gEASt4DAEveAQAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAABJ3gIAS94CAAAAAABK3kMASt7YAEre/wBK3vwASt78AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/gBK3vwASt7+AEre/wBK3q8ASt8eAAAAAABL3wMASd4BAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAEngAQBJ3gQAAAAAAErgCQBK3pQASt7/AEre/wBK3vwASt7+AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/QBK3vwASt7/AEre7wBK3l4AAAAAAEndAgBL
        3gMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAEveAQBL3gMAAAAAAEneLgBK3swASt7/AEre/ABK3v0ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/ABK3v4ASt7/AEreoABK
        3Q8AAAAAAErfAwBJ3wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAEndAgBL3AIAAAAAAEreaABK3vQASt7/AEre+wBK3v4ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt79AEre/ABK
        3v8ASt7WAErePAAAAAAAS94DAEreAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAEreBAAAAAAAS94NAErepwBK3v8ASt79AEre/ABK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v4ASt78AEre/wBK3vwASt5zAAAAAABK3QIASt8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAASd8BAEreAwAAAAAASdwnAErezwBK3v8ASt78AEre/gBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v0ASt78AEre/wBK3qAAS9sKAAAAAABL3gMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAS98BAEvfAwAAAAAASt5SAEre7QBK3v8ASt78AEre/gBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/gBK3vwASt7/AEreyABK3yIAAAAAAEvfBAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAASt4CAEveAwAAAAAASt58AEre/wBK3v4ASt79AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7+AEre+wBK3v8ASt7rAErfQwAAAAAASt4EAEneAQAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAS98CAAAAAABT4wQASt6ZAEre/wBK3vwASt79AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt78AEre/wBK3vcASt5dAAAAAABJ
        3gMASt4BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAASt4DAAAAAABJ3REASt61AEre/wBK3vwASt7+AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v0ASt79AEre/wBK
        3noAAAAAAEzfAgBK3gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAASt4DAAAAAABL3x0ASt7RAEre/wBK3vsASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/gBK
        3vsASt7/AEremAAAAAAAStwBAEreAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAS98DAAAAAABL3yEASt7XAEre/wBK3vsASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7+AEre/ABK3v8ASt6hAEbkBABJ2gEASd4BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAASt0DAAAAAABJ3igASt7dAEre/wBK3vwASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt77AEre/wBK3qwAS98JAAAAAABK3gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAASt4DAAAAAABK3S8ASt7lAEre/wBK3vwASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3vsASt7/AEreugBL3QwAAAAAAEreAgAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAASt4DAAAAAABK3icASt7hAEre/wBK3vwASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre+wBK3v8ASt6xAEvhBgBI2wEASt8CAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAS94DAAAAAABL3yMASt7dAEre/wBK3vwASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt77AEre/wBK3qcAR+QCAEnaAQBJ
        3gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAASt4CAAAAAABJ3iAASt7YAEre/wBK3vwASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3vsASt7/AErenwAA
        AAAAStoBAEngAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAS94CAAAAAABL3hAASt7KAEre/wBK3vsASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre+wBK
        3v8ASt6NAAAAAABJ3gMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAASt4BAAAAAABK2QQASt6zAEre/wBK3vsASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt77AEre/wBK3nUAAAAAAErdBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAEjbAwAAAAAASt6aAEre/wBK3vsASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v4ASt7+AEre/gBK3v4ASt7+AEre/gBK3v4ASt7+AEre/gBK3v4ASt7+AEre/gBK3v4ASt7+AEre/gBK
        3v4ASt7+AEre/gBK3v4ASt7+AEre/gBK3v4ASt7+AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/gBK3v0ASt7/AEreXAAAAAAASt0EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAEreAwAAAAAASt5/AEre/wBK3vsASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7+AEre/wBK3vgAS94/AAAAAABL3gMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAEveAwAAAAAASt5VAEre/wBK3v0ASt7+AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v4ASt7/AEre6ABK3tkASt7mAEre4gBK3uIASt7iAEre4gBK3uIASt7iAEre4gBK3uIASt7iAEre4gBK
        3uIASt7iAEre4gBK3uIASt7iAEre4gBK3uIASt7iAEre5gBK3toASt7oAEre/wBK3v4ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v0ASt7/AEre4ABJ3iEAAAAAAEreAgAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAEneAgAAAAAASd4uAEre7ABK3v8ASt7+AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt79AEre/wBK3tUASt8pAAAAAABK3g0ASt4JAEreCQBK3gkASt4JAEreCQBK3gkASt4JAEreCQBK
        3gkASt4JAEreCQBK3gkASt4JAEreCQBK3gkASt4JAEreDQAAAAAASt8mAEre0wBK3v8ASt79AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/ABK3v8ASt6/AE7eBQAAAAAAS94BAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAEreAQAAAAAAS98TAEre0gBK3v8ASt78AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v4ASt7/AEre5ABK3joAAAAAAEveAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAErcAgAAAAAASt03AEre4QBK3v8ASt79AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt78AEre/wBK3pMAAAAAAErgAwAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAABL3wIAAAAAAErepABK3v8ASt77AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/QBK3v8ASt71AEreVwAAAAAASt4EAEreAgBK3gEASt4BAEreAQBK
        3gEASt4BAEreAQBK3gEASt4BAEreAQBK3gEASt0CAEneBAAAAAAASt5UAEre8gBK3v8ASt79AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3vwASt7/AEreXAAA
        AAAASt4DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAABL3gMAAAAAAEreZgBK3v8ASt78AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt79AEre/QBK3v8ASt5yAAAAAABK3QMASt4CAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASt4CAEndAwAAAAAASt5xAEre/gBK3v0ASt78AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7+AEre/wBK
        3usASt4qAAAAAABK3gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAABK3gIAAAAAAErfLwBK3vAASt7/AEre/gBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v4ASt78AEre/wBK3pYAStwDAErkAQBK
        3gMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASt4CAFDjAQAtxQEASt6QAEre/wBK3vwASt79AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3vwASt7/AErewgBF3AUAAAAAAEjdAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAABK3QEAAAAAAEndBwBK3sYASt7/AEre/ABK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/gBK3vwASt7/AEretABL
        3xIAAAAAAEreAwAAAAAAAAAAAAAAAAAAAAAASt4DAAAAAABJ3w8ASt6vAEre/wBK3vwASt7+AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/ABK3v8ASt6IAAAAAABK3gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAASt8DAAAAAABK3oEASt7/AEre/ABK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7+AEre+wBK
        3v8ASt7NAErfHgAAAAAASt4EAAAAAAAAAAAAS94EAAAAAABL3xwASt7JAEre/wBK3vsASt7+AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7+AEre/wBK3j8AAAAAAEreAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAASt4DAAAAAABK3jgASt75AEre/wBK3v4ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/gBK3v4ASt7+AEre/gBK
        3v4ASt76AEre/wBK3uIASt01AAAAAABJ3wIAS94DAAAAAABK4DMASt7gAEre/wBK3voASt7+AEre/gBK
        3v4ASt7+AEre/gBK3v4ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/ABK3v8ASt7LAEjeCAAAAAAASt4BAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAS98BAAAAAABQ4wUASt7FAEre/wBK3vwASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7+AEre/gBK3v4ASt79AEre/ABK3vwASt77AEre+gBK3vwASt79AEre/gBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v4ASt7/AEre9wBK3lwAAAAAAAAAAABK3lcASt70AEre/wBK3v4ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/gBK3v0ASt78AEre+wBK3vsASt78AEre/ABK3v0ASt7+AEre/gBK
        3v4ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt78AEre/wBK3oEAAAAAAErfAwAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAErfAwAAAAAASt57AEre/wBK3vwASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7+AEre/gBK3v0ASt78AEre+wBK
        3vsASt7+AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/ABK
        3vcASt71AEre8wBK3u4ASt7lAEre3wBK3uMASt7iAEreSwBK3kYASt7hAEre3wBK3tcASt7cAEre5ABK
        3u0ASt7yAEre9QBK3vgASt78AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/gBK3vsASt77AEre/ABK3v0ASt7+AEre/gBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/gBK3v8ASt75AEvfNwAAAAAAS94CAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAEreAgAAAAAAS94rAEre8QBK3v8ASt7+AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/gBK3v4ASt79AEre+wBK3vsASt7+AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v4ASt74AEre6QBK3s8ASt64AErepgBK3pIASt5/AErebQBK3l0ASt5OAErePgBK
        3S8ASt0jAErfGwBK3RIASt0MAEreCgBK3gkASt4GAErhCABK3g8ASt4PAErhCABK5AQASuIHAErgBwBJ
        3gkASt4MAEreEQBL4BkASt4jAEreMABK3j4ASt5LAEneWQBK3moASt59AErekABK3qMASt63AEre0gBK
        3uwASt74AEre/gBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt79AEre+wBK3vwASt79AEre/gBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt78AEre/wBK3rwAAAAAAEvgAQAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABL3gIAAAAAAErerQBK3v8ASt78AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7+AEre/gBK3v0ASt77AEre/ABK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v0ASt7sAErezABK
        3q0ASt6PAErecgBJ3VUASd46AErfHwBI3wsAS94DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABG
        3wQASN0NAErdIQBK3j0ASt5ZAEredgBK3pUASt6xAEre1ABK3vMASt7+AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7+AEre+wBK3vsASt7+AEre/gBK3v4ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v0ASt7/AEreXgAA
        AAAASd4DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABK3QMAAAAAAErdTABK3v8ASt7+AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7+AEre/gBK
        3vsASt77AEre/gBK3v8ASt7/AEre/wBK3v8ASt79AEre8ABK3swASt6iAEreegBK3lYAS94wAEzeDwBP
        3QIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABL3QEAS94CAEreAwBK3gUASt4EAEreAwBK
        3gMASt4DAErdAgBK3gIASt8BAErdAQBK3gEASt4BAEreAQBK3gEASt8BAAAAAAAAAAAASt8BAErfAQBK
        3wEASt4BAEreAQBK3gEASt4BAErfAQBK3gIASt4CAEreAwBK3gMASd4DAEreBABK3gUASd0EAEvfAgBL
        3AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABL4AQASd4WAEveOQBK3l4ASt6EAErerQBK
        3tcASt71AEre/wBK3v8ASt7/AEre/wBK3v8ASt7+AEre+wBK3v0ASt7+AEre/gBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt79AEre/wBK
        3t0AS98VAAAAAABL3wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI3QEAAAAAAEDcBQBK3swASt7/AEre/QBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/QBK3vsASt78AEre/wBK
        3v8ASt7/AEre/wBK3v4ASt7xAErezQBK3psASt5lAErdOQBJ3RMAS98CAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAErgAQBK3wQASt4FAErdAwBJ3gMASt4BAEnfAQBK3gEASt4BAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAASt4BAEreAQBJ3gEASd4BAEreAwBK3gMASt4FAErdBABL3AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAATOAEAEveGwBK3kQASt50AErepQBK3tkASt73AEre/wBK3v8ASt7/AEre/wBK3v4ASt77AEre/ABK
        3v4ASt7+AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3vwASt7/AEreiQAAAAAASt4DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASt4EAAAAAABK3mQASt7/AEre/ABK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/gBK3vwASt77AEre/gBK3v8ASt7/AEre/wBK
        3v0ASt7mAEresABK3nUASt47AErdEgBK3wMAAAAAAAAAAAAAAAAAAAAAAAAAAABK3gIASt4EAEreAwBL
        3gIAS94BAEreAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEreAQBK3gEAS94CAEreBABK
        3gQATd0BAAAAAAAAAAAAAAAAAAAAAAAAAAAAS90FAEnfGwBK3kwASt6FAErevwBK3u0ASt7+AEre/wBK
        3v8ASt7/AEre/gBK3vsASt79AEre/gBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7+AEre/wBK3vIASt0nAAAAAABK3gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASt4BAAAAAABK3w0ASt7YAEre/wBK3v0ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v0ASt77AEre/QBK3v8ASt7/AEre/wBK3v4ASt7nAErerQBK
        3m4ASt0yAEncCgAAAAAAAAAAAAAAAAAAAAAAAAAAAEveAwBK3gQASt0CAEreAQBK3gEAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAABK3gEASt4BAEreAwBK3gQAS94CAAAAAAAAAAAAAAAAAAAAAABN4QEASd0OAErePQBK
        3nsASt69AEre7wBK3v8ASt7/AEre/wBK3v8ASt78AEre+wBK3v4ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3vsASt7/AEremgAAAAAASt4DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEvfAwAAAAAASt5zAEre/wBK3vwASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt79AEre+wBK3v4ASt7/AEre/wBK3v8ASt71AErewwBK3noASt85AErfCwAA
        AAAAAAAAAAAAAAAAAAAAS94BAEveBABK3gIASt4BAEreAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABK3gEASt4BAEreBABJ3gQASdwBAAAAAAAA
        AAAAAAAAAAAAAABK3hEASt9GAEreiwBK3tIASt76AEre/wBK3v8ASt7/AEre/ABK3vsASt7+AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7+AEre/wBK3voAS98xAAAAAABL3wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEreAQAAAAAASt8UAEre4gBK3v8ASt7+AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/QBK3vsASt7+AEre/wBK3v8ASt7/AEre4QBK3pwASt5YAEvfGgBJ4gEAAAAAAAAAAAAA
        AAAASt8BAEreBABK3QIASd4BAEneAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEreAQBK
        3gEASt4DAEreBABI3AEAAAAAAAAAAAAAAAAATeEDAEveJQBK3mcASt6wAEre8QBK3v8ASt7+AEre/wBK
        3v0ASt77AEre/gBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3vsASt7/AErepwAAAAAASN0CAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABL3gQAAAAAAEredQBK3v8ASt78AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v4ASt77AEre/gBK3v8ASt7/AEre/wBK3tQASt6LAEreSgBK4AsAAAAAAAAAAAAAAAAAStsBAEreBABK
        3wMASt4BAEndAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAASt4BAEreAQBK3wMASd4DAAAAAAAAAAAATOABAAAAAABK3BoASt5fAEreogBK
        3uoASt7/AEre/gBK3v8ASt78AEre/ABK3v4ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7+AEre/wBK3vwAS98yAAAAAABL3wIAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABK3wEAAAAAAEvfDQBK3tsASt7/AEre/QBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7+AEre/ABK
        3v0ASt7/AEre/wBK3v8ASt7aAErejQBK3kEAS9wGAAAAAAAAAAAAAAAAAEndAwBK3gQAS98BAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABK3gEAS90BAErfBABL4AIAAAAAAEnfAQAA
        AAAASd8SAErdWQBK3qIASt7qAEre/wBK3v4ASt7/AEre/ABK3v0ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3vsASt7/AErenQAAAAAASt4DAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASt4EAAAAAABL3mcASt7/AEre/ABK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v0ASt78AEre/wBK
        3v8ASt7/AEre7ABK3qAASt1FAEvbBwAAAAAAAAAAAAAAAABK3gQASt4DAErfAQAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAErdAQBK
        3gQAS9wDAAAAAABJ3gEAAAAAAEreEQBK3lwASt64AEre9gBK3v8ASt7/AEre/gBK3vsASt7+AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7+AEre/wBK3vYASd4oAAAAAABJ
        3gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS90BAAAAAABO3AYASt7SAEre/wBK
        3v0ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/ABK3v0ASt7/AEre/wBK
        3vkASt60AEreWgBI2xIAAAAAAAAAAAAAAAAASt4DAEreAwBK3QEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAABK3wEASt0EAEveAwAAAAAAAAAAAAAAAABL3R8ASt5xAErezQBK3v8ASt7/AEre/wBK
        3vwASt79AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3vsASt7/AErejwAA
        AAAASt8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEreAwAAAAAASt5TAEre/wBK
        3v0ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK
        3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v8ASt7/AEre/wBK3v4ASt78AEre/wBK3v4ASt7/AEne1wBK
   
Download .txt
gitextract_t938un78/

├── .gitignore
├── GlobalAssemblyInfo.cs
├── LICENSE.txt
├── NOTICE.txt
├── README.md
├── Tomighty.Core/
│   ├── Duration.cs
│   ├── Events/
│   │   ├── PomodoroCompleted.cs
│   │   ├── PomodoroCountChanged.cs
│   │   ├── TimeElapsed.cs
│   │   ├── TimerStarted.cs
│   │   └── TimerStopped.cs
│   ├── ICountdownClock.cs
│   ├── IEventHub.cs
│   ├── IMutableUserPreferences.cs
│   ├── IPomodoroEngine.cs
│   ├── ITimer.cs
│   ├── IUserPreferences.cs
│   ├── IntervalType.cs
│   ├── PomodoroEngine.cs
│   ├── Properties/
│   │   └── AssemblyInfo.cs
│   ├── SynchronousEventHub.cs
│   ├── Timer.cs
│   └── Tomighty.Core.csproj
├── Tomighty.Core.Test/
│   ├── FakeEventHub.cs
│   ├── PomodoroEngineTest.cs
│   ├── Properties/
│   │   └── AssemblyInfo.cs
│   ├── Tomighty.Core.Test.csproj
│   └── packages.config
├── Tomighty.Update.Swap/
│   ├── App.config
│   ├── Program.cs
│   ├── Properties/
│   │   ├── AssemblyInfo.cs
│   │   ├── Settings.Designer.cs
│   │   └── Settings.settings
│   └── Tomighty.Update.Swap.csproj
├── Tomighty.Windows/
│   ├── About/
│   │   ├── AboutWindow.Designer.cs
│   │   ├── AboutWindow.cs
│   │   ├── AboutWindow.resx
│   │   └── AboutWindowPresenter.cs
│   ├── App.config
│   ├── AutoUpdate.cs
│   ├── Directories.cs
│   ├── ErrorReportWindow.Designer.cs
│   ├── ErrorReportWindow.cs
│   ├── ErrorReportWindow.resx
│   ├── Events.cs
│   ├── Flags.cs
│   ├── Host.cs
│   ├── IntervalTypeExtensions.cs
│   ├── LICENSE.txt
│   ├── Logger.cs
│   ├── NOTICE.txt
│   ├── Notifications/
│   │   ├── NotificationsPresenter.cs
│   │   ├── SoundNotificationPlayer.cs
│   │   └── Toasts.cs
│   ├── Preferences/
│   │   ├── UserPreferences.cs
│   │   ├── UserPreferencesForm.Designer.cs
│   │   ├── UserPreferencesForm.cs
│   │   ├── UserPreferencesForm.resx
│   │   └── UserPreferencesPresenter.cs
│   ├── Program.cs
│   ├── Properties/
│   │   ├── AssemblyInfo.cs
│   │   ├── Resources.Designer.cs
│   │   ├── Resources.resx
│   │   ├── Settings.Designer.cs
│   │   └── Settings.settings
│   ├── Resources/
│   │   ├── Toasts/
│   │   │   ├── app-updated.xml
│   │   │   ├── first-run.xml
│   │   │   └── interval-completed.xml
│   │   ├── image_clock.tiff
│   │   ├── image_stop.tiff
│   │   ├── image_tomato_black.tiff
│   │   ├── image_tomato_blue.tiff
│   │   ├── image_tomato_green.tiff
│   │   └── image_tomato_red.tiff
│   ├── StartupEventFlags.cs
│   ├── StartupEvents.cs
│   ├── Timer/
│   │   ├── Taskbar.cs
│   │   ├── TimerWindow.Designer.cs
│   │   ├── TimerWindow.cs
│   │   ├── TimerWindow.resx
│   │   └── TimerWindowPresenter.cs
│   ├── Tomighty.Windows.csproj
│   ├── TomightyApplication.cs
│   ├── Tray/
│   │   ├── ITrayMenu.cs
│   │   ├── ITrayMenuMutator.cs
│   │   ├── TrayIconController.cs
│   │   ├── TrayMenu.cs
│   │   └── TrayMenuController.cs
│   ├── URLs.cs
│   ├── Util/
│   │   └── Hash.cs
│   ├── Version.cs
│   └── packages.config
├── Tomighty.sln
├── dist.bat
├── pack.ps1
└── setup.nsi
Download .txt
SYMBOL INDEX (333 symbols across 57 files)

FILE: Tomighty.Core.Test/FakeEventHub.cs
  class FakeEventHub (line 14) | public class FakeEventHub : IEventHub
    method PublishedEvents (line 19) | public IEnumerable<T> PublishedEvents<T>()
    method LastEvent (line 24) | public T LastEvent<T>()
    method Publish (line 29) | public void Publish(object @event)
    method Subscribe (line 39) | public void Subscribe<T>(Action<T> eventHandler)
    class Subscriber (line 45) | private class Subscriber
      method Subscriber (line 50) | public Subscriber(Type eventType, Action<object> eventHandler)
      method Handle (line 56) | public void Handle(object @event)

FILE: Tomighty.Core.Test/PomodoroEngineTest.cs
  class PomodoroEngineTest (line 15) | [TestFixture]
    method SetUp (line 23) | [SetUp]
    method Initial_pomodoro_count_is_zero (line 32) | [Test]
    method Start_the_timer (line 38) | [Test]
    method Stop_the_timer (line 51) | [Test]
    method Publish_PomodoroCompleted_event_when_timer_stops_with_zero_remaining_time (line 58) | [Test]
    method Do_not_publish_PomodoroCompleted_event_when_timer_stops_with_remaining_time_greater_than_zero (line 71) | [Test]
    method Do_not_publish_PomodoroCompleted_event_when_timer_stops_and_interval_type_is_not_Pomodoro (line 83) | [Test]
    method Increase_pomodoro_count_when_timer_stops_with_zero_remaining_time (line 95) | [Test]
    method Reset_pomodoro_count_when_it_is_greater_than_limit_defined_by_user_preferences (line 110) | [Test]
    method Suggested_timer_action_is_ShortBreak_when_pomodoro_count_is_different_than_user_defined_count_limit (line 137) | [Test]
    method Suggested_timer_action_is_LongBreak_when_pomodoro_count_is_equal_to_user_defined_count_limit (line 154) | [Test]
    method Manually_reset_pomodoro_count (line 166) | [Test]
    method Publish_event_when_pomodoro_count_changes (line 180) | [Test]
    method PomodoroCompletedEvent (line 206) | private static TimerStopped PomodoroCompletedEvent()

FILE: Tomighty.Core/Duration.cs
  type Duration (line 12) | public struct Duration
    method InSeconds (line 16) | public static Duration InSeconds(int seconds) => new Duration(seconds);
    method InMinutes (line 17) | public static Duration InMinutes(int minutes) => new Duration(minutes ...
    method Duration (line 19) | public Duration(int seconds)
    method AddSeconds (line 30) | public Duration AddSeconds(int delta) => new Duration(Seconds + delta);
    method ToString (line 32) | public override string ToString() => $"{GetType().Name}({Seconds})";
    method ToTimeString (line 34) | public string ToTimeString()

FILE: Tomighty.Core/Events/PomodoroCompleted.cs
  class PomodoroCompleted (line 10) | public class PomodoroCompleted
    method PomodoroCompleted (line 12) | public PomodoroCompleted(Duration duration)

FILE: Tomighty.Core/Events/PomodoroCountChanged.cs
  class PomodoroCountChanged (line 10) | public class PomodoroCountChanged
    method PomodoroCountChanged (line 12) | public PomodoroCountChanged(int count)

FILE: Tomighty.Core/Events/TimeElapsed.cs
  class TimeElapsed (line 10) | public class TimeElapsed
    method TimeElapsed (line 12) | public TimeElapsed(IntervalType intervalType, Duration duration, Durat...

FILE: Tomighty.Core/Events/TimerStarted.cs
  class TimerStarted (line 10) | public class TimerStarted
    method TimerStarted (line 16) | public TimerStarted(IntervalType intervalType, Duration duration, Dura...

FILE: Tomighty.Core/Events/TimerStopped.cs
  class TimerStopped (line 10) | public class TimerStopped
    method TimerStopped (line 17) | public TimerStopped(IntervalType intervalType, Duration duration, Dura...

FILE: Tomighty.Core/ICountdownClock.cs
  type ICountdownClock (line 10) | public interface ICountdownClock

FILE: Tomighty.Core/IEventHub.cs
  type IEventHub (line 12) | public interface IEventHub
    method Publish (line 14) | void Publish(object @event);
    method Subscribe (line 15) | void Subscribe<T>(Action<T> eventHandler);

FILE: Tomighty.Core/IMutableUserPreferences.cs
  type IMutableUserPreferences (line 10) | public interface IMutableUserPreferences : IUserPreferences
    method SetIntervalDuration (line 12) | void SetIntervalDuration(IntervalType intervalType, Duration duration);

FILE: Tomighty.Core/IPomodoroEngine.cs
  type IPomodoroEngine (line 10) | public interface IPomodoroEngine
    method StartTimer (line 12) | void StartTimer(IntervalType intervalType);
    method StopTimer (line 13) | void StopTimer();
    method ResetPomodoroCount (line 14) | void ResetPomodoroCount();

FILE: Tomighty.Core/ITimer.cs
  type ITimer (line 10) | public interface ITimer : ICountdownClock
    method Start (line 12) | void Start(Duration duration, IntervalType intervalType);
    method Stop (line 13) | void Stop();

FILE: Tomighty.Core/IUserPreferences.cs
  type IUserPreferences (line 12) | public interface IUserPreferences
    method GetIntervalDuration (line 14) | Duration GetIntervalDuration(IntervalType intervalType);
    method Update (line 20) | void Update(Action<IMutableUserPreferences> action);

FILE: Tomighty.Core/IntervalType.cs
  type IntervalType (line 10) | public enum IntervalType

FILE: Tomighty.Core/PomodoroEngine.cs
  class PomodoroEngine (line 12) | public class PomodoroEngine : IPomodoroEngine
    method PomodoroEngine (line 19) | public PomodoroEngine(ITimer timer, IUserPreferences userPreferences, ...
    method StartTimer (line 46) | public void StartTimer(IntervalType intervalType)
    method StopTimer (line 52) | public void StopTimer()
    method OnTimerStopped (line 57) | private void OnTimerStopped(TimerStopped timerStopped)
    method PomodoroCompleted (line 65) | private void PomodoroCompleted(Duration duration)
    method IncreasePomodoroCount (line 71) | private void IncreasePomodoroCount()
    method ResetPomodoroCount (line 77) | public void ResetPomodoroCount()

FILE: Tomighty.Core/SynchronousEventHub.cs
  class SynchronousEventHub (line 13) | public class SynchronousEventHub : IEventHub
    method Publish (line 17) | public void Publish(object @event)
    method Subscribe (line 30) | public void Subscribe<T>(Action<T> eventHandler)

FILE: Tomighty.Core/Timer.cs
  class Timer (line 14) | public class Timer : ITimer
    method Timer (line 26) | public Timer(IEventHub eventHub)
    method Start (line 37) | public void Start(Duration duration, IntervalType intervalType)
    method Stop (line 49) | public void Stop()
    method DecreaseRemainingTime (line 58) | private void DecreaseRemainingTime(int seconds)
    method SystemTimerOnElapsed (line 70) | private void SystemTimerOnElapsed(object sender, ElapsedEventArgs elap...

FILE: Tomighty.Update.Swap/Program.cs
  class Program (line 11) | static class Program
    method Main (line 15) | [STAThread]
    method Swap (line 61) | private static void Swap(int processId, string exePath, string sourceP...
    method DeleteDirectoryContents (line 94) | private static void DeleteDirectoryContents(string targetDir)
    method IsInteger (line 107) | private static bool IsInteger(string s)

FILE: Tomighty.Update.Swap/Properties/Settings.Designer.cs
  class Settings (line 15) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

FILE: Tomighty.Windows/About/AboutWindow.Designer.cs
  class AboutWindow (line 10) | partial class AboutWindow
    method Dispose (line 21) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 36) | private void InitializeComponent()

FILE: Tomighty.Windows/About/AboutWindow.cs
  class AboutWindow (line 15) | public partial class AboutWindow : Form
    method AboutWindow (line 17) | public AboutWindow()
    method AboutForm_Load (line 22) | private void AboutForm_Load(object sender, EventArgs e)
    method closeButton_Click (line 31) | private void closeButton_Click(object sender, EventArgs e)

FILE: Tomighty.Windows/About/AboutWindowPresenter.cs
  class AboutWindowPresenter (line 12) | internal class AboutWindowPresenter
    method Show (line 16) | public void Show()
    method OnWindowClosed (line 34) | private void OnWindowClosed(object sender, FormClosedEventArgs e)

FILE: Tomighty.Windows/AutoUpdate.cs
  class AutoUpdate (line 20) | internal class AutoUpdate
    method AutoUpdate (line 28) | public AutoUpdate(UserPreferences userPreferences)
    method Start (line 40) | public void Start()
    method CheckIfNecessary (line 58) | private async Task CheckIfNecessary()
    method ResetLastCheckTime (line 72) | private static void ResetLastCheckTime()
    method Check (line 84) | private async Task Check()
    method Download (line 131) | private async Task<bool> Download(string url, string expectedSha256)
    method Update (line 178) | private void Update(object sender, EventArgs e)
    method CopySwapProgramFileToTempDir (line 199) | private static string CopySwapProgramFileToTempDir()
    method GetLastDownloadedVersion (line 220) | private static string GetLastDownloadedVersion()

FILE: Tomighty.Windows/Directories.cs
  class Directories (line 14) | internal class Directories

FILE: Tomighty.Windows/ErrorReportWindow.Designer.cs
  class ErrorReportWindow (line 3) | partial class ErrorReportWindow
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: Tomighty.Windows/ErrorReportWindow.cs
  class ErrorReportWindow (line 13) | public partial class ErrorReportWindow : Form
    method ErrorReportWindow (line 15) | public ErrorReportWindow(Exception exception)
    method ErrorReportWindow_FormClosed (line 21) | private void ErrorReportWindow_FormClosed(object sender, FormClosedEve...
    method reportButton_Click (line 26) | private void reportButton_Click(object sender, EventArgs e)
    method SendErrorReport (line 39) | private void SendErrorReport(object sender, EventArgs e)
    method ToJson (line 53) | private static string ToJson(ReportData data)
    method GetReportData (line 61) | private ReportData GetReportData()
    method OnErrorReportSent (line 71) | private void OnErrorReportSent(object sender, RunWorkerCompletedEventA...
    class ReportData (line 89) | [DataContract]

FILE: Tomighty.Windows/Events.cs
  class FirstRun (line 3) | public class FirstRun { }
  class AppUpdated (line 4) | public class AppUpdated { }

FILE: Tomighty.Windows/Flags.cs
  class Flags (line 6) | public class Flags
    method Flags (line 10) | public Flags(string name)
    method IsOn (line 15) | public bool IsOn(string name, bool defaultValue)
    method TurnOn (line 20) | public void TurnOn(string name)
    method TurnOff (line 25) | public void TurnOff(string name)
    method GetFile (line 30) | private string GetFile(string name) => Path.Combine(dir, name);
    method EnsureDirectoryExists (line 32) | private void EnsureDirectoryExists()
    method WriteFile (line 38) | private void WriteFile(string name, bool value)
    method ReadFile (line 44) | private bool ReadFile(string name, bool defaultValue)

FILE: Tomighty.Windows/Host.cs
  class Host (line 15) | internal class Host
    method GetId (line 28) | private static string GetId()
    method GenerateId (line 47) | private static string GenerateId()
    method ComputeId (line 64) | private static string ComputeId()
    method GetProcessorInfo (line 73) | private static string GetProcessorInfo(ManagementObject mo)

FILE: Tomighty.Windows/IntervalTypeExtensions.cs
  class IntervalTypeExtensions (line 13) | internal static class IntervalTypeExtensions
    method GetName (line 15) | public static string GetName(this IntervalType intervalType)

FILE: Tomighty.Windows/Logger.cs
  class Logger (line 6) | class Logger : IDisposable
    method Logger (line 12) | public Logger(string name)
    method GetFile (line 17) | private FileStream GetFile(string name)
    method HasReachedSizeLimit (line 36) | private bool HasReachedSizeLimit(string filepath)
    method Log (line 42) | private void Log(string level, string msg)
    method Info (line 48) | public void Info(string msg)
    method Error (line 53) | public void Error(string msg)
    method Error (line 58) | public void Error(Exception e)
    method Dispose (line 63) | public void Dispose()

FILE: Tomighty.Windows/Notifications/NotificationsPresenter.cs
  class NotificationsPresenter (line 14) | internal class NotificationsPresenter
    method NotificationsPresenter (line 20) | public NotificationsPresenter(IPomodoroEngine pomodoroEngine, IUserPre...
    method OnFirstRun (line 29) | private void OnFirstRun(FirstRun @event)
    method OnAppUpdated (line 35) | private void OnAppUpdated(AppUpdated @event)
    method OnTimerStopped (line 40) | private void OnTimerStopped(TimerStopped @event)
    method OnToastActivated (line 50) | private void OnToastActivated(ToastNotification sender, object args)

FILE: Tomighty.Windows/Notifications/SoundNotificationPlayer.cs
  class SoundNotificationPlayer (line 6) | public class SoundNotificationPlayer
    method SoundNotificationPlayer (line 11) | public SoundNotificationPlayer(IUserPreferences userPreferences, IEven...
    method OnTimerStopped (line 17) | private void OnTimerStopped(TimerStopped @event)

FILE: Tomighty.Windows/Notifications/Toasts.cs
  class Toasts (line 16) | internal static class Toasts
    method FirstRun (line 28) | public static ToastNotification FirstRun()
    method AppUpdated (line 33) | public static ToastNotification AppUpdated()
    method IntervalCompleted (line 38) | public static ToastNotification IntervalCompleted(IntervalType complet...
    method FillIntervalCompletedTemplate (line 55) | private static XmlDocument FillIntervalCompletedTemplate(string interv...
    method ToXmlDocument (line 64) | private static XmlDocument ToXmlDocument(string xml)
    class TimerAction (line 71) | public class TimerAction
      method TimerAction (line 84) | private TimerAction(string args, string content, IntervalType interv...

FILE: Tomighty.Windows/Preferences/UserPreferences.cs
  class UserPreferences (line 15) | public class UserPreferences : IMutableUserPreferences
    method UserPreferences (line 22) | public UserPreferences()
    method ReadFromFile (line 27) | private static Values ReadFromFile()
    method ReplaceInvalidSettingsWithDefaultValues (line 45) | private static Values ReplaceInvalidSettingsWithDefaultValues(Values v...
    method GetIntervalDuration (line 65) | public Duration GetIntervalDuration(IntervalType intervalType)
    method SetIntervalDuration (line 73) | public void SetIntervalDuration(IntervalType intervalType, Duration du...
    method Update (line 105) | public void Update(Action<IMutableUserPreferences> action)
    class Values (line 114) | [DataContract]

FILE: Tomighty.Windows/Preferences/UserPreferencesForm.Designer.cs
  class UserPreferencesForm (line 10) | partial class UserPreferencesForm
    method Dispose (line 21) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 36) | private void InitializeComponent()

FILE: Tomighty.Windows/Preferences/UserPreferencesForm.cs
  class UserPreferencesForm (line 12) | public partial class UserPreferencesForm : Form
    method UserPreferencesForm (line 16) | public UserPreferencesForm(IUserPreferences userPreferences)
    method OnCancelButtonClick (line 31) | private void OnCancelButtonClick(object sender, System.EventArgs e)
    method OnOkButtonClick (line 36) | private void OnOkButtonClick(object sender, System.EventArgs e)

FILE: Tomighty.Windows/Preferences/UserPreferencesPresenter.cs
  class UserPreferencesPresenter (line 12) | internal class UserPreferencesPresenter
    method UserPreferencesPresenter (line 17) | public UserPreferencesPresenter(IUserPreferences userPreferences)
    method Show (line 22) | public void Show()
    method OnWindowClosed (line 40) | private void OnWindowClosed(object sender, FormClosedEventArgs e)

FILE: Tomighty.Windows/Program.cs
  class Program (line 13) | static class Program
    method Main (line 15) | [STAThread]
    method HandleUnhandledException (line 33) | private static void HandleUnhandledException(Exception exception)

FILE: Tomighty.Windows/Properties/Resources.Designer.cs
  class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Tomighty.Windows/Properties/Settings.Designer.cs
  class Settings (line 15) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

FILE: Tomighty.Windows/StartupEventFlags.cs
  class StartupEventFlags (line 3) | public class StartupEventFlags

FILE: Tomighty.Windows/StartupEvents.cs
  class StartupEvents (line 7) | public class StartupEvents : StartupEventFlags
    method StartupEvents (line 9) | public StartupEvents(IEventHub eventHub)

FILE: Tomighty.Windows/Timer/Taskbar.cs
  type TaskbarPosition (line 9) | public enum TaskbarPosition
  class Taskbar (line 18) | public sealed class Taskbar
    method Taskbar (line 22) | public Taskbar()
  type ABM (line 85) | public enum ABM : uint
  type ABE (line 100) | public enum ABE : uint
  class ABS (line 108) | public static class ABS
  class Shell32 (line 114) | public static class Shell32
    method SHAppBarMessage (line 116) | [DllImport("shell32.dll", SetLastError = true)]
  class User32 (line 120) | public static class User32
    method FindWindow (line 122) | [DllImport("user32.dll", SetLastError = true)]
  type APPBARDATA (line 126) | [StructLayout(LayoutKind.Sequential)]
  type RECT (line 137) | [StructLayout(LayoutKind.Sequential)]

FILE: Tomighty.Windows/Timer/TimerWindow.Designer.cs
  class TimerWindow (line 10) | partial class TimerWindow
    method Dispose (line 21) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 36) | private void InitializeComponent()

FILE: Tomighty.Windows/Timer/TimerWindow.cs
  class TimerWindow (line 15) | public partial class TimerWindow : Form
    method TimerWindow (line 29) | public TimerWindow()
    method UpdateTitle (line 49) | public void UpdateTitle(string text)
    method SetTimerAction (line 57) | public void SetTimerAction(string text, Action action)
    method UpdateTimeDisplay (line 67) | public void UpdateTimeDisplay(string text)
    method UpdateColorScheme (line 75) | public void UpdateColorScheme(Color color)
    method UpdatePinButtonState (line 81) | public void UpdatePinButtonState(bool pinned)
    method Show (line 86) | public void Show(Point location)
    method SetTransparentBackground (line 92) | private static void SetTransparentBackground(Button button)
    method OnPaintBackground (line 100) | protected override void OnPaintBackground(PaintEventArgs e)
    class TransparentLabel (line 108) | private class TransparentLabel : Label
      method TransparentLabel (line 113) | public TransparentLabel()
      method WndProc (line 118) | protected override void WndProc(ref Message m)
    method OnTimerButtonClick (line 134) | private void OnTimerButtonClick(object sender, EventArgs e)
    method CreateColorScheme (line 139) | public ColorScheme CreateColorScheme(Color color)
    method CreateGradientBrush (line 148) | private Brush CreateGradientBrush(Color color)
    method Darker (line 158) | private Color Darker(Color color)
    method Brighter (line 163) | private Color Brighter(Color color)
    method AdjustBrightness (line 168) | private static Color AdjustBrightness(Color color, int offset)
  class ColorScheme (line 177) | public class ColorScheme
    method ColorScheme (line 179) | public ColorScheme(Brush fill, Pen border)

FILE: Tomighty.Windows/Timer/TimerWindowPresenter.cs
  class TimerWindowPresenter (line 15) | internal class TimerWindowPresenter
    method TimerWindowPresenter (line 32) | public TimerWindowPresenter(IPomodoroEngine pomodoroEngine, ICountdown...
    method CreateTimerWindow (line 52) | private TimerWindow CreateTimerWindow()
    method Toggle (line 69) | public void Toggle(Point approximateLocation)
    method OnTimerStarted (line 95) | private void OnTimerStarted(TimerStarted @event)
    method OnTimerStopped (line 100) | private void OnTimerStopped(TimerStopped @event)
    method OnTimeElapsed (line 112) | private void OnTimeElapsed(TimeElapsed @event)
    method EnterState (line 120) | private void EnterState(IWindowState newState, Duration remainingTime)
    method GetRunningTimerStateFor (line 129) | private IWindowState GetRunningTimerStateFor(IntervalType intervalType)
    method GetCompletedIntervalStateFor (line 137) | private IWindowState GetCompletedIntervalStateFor(IntervalType interva...
    method GetTimerInterruptedStateFor (line 144) | private IWindowState GetTimerInterruptedStateFor(IntervalType interval...
    method GetLocationNearTrayIcon (line 151) | private Point GetLocationNearTrayIcon(Point approximateLocation)
    method OnPinButtonClick (line 159) | private void OnPinButtonClick(object sender, System.EventArgs e)
    method OnCloseButtonClick (line 164) | private void OnCloseButtonClick(object sender, System.EventArgs e)
    method OnWindowVisibleChanged (line 170) | private void OnWindowVisibleChanged(object sender, System.EventArgs e)
    method OnLostFocus (line 176) | private void OnLostFocus(object sender, System.EventArgs e)
    type IWindowState (line 201) | private interface IWindowState
      method Apply (line 203) | void Apply(TimerWindow window, Duration remainingTime);
    class IdleState (line 206) | private class IdleState : IWindowState
      method IdleState (line 210) | public IdleState(IPomodoroEngine pomodoroEngine)
      method Apply (line 215) | public void Apply(TimerWindow window, Duration remainingTime)
      method StartTimer (line 226) | private void StartTimer()
    class PomodoroState (line 232) | private class PomodoroState : IWindowState
      method PomodoroState (line 236) | public PomodoroState(IPomodoroEngine pomodoroEngine)
      method Apply (line 241) | public void Apply(TimerWindow window, Duration remainingTime)
    class ShortBreakState (line 253) | private class ShortBreakState : IWindowState
      method ShortBreakState (line 257) | public ShortBreakState(IPomodoroEngine pomodoroEngine)
      method Apply (line 262) | public void Apply(TimerWindow window, Duration remainingTime)
    class LongBreakState (line 274) | private class LongBreakState : IWindowState
      method LongBreakState (line 278) | public LongBreakState(IPomodoroEngine pomodoroEngine)
      method Apply (line 283) | public void Apply(TimerWindow window, Duration remainingTime)
    class PomodoroCompletedState (line 295) | private class PomodoroCompletedState : IWindowState
      method PomodoroCompletedState (line 299) | public PomodoroCompletedState(IPomodoroEngine pomodoroEngine)
      method Apply (line 304) | public void Apply(TimerWindow window, Duration remainingTime)
      method StartTimer (line 315) | private void StartTimer()
    class BreakFinishedState (line 321) | private class BreakFinishedState : IWindowState
      method BreakFinishedState (line 325) | public BreakFinishedState(IPomodoroEngine pomodoroEngine)
      method Apply (line 330) | public void Apply(TimerWindow window, Duration remainingTime)
      method StartTimer (line 341) | private void StartTimer()
    class TimerInterruptedState (line 347) | private class TimerInterruptedState : IWindowState
      method TimerInterruptedState (line 352) | public TimerInterruptedState(string title, IPomodoroEngine pomodoroE...
      method Apply (line 358) | public void Apply(TimerWindow window, Duration remainingTime)
      method StartTimer (line 369) | private void StartTimer()
    class DragAroundController (line 375) | private class DragAroundController
      method DragAroundController (line 382) | public DragAroundController(Form form, Func<bool> canStartDraggingAr...
      method OnMouseDown (line 392) | private void OnMouseDown(object sender, MouseEventArgs e)
      method OnMouseUp (line 402) | private void OnMouseUp(object sender, MouseEventArgs e)
      method OnMouseMove (line 407) | private void OnMouseMove(object sender, MouseEventArgs e)

FILE: Tomighty.Windows/TomightyApplication.cs
  class TomightyApplication (line 18) | internal class TomightyApplication : ApplicationContext
    method TomightyApplication (line 20) | public TomightyApplication()
    method CreateTrayIcon (line 48) | private static NotifyIcon CreateTrayIcon(ITrayMenu trayMenu)

FILE: Tomighty.Windows/Tray/ITrayMenu.cs
  type ITrayMenu (line 13) | internal interface ITrayMenu
    method OnAboutClick (line 17) | void OnAboutClick(EventHandler handler);
    method OnPreferencesClick (line 18) | void OnPreferencesClick(EventHandler handler);
    method OnStartPomodoroClick (line 19) | void OnStartPomodoroClick(EventHandler handler);
    method OnStartLongBreakClick (line 20) | void OnStartLongBreakClick(EventHandler handler);
    method OnStartShortBreakClick (line 21) | void OnStartShortBreakClick(EventHandler handler);
    method OnStopTimerClick (line 22) | void OnStopTimerClick(EventHandler handler);
    method OnResetPomodoroCountClick (line 23) | void OnResetPomodoroCountClick(EventHandler handler);
    method OnExitClick (line 24) | void OnExitClick(EventHandler handler);
    method Update (line 25) | void Update(Action<ITrayMenuMutator> action);

FILE: Tomighty.Windows/Tray/ITrayMenuMutator.cs
  type ITrayMenuMutator (line 10) | internal interface ITrayMenuMutator
    method UpdateRemainingTime (line 12) | void UpdateRemainingTime(string text);
    method EnableStartPomodoroItem (line 13) | void EnableStartPomodoroItem(bool enable);
    method EnableStartShortBreakItem (line 14) | void EnableStartShortBreakItem(bool enable);
    method EnableStartLongBreakItem (line 15) | void EnableStartLongBreakItem(bool enable);
    method EnableStopTimerItem (line 16) | void EnableStopTimerItem(bool enable);
    method EnableResetPomodoroCountItem (line 17) | void EnableResetPomodoroCountItem(bool enable);
    method UpdatePomodoroCount (line 18) | void UpdatePomodoroCount(int count);

FILE: Tomighty.Windows/Tray/TrayIconController.cs
  class TrayIconController (line 16) | internal class TrayIconController : IDisposable
    method TrayIconController (line 21) | public TrayIconController(NotifyIcon notifyIcon, TimerWindowPresenter ...
    method Dispose (line 32) | public void Dispose()
    method OnNotifyIconClick (line 37) | private void OnNotifyIconClick(object sender, EventArgs @event)
    method OnTimerStarted (line 45) | private void OnTimerStarted(TimerStarted @event)
    method OnTimerStopped (line 50) | private void OnTimerStopped(TimerStopped @event)
    method GetIcon (line 55) | private Icon GetIcon(IntervalType intervalType)

FILE: Tomighty.Windows/Tray/TrayMenu.cs
  class TrayMenu (line 14) | internal class TrayMenu : ITrayMenu, ITrayMenuMutator
    method TrayMenu (line 28) | public TrayMenu()
    method OnStartPomodoroClick (line 69) | public void OnStartPomodoroClick(EventHandler handler) => startPomodor...
    method OnStartLongBreakClick (line 70) | public void OnStartLongBreakClick(EventHandler handler) => startLongBr...
    method OnStartShortBreakClick (line 71) | public void OnStartShortBreakClick(EventHandler handler) => startShort...
    method OnStopTimerClick (line 72) | public void OnStopTimerClick(EventHandler handler) => stopTimerItem.Cl...
    method OnResetPomodoroCountClick (line 73) | public void OnResetPomodoroCountClick(EventHandler handler) => resetPo...
    method OnAboutClick (line 74) | public void OnAboutClick(EventHandler handler) => aboutItem.Click += h...
    method OnPreferencesClick (line 75) | public void OnPreferencesClick(EventHandler handler) => preferencesIte...
    method OnExitClick (line 76) | public void OnExitClick(EventHandler handler) => exitItem.Click += han...
    method UpdateRemainingTime (line 78) | public void UpdateRemainingTime(string text) => remainingTimeItem.Text...
    method UpdatePomodoroCount (line 79) | public void UpdatePomodoroCount(int count) => pomodoroCountItem.Text =...
    method EnableStartPomodoroItem (line 80) | public void EnableStartPomodoroItem(bool enable) => startPomodoroItem....
    method EnableStartShortBreakItem (line 81) | public void EnableStartShortBreakItem(bool enable) => startShortBreakI...
    method EnableStartLongBreakItem (line 82) | public void EnableStartLongBreakItem(bool enable) => startLongBreakIte...
    method EnableStopTimerItem (line 83) | public void EnableStopTimerItem(bool enable) => stopTimerItem.Enabled ...
    method EnableResetPomodoroCountItem (line 84) | public void EnableResetPomodoroCountItem(bool enable) => resetPomodoro...
    method Update (line 86) | public void Update(Action<ITrayMenuMutator> action)

FILE: Tomighty.Windows/Tray/TrayMenuController.cs
  class TrayMenuController (line 15) | internal class TrayMenuController
    method TrayMenuController (line 21) | public TrayMenuController(ITrayMenu menu, ApplicationContext app, IPom...
    method OnStartPomodoroClick (line 47) | private void OnStartPomodoroClick(object sender, EventArgs e) => Start...
    method OnStartLongBreakClick (line 48) | private void OnStartLongBreakClick(object sender, EventArgs e) => Star...
    method OnStartShortBreakClick (line 49) | private void OnStartShortBreakClick(object sender, EventArgs e) => Sta...
    method OnStopTimerClick (line 50) | private void OnStopTimerClick(object sender, EventArgs e) => Task.Run(...
    method OnResetPomodoroCountClick (line 51) | private void OnResetPomodoroCountClick(object sender, EventArgs e) => ...
    method OnExitClick (line 53) | private void OnExitClick(object sender, EventArgs e)
    method OnTimerStarted (line 58) | private void OnTimerStarted(TimerStarted @event)
    method OnTimerStopped (line 70) | private void OnTimerStopped(TimerStopped timerStopped)
    method OnTimeElasped (line 82) | private void OnTimeElasped(TimeElapsed @event)
    method OnPomodoroCountChanged (line 90) | private void OnPomodoroCountChanged(PomodoroCountChanged @event)
    method StartTimer (line 100) | private void StartTimer(IntervalType intervalType)

FILE: Tomighty.Windows/URLs.cs
  class URLs (line 3) | internal class URLs

FILE: Tomighty.Windows/Util/Hash.cs
  class Hash (line 15) | public class Hash
    method Sha1 (line 17) | public static string Sha1(string s)
    method Sha256 (line 25) | public static string Sha256(Stream stream)

FILE: Tomighty.Windows/Version.cs
  class Version (line 6) | internal class Version
Condensed preview — 96 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (822K chars).
[
  {
    "path": ".gitignore",
    "chars": 55,
    "preview": ".idea/\npackages/\nbin/\nobj/\nbuild/\ndist/\n*~\n.vs/\n*.user\n"
  },
  {
    "path": "GlobalAssemblyInfo.cs",
    "chars": 379,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  htt"
  },
  {
    "path": "LICENSE.txt",
    "chars": 10351,
    "preview": "\r\n                                 Apache License\r\n                           Version 2.0, January 2004\r\n               "
  },
  {
    "path": "NOTICE.txt",
    "chars": 766,
    "preview": "   =========================================================================\r\n   ==  NOTICE file corresponding to sectio"
  },
  {
    "path": "README.md",
    "chars": 774,
    "preview": "Tomighty for Windows\r\n====================\r\n\r\nAvailable for download at http://www.tomighty.org\r\n\r\nThis repository conta"
  },
  {
    "path": "Tomighty.Core/Duration.cs",
    "chars": 1331,
    "preview": "//\r\n//  Tomighty - http://www.tomighty.org\r\n//\r\n//  This software is licensed under the Apache License Version 2.0:\r\n//"
  },
  {
    "path": "Tomighty.Core/Events/PomodoroCompleted.cs",
    "chars": 398,
    "preview": "//\r\n//  Tomighty - http://www.tomighty.org\r\n//\r\n//  This software is licensed under the Apache License Version 2.0:\r\n//"
  },
  {
    "path": "Tomighty.Core/Events/PomodoroCountChanged.cs",
    "chars": 394,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Core/Events/TimeElapsed.cs",
    "chars": 619,
    "preview": "//\r\n//  Tomighty - http://www.tomighty.org\r\n//\r\n//  This software is licensed under the Apache License Version 2.0:\r\n//"
  },
  {
    "path": "Tomighty.Core/Events/TimerStarted.cs",
    "chars": 620,
    "preview": "//\r\n//  Tomighty - http://www.tomighty.org\r\n//\r\n//  This software is licensed under the Apache License Version 2.0:\r\n//"
  },
  {
    "path": "Tomighty.Core/Events/TimerStopped.cs",
    "chars": 698,
    "preview": "//\r\n//  Tomighty - http://www.tomighty.org\r\n//\r\n//  This software is licensed under the Apache License Version 2.0:\r\n//"
  },
  {
    "path": "Tomighty.Core/ICountdownClock.cs",
    "chars": 281,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Core/IEventHub.cs",
    "chars": 342,
    "preview": "//\r\n//  Tomighty - http://www.tomighty.org\r\n//\r\n//  This software is licensed under the Apache License Version 2.0:\r\n//"
  },
  {
    "path": "Tomighty.Core/IMutableUserPreferences.cs",
    "chars": 545,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Core/IPomodoroEngine.cs",
    "chars": 448,
    "preview": "//\r\n//  Tomighty - http://www.tomighty.org\r\n//\r\n//  This software is licensed under the Apache License Version 2.0:\r\n//"
  },
  {
    "path": "Tomighty.Core/ITimer.cs",
    "chars": 341,
    "preview": "//\r\n//  Tomighty - http://www.tomighty.org\r\n//\r\n//  This software is licensed under the Apache License Version 2.0:\r\n//"
  },
  {
    "path": "Tomighty.Core/IUserPreferences.cs",
    "chars": 556,
    "preview": "//\r\n//  Tomighty - http://www.tomighty.org\r\n//\r\n//  This software is licensed under the Apache License Version 2.0:\r\n//"
  },
  {
    "path": "Tomighty.Core/IntervalType.cs",
    "chars": 301,
    "preview": "//\r\n//  Tomighty - http://www.tomighty.org\r\n//\r\n//  This software is licensed under the Apache License Version 2.0:\r\n//"
  },
  {
    "path": "Tomighty.Core/PomodoroEngine.cs",
    "chars": 2359,
    "preview": "//\r\n//  Tomighty - http://www.tomighty.org\r\n//\r\n//  This software is licensed under the Apache License Version 2.0:\r\n//"
  },
  {
    "path": "Tomighty.Core/Properties/AssemblyInfo.cs",
    "chars": 368,
    "preview": "//\r\n//  Tomighty - http://www.tomighty.org\r\n//\r\n//  This software is licensed under the Apache License Version 2.0:\r\n//"
  },
  {
    "path": "Tomighty.Core/SynchronousEventHub.cs",
    "chars": 1276,
    "preview": "//\r\n//  Tomighty - http://www.tomighty.org\r\n//\r\n//  This software is licensed under the Apache License Version 2.0:\r\n//"
  },
  {
    "path": "Tomighty.Core/Timer.cs",
    "chars": 2079,
    "preview": "//\r\n//  Tomighty - http://www.tomighty.org\r\n//\r\n//  This software is licensed under the Apache License Version 2.0:\r\n//"
  },
  {
    "path": "Tomighty.Core/Tomighty.Core.csproj",
    "chars": 3082,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "Tomighty.Core.Test/FakeEventHub.cs",
    "chars": 1753,
    "preview": "//\r\n//  Tomighty - http://www.tomighty.org\r\n//\r\n//  This software is licensed under the Apache License Version 2.0:\r\n//"
  },
  {
    "path": "Tomighty.Core.Test/PomodoroEngineTest.cs",
    "chars": 7732,
    "preview": "//\r\n//  Tomighty - http://www.tomighty.org\r\n//\r\n//  This software is licensed under the Apache License Version 2.0:\r\n//"
  },
  {
    "path": "Tomighty.Core.Test/Properties/AssemblyInfo.cs",
    "chars": 374,
    "preview": "//\r\n//  Tomighty - http://www.tomighty.org\r\n//\r\n//  This software is licensed under the Apache License Version 2.0:\r\n//"
  },
  {
    "path": "Tomighty.Core.Test/Tomighty.Core.Test.csproj",
    "chars": 3281,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "Tomighty.Core.Test/packages.config",
    "chars": 830,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n  <package id=\"NSubstitute\" version=\"2.0.0-rc\" targetFramework=\"net"
  },
  {
    "path": "Tomighty.Update.Swap/App.config",
    "chars": 182,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<configuration>\n    <startup> \n        <supportedRuntime version=\"v4.0\" sku=\".N"
  },
  {
    "path": "Tomighty.Update.Swap/Program.cs",
    "chars": 3147,
    "preview": "using System;\nusing System.Diagnostics;\nusing System.IO;\nusing System.IO.Compression;\nusing System.Text.RegularExpressi"
  },
  {
    "path": "Tomighty.Update.Swap/Properties/AssemblyInfo.cs",
    "chars": 241,
    "preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n[assembly: Assem"
  },
  {
    "path": "Tomighty.Update.Swap/Properties/Settings.Designer.cs",
    "chars": 1075,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Tomighty.Update.Swap/Properties/Settings.settings",
    "chars": 240,
    "preview": "<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\""
  },
  {
    "path": "Tomighty.Update.Swap/Tomighty.Update.Swap.csproj",
    "chars": 3704,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "Tomighty.Windows/About/AboutWindow.Designer.cs",
    "chars": 6791,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/About/AboutWindow.cs",
    "chars": 943,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/About/AboutWindow.resx",
    "chars": 5696,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "Tomighty.Windows/About/AboutWindowPresenter.cs",
    "chars": 855,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/App.config",
    "chars": 182,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<configuration>\n    <startup> \n        <supportedRuntime version=\"v4.0\" sku=\".N"
  },
  {
    "path": "Tomighty.Windows/AutoUpdate.cs",
    "chars": 6868,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/Directories.cs",
    "chars": 766,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/ErrorReportWindow.Designer.cs",
    "chars": 7752,
    "preview": "namespace Tomighty.Windows\n{\n    partial class ErrorReportWindow\n    {\n        /// <summary>\n        /// Required desig"
  },
  {
    "path": "Tomighty.Windows/ErrorReportWindow.cs",
    "chars": 3203,
    "preview": "using System;\nusing System.ComponentModel;\nusing System.Drawing;\nusing System.IO;\nusing System.Net.Http;\nusing System.R"
  },
  {
    "path": "Tomighty.Windows/ErrorReportWindow.resx",
    "chars": 554927,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "Tomighty.Windows/Events.cs",
    "chars": 101,
    "preview": "namespace Tomighty.Windows.Events\n{\n    public class FirstRun { }\n    public class AppUpdated { }\n}\n"
  },
  {
    "path": "Tomighty.Windows/Flags.cs",
    "chars": 1275,
    "preview": "using System;\nusing System.IO;\n\nnamespace Tomighty.Windows\n{\n    public class Flags\n    {\n        private readonly stri"
  },
  {
    "path": "Tomighty.Windows/Host.cs",
    "chars": 2038,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/IntervalTypeExtensions.cs",
    "chars": 798,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/LICENSE.txt",
    "chars": 10351,
    "preview": "\r\n                                 Apache License\r\n                           Version 2.0, January 2004\r\n               "
  },
  {
    "path": "Tomighty.Windows/Logger.cs",
    "chars": 1627,
    "preview": "using System;\nusing System.IO;\n\nnamespace Tomighty.Windows\n{\n    class Logger : IDisposable\n    {\n        private const"
  },
  {
    "path": "Tomighty.Windows/NOTICE.txt",
    "chars": 766,
    "preview": "   =========================================================================\r\n   ==  NOTICE file corresponding to sectio"
  },
  {
    "path": "Tomighty.Windows/Notifications/NotificationsPresenter.cs",
    "chars": 2206,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/Notifications/SoundNotificationPlayer.cs",
    "chars": 799,
    "preview": "using System.Media;\nusing Tomighty.Events;\n\nnamespace Tomighty.Windows.Notifications\n{\n    public class SoundNotificati"
  },
  {
    "path": "Tomighty.Windows/Notifications/Toasts.cs",
    "chars": 4896,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/Preferences/UserPreferences.cs",
    "chars": 4731,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/Preferences/UserPreferencesForm.Designer.cs",
    "chars": 20207,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/Preferences/UserPreferencesForm.cs",
    "chars": 2208,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/Preferences/UserPreferencesForm.resx",
    "chars": 5696,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "Tomighty.Windows/Preferences/UserPreferencesPresenter.cs",
    "chars": 1102,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/Program.cs",
    "chars": 1088,
    "preview": "//\r\n//  Tomighty - http://www.tomighty.org\r\n//\r\n//  This software is licensed under the Apache License Version 2.0:\r\n//"
  },
  {
    "path": "Tomighty.Windows/Properties/AssemblyInfo.cs",
    "chars": 414,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/Properties/Resources.Designer.cs",
    "chars": 13339,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Tomighty.Windows/Properties/Resources.resx",
    "chars": 11002,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "Tomighty.Windows/Properties/Settings.Designer.cs",
    "chars": 1071,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Tomighty.Windows/Properties/Settings.settings",
    "chars": 240,
    "preview": "<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\""
  },
  {
    "path": "Tomighty.Windows/Resources/Toasts/app-updated.xml",
    "chars": 456,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?> \n<toast launch=\"tomighty\">\n  <visual>\n    <binding template=\"ToastGeneric\">\n   "
  },
  {
    "path": "Tomighty.Windows/Resources/Toasts/first-run.xml",
    "chars": 552,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?> \n<toast launch=\"tomighty\">\n  <visual>\n    <binding template=\"ToastGeneric\">\n   "
  },
  {
    "path": "Tomighty.Windows/Resources/Toasts/interval-completed.xml",
    "chars": 461,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?> \n<toast launch=\"tomighty\">\n  <visual>\n    <binding template=\"ToastGeneric\">\n   "
  },
  {
    "path": "Tomighty.Windows/StartupEventFlags.cs",
    "chars": 281,
    "preview": "namespace Tomighty.Windows\n{\n    public class StartupEventFlags\n    {\n        public static readonly Flags Flags = new "
  },
  {
    "path": "Tomighty.Windows/StartupEvents.cs",
    "chars": 687,
    "preview": "using System;\nusing System.Threading.Tasks;\nusing Tomighty.Windows.Events;\n\nnamespace Tomighty.Windows\n{\n    public cla"
  },
  {
    "path": "Tomighty.Windows/Timer/Taskbar.cs",
    "chars": 3570,
    "preview": "using System;\nusing System.Drawing;\nusing System.Runtime.InteropServices;\n\n// Shamelessly copied from https://winsharp9"
  },
  {
    "path": "Tomighty.Windows/Timer/TimerWindow.Designer.cs",
    "chars": 7200,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/Timer/TimerWindow.cs",
    "chars": 5875,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/Timer/TimerWindow.resx",
    "chars": 5696,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "Tomighty.Windows/Timer/TimerWindowPresenter.cs",
    "chars": 14382,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/Tomighty.Windows.csproj",
    "chars": 11393,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micro"
  },
  {
    "path": "Tomighty.Windows/TomightyApplication.cs",
    "chars": 2226,
    "preview": "//\r\n//  Tomighty - http://www.tomighty.org\r\n//\r\n//  This software is licensed under the Apache License Version 2.0:\r\n//"
  },
  {
    "path": "Tomighty.Windows/Tray/ITrayMenu.cs",
    "chars": 833,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/Tray/ITrayMenuMutator.cs",
    "chars": 608,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/Tray/TrayIconController.cs",
    "chars": 2033,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/Tray/TrayMenu.cs",
    "chars": 4764,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/Tray/TrayMenuController.cs",
    "chars": 4026,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/URLs.cs",
    "chars": 294,
    "preview": "namespace Tomighty.Windows\n{\n    internal class URLs\n    {\n        public static readonly string UpdateFeed = \"https://"
  },
  {
    "path": "Tomighty.Windows/Util/Hash.cs",
    "chars": 888,
    "preview": "//\n//  Tomighty - http://www.tomighty.org\n//\n//  This software is licensed under the Apache License Version 2.0:\n//  ht"
  },
  {
    "path": "Tomighty.Windows/Version.cs",
    "chars": 452,
    "preview": "using System.Diagnostics;\nusing System.Reflection;\n\nnamespace Tomighty.Windows\n{\n    internal class Version\n    {\n     "
  },
  {
    "path": "Tomighty.Windows/packages.config",
    "chars": 266,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n  <package id=\"GitVersionTask\" version=\"3.6.5\" targetFramework=\"net"
  },
  {
    "path": "Tomighty.sln",
    "chars": 2938,
    "preview": "\r\nMicrosoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio 14\r\nVisualStudioVersion = 14.0.25420.1\r\n"
  },
  {
    "path": "dist.bat",
    "chars": 1654,
    "preview": "@echo off\n\necho ==========================================================================\necho Building Tomighty\necho ="
  },
  {
    "path": "pack.ps1",
    "chars": 235,
    "preview": "param (\n    [string]$directory,\n    [string]$name\n)\n\nAdd-Type -Assembly System.IO.Compression.FileSystem\n[System.IO.Comp"
  },
  {
    "path": "setup.nsi",
    "chars": 3705,
    "preview": ";======================================================\n; Includes\n\n  !include MUI.nsh\n  !include Sections.nsh\n  !includ"
  }
]

// ... and 6 more files (download for full content)

About this extraction

This page contains the full source code of the tomighty/tomighty-windows GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 96 files (781.6 KB), approximately 319.3k tokens, and a symbol index with 333 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!